Rule-Based Fault Management for Environmental Monitoring IoT system
Description of the project
The idea of the project was to build a fault management solution for distributed IoT systems. Fault managment, along with security, is among the most important management features of IoT networks. The solution had to demonstrate three main fault management functions:
- detect faults in IoT system from symptons (events and messages, containing raw data about faults);
- isolate and diagnose the causes of faults;
- apply the fault recovery procedures.
The rule-based reasoning technic had to be used for the implementation of these functions.
The environmental monitoring IoT system was selected as an example of the diagnosable system.
The current status
The following is already done:
- the hardware part of environmental monitoring system created;
- the sensor node software fully implemented;
- the Raspberry Pi based field IoT gateway configured to work as the Wireless Access Point;
- Mosquitto MQTT broker installed and configured on the IoT gateway component;
- the IoT gateway software partially implemented (this work is in progress, see GitHub repo with the sources);
- one DigitalOcean 1Gb CentOS 7 droplet created;
- Docker and Docker Compose installed on the droplet;
- Docker daemon secured with TLS;
- Eclipse Hono v0.5-M3 deployed on the droplet and tested.
Well, there is still much to be done :)
Changes in the components of the solution
Current changes are related to the implementation of the sensor node and field gateway components:
The sensor node component's ESP-12 modules replaced with SparkFun ESP8266 Things. The Raspberry Pi based IoT gateway now configured as the WAP for sensor nodes and connected to the router using LAN connection.
I initially considered Kura for the IoT gateway, but after some research think it's a bit overcomplicated for the case of the project. I needed to implement bidirectional MQTT - AMQP bridge to connect Mosquiotto broker, which running locally on Raspberry PI and Eclipse Hono AMQP telemetry endpoint, running on the DigitalOcean droplet. And as I can see there is no direct way to implement it with Kura. I would have to develop a bundle from scratch to support request-response scenario for the local Mosquitto. Also Kura's CloudService is EDC specific and it seems like it doesn't fit Hono API. So I decided to implement custom IoT micro-gateway using Apache Camel and run it as Linux service on IoT gateway component. In this case it will be possible to connect to Hono using Hono API through AMQP protocol.
As it is seen now, the declared scope of the project turned out to be too broad for the stated time frame. And, unfortunately, working full-time, it was not always possible to fully engage in the Challenge.
In conclusion I want to note that this is definitely not the end of the journey. I will update this blog regularly. So stay tuned :)