
Innovative Sensor Gateway Upgrade Project
About the Client
Company’s Request
Technology Set
MQTT Protocol | Used for sending sensor data from the gateway to a cloud broker. It's lightweight, efficient, and ideal for IoT applications with limited network resources. |
Telit LTE Module | Provides cellular connectivity for data transmission over mobile networks, required for remote areas without reliable Wi-Fi. |
Node-Red | A programming tool for connecting hardware, APIs, and online services. It simplifies data routing and processing. |
Docker | Manages software deployment in containers, providing a consistent and isolated software environment. |
Systemd-timesyncd | Manages system time synchronization, replacing traditional NTP services for accurate timestamping. |
Embedded Linux (Yocto Project) | Used to create a custom Linux distribution for the IoT gateway, allowing customization of the kernel and software stack. |
C | Used for writing low-level drivers and firmware, providing efficient control over system resources. |
Python | Used for higher-level configuration and testing tools due to its readability and extensive libraries. |
GCC (GNU Compiler Collection) | Compiles C code into executable firmware for the gateway’s microcontrollers, supporting cross-compiling for different architectures. |
ARM Mbed | Provides a platform for developing IoT applications on ARM microcontrollers, supporting rapid development with connectivity, security, and device management features. |
Embedded Sensors | |
Temperature & Humidity (SHT21 or Si7020) | Measures environmental temperature and humidity. |
Light Sensor (VEML7700) | Detects ambient light levels. |
Passive Infrared (PIR - EKMC1603111) | Detects motion via infrared radiation changes. |
Grid-Eye (MLX90640) | Captures temperature in multiple zones for thermal mapping. |
Acoustic Sensor (ICS-43434) | Captures sound for audio monitoring.
|
Carbon Dioxide Sensor (CO2 - CU-1106) | Monitors CO2 levels for air quality. |
VOC Sensor (SGP40) | Measures volatile organic compounds in the air. |
Particulate Sensor (SPS30) | Measures airborne particulates for pollution monitoring. |
The project began with the selection of a new, advanced gateway device equipped with built-in sensors for temperature, humidity, light, and motion detection. This hardware platform brought enhanced computational power and allowed for comprehensive environmental data collection.
To harness the new hardware’s capabilities, our team developed customized, lightweight drivers. These drivers were designed to communicate with each built-in sensor, translating sensor data into standardized digital formats for easy processing and analysis. Simultaneously, we created a series of intuitive web pages for configuring and monitoring the sensors. This web interface utilized AJAX and HTML5 to provide real-time updates and configurations without refreshing the page, making system interactions seamless and responsive.
A core technical challenge was making sure the new hardware was compatible with the existing MQTT-based data transmission system. We adapted the MQTT topics and payload structures to align with the new sensor data formats and transmission frequencies. This required writing additional middleware to dynamically translate data from the new sensor formats into the expected MQTT formats without data loss or delay.
The integration of Telit LTE functionality added another layer of complexity. This feature was essential for enabling the gateway to communicate over cellular networks, for remote deployments or areas without stable internet connectivity. Integrating this functionality required close collaboration with cellular service providers to obtain necessary certifications and provide compliance with network standards. Additionally, we developed an error-handling framework to manage intermittent connectivity and variable network speeds commonly experienced with cellular communications.
Further complications arose with integrating existing software modules like Node-Red, used for connecting hardware devices, APIs, and online services in innovative ways. We encountered compatibility issues between Node-Red’s deployment environment and the updated Node.js and Docker configurations on the new hardware. This required a deep dive into the Node-Red custom nodes, debugging flows, and scripts to accommodate the updated backend infrastructure for stable inter-module communication.
Moreover, the project’s Docker environment needed optimization to enhance system reliability and ease of maintenance. We simplified the Docker images, reducing their size and dependencies, and significantly improving deployment speeds and system stability. This optimization also involved scripting Docker container orchestration to automatically handle service failures and system updates without manual intervention.
Value Delivered
