Awesome MQTT
A curated list of MQTT related stuff.
MQTT is a lightweight client-server publish/subscribe messaging protocol, optimized for high-latency or unreliable networks. This protocol is a good choice for Internet of Things applications, Telemetry, Sensor Networks, Smart Metering, Home Automation, Messaging and Notification Services.
Contents
- Community Resources
- Broker
- Tools
- Clients
- Scripting
- Interfaces
- Visualization, Dashboards
- Architecture, Convention
Community Resources
- mqtt.org.
- MQTT community wiki.
- Google Groups: MQTT.
- IRC channel #mqtt on the freenode network.
- A list of public brokers.
Blogs
Talks
- An Introduction to MQTT: Why HTTP isn't the King of the Internet of Things - Shinji Kim, Robert Bird - Akamai, Samsung Developer Conference 2017.
- Einführung in MQTT - Dominik Obermaier & Jens Deters, Building IoT conference 2016 (German).
Broker
- ActiveMQ - A fast Java multiprotocol messaging and Integration Patterns server.
- Aedes - Barebone MQTT broker that can run on any stream server, the node way.
- Emitter - A distributed, scalable and fault-tolerant publish-subscribe messaging platform based on MQTT protocol and featuring message storage.
- eMQTT - The Massively Scalable MQTT Broker written in Erlang/OTP.
- esp_uMQTT_broker - A basic MQTT Broker on the ESP8266.
- flespi - Free cloud MQTT broker with private namespaces, MQTT 5.0 support and gorgeous limits.
- hbmqtt - Python MQTT broker using asyncio.
- HiveMQ - Java based commercial MQTT Broker.
- hrotti - A MQTT broker written in Go.
- Moquette - Java MQTT lightweight broker.
- Mosca - Mosca is a node.js MQTT broker, which can be used Standalone or Embedded in another Node.js application.
- Mosquitto - "The" Open Source MQTT Broker.
- MyQttHub - Cloud MQTT broker.
- Mystique - An extendable MQTT broker written in Go, with HTTP capabilities for observability. Implements MQTT v3.1.1.
- RabbitMQ - RabbitMQ offers a MQTT Adapter.
- SurgeMQ - High Performance MQTT Server and Client Libraries in Go.
- VerneMQ - an Apache2 licensed distributed MQTT broker, developed in Erlang.
- Vert.x MQTT - Vert.x component to handle connections, communication and messages exchange with remote MQTT clients.
Tools
- imqtt - Interactive MQTT packet manipulation shell based on IPython.
- IoT-Testware - The Eclipse IoT-Testware is a collection of conformance test suites for IoT protocols enriched with additional tools for fuzzing and performance testing.
- moxy - A Golang MQTT proxy providing useful output traces to monitor and troubleshoot your MQTT communications.
- MQTT Board - Open-source diagnostic-oriented MQTT client tool.
- mqtt-admin - Web based MQTT frontend. Direct Link.
- mqtt-benchmark - A benchmarking tool for MQTT Servers.
- mqtt-client - A Simple MQTT Client command line (Python) (use paho lib)
- mqtt-forget - Command line tool to remove retained MQTT topics by wildcard.
- mqtt-fuzz - A simple fuzzer for the MQTT protocol.
- mqtt-malaria - scalability and load testing utilities for MQTT environments.
- MQTT-PWN - MQTT-PWN intends to be a one-stop-shop for IoT Broker penetration-testing and security assessment operations.
- mqtt-shell - A simple interactive shell for MQTT.
- mqtt-spy - Java based MQTT frontend. Supports scripting.
- mqtt-utils - A collection of MQTT utilities.
- mqtt-wall - Subscription only web-based client – like Twitter wall for MQTT.
- mqtt-wildcard - Node.js Module to match a MQTT Topic against wildcards.
- MQTT.fx - MQTT.fx is a MQTT Client written in Java based on Eclipse Paho. Supports scripting.
- mqttcli - MQTT Client for shell scripting.
- MQTTInspector - A general MQTT testing app for iOS (iPhone and iPad).
- MQTTLens - A Google Chrome application, which connects to a MQTT broker and is able to subscribe and publish to MQTT topics.
- Python MQTT Client Shell - a text console-based, interactive shell for exercising various tasks associated with MQTT client communications.
- Wireshark-MQTT - MQTT dissector for Wireshark.
Clients
- CocoaMQTT - MQTT for iOS and OS X written with Swift.
- emqttc - Asynchronous Erlang MQTT Client.
- gmqtt - Python MQTT v5.0 client (asyncio-based)
- hbmqtt - Python MQTT client using asyncio.
- Hulaaki - An Elixir library for clients communicating with MQTT brokers.
- luamqtt - Pure-lua MQTT client
- M2Mqtt - A MQTT client available for all .Net platforms (.Net Framework, .Net Compact Framework and .Net Micro Framework) and WinRT platforms (Windows 8.1, Windows Phone 8.1 and Windows 10).
- Machine Head - A Clojure MQTT Client.
- MIMIC MQTT Simulator - Simulate up to 100,000 MQTT clients per server for development/testing/deployment of IoT applications
- Moscapsule - MQTT Client for iOS written in Swift.
- Mosquitto-PHP - A wrapper for the Mosquitto MQTT client library for PHP.
- mqtt_cpp - MQTT client for C++14 based on Boost.Asio.
- mqtt_lua - MQTT Client library for the Lua language.
- MQTT-C - A portable MQTT C client for embedded systems and PCs alike.
- MQTT-Client-Framework - iOS, OSX, tvOS native ObjectiveC MQTT Client Framework.
- mqtt-client - A Polymer Web Component that implements a MQTT client (uses Paho mqttws31.js).
- mqtt-elements - Polymer elements for MQTT.
- mqtt-rs - MQTT protocol library for Rust.
- mqtt-wrapper - Polymer Element that wraps other Elements and links them to MQTT topics.
- mqtt.dart - Dart mqtt client.
- MQTT.js - MQTT client for Node.js.
- mqtt - MQTT Clients, Servers and Load Testers in Go.
- mqttex - MQTT implementation in Elixir.
- MQTTKit - MQTT Objective-C client for iOS.
- Paho - Open source client implementations (C/C++, Java, Python, Javascript, Go, C#).
- pubsubclient - A client library for the Arduino Ethernet Shield that provides support for MQTT.
- ruby-mqtt - Pure Ruby gem that implements the MQTT protocol.
- rumqtt - A fast, lock free pure rust MQTT client.
- tcl-mqtt - Small library to connect to a MQTT broker. Very, very basic.
- TMQTTClient - MQTT Client Library for Delphi.
- Vert.x MQTT - Vert.x component that provides methods for connecting/disconnecting to a broker, publishing messages and subscribing to topics.
- wolfMQTT - A client implementation of the MQTT written in C for embedded use. It supports SSL/TLS via the wolfSSL library.
Scripting
- logic4mqtt - Java based Logic and scripting engine for use with MQTT. Uses Java's general scripting interface, so scripts can be written in a multitude of languages like Javascript, Groovy etc.
- mqtt-scripts - Node.js based script runner.
- Node-RED - A visual tool for wiring the Internet of Things.
Interfaces
Makers
- arduinoTemps2mqtt - Arduino sketch, grab One-wire Temperature's and publish to a MQTT broker.
- Basecamp - An Arduino library to ease the use of the ESP32 in IoT projects. See c't Magazin 2'2018 (German).
- esp_mqtt - MQTT client library for ESP8266.
- mqtt-ir-transceiver - ESP8266 based bidirectional gateway between MQTT and IR. Use with PlatformIO.
- mqtt-with-micropython - Connect to MQTT with micropython and wipy/others (ESP32 inside)
- MySensors - Arduino NRF24L01 based sensor network with support for an MQTT gateway
- nodemcu-gpiomqtt - Lua script to connect ESP8266 GPIOs to MQTT.
- pubsubclient - A client library for the Arduino Ethernet Shield that provides support for MQTT.
- RFM69-MQTT-client - Arduino RFM69 based sensors and MQTT gateway.
- rpi2mqtt - Connect a RaspberryPis GPIOs and 1-Wire Temperature Sensors to MQTT.
- xbee2mqtt - XBee to MQTT gateway.
Industry
- CODESYS-MQTT - A MQTT client for CODESYS PLC
- modbus2mqtt - Modbus master which publishes register values via MQTT.
- mqtt2opcua - Bi Directional MQTT to OPCUA Bridge.
- OPC Router - MQTT Gateway (publisher/subscriber) with various plug-ins (OPC UA Bridge, SQL Bridge, REST Bridge, SAP Bridge)
Telephony, PBX
- agi-mqtt - Interface between Asterisk and MQTT.
- fritz2mqtt - Connect FRITZ!Box to MQTT.
- sip2mqtt - A SIP monitoring script that publishes incoming calls with CallerID to MQTT.
Operating System
- mqtt-os-status - Operating-system related data, published to an MQTT broker at fixed intervals.
- mqttlauncher - Execute shell commands triggered by published MQTT messages.
- mqttpc - Control processes via MQTT. Ability to send signals via MQTT and to publish stdout/stderr or pipe MQTT payloads into stdin.
- mqttwatchdir - Recursively watch a directory for modifications and publish file content to an MQTT broker.
- psmqtt - Utility reporting system health and status via MQTT.
- WinThing - Remotely control Windows through MQTT.
Monitoring
- check-mqtt - A Nagios/Icinga plugin for checking connectivity to an MQTT broker.
- nag2mqtt - Nagios event broker to MQTT gateway.
- notify-by-mqtt - A Nagios/Icinga notification module which wraps data into JSON and fires it off to an MQTT broker.
Location tracking
- OwnTracks - Location tracking and geofencing for MQTT.
Logging
- graylog-plugin-mqtt - MQTT Input Plugin for Graylog.
- influx4mqtt - Subscribe to MQTT topics and insert into InfluxDB.
- mqtt2elasticsearch - Send MQTT messages to Elasticsearch.
- mqtt2graphite - Subscribe to MQTT topics and push to Graphite's Carbon server.
- mqttcollect - A collectd "Exec" plugin for MQTT.
- mqtthandler - A Python logging handler module for MQTT.
Smart Home Hardware Interfaces
- aqara-mqtt - Aqara (Xiaomi) Gateway to MQTT bridge.
- aqara2mqtt - Attach Aqara Smart Hubs to MQTT.
- cul2mqtt - Interface between Busware CUL (868MHz RF-Devices like ELV FS20, HMS, EM, ...) and MQTT.
- domiqtt - Connects to a Domiq Base (LCN) and translate from and to MQTT.
- eno2mqtt - Interface between an Enocean USB300 (TCM310) adapter and MQTT.
- Evohome2mqtt - MQTT Interface for the Honeywell Evohome system.
- helios2mqtt - A daemon for syncing a helios easy controls system like my KWL EC 220D to MQTT.
- hm2mqtt.js - Interface between EQ-3's Homematic line of smarthome devices and MQTT. Supports Homematic IP.
- homeeToMqtt - Bidirectional Interface between homee and MQTT.
- HS100toMQTT - Gateway between TPLink HS100/HS110 and MQTT.
- ipcam2mqtt - A small ftp server to receive movement images from ipcameras and turn them into mqtt alerts.
- knx-mqtt-bridge - ridges KNX and MQTT using the knx.js library.
- knx2mqtt - Interface between the KNX home automation standard and MQTT.
- mcsMQTT - Plug-in for HS3 (HomeSeer).
- mqtt-dss-bridge - MQTT digitalSTROM-Server Bridge.
- mqtt2homekit - Roughly the opposite of homekit2mqtt: Control your HomeKit-enabled devices with MQTT and without Siri or iPhone.
- node-lox-mqtt-gateway - Gateway for Loxone™ mini server to communicate with MQTT broker.
- smartthings-mqtt-bridge - Bridge between SmartThings and MQTT.
- Sonoff-Tasmota - Firmware for Sonoff devices with native MQTT Support.
- xiaomi2mqtt - bridge between the Xiaomi Smart Home Gateway Aquara and a MQTT server.
- zigbee2mqtt - Allows you to use your Zigbee devices without the vendors (Xiaomi/TRADFRI/Hue) bridge/gateway.
Smart Home Integration Software
- control-freak - IDE for IoT & friends. Built in MQTT support.
- Domoticz - Domoticz beta supports MQTT.
- FHEM has a MQTT module since V5.6.
- Home Assistant has a MQTT component.
- Home.Pi is based on MQTT.
- Homegear has build in MQTT support.
- homekit2mqtt - Interface between HAP-NodeJS and MQTT. Control MQTT connected devices with Siri or HomeKit Apps.
- ioBroker has a MQTT adapter.
- Lelylan - IOT Cloud Platform. Microservices Architecture. For Developers.
- Node-RED - A visual tool for wiring the Internet of Things, has native MQTT Support.
- openHAB has a MQTT binding.
- pimatic has a MQTT plugin.
Lighting
- Arilux_AL-LC0X - This is an alternative firmware for Arilux LED controllers which uses MQTT.
- chromoflex2mqtt - Control Chromoflex USP3 RGB LED modules via MQTT.
- h801/mqtt - Alternative firmware for the H801 LED dimmer that uses MQTT as a control channel.
- hue2mqtt.js - Interface between the Philips Hue bridge and MQTT.
- MQTT DMX Controller - DMX Controller with MQTT support.
- mqtt-dmx-sequencer - Headless counterpart to MQTT DMX Controller - use scenes and sequences exported from the MQTT DMX Controller and control them via MQTT.
- sunricher-wifi-mqtt - control Sunricher LED devices using MQTT.
- TRADFRI2MQTT - MQTT Bridge for IKEA TRÅDFRI Light Gateway.
Home Entertainment
- airtunes2mqtt - MQTT controlled Multi-Room Audio with Airplay/Airtunes Devices.
- bravia2mqtt - Control your Sony Bravia TV with MQTT.
- broadlink-mqtt - MQTT client to control BroadLink RM devices.
- chromecast-mqtt-connector - Control your Google Chromecast devices using MQTT.
- harmony-api - A simple server allowing you to query/control multiple local Harmony Home Hubs over HTTP or MQTT.
- htd2mqtt - Bridge between an HTD Lync audio system and MQTT.
- kodi2mqtt - Interface between a Kodi media center instance and MQTT.
- lgtv2mqtt - Interface between LG WebOS Smart TVs and MQTT.
- lirc2mqtt - Send and receive infrared via LIRC.
- mopidy-mqtt - MQTT features for Mopidy.
- MQTT-DashCast-Docker - MQTT Docker to launch DashCast session on Chromecast.
- mqtt2atlonamatrix - Control Atlona HDMI matrix switches with MQTT.
- mqtt2tivoremote - Make TiVo DVR remote control available through an MQTT smarthome style interface.
- onkyo2mqtt - Interface between Onkyo AVR's EISCP network remote protocol and MQTT. Uses the onkyo-eiscp library.
- sonos2mqtt - A bridge between Sonos and MQTT.
- VLC MQTT Module - Control VLC via MQTT.
- xbmc2mqtt - A simple plugin for XBMC to listen for a particular topic on an MQTT broker, and display a popup message.
- yamaha-avr2mqtt - A simple adapter for connection Yamaha AVR to MQTT.
Smart Metering
- bcontrol2mqtt - Publish measurements from TQ Energy Manager to MQTT.
Messaging
- mqtt-irc-bot - A MQTT to IRC / IRC to MQTT bridge or bot.
- mqttwarn - Subscribe to MQTT topics (with wildcards) and notifiy pluggable services.
- twitter-to-mqtt - A python daemon that uses the Twitter Streaming API to access tweets and republishes them to an MQTT topic.
Misc
- AlexaMqttBridge - Bridge between Amazon Alexa and Mqtt.
- bt-mqtt-gateway - Easily extensible Bluetooth to MQTT gateway, currently supports: EQ3 smart thermostat, Xiaomi Mi Scale, Linak Desk, MySensors and Xiaomi Mi Flora plant sensor.
- buderus2mqtt - Bridge between Buderus KM200 internet gateway and Mqtt.
- dashbutton2mqtt - Publish Amazon Dash Button presses to MQTT.
- flowerpower2mqtt - Publish measurements from Parrot Flower Power plant sensors to MQTT.
- gBridge - gBridge allows you to control (almost) any smart home device, any smart home software, with Google Assistant. Therefore, it transforms actions received from Google by voice commands to MQTT messages.
- haiku2mqtt - A bridge between Haiku smart fans and MQTT.
- homely - Collection of Go daemons for connecting Domoticz and other stuff.
- kobold2mqtt - Bridge between Vorwerk Kobold Vr200 internet gateway and Mqtt.
- leaf-python-mqtt - Extract data from Nissan Leaf API and post to mqtt.
- miflora-mqtt-daemon - Linux service to send Xiaomi Mi Flora plant sensor data to an MQTT broker.
- mqtt2ble - A way to bridge MQTT topics to BLE Gatt characteristics.
- mqttclpro - MQTT Client with tasker integration Android app.
- mqttDB - A JSON store with MQTT interface.
- node-mqtt-for-anki-overdrive - Node.js Controller and MQTT API for Anki Overdrive.
- parrot-sample - Sample code which uses MQTT to control a Parrot AR Drone.
- snowboy2mqtt - Publish MQTT Messages on Snowboy Hotword Detection.
- speedtest2mqtt - Run speedtest-cli and publish results via MQTT.
- unifi2mqtt - Publish connected clients from Ubiquiti Unifi to MQTT.
- wlan-thermo-mqtt-addon - Addon for a popular DIY barbecue thermometer.
- Tasker (Automation for Android) MQTT Publisher Plugin.
Visualization, Dashboards
- Crouton - A dashboard that taps into your IOT network, using only MQTT and JSON.
- d3-MQTT-Topic-Tree - A MQTT Topic Tree viewer using the d3 collapsable tree and MQTT over websockets.
- HelloIoT - HelloIoT is a MQTT client and dashboard application.
- HOMR-REACT - A configurable MQTT Visualization.
- IoT OnOff - Configurable iOS/Android app.
- Linear MQTT Dashboard - Easy, customizable control panel - MQTT-client.
- MMM-mqtt - This is an extension for the MagicMirror². It provides the ability to subscribe to MQTT topics and display them.
- MQTT Dash - Android App: With the app you can create dashboards for your MQTT enabled IoT Smart Home devices and applications.
- mqtt-panel - A web interface for MQTT.
- mqtt-svg-dash - Subscribe to MQTT, extract JSON from a message and make lights blink on an SVG page.
- mqtt2highcharts - Plotting live numbered data from a subscribed mqtt topic using Highcharts.
- node-red-dashboard - A dashboard UI for Node-RED.
- thingsboard - Device management, data collection, processing and visualization for your IoT projects.
Other tools that can be used to create Visualization/Dashboards can be found under Smart Home Integration Software
Architecture, Convention
- mqtt-smarthome - Smart home automation with MQTT as the central message bus - Architectural proposal.
- The Homie Convention - A lightweight MQTT convention for the IoT.
Contribute
Contributions welcome! Read the contribution guidelines first.