What is MQTT?

MQTT is an OASIS standard messaging protocol for the Internet of Things (IoT). It is designed as an extremely lightweight publish/subscribe messaging transport that is ideal for connecting remote devices with a small code footprint and minimal network bandwidth. MQTT is used in a wide variety of industries, such as automotive, manufacturing, telecommunications, oil and gas, etc.

MQTT's main benefits are:

  • Lightweight and efficient
  • Bidirectional communications
  • Reliable message delivery
  • Support for unreliable networks

MQTT with Xyte

Xyte fully supports the MQTT v5 standard, which can be used in parallel with the existing HTTP(S)-based protocol.

There are two architectural approaches to using MQTT with Xyte:

Mixed approach

Use the HTTPS based protocol and only use MQTT to subscribe to channels. This approach allows to keep the existing HTTPS based implementation and improve it by using MQTT to subscribe to channels (e.g. commands, licenses, etc) allowing the device to be notified almost immediately of any relevant actions performed by the users.

In this scenario the telemetry sending rate can be lowered to once every 10s of seconds.

Full MQTT

Only the Registration API is used as HTTPS and (almost) all communication between the device and the server is done via MQTT.

The exception is the need to handle status after a device was offline as MQTT updates are queued for a limited time. Any device reset/restart/etc will require the code to send (even an empty) telemetry via Send Telemetry API to get the server state regarding new commands, licenses, etc. As those might of changed while the device was offline.