There are several options for supporting the various components for this project.
For the plant sensor device itself, we opted to go with manually distributing and loading the Python application onto the Raspberry Pi 3. A more robust solution would be to provide an online location to download the software, or an automated CI/CD solution that would update the devices over the air, however that was outside of the scope of this project. For simplicity, this project is located in a separate repository with it's own setup instructions.
Azure IoT Hub and Event Hubs were selected as the most turnkey way to stream data collected on the Pi from the devices to the cloud.
CosmosDB was selected as the long term storage for the data collected from the devices via IoT Hub. This database is accessed by the front-end Web Application via PowerBI Embedded for reviewing and interacting with the sensor data. Other options could have included a VM running MongoDB, Azure Table storage or SQL Database on Azure.
This node application listens for messages recieved by the IoT Hub and writes the data into the CosmosDB database. Options for supporting this application include:
- Azure Functions
- Guest Executable on a Service Fabric Cluster
- API App (Azure App Services)
- Container on Service Fabric Cluster
- Container on Azure Container Service
- Native Application on Azure VM
This application provides a front end interface for viewing and interacting with the data collected from the plant sensors. Options for supporting this application include:
- Web App (Azure App Services)
- Native Application on Azure VM
- Guest Executable on Service Fabric Cluster
- Container on Service Fabric Cluster
- Container on Azure Container Service