MQTT klient v C++

Následující článek navazuje na článek, který představoval protokol MQTT. V tomto článku byly představeny základní principy protokolu. Především tři typy uzlů – producent, konzument a jejich komunikačního zprostředkovatele.

Následujících pár řádek se věnuje malé rekapitulaci.

  • v síti se nejdříve spustí zprostředkovatel – broker
  • producent informace se zaregistruje ke zprostředkovateli na dané téma – topic
  • konzument informace se rovněž zaregistruje ke zprostředkovateli na stejné téma – topic

V takto připravené síti je pak možné velmi snadno vyměňovat informace mezi producentem a konzumentem, přes jejich společné téma.

Implementací zprostředkovatele (brokeru) se zabývat nebudeme, ve většině případů si vystačíme s již hotovými řešeními. Celá řada z nich je open-source a tedy jejich zdrojové kódy jsou dostupné a jejich použití ve vlastních aplikacích je rovněž zdarma. Jedním z možných příkladů je mosquitto. Jedná se o lehkou implementaci MQTT brokera, který je (díky škálovatelnosti) možné využít jak na nevýkonných zařízeních, tak i na velmi výkoných serverech.

Pro pokračování v článku je nutné některého brokera nainstalovat. Pokud budete instalovat mosquitto, bude vše záležet na Vámi používané distribuci. Pro distribuce založené na Debianu lze použít následující příkaz.

Zbytek článku se bude zabývat již pouze klientskou částí, tedy producentu a konzumentu MQTT zpráv. Jako téměř ve všech případech, lze i k tomuto problému přistoupit ze dvou základních směrů. První možností je implementovat celý MQTT protokol. Dokumentace k tomuto protokolu je veřejně dostupná, například na http://mqtt.org/documentation.

Druhou a předvedenou možností je využití již existující knihovny, které tento protokol již implementuje. Výhoda tohoto přístupu je především v rychlosti, není nutné ztrácet čas vynalézáním kola. Jednou z možných knihoven je knihovna libmosquittopp. Jedná se vlastně o binding C++ rozhraní do standartní C knihovny libmosquitto, odvozené od projektu mosquitto.

Instalace této knihovny je opět vcelku snadná, záleží na použité distribuci. Instalační příkaz ale bude vždy vypadat velmi podobně následujícímu.

Tolik tedy k přípravám prostředí a nyní již k vlastní implementaci MQTT klienta. Zdrojové kódy pro ukázkového klienta budou uloženy do jednoho .cpp souboru.

Několik poznámek ke zdrojovému kódu

  • řádek 7 definice a implementace MQTT třídy, která je zděděna od mosquittopp
  • řádek 19 definice konstruktoru, který vytvoří asynchronní spojení vůči MQTT brokeru
  • řádek 22 inicializace mosquittopp knihovny, musí být vždy zavolána před použitím knihovny
  • řádek 31 spuštění smyčky, která vybírá data z přijímacího socketu
  • řádek 100 vytvoření instance MQTT klienta, připojení na localhost
  • řádek 102 čekání na dokončení spojení
  • řádek 107 přihlášení k tématu ‚/topic‘ na brokeru localhost
  • řádek 113 nekonečná smyčka, vybírá přijaté pakety

Zdrojový kód je možné přeložit pomocí následujícího příkazu

Nyní již následuje tolik zmiňovaný zdrojový kód.

Mohlo by se vám líbit...

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *