-
Couldn't load subscription status.
- Fork 0
Simple Platform for OTA update

-
IAQ Sensor: A Python agent that simulates IoT sensor data to publish to an event streaming bus every 5 seconds.
-
Datalogger: A Python agent that subscribes to IoT data payloads from IoT sensor agents and stores them in a SQL database.
-
RabbitMQ: A service for Agents to PUB-SUB data payloads.
-
PostgreSQL: A SQL database for storing historical data from IoT sensors with the following schema
- timestamp (INTEGER): Unix timestamp of the data point
- datetime (TIMESTAMPTZ): Datetime of the data point
- device_id (TEXT): Unique identifier of the device
- datapoint (TEXT): Type of measurement (e.g., temperature, humidity)
- value (TEXT): Measured value (use TEXT type because some value is string)
Simple Data -
API (Add-on): A FastAPI web application for querying data from an SQL database.
API Swagger
The infrastructure can be deployed easily with minimal effort using a Docker Compose script to set up and run the entire system.
docker compose up --build -d-
On-premise services (IoT Infrastructure)
-
Services
- IAQ Agent
- DataLogger Agent
- PostgreSQL
- RabbitMQ
- API
-
Script
https://github.com/Ganthepro/iot-infrastructure/blob/main/docker-compose.yaml
-
-
On-cloud services (IoT Deployment Platform)
-
Services
- MongoDB Atlas
- Backend
- Frontend
- Scripts
-
Services
-
Container Registry Integration
-
Set up Azure Container Registry (ACR) for image storage

Azure Container Registry
-
Configure Jenkins Job to:
- Build container images
- Push images to ACR
https://github.com/Ganthepro/iot-infrastructure/blob/main/Jenkinsfile
Jenkins CI Pipeline -
Trigger deployment updates
Trigger an OTA deployment update to Azure IoT Hub using an Azure Function when an image is pushed.

-
-
Azure IoT Edge Integration
-
Configure Azure IoT Edge runtime environment to target On-premise devices
Create IoT Edge device on Linux using symmetric keys - Azure IoT Edge
-
Set up Azure IoT Edge modules for container deployment
- edgeAgent (default container from Azure)
- edgeHub (default container from Azure)
- IAQ Agent
- DataLogger Agent
- PostgreSQL
- RabbitMQ
- API
Azure IoT Edge modules
-
-
Deployment Management
-
Implement a Cloud-to-Device (C2D) command using the Azure IoT Service SDK to trigger deployment on on-premise device(s)
-
Create deployment & configuration manifests for IoT Edge modules
IoT Deployment Platform (Web Application)Create configuration manifest in the Web App.

After creating a configuration manifest in the Web App, you can check it on the Azure Portal.

-
Implement deployment tracking and logging
Configuration LoggingDeployment Logging and Tracking with
Success/Failurestatus
-
-
Web Development
Using React.js for the frontend, NestJS (Node.js) for the backend, and MongoDB as the database, with a CI/CD pipeline implemented using Jenkins to deploy containers to the target web server.
-
GitHub tag integration
Display service versions alongside their corresponding site deployments with connection state on the website.

-
Version management
Display available software versions that haven't been deployed yet.
configuration page
-
-
Deployment Command
-
Support single or multiple deployment target devices and separate agent installation for each deployment target

-
-
Database and Deployment's Event Logs

ER Diagram

Logical Data Modeling
-
Maintain a record of service versions currently deployed across different sites
View all configuration modules, services, and their versions.

-
Track and store deployment logs with success/failure status information
deployment page
-
-
On-premise IoT Infrastructure

-
Cloud-to-Device Deployment Pipeline through Azure IoT Edge

-
Centralized Deployment Platform

Functional Architecture
Software Architecture
-
On-premise IoT Infrastructure
-
IoT Deployment Platform (Frontend)
-
IoT Deployment Platform (Backend)
-
OTA Deployment (Azure Functions)