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:

  1. Infrastructure
  2. Nodes
  3. Data processing

Features

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:

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.

Data processing

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.

Learn more

If you are interested in, please visit http://mqopen.org for more documentation.