Komáři se ženili aneb něco o MQTT

AjSíKjů pro věci

http://mqtt.org/Internet věcí (IoT) propojuje různé přístroje, nástroje, senzory, … do jedné sítě. I tyto „věci“ mezi sebou touží komunikovat a k této jejich komunikaci slouží takové jejich „sociální sítě“ (tedy spíše komunikační protokoly). Tato komunikace se souhrnně označuje M2M (Machine to Machine) a vlastních komunikačních způsobů, protokolů a technologií existuje celá řada. My se v tomto článku zaměříme na jednoduchý M2M komunikační protokol MQTT (Message Queuing Telemetry Transport) vyvinutý a prosazovaný především firmou IBM. My se tímto protokolem komunikace „věcí“ budeme zabývat proto, že existují pohodlné, volně dostupné nástroje, které tento protokol umožňují jednoduše využít v projektech postavených na platformě Arduino či ESP8266.

Struktura MQTT

MQTT je jednoduchý komunikační protokol postavený nad TCP/IP, který umožňuje mezi jednotlivými subjekty přednášet krátké zprávy. Zprávy mohou produkovat například čidla, ta je poskytují (publikují, angl. publish) do jednoho centra. Tomuto centru se říká MQTT Broker. Každá zpráva je publikována s někajaký názvem tématu (topic). Toto téma po jeho publikaci poté broker rozešle všem klientům, kteří si je objednali k odběru (subscribe).
Klientem může být nějaká webová služba, jednoduchý program, či jiné zařízení (např. displej), které tuto zprávu dále zpracuje, např. zobrazí. Takže vaše ESP8266 může publikovat stav teploty a zároveň třeba odebírat topic určující stav RGB diody a nějakého pinu ovládajícího LEDku, relé, atp. V pravidelných intervalech jsou tedy broker a jeho „klienti“ informováni o stavu teploty na příslušném topicu a zároveň úplně jiné zařízení může ovládat stav RGB diody či zapnutí, nebo vypnutí relé. V sumě tedy odesílající zařízení pošle zprávu označenou nějakým tématem (topic) brokeru a ten okamžitě tuto stejnou zprávu rozešle všem klientům, kteří toto téma (topic) mají u brokeru zaregistrované k odběru.
komarSchema

Topic – téma zprávy

Téma zprávy je textový řetězec, který může být pomocí znaku „/“ rozdělen do několika úrovní. Může vypadat například takto:
chata/venku/teplota
home/inside/temperature
arduino/output/pin13
Užijeme-li tématu chata/venku/teplota v naší odeslané zprávě, pak všichni odběratelé, kteří odebírají tento topic, či vše co patří do úrovně chata, atp. dostanou tuto zprávu. Systém úrovní témat umožňuje různé druhy filtrování a používání zástupných znaků, takže např. můžete odebírat zprávy, které jsou buď přesně daného topicu, či spadají do nějaké úrovně struktury témat i například v nějaké své větvi či úrovni obsahují nějaký řetězec, např. teplota.

Více např. v článku na HiveMQ, který popisuje i dobrou praxi volby názvů vašich publikovaných témat a jednotlivých úrovní.

Payload – obsah zprávy

Vlastní obsah odeslané zprávy (payload) mohou být jakákoli data. Protokol sám nespecifikuje jakého typu data mají být, takže lze posílat text, binární data, obrázky, hudbu. Záleží pak jen na tom, jakým způsobem si s vámi odeslanými daty poradí odběratel. Samotný broaker rozešle odběratelům vaši zprávu přesně v té formě, ve které jí od vás dostal. Velikost zprávy bývá omezena brokerem. Námi používaný broker omezuje velikost zprávy na 268435455 bajtů.

Broker – MQTT server

Centrem MQTT komunikace je broker. Program (server), který publikované zprávy přijímá a přeposílá je odběratelům. Vzhledem ke standardizovanému protokolu MQTT existuje několik implementací MQTT brokeru. Mezi makery je hojně používaná volně dostupná opensource implementace Mosquitto. V dalším článku si ukážeme jakým způsobem naintalujeme tento broker na Raspberry Pi.

Klienti

S MQTT může komunikovat buď specializovaný sofware (MQTT klient – jejich zajímavý seznam je opět na HiveMQ), případně můžete implementaci MQTT nasadit do vašeho programu v téměř libovolném jazyce a pro tuto variantu existuje několik již hotových knihoven, nejpoužívanější jsou opensource knihovny pro jazyky Python, C, javascript (websockets) atp. projektu PaHo.

Knihovnu pro Arduino IDE naleznete s popisem zde, knihovnu můžete získat v posledních verzích Arduino IDE přímo ve správci knihoven.

  1. Komáři se ženili aneb něco o MQTT
  2. Instalace MQTT brokeru Mosquitto na Raspi a FreeBSD
  3. Komár (mosquitto) na Raspi
  4. ESP8266 a Arduino IDE
  5. ESP8266 a použití v praxi
  6. ESP8266 jako teplotní čidlo
  7. ESP8266 jako IoT display
Příspěvek byl publikován v rubrice Arduino, IoT se štítky , , . Můžete si uložit jeho odkaz mezi své oblíbené záložky.