Co je protokol MQTT?

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 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.

Mosquitto je bezplatný open source MQTT broker, který běží na Windows a Linuxu.

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.

MQTT-SN vs Coap pro robotiku

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: