MQTT

Awesome MQTT

Awesome

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.

Community Resources

Blogs

Talks

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 MQTT Broker that supports MQTT 3.1, 3.1.1 and 5.0. Commercial and open source editions available.
  • 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.

Platforms

  • mainflux - device management, data aggregation, data management, data analytics,connectivity and message routing and event management. Supported by Linux Software Foundation. Core analytics
  • thingsboard - Device management, data collection, processing, event management, and visualization for your IoT projects.

Tools

  • hivemq-mqtt-web-client - Browser-based MQTT client that utilizes MQTT over websockets. Direct Link
  • 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 CLI - A command line interface for connecting various MQTT clients supporting MQTT 5.0 and 3.1.1.
  • 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_tree - Displays all Topics in an expandable tree, helps to get an overview if you have a lot of clients publishing. (python, tkinter)
  • 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.
  • MQTT Explorer - Tool to visualize your MQTT topics in a topic hierarchy, a MQTT swiss-army knife.
  • Python MQTT Client Shell - a text console-based, interactive shell for exercising various tasks associated with MQTT client communications.
  • SimpleMQTT - A Slack app to send messages from Slack to MQTT brokers with slash commands.
  • Wireshark-MQTT - MQTT dissector for Wireshark.

Clients

  • aiomqtt - Async Python MQTT client based on paho-mqtt.
  • 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.
  • hivemq-mqtt-client - High-performance Java MQTT client library with different API flavours for MQTT 5.0 and 3.1.1.
  • Hulaaki - An Elixir library for clients communicating with MQTT brokers.
  • luamqtt - Pure-lua MQTT v3.1.1 and v5.0 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-stats - Subscriber client to monitor MQTT Topic Statistics
  • 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.
  • MQTTnet - MQTT client and broker implementations in .NET.

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

Industry

  • CODESYS-MQTT - A MQTT client for CODESYS PLC
  • spicierModbus2mqtt - 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.
  • 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.
  • mqtt2notifysend - Subscribe to a topic and show notifications from MQTT messages on Ubuntu & other notify-send compatible Linux distros.

Location tracking

  • OwnTracks - Location tracking and geofencing for MQTT.

Logging

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

Lighting

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

Messaging

  • mqtt-irc-bot - A MQTT to IRC / IRC to MQTT bridge or bot.
  • mqttwarn - Subscribe to MQTT topics (with wildcards) and notify 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.
  • Valetudo - Xiaomi (Roborock) Vacuum Robots Firmware with MQTT and Webinterface.
  • 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 collapsible 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.

Other tools that can be used to create Visualization/Dashboards can be found under Platforms and Smart Home Integration Software.

Architecture, Convention

Security, Encryption

  • Teserakt E4 - End-to-end encryption for MQTT and other M2M protocols - Commercial solution.

Contribute

Contributions welcome! Read the contribution guidelines first.

License

CC0