This is the main project for development of a aggregating mqtt-sn-gateway for low embedded devices. Client implementations can be found in the linux-mqtt-sn-client or the arduino-mqtt-sn-client projects. The targeted resource consumption is 2KB RAM for the core module (excluding the different platform based implementations).
This is only the front page for the mqtt-sn-gateway, containing pre-built binaries and Dockerfiles. For the linux-mqtt-sn-gateway and arduino-mqtt-sn-gateway implementations go to the corresponding project or to Getting Started.
You may ask yourself: Why should i use MQTT-SN over basic MQTT, CoAP or HTTP (Rest)? The short answer is: resource constraines (energy, ram, computational power and flash size). But these are only the points on the first sight for MQTT-SN.
By using MQTT-SN in combination with MQTT we can provide homogeneous programming platform. For TCP/UDP based IoT devices with enough resources we can use MQTT, for non TCP/UDP based constrained IoT devices we can use MQTT-SN. The programming paradigm (publish-subscribe) and the architecture (centralized broker architecture) stays the same on both device types making it easy for developers to rapidly develop new products.
We support (or will support in the future) Arduino and Linux as Platforms. Arduino is restricted to some models.
For Arduino we support the following models:
- Arduino Mega
- ESP8266
- ESP32
For Linux we support the following architectures:
- x86
- ARM (especially Raspberry Pi)
We support a wide range of transmission technologies namely: Ethernet (UDP & TCP), WiFi (UDP & TCP), ZigBee, LoRa, BLE. Transmission Technologies depend on the used Hardware and thus on the platform supporting the needed Hardware. For more information use the Transmission Technology to Platform Matrix.
UDP | TCP | Ethernet | WiFi | ZigBee | LoRa | BLE | |
---|---|---|---|---|---|---|---|
Linux | ✅ | ❎ | ✅ | ✅ | ❌ | ❌ | ❌ |
Raspberry Pi | ✅ | ❎ | ✅ | ✅ | ❎* | ✅* | ❎ |
Arduino ESP8266** | ❎ | ❌ | ❎ | ❎ | ❎* | ❎* | ❎* |
Arduino ESP32** | ❎ | ❌ | ❎ | ❎ | ❎* | ❎* | ❎ |
Arduino Mega** | ❎* | ❎ | ❎* | ❌ | ❎* | ❎* | ❌ |
* needs additional transmission hardware ** needs additional storage for message queueing
- ✅ implemented and tested
- ❎ not implemented yet
- ❌ will not be implemented
The easiest way to use the mqtt-sn-gateway is linux with either pre-built binaries or Docker.
TODO create pre-built binaries and link
TODO create Docker-Container and upload to Docker-Hub
The fastest way to start is with Linux - Use the linux-mqtt-sn-gateway - getting started.
For Arduino mqtt-sn-gateway us the arduino-mqtt-sn-gateway - getting started.