When setting up an IoT eco-system with a lot of different devices, it becomes quickly difficult to have them talking to each other. A few choices need to be made to solve this problem. This project assumes that one of those choices has been made: using MQTT as the messaging transport. This project then intends to help in the next set of choices to make: defining a messaging model and expressing it in an MQTT syntax to be shared by all devices.
This model is implemented as a python library aimed at facilitating coding the gateways between devices that do not support natively MQTT communication and the MQTT network. These gateways can then run as services on machines connected to these devices via whatever interface is available: serial, bluetooth, TCP, or else.
This project has two parts:
- The definition of the messaging model. It is an abstraction layer that defines a message not only by destination and content but by a few attributes adapted to domestic IoT environments.
- The implementation of this model through a python library. The library takes care of formatting and translating back and forth the messages between their MQTT syntax and their internal representation.
For more information, go to Concepts.
This project is provided with the core library,
and an example interface (the dummy interface) that does not
interface with anything but shows how the system works.
Once installed, running the application
dummy2mqtt allows to test the basic
configuration and show how it is reacting to incoming MQTT messages, for example.
Developers can then write their own interface by using the dummy interface as a template, or following the tutorial alongside the theoretical interface entry.
End users will download already developped interfaces, for which this library will simply be a dependency.
For a complete guide on how to develop an interface, go to Tutorial.