It creates open source network of very cheap devices which can collect data or can be controlled for some actions. Also provides tools for data processing and network health monitoring.
This project is divided in three main parts:
- Data processing
- Open source - We believe that you can only trust to open source solution. You can never be sure that any closed source solution isn't backdoored, has't some critical vulnerability or creepy snooping feature.
- Scalable - MQTT based infrastructure allows you to very easily create new kind of endpoint devices or data processing software and deploy it into existing network.
- Extensible - You can deploy only one device without need of any complex infrastructure or you can have thousand devices span over the world. Possibilities are endless.
- Secure - Designed to be secured against data leak and network compromise
Infrastructure is based on MQTT protocol. It is lightweight publish-subscribe communication protocol originally developed by IBM.
Network is designed to span over many locations over the world, each with its own local MQTT broker. All local MQTT brokers are connected to single central MQTT broker to form large and robust network.
This approach allows to use cheap hardware for building endpoint devices and also use SSL encryption for data exchange.
Use of MQTT based network has several advantages:
- Minimize traffic - MQTT required very minimal network traffic. It also offers retain feature which allows you to send only environmental changes. Sensor do not have to periodically send that a doors are still closed.
- Response time - When some device needs to get some information, it do not have to poll some other device for it. Network can store this information itself.
- M:N relationship - Publish-subscribe communication allows you to build single device which reads data from multiple sensors and vice versa.
- Unified interface - MQTT is well documented and you can connect other MQTT compliant devices into same network.
- 3rd party independent - You don't have to rely to functionality if some 3rd party service.
- Distributed approach - Only small part of the network will be paralyzed when some broker goes down.
- Central processing - You can process and analyze data at single point.
- Real-time monitoring - Network can store information about which devices are online and which are not.
- Encryption - Bridging brokers via SLL tunnels.
Main part of this mqopen are endpoint devices. These devices can be sensors for gathering data, but also devices which can read data from the network and take some actions based on them.
Node is generally a device connected to MQTT network and capable of sending or receiving data. It can read data from various sensors or control some hardware.
All mqopen nodes shares same source code. They only differ in the configuration. This means than there is no need to maintain many differed source trees, which can leads to problematic bug fixing and code maintaining issues. When you find bug in some core routine, just fix it in the one place. And what about porting the code for another architecture?
User also don't have to write single line of code when building a new node. You don't have to implement any setup or loop functions like in Arduino or its derivatives. Creating your own bugs inst't a progress. All what user have to do is download a source code and configure it.
Node firmware is configured using kconfig langue originally developed by Linux kernel developers. Yes, you don't have to modify any header files either (like configuring firmware for 3D printer). Just issue 'make menuconfig' command and enjoy configuration interface.
Firmware is written in plain C language without any mysterious Arduino or LUA layers. These project are excellent tools for prototyping, but not for serious work. C language allows to do optimizations and you exactly know, what the processor does.
Firmware source code acts as framework which allows easy extensibility for adding new functionality.
Finally, collected data should be processed and analyzed. I created mqspeak software for updating ThingSpeak channels from MQTT publish messages.
I also plan to create some monitoring system to keep track which devices are connected to the network and if they are sending valid data with no error indications.
If you are interested in, please visit http://mqopen.org for more documentation.