- Kas ir MQTT protokols?
- Kā darbojas MQTT?
- Eclipse Mosquitto brokeris
- Nepieciešamās sastāvdaļas
- Eclipse MQTT testa shēma - shēma
- ESP8266 programmēšana saziņas nodibināšanai ar brokeri
- MQTT testēšana ar ESP8266, izmantojot Arduino
Dažu pēdējo gadu laikā IoT (lietu internets) ierīces ir kļuvušas par neatšķiramu mūsu ikdienas sastāvdaļu. Sākot ar viedām mājām, viedām spuldzēm līdz viedām ierīcēm; radītāji un izstrādātāji izmanto šo tehnoloģiju, lai izveidotu savienotu ierīču tīklu, kas padara mūsu ikdienas dzīvi nedaudz aizraujošāku. Tas viss ir iespējams saziņas viegluma dēļ. Starp ierīcēm ir daudz iespējamo saziņas veidu, taču komerciālajos un hobija produktos viens protokols, kas parasti tiek izmantots, ir Message Queuing Telemetry Transport (MQTT). Iepriekš mēs izveidojām ar balsi vadāmu FM radio, izmantojot Arduino un Google palīgu, kas izmanto MQTT, lai sazinātos ar NodeMCU paneli. Pārbaudiet, vai tas jums šķiet interesants.
Šajā projektā mēs izmantosim bezmaksas un populāru Eclipse MQTT brokeri un uzzināsim, kā savienot IoT ierīci (mūsu gadījumā tas ir NodeMCU modulis) ar MQTT brokeri un pārsūtīt datus starp MQTT brokeri un NodeMCU.
Kas ir MQTT protokols?
Pirms mēs turpināt jebkurā tālāk, tas ir labāk, lai ir skaidrs priekšstats par MQTT (Message Queuing Telemetrijas Transport) protokolu. Tas ir viegls ziņojumapmaiņas protokols, kas izmanto publicēšanas / abonēšanas metodi un tulko ziņojumus starp vairākām ierīcēm. Izmantojot MQTT protokolu, mēs varam arī nosūtīt / saņemt datus un vadīt dažādas izvades ierīces, piemēram, nolasīt sensora datus utt. Tas ir izstrādāts virs TCP, tāpēc tas ir ātrāks nekā līdzīgi protokoli, piemēram, HTTP. Izņemot to, tam ir daudz citu priekšrocību salīdzinājumā ar citiem protokoliem, piemēram, tā ļoti vieglais, tāpēc tas nelieto lieko atmiņu, tas var strādāt ar ļoti mazāku tīkla joslas platumu, turklāt tam ir iebūvēts izturīgs drošības protokols. Šīs funkcijas padara to piemērotu daudzām lietojumprogrammām.
Kā darbojas MQTT?
Lai saprastu MQTT protokola darbību, mums vienkārši jāsaprot trīs galvenās lietas; iepriekš redzamā diagramma parāda, ka. Arī mēs to paskaidrojām zemāk rakstā.
MQTT klients:
MQTT klients ir jebkura ierīce (tas var būt mikrokontrolleru vai serveri), kas darbojas MQTT funkcijas un sazinās ar centrālo serveri, kas ir pazīstams kā " brokeris ". Brokeris apstrādā datu sakarus starp saistītajiem klientiem.
MQTT izdevējs:
Ja klients vēlas nosūtīt jebkādu informāciju, klients tiek dēvēts par “Publisher”. Izdevējs publicēs informāciju par konkrētu tēmu. “ Tēma ” ir ceļš, kur mēs varam publicēt / abonēt ziņojumus. Pēc tam brokeris nosūta lietotāja publicēto informāciju klientiem (pazīstams arī kā Abonents), kuri ir abonējuši šo konkrēto tēmu.
MQTT abonents:
MQTT Abonents abonē tēmām par MQTT brokera lasīt ziņas, kas nosūtītas brokeris.
Eclipse Mosquitto brokeris
Eclipse Mosquitto ir atvērtā koda MQTT brokeris, kas ir viegls un ir piemērots lietošanai IoT ierīcēs saziņai. MQTT protokols nodrošina vieglu metodi nodot informāciju, izmantojot publicēt / abonēt modeli. Ja vēlaties uzzināt vairāk par šo tēmu, varat apmeklēt oficiālo odu vietni.
Eclipse Mosquitto brokera iestatīšana:
Lai nodibinātu saziņu ar brokeri, mums tas vispirms ir jāiestata. Šajā projektā Android lietojumprogramma tiek izmantota informācijas publicēšanai un abonēšanai pie Brokera. Šīs darbības sniegs labāku priekšstatu par iestatīšanas procesu.
1. solis:
Vispirms lejupielādējiet jebkuru “MQTT klienta” lietojumprogrammu, kas pieejama Google Play veikalā / App Store, un instalējiet to. Šajā projektā tiek izmantota lietojumprogramma ar nosaukumu “MQTT klients”, kas izskatās kā zemāk redzamais attēls.
2. solis:
Noklikšķiniet uz “+” zīmes, lai uzskaitītu papildu iespējas lietojumprogrammā, kur mēs pievienosim jaunu brokeri. Noklikšķinot uz pogas, tiek parādīts jauns ekrāns, kā parādīts zemāk.
3. solis:
Pēc tam informācija par brokeri jāaizpilda vajadzīgajā laukā. Vispirms noklikšķiniet uz lietojumprogrammā redzamās opcijas “Iespējots”. Šajā projektā tiek izmantots brokeris Eclipse MQTT, aizpildāmā informācija ir sniegta zemāk:
Segvārds: norādiet vēlamo vārdu
Saimnieks: mqtt.eclipse.org
Osta: 1883. gads
Klienta ID: norādiet savas izvēles ID
Iepriekš minētā informācija jāaizpilda attiecīgajos laukos. Visi pārējie lauki nav nepieciešami, un tos var atstāt tukšus. Pēc veiksmīgas pabeigšanas noklikšķiniet uz pogas Saglabāt, lai saglabātu brokera informāciju.
Kad tas ir izdarīts, android lietojumprogrammas iestatīšanas process ir beidzies, un tagad mēs varam pāriet uz lietu aparatūras pusi.
Nepieciešamās sastāvdaļas
Pilns nepieciešamo detaļu saraksts ir aprakstīts zemāk. Tā kā šī shēma ir vienkārša, visas nepieciešamās detaļas varat atrast vietējā hobiju veikalā.
- NodeMCU
- LED
- Maizes dēlis
- Savienojošie vadi
- Programmēšanas kabelis
Eclipse MQTT testa shēma - shēma
Tālāk ir parādīta pamata MQTT projekta shēma:
ESP8266 programmēšana saziņas nodibināšanai ar brokeri
Vienkāršs Arduino kods rūpējas par visu nepieciešamo saziņu starp MQTT brokeri un NodeMCU. Šajā sadaļā mēs detalizēti uzzināsim, kā šī funkcionalitāte darbojas.
Iestatiet Arduino IDE un augšupielādējiet kodu:
Ja pirmo reizi augšupielādējat kodu NodeMCU, vispirms ir jāiestata Arduino IDE. Lai to izdarītu, vienkārši izpildiet zemāk sniegto vienkāršo instrukciju.
Vispirms atveriet Arduino IDE un pēc tam dodieties uz File–> Preferences–> Settings .
Pēc tam nokopējiet zemāk redzamo URL un ielīmējiet to laukā “Board Board Manager papildu URL ” un noklikšķiniet uz OK. Jūs varat pārbaudīt zemāk esošo attēlu, lai uzzinātu, kā mēs to esam paveikuši.
Saite:
Pēc tam dodieties uz Rīki> Dēlis> Dēļu pārvaldnieks . Logā Valdes pārvaldnieks meklēšanas lodziņā ierakstiet ESP 8266 un nospiediet taustiņu Enter. Pēc tam nolaižamajā izvēlnē atlasiet jaunāko versiju un noklikšķiniet uz Instalēt. Zemāk esošais attēls sniegs jums skaidru priekšstatu.
Visbeidzot, kad instalēšana ir pabeigta, dodieties uz Rīki -> Dēlis -> un atlasiet NodeMCU 1.0 (ESP-12E modulis). Tagad jūs varat programmēt NodeMCU ar Arduino IDE. Kad esam pabeiguši Arduino IDE iestatīšanu, tagad mēs varam augšupielādēt pilnu kodu. Bet vispirms izlasiet visa koda ātru skaidrojumu.
Pirmkārt, esam iekļāvuši “ESP8266WiFi.h”, lai izmantotu ESP8266, un “PubSubClient.h” MQTT.
ESP8266 bibliotēka ir atrodama iepriekš uzbūvēta Arduino bibliotēkā, taču jums ir jālejupielādē PubSubClient bibliotēka no tās saistītās GitHub repozitorija.
# iekļaut
Pēc tam definējiet tīkla akreditācijas datus, piemēram, Wi-Fi lietotājvārdu un paroli. Nomainiet akreditācijas datus attiecīgi “admin” un “12345678” vietā.
const char * ssid = "admin"; const char * password = "12345678";
Tālāk mums jākonfigurē MQTT serveris. Šajā projektā mēs izmantojām Eclipse MQTT serveri, tāpēc servera adrese tiek dota kā “mqtt.eclipse.org”. Bet, ja plānojat izmantot jebkuru citu serveri, piemēram, Mosquitto, Adafruit, varat to aizstāt ar savu servera adresi un porta numuru.
const char * mqtt_server = "mqtt.eclipse.org"; const int mqtt_port = 1883;
Pēc tam tiek izveidoti gadījumi klasēm WiFiClient un PubSubClient , kuras tiks izmantotas visā programmā.
WiFiClient espClient; PubSubClient klients (espClient);
Sadaļā setup () vispirms mēs izsaucam WiFi.begin () , izsaucot šo metodi, ESP tiks savienots ar vēlamo HotSpot.
WiFi.begin (ssid, parole);
Pēc tam mēs pārbaudām veiksmīgu tīkla savienojumu, izmantojot metodi WiFi.status () . Pēc veiksmīga savienojuma izveidošanas Serial Monitor tiek izdrukāts ziņojums ar pievienotā tīkla SSID.
while (WiFi.status ()! = WL_CONNECTED) {aizkave (500); Serial.println ("Savienojuma izveide ar WiFi.."); } Serial.print ("Savienots ar WiFi:"); Serial.println (WiFi.SSID ());
Tagad mums ir jāizveido brokeris. Tam mēs izmantojām metodi setServer ; šai metodei vajadzīgi divi argumenti, kurus mēs iepriekš esam definējuši iepriekš. Tagad, ja mēs vēlamies saņemt ziņojumus no servera, mums jāizveido atzvanīšanas funkcija. Tam mēs izmantojam metodi setCallback (atzvanīšana) .
client.setServer (mqtt_server, mqtt_port); client.setCallback (MQTTcallback);
Tagad, lai izveidotu savienojumu ar ESP8266 klientu, mēs izmantojām savienojuma (klienta ID) funkciju. Šeit klienta ID ir klienta vārds, un tam jābūt unikālam. Ja tas ir pievienots, tad sērijas monitorā var parādīt veiksmes ziņojumu.
if (client.connect ("ESP8266")) {Serial.println ("savienots"); } else {Serial.print ("neizdevās ar stāvokli") Serial.println (klienta.valsts ()); kavēšanās (2000); }
Tālāk, mēs saucam client.subscribe () , iebūvēta MQTT funkciju, ko izmanto, lai parakstīties uz konkrētu tēmu. Šajā projektā mēs kā abonenta vārdu izmantojām “ esp / test ”.
client.subscribe ("esp / test");
Tagad tiek izsaukta funkcija MQTTcallback, lai pārbaudītu, vai ir pieejama atjaunināta informācija. Ja ir pieejami jauni dati, šī funkcija apstrādā saņemtos datus un sērijveida monitorā izdrukā ziņojumu ar oriģinālo ziņojumu un tēmas nosaukumu, kur ziņojums tiek saņemts.
Pēc tam mēs pārvēršam ziņojumus virknē, lai tos varētu salīdzināt un pārbaudīt, vai nav aktivizējošu darbību. Šajā projektā gaismas diode tiek ieslēgta / izslēgta, izmantojot MQTT komandas, kā parādīts zemāk esošajā kodā.
par (int i = 0; i <garums; i ++) {ziņojums = ziņojums + (char) lietderīgā slodze; } Seriālā.druka (ziņa); if (ziņojums == "ieslēgts") {digitalWrite (LED, HIGH); }
Visbeidzot, lai publicētu informāciju par šo tēmu. Tiek izmantota funkcija client.publish () . Šajā projektā tiek pārbaudīts spiedpogas statuss, ja tiek nospiesta poga, tad ziņojums tiek publicēts tēmā “ esp / test1 ”, kā parādīts zemāk.
if (digitalRead (D1) == 0)) {client.publish ("esp / test1", "Labdien no ESP8266"); } cits; client.loop ();
MQTT testēšana ar ESP8266, izmantojot Arduino
Lai veiktu pēdējo pārbaudi, mēs izmantosim Android lietojumprogrammu, kuru esam izveidojuši agrāk.
Atveriet MQTT klienta lietojumprogrammu un pārliecinieties, vai mobilajā tālrunī ir aktīvs interneta savienojums. Tāpat karstajam punktam, ar kuru ir savienots NodeMCU, jābūt aktīvam interneta savienojumam. Kad viss ir izveidots savienojums ar internetu, mēs no ESP moduļa nosūtīsim virkni “Hello from ESP8266”, kas tiks atspoguļota Android lietotnē, un mēs saņemsim paziņojumu. Pēc tam mēs nosūtīsim virkni no Android lietotnes, kas ieslēgs LED, kas ir savienots ar ESP8266 Node MCU paneli.
1. darbība: (Abonējiet tēmu):
Lietotnē noklikšķiniet uz opcijas Saglabātā MQTT, kuru esam konfigurējuši iepriekš. Tas parādīsies ekrānā, kurā tiks parādīts aicinājums “Abonēt tēmu”. Iepriekš esam konfigurējuši tēmu kā “ esp / test1 ”. Tātad Android lietotnē mēs rakstīsim “ esp / test1 ”. Noklikšķiniet uz Abonēt, to darot, tiks parādīts ekrāns, piemēram, zemāk, kur tas tiks rakstīts kā “Nav saņemts ziņojums” no konkrētās tēmas.
Tagad noklikšķiniet uz pogas "Savienots", kas ir savienots ar mezglu MCU. Saskaņā ar mūsu kodu tēmā tiks publicēts ziņojums “ Labdien no ESP8266 ”, un ekrānā būs paziņojums ar saņemto ziņojumu, kā parādīts zemāk.
2. darbība: publicēšana tēmā:
Tagad, lai publicētu tēmā, noklikšķiniet uz lietojumprogrammas pogas AUGŠĀ BULTA, un tas atvērs ekrānu, kā parādīts zemāk.
Tagad laukā Tēma ierakstiet “ esp / test ” un ziņojuma laukā ierakstiet “ on ” vai “ off ”, lai attiecīgi ieslēgtu un izslēgtu LED. Piemēram, ja tēmā tiek publicēts “ieslēgts”, tad LED tiks ieslēgts un ja tēmā tiks publicēts “izslēgts”, tad LED tiks izslēgts.
Es ceru, ka jums patika raksts un uzzinājāt kaut ko jaunu. Ja jums ir kādi jautājumi par šo rakstu, lūdzu, nekautrējieties komentēt zemāk, vai arī varat izmantot mūsu forumu.