- Čo je protokol MQTT?
- Ako funguje MQTT?
- Sprostredkovateľ Eclipse Mosquitto
- Súčasti sú povinné
- Testovací obvod Eclipse MQTT - schematický
- Programovanie ESP8266 na nadviazanie komunikácie s maklérom
- Testovanie MQTT s ESP8266 pomocou Arduina
Za posledných pár rokov sa zariadenia IoT (internet vecí) stali neoddeliteľnou súčasťou nášho každodenného života. Od inteligentných domov, inteligentných žiaroviek až po inteligentné spotrebiče; tvorcovia a vývojári začleňujú túto technológiu do vytvárania siete pripojených zariadení, vďaka ktorým je náš každodenný život o niečo vzrušujúcejší. To všetko bolo možné vďaka ľahkej komunikácii. Existuje mnoho možných spôsobov komunikácie medzi zariadeniami, ale v komerčných a hobby produktoch sa bežne používa jediný protokol - Message Queuing Telemetry Transport (MQTT). Predtým sme vytvorili hlasovo ovládané FM rádio pomocou Arduina a Google Assistant, ktoré využíva MQTT na komunikáciu s doskou NodeMCU. Skontrolujte, či to pre vás znie zaujímavo.
V tomto projekte budeme využívať bezplatného a obľúbeného sprostredkovateľa Eclipse MQTT a naučíme sa, ako pripojiť zariadenie IoT (v našom prípade je to modul NodeMCU) k sprostredkovateľovi MQTT a prenášať údaje medzi sprostredkovateľom MQTT a NodeMCU.
Čo je protokol MQTT?
Než budeme pokračovať, je lepšie mať jasnú predstavu o protokole MQTT (Message Queuing Telemetry Transport). Jedná sa o ľahký protokol správ, ktorý používa metódu publikovania / prihlasovania a prekladá správy medzi viacerými zariadeniami. Pomocou protokolu MQTT môžeme tiež odosielať / prijímať údaje a ovládať rôzne výstupné zariadenia, napríklad čítať údaje snímačov atď. Je vyvinutý nad protokolom TCP, a preto je rýchlejší ako podobné protokoly ako HTTP. Okrem toho má oproti iným protokolom mnoho ďalších výhod, napríklad veľmi ľahký, takže nespotrebúva prebytočnú pamäť, dokáže pracovať s veľmi menšou šírkou pásma siete a navyše má zabudovaný robustný bezpečnostný protokol. Vďaka týmto vlastnostiam je vhodný pre mnoho aplikácií.
Ako funguje MQTT?
Aby sme pochopili fungovanie protokolu MQTT, musíme pochopiť iba tri základné veci; vyššie uvedená schéma to ukazuje. Ďalej sme to vysvetlili nižšie v článku.
Klient MQTT:
MQTT klient je akékoľvek zariadenie (môže ísť o mikroradič alebo server), ktorý beží MQTT funkcie a komunikuje s centrálnym serverom, ktorý je známy ako " sprostredkovateľa ". Sprostredkovateľ vybavuje dátovú komunikáciu medzi pripojenými klientmi.
Vydavateľ MQTT:
Ak chce klient poslať akékoľvek informácie, je známy ako vydavateľ. Vydavateľ zverejní informácie o konkrétnej téme. „ Téma “ je cesta, na ktorej môžeme publikovať / predplatiť správy. Sprostredkovateľ potom odošle informácie zverejnené používateľom klientom (tiež známym ako predplatiteľ), ktorí sa prihlásili na odber konkrétnej témy.
Predplatiteľ MQTT:
MQTT Účastník predplatí tém na MQTT kanceláriu čítať správy odoslané prostredníctvom makléra.
Sprostredkovateľ Eclipse Mosquitto
Eclipse Mosquitto je open-source broker MQTT, ktorý je ľahký a je vhodný na použitie na komunikáciu so zariadeniami IoT. Protokol MQTT poskytuje ľahkú metódu prenosu informácií pomocou modelu publikovania / prihlásenia na odber. Ak sa chcete dozvedieť viac informácií o tejto téme, môžete navštíviť oficiálnu webovú stránku s komármi.
Nastavenie sprostredkovateľa Eclipse Mosquitto:
Aby sme nadviazali komunikáciu s maklérom, musíme si ju najskôr nastaviť. V tomto projekte sa na zverejnenie a prihlásenie na odber informácií u sprostredkovateľa používa aplikácia pre Android. Nasledujúce kroky vám poskytnú lepšiu predstavu o procese nastavenia.
Krok 1:
Najskôr si stiahnite ľubovoľnú aplikáciu „MQTT client“ dostupnú v obchode Google Play / App Store a nainštalujte ju. V tomto projekte sa používa aplikácia s názvom „Klient MQTT“, ktorá vyzerá ako na obrázku nižšie.
Krok 2:
Kliknutím na znamienko „+“ zobrazíte ďalšie možnosti v aplikácii, do ktorej pridáme nového sprostredkovateľa. Po kliknutí na tlačidlo sa zobrazí nová obrazovka, ako je to znázornené nižšie.
Krok 3:
Potom je potrebné do požadovaného poľa vyplniť podrobnosti o sprostredkovateľovi. Najskôr kliknite na možnosť „Povolené“ zobrazenú v Aplikácii. V tomto projekte sa používa sprostredkovateľ Eclipse MQTT, podrobnosti, ktoré je potrebné vyplniť, sú uvedené nižšie:
Prezývka: Uveďte meno, ktoré uprednostňujete
Hostiteľ: mqtt.eclipse.org
Prístav: 1883
ID klienta: Uveďte ID, ktoré uprednostňujete
Vyššie uvedené podrobnosti je potrebné vyplniť v príslušných poliach. Všetky ostatné polia nie sú potrebné a môžu zostať nevyplnené. Po úspešnom dokončení kliknite na tlačidlo uložiť a uložte podrobnosti sprostredkovateľa.
Po dokončení je proces nastavenia aplikácie pre Android ukončený a teraz môžeme prejsť na hardvérovú stránku veci.
Súčasti sú povinné
Kompletný zoznam požadovaných dielov je popísaný nižšie. Pretože je tento obvod jednoduchý, všetky potrebné súčasti nájdete v miestnom hobby obchode.
- NodeMCU
- LED
- Nepál
- Pripojovacie vodiče
- Programovací kábel
Testovací obvod Eclipse MQTT - schematický
Schéma zapojenia pre projekt Basic MQTT je uvedená nižšie:
Programovanie ESP8266 na nadviazanie komunikácie s maklérom
O všetku potrebnú komunikáciu medzi MQTT brokerom a NodeMCU sa stará jednoduchý Arduino kód. V tejto časti sa dozvieme, ako táto funkcionalita funguje podrobne.
Nastavte Arduino IDE a nahrajte kód:
Ak nahrávate kód do NodeMCU prvýkrát, musíte najskôr nastaviť IDE Arduino. Ak to chcete urobiť, postupujte podľa jednoduchých pokynov uvedených nižšie.
Najskôr otvorte Arduino IDE a potom choďte na File–> Preferences–> Settings .
Ďalej skopírujte nižšie uvedenú adresu URL, vložte ju do poľa „Dodatočná adresa URL správcu dosky “ a kliknite na tlačidlo „OK“. Na nasledujúcom obrázku môžete skontrolovať, ako sme to dosiahli.
Odkaz:
Ďalej prejdite na Nástroje> Doska> Správca dosiek . V okne správcu nástenky zadajte do vyhľadávacieho poľa ESP 8266 a stlačte kláves Enter. Potom vyberte z rozbaľovacej ponuky najnovšiu verziu a kliknite na inštalovať. Obrázok nižšie vám poskytne jasnú predstavu.
Nakoniec po dokončení inštalácie choďte na Nástroje -> Board -> a vyberte NodeMCU 1.0 (modul ESP-12E). Teraz môžete NodeMCU naprogramovať na Arduino IDE. Keď sme dokončili nastavenie Arduino IDE, môžeme teraz nahrať celý kód. Najprv si však prečítajte rýchle vysvetlenie celého kódu.
Najskôr sme zahrnuli „ESP8266WiFi.h“ pre používanie ESP8266 a „PubSubClient.h“ pre MQTT.
Knižnicu ESP8266 nájdete predinštalovanú v knižnici Arduino, ale musíte si stiahnuť knižnicu PubSubClient z pridruženého úložiska GitHub.
#include
Potom definujte sieťové poverenia, napríklad svoje používateľské meno a heslo k sieti Wi-Fi. Vymeňte svoje poverenia namiesto „admin“ a „12345678“.
const char * ssid = "admin"; const char * heslo = "12345678";
Ďalej musíme nakonfigurovať server MQTT. Pre tento projekt sme použili server Eclipse MQTT, a preto je adresa servera uvedená ako „mqtt.eclipse.org“. Ak ale plánujete použiť akýkoľvek iný server, ako je Mosquitto, Adafruit, môžete ho nahradiť konkrétnou adresou servera a číslom portu.
const char * mqtt_server = "mqtt.eclipse.org"; const int mqtt_port = 1883;
Ďalej sa vytvoria inštancie pre triedy WiFiClient a PubSubClient , ktoré sa budú používať v celom programe.
WiFiClient espClient; Klient PubSubClient (espClient);
V sekcii setup () najskôr zavoláme WiFi.begin () , volaním tejto metódy sa pripojí ESP k preferovanému HotSpotu.
WiFi.begin (ssid, heslo);
Ďalej skontrolujeme úspešné pripojenie k sieti pomocou metódy WiFi.status () . Po úspešnom pripojení sa na Serial Monitor vytlačí správa s SSID pripojenej siete.
while (WiFi.status ()! = WL_CONNECTED) {oneskorenie (500); Serial.println ("Pripojenie k WiFi.."); } Serial.print ("Pripojené k WiFi:"); Serial.println (WiFi.SSID ());
Teraz musíme vytvoriť sprostredkovateľa. Na to sme použili metódu setServer ; táto metóda vyžaduje dva argumenty, ktoré sme preddefinovali už skôr. Teraz, ak chceme prijímať správy zo servera, musíme vytvoriť funkciu spätného volania. Na tento účel používame metódu setCallback (spätné volanie) .
client.setServer (mqtt_server, mqtt_port); client.setCallback (MQTTcallback);
Teraz sme na pripojenie ku klientovi ESP8266 použili funkciu connect (clientID) . Tu clientID je meno klienta a musí byť jedinečné. Ak je pripojený, môže sa vo vnútri sériového monitora zobraziť správa o úspechu.
if (client.connect ("ESP8266")) {Serial.println ("pripojený"); } else {Serial.print ("zlyhalo so stavom") Serial.println (client.state ()); meškanie (2000); }
Ďalej voláme client.subscribe () , vstavanú funkciu MQTT, ktorá sa používa na prihlásenie na odber konkrétnej témy. Pre tento projekt sme ako meno predplatiteľa použili „ esp / test “.
client.subscribe ("esp / test");
Teraz sa volá funkcia MQTTcallback, aby sa skontrolovalo, či sú alebo nie sú k dispozícii nejaké aktualizované informácie. Ak sú k dispozícii nové údaje, táto funkcia zaobchádza s prijatými údajmi a vytlačí správu na sériovom monitore s pôvodnou správou a názvom témy, kde bola správa prijatá.
Ďalej správy prevedieme na reťazec, aby ho bolo možné porovnať a skontrolovať, či neobsahuje nejaké spúšťacie akcie. V tomto projekte sa LED zapína / vypína pomocou príkazov MQTT, ako je znázornené v nižšie uvedenom kóde.
pre (int i = 0; i <dĺžka; i ++) {message = správa + (char) užitočné zaťaženie; } Serial.print (správa); if (message == "on") {digitalWrite (LED, HIGH); }
Na záver zverejniť informácie o danej téme. Používa sa funkcia client.publish () . V tomto projekte sa kontroluje stav tlačidla, ak je tlačidlo stlačené, potom sa správa zverejní na tému „ esp / test1 “, ako je uvedené nižšie.
if (digitalRead (D1) == 0)) {client.publish ("esp / test1", "Hello from ESP8266"); } else; client.loop ();
Testovanie MQTT s ESP8266 pomocou Arduina
Na naše posledné testovanie použijeme aplikáciu pre Android, ktorú sme si nastavili už skôr.
Otvorte klientsku aplikáciu MQTT a uistite sa, že váš mobil má aktívne pripojenie na internet. Hotspot, ku ktorému je pripojená jednotka NodeMCU, by tiež mala mať aktívne pripojenie na internet. Keď je všetko pripojené k internetu, pošleme z modulu ESP reťazec „Hello from ESP8266“, ktorý sa prejaví vo vnútri aplikácie pre Android, a dostaneme upozornenie. Ďalej pošleme reťazec z aplikácie pre Android, ktorým sa rozsvieti LED dióda, ktorá je pripojená k doske MCU Node ESP8266.
Krok 1: (Prihláste sa na odber témy):
Kliknite na možnosť Uložené MQTT v aplikácii, ktorú sme nakonfigurovali už skôr. Zobrazí sa obrazovka, na ktorej sa zobrazí výzva na „Prihlásenie na odber témy“. Predtým sme tému nakonfigurovali ako „ esp / test1 “. V aplikácii pre Android teda napíšeme „ esp / test1 “. Kliknutím na Prihlásiť sa na odber sa vám zobrazí obrazovka uvedená nižšie, kde bude z konkrétnej témy napísaný text „Žiadna správa neprišla“.
Teraz kliknite na tlačidlo 'Pripojené', ktoré je pripojené k nodeMCU. Teraz podľa nášho kódu bude k téme zverejnená správa „ Hello from ESP8266 “ a na obrazovke bude upozornenie s prijatou správou, ako je uvedené nižšie.
Krok 2: Publikovanie k téme:
Ak chcete teraz publikovať v téme, kliknite na tlačidlo ŠÍPKA HORE v aplikácii a otvorí sa obrazovka, ako je to znázornené nižšie.
Teraz do poľa Téma napíšte „ esp / test “ a do poľa správy napíšte „ zapnuté “ alebo „ vypnuté “, aby sa rozsvietila LED dióda. Napríklad ak je v téme zverejnené „zapnuté“, potom sa rozsvieti LED dióda a ak sa v téme zverejní „vypnuté“, potom LED zhasne.
Dúfam, že sa vám článok páčil a dozvedeli ste sa niečo nové. Ak máte akékoľvek otázky týkajúce sa tohto článku, neváhajte komentovať nižšie, alebo môžete použiť naše fórum.