IIoT Technologies

Here is an overview of the technologies we employ. Wherever possible we use open source solutions that benefit from many eyes on the code to ensure reliability and to spot security vulnerabilities.

MQTT

MQTT is THE lightweight messaging protocol for industrial IoT. Well, perhaps not entirely true. MQTT is a publish – subscribe system that requires an intermediary broker. The benefit is that it disconnects message generators (publishers) from message consumers (subscribers) which is particularly useful in applications where there is unreliable connectivity. MQTT carries many different types of payloads from simple binary sensor data, buffer data, to video. It can be configured for bi-directional communications.

MQTT Brokers

Two brokers are used in our typical deployments. The first is the open source Aedes.js and is preferred since it is written in node.js. We also employ MQTT.js as the client software.

Mosquitto is the Eclipse Foundation open source broker written in C that was released by IBM. Eclipse Paho clients are available in a variety of languages.

Alternative Messaging

CoAP (Constrained Application Protocol) is another popular protocol particularly targeted at devices with small memory space. CoAP works against REST (representational state transfer) api’s over HTTP. SOAP is a heavyweight protocol but has fallen out of favor in micro-services architectures .

RabbitMQ and AMPQ are two additional protocols that are more focused on data streaming.

Language Foundation – Node.js & javascript

Primarily, our software chain is written in node.js and javascript for a performant system while simplifying code maintenance and providing users a consistent environment for application development including visual coding tools.

In resource constrained devices (memory limitations), we employ C++ which compiles down to very compact firmware/application code as well as providing fast code execution. On linux based micro-controllers, we can employ Python for users to easily modify application code.

Express.js – The Backend

Express is the modern server platform. Code is written in Javascript & Node.js and utilizes Google’s V8 Engine for very high performance.

The server provides HTTP(S) interfaces for the ravenTT platform API. These interfaces are typically used for platform administration such as  device management and user and device authentication and authorization. However, the REST api is also available for data injection.

MQTT broker can be integrated with the server and allows upgrades to web-sockets for both HTTP and MQTT communications.

MongoDB Database

RavenTT implements MongoDB for message persistence. This can be configured to retain messages in case of broken network connections or sleeping devices reconnecting to the MQTT broker.

We have also implemented MongoDB as the noSQL data store for sensor telemetry storage such as time-series recording. This provides the long term storage as opposed to the current operations persistence.

ravenTT – the IIoT Platform

RavenTT is ravenIoT’s cloud based or locally installed platform designed to ingest sensor data, communicate data, store it, and provide analysis and visualization. RavenTT implements the MQTT messaging protocol for reliable smart device communication over bandwidth constrained or unreliable networks.

RavenTT is a pub/sub messaging system meaning the broker receives messages from publishers (message generators) and sends messages to subscribers (message consumers). RavenTT removes the need for direct and continuous connection between message generators and consumers. Network components can be both publishers and subscribers to support two-way messaging. MQTT is message agnostic meaning that the protocol allows for widely different payload structures and easily constructed messaging schemes to match application requirements.

MongoDB Database

RavenTT implements MongoDB for message persistence. This is configured to retain messages in case of broken network connections or sleeping devices reconnecting to the MQTT broker.

We have also implemented MongoDB as the noSQL data store for sensor telemetry storage such as time-series recording. This provides the long term storage as opposed to the current operations persistence.

Redis Data Store

Redis is used as an in-memory datastore enabling fast read/writes to the MQTT broker.

Websockets

Web-sockets can be backend application based or used in the browser. Web-sockets provide a bi-directional continuous communications channel between a server and client.

HTTP is a request-response protocol, the standard web communication method. After the request to a server is either satisfied (data delivered) or has failed, the HTTP session is terminated. In contrast, a server supporting web-sockets receives a communication request from a client. This request is over HTTP(S). After some ‘handshaking’ the client further requests an upgrade to web-socket communication and, if successful, a persistent channel is opened where the client and server can talk without the overheads of HTTP message packaging. Since there is no connect-disconnect going on, the messaging can be very fast.

Web-sockets avoids a client having to periodically poll the server for messages as well as a server not having to spend time responding “no new data”.

For processes generating high data-rates, web-sockets provide fast information delivery that can be acted upon to modify an active process or provide near-realtime alert systems.

ZigBee & XBee

ZigBee is a wireless 2.4 GHz standard built on IEEE 802.15.4 and is compatible across different manufacturers.

ZigBee is a mesh networking protocol with each node acting as a wireless data endpoint or repeaters forwarding the message packet to the network router.  Designed for relatively low data-rate applications it is often found in home automation including Amazon’s Alexa system.

XBee from Digi International is a family of radios sharing the same hardware form factor. Protocols include Zigbee but others modules include wifi, bluetooth and cellular. Modules are available in 2.4 GHz and 900 MHz. Pro models have higher power and combined with the sub GHz radios, impressive transmission distances can be achieved.