Co je MQTT?
MQTT je zjednodušený protokol pro zasílání zpráv pro publikování/odběr navržený pro telemetrii M2M (machine to machine) v prostředích s malou šířkou pásma.
Byl navržen Andy Stanford-Clarkem (IBM) a Arlenem Nipperem v roce 1999 pro připojení ropovodů telemetrických systémů přes satelit.
Ačkoli to začalo jako proprietární protokol, byl vydán Royalty free v roce 2010 a stal se standardem OASIS v roce 2014.
MQTT je zkratka pro MQ Telemetry Transport, ale dříve byla známá jako Message Queuing Telemetry Transport.
MQTT se rychle stává jedním z hlavních protokolů pro nasazení IoT (internet věcí).
Verze MQTT
Existují dvě různé varianty MQTT a několik verzí.
- MQTT v3.1.0 –
- MQTT v3.1.1 – běžně používané
- MQTT v5 – Momentálně omezené použití
- MQTT-SN – viz poznámky dále
Původní MQTT, který byl navržen v roce 1999 a používá se již mnoho let a je určen pro sítě TCP / IP.
MQTTv3.1.1 je běžně používaná verze.
Mezi verzí 3.10 a 3.1.1 je velmi malý rozdíl. Zde je stránka Githubu, která podrobně popisuje hlavní rozdíly:
Zde je aktuální specifikace MQTT V3.1 a zde je podrobnější přehled struktury paketů protokolu MQTT.
Nejnovější verze MQTT (v5) byla nyní schválena (leden 2018). Specifikaci si můžete stáhnout zde.
Pokud vás zajímá, co se stalo s 4, podívejte se sem.
Další informace naleznete v tématu Přehled nových funkcí MQTT v 5.0
Zde je stránka Githubu, která podrobně popisuje hlavní rozdíly mezi MQTT v3.1.1 a MQTT v5.
Poznámky k podpoře MQTT verze 5:
Od verze 1.6 podporuje makléř mosquitto kromě MQTT v5.3 také MQTT v11.
Můžete i nadále používat staršího klienta verze 3.11 s nejnovějším zprostředkovatelem.
Klient Paho Python v 1,5 teď podporuje v5.
Poznámky MQTT-SN
MQTT-SN, který byl specifikován kolem roku 2013 a navržen pro práci přes UDP, ZigBee a další transporty.
MQTT-SN se v současné době nezdá být příliš populární. a specifikace se několik let nezměnila, ale očekávám, že se to změní, jakmile začne nasazení IoT. Viz pracovní poznámky MQTT-SN. pro více informací o MQTT-SN.
Klienti MQTT
Protože klienti MQTT nemají adresy jako e-mailové adresy, telefonní čísla atd. Nemusíte přiřazovat adresy klientům, jako to děláte u většiny systémů zasílání zpráv.
Pro MQTTv3.1.1 je klientský software dostupný téměř ve všech programovacích jazycích a pro hlavní operační systémy Linux, Windows, Mac z projektu Eclipse Paho.
- Klient Paho Pythonu.
- Node.js MQTT Client-Starting Guide
- JavaScript Websocket klient
- Klient C++ s Arduinem
Klient Paho v 1.5.1 nyní podporuje MQTTv5.0. Zde je odkaz na tabulku porovnání klientů a stránku ke stažení.
V současné době používám klienta Pythonu z této stránky githubu, který podporuje v5.
MQTT makléři nebo servery
Poznámka: Původní termín byl broker, ale nyní byl standardizován jako Server. You uvidí oba použité termíny.
K dispozici je mnoho zprostředkovatelů MQTT, které můžete použít pro testování a pro skutečné aplikace.
Existují zdarma vlastní hostovaní makléři , nejoblíbenější je Mosquitto a komerční jako HiveMQ.
K dispozici je také Pro MQTT broker verze mosquitto k dispozici jako vlastní hostovaný i cloud hosting od společnosti vyvíjející mosquitto (Cedalo).
Pokud nechcete instalovat a spravovat vlastního makléře, můžete použít cloudového makléře.
Eclipse má zdarma veřejný MQTT broker a COAP server, který můžete také použít pro testování.
Seznam možností hostování najdete v článku MQTT Brokers and Servers. a stránka Mosquitto pro více informací o makléři mosquitto
MQTT přes WebSockets
Websockety umožňují přijímat data MQTT přímo do webového prohlížeče.
To je důležité, protože webový prohlížeč se může stát DE-facto rozhraním pro zobrazení MQTT dat.
Podpora MQTT websocketu pro webové prohlížeče je poskytována klientem Javascript MQTT.
Viz –Použití MQTT přes WebSockets
Zabezpečení MQTT
MQTT podporuje různé autentizace a mechanismy zabezpečení dat.
Je důležité si uvědomit, že tyto mechanismy zabezpečení jsou nakonfigurovány na zprostředkovateli MQTT a je na klientovi, aby dodržoval zavedené mechanismy.
Viz Úvod do bezpečnostních mechanismů MQTT
Kurz MQTT
Průvodce krok za krokem k MQTT 3.1.1 –Kurz MQTT Basics for Beginners
Časté dotazy
Pokud jste obeznámeni s webem a e-mailem, pak pravděpodobně zjistíte, stejně jako já, že MQTT je velmi odlišný. To jsou některé z otázek, které jsem měl, a viděl na jiných stránkách a fórech, které mohou věci trochu vyjasnit.
Otázka: Jaký port MQTT normálně používá?
A- Standardní port je 1883.
Otázka: Můžete používat MQTT bez makléře?
A- Ne, podívejte se, jak MQTT funguje
Q- Jaký protokol MQTT používá?
A- Standardní verze používá protokol TCP/IP.
Otázka: Může více klientů publikovat na stejné téma?
A- Ano
Q- Je možné znát identitu klienta, který zprávu publikoval?
A- Ne, ne, pokud klient nezahrne tyto informace do tématu nebo datové části.
Otázka: Co se stane se zprávami, které jsou publikovány u témat, k jejichž odběru se nikdo nepřihlásí?
A- Makléř je vyřadí.
Q-Jak zjistím, jaká témata byla publikována?
A- Nemůžete to udělat snadno, protože makléř zřejmě nevede seznam publikovaných témat, protože nejsou trvalé.
Otázka: Mohu se přihlásit k odběru tématu, které nikdo nepublikuje?
A- Ano
Q- Jsou zprávy uloženy u makléře?
Odpověď: Ano, ale pouze dočasně. Jakmile jsou odeslány všem účastníkům, jsou vyřazeny. Ale viz další otázka.
Otázka – Co jsou uchovávané zprávy?
A- Při publikování zprávy můžete nechat zprostředkovatele uložit poslední publikovanou zprávu. Tato zpráva bude první zprávou, kterou noví odběratelé uvidí, když se přihlásí k odběru daného tématu. MQTT uchovává pouze 1 zprávu. Viz téma Principy zachovaných zpráv
MQTT a Python
Mnoho ukázkových skriptů na tomto webu používá Python. Python je dobrou volbou pro učení MQTT, protože se snadno používá a je snadno dostupný. Viz použití klienta MQTT Paho Pythonu.
MQTT a Node-Red
Pokud nechcete programovat, pak Node-Red je nástroj založený na toku, který usnadňuje vytváření projektů MQTT. Podívejte se na Průvodce pro začátečníky k uzlové červené na mém druhém webu, abyste mohli začít.
Další MQTT tutoriály
Zde je seznam všech MQTT tutoriálů na tomto webu
MQTT kvíz
Otestujte své znalosti MQTT pomocí kvízu o základech MQTT
MQTT vs HTTP
Pokud vás zajímá, zda je MQTT nejlepší volbou pro váš projekt, pak je zde sbírka článků porovnávajících MQTT s HTTP.
- Internet věcí: Bitva protokolů (HTTP vs. Websockets vs. MQTT)
- MQTT vs. HTTP: který z nich je nejlepší pro IoT?
- Testy výkonu HTTP vs MQTT
- MQTT a HTTP : Porovnání dvou IoT protokolů – obsahuje chyby, ale graf je užitečný
Příklad nasazení MQTT v reálném světě
Často je užitečné a zajímavé vidět, jak se konkrétní technologie skutečně používá. Zde je několik příkladů, na které jsem narazil: