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
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.
Nodes are divided into classes:
Sensor simply reads data from a connected hardware and sends them to the network.
Sensors are divided into following categories based on how they operate:
To configure firmware as sensor select
Device class to
Synchronous sensor reads data from the hardware in periodic fashion. It basically reads data, sends them to the network and goes into sleep for a while. And all over again.
List of currently implemented synchronous sensors:
Asynchronous sensors sends data only when some event happens. For example when it is detects that a door has been opened or closed. Or when used pushes a button. Asynchronous sensors are sending only changes.
It takes advantage of MQTT retain bit feature. Any device can at any time connect into the network and instantly known current state of your doors.
List of currently implemented asynchronous sensors:
Reactor device class is exactly opposite to sensor class. Reactor reads data from the network and is able to take some reaction. Such as turn on lights. It is also capable of sending a notification when it reacts.
For example, you can have reactor device configured to turn on lights when outside light level is below 500 lx. When it does, it will notify a network that lights are on.
List of currently implemented reactors: