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:
- Infrastructure
- Nodes
- Data processing
Features
- 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
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.
Nodes
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....
Read more »
This is something I've been working on at my place you have your final project mapped out so much better then mine. I will be watching and throwing my two cents in when i have it for you.