- Mikä on MQTT-protokolla?
- Kuinka MQTT toimii?
- Eclipse Mosquitto -välittäjä
- Tarvittavat komponentit
- Eclipse MQTT -testipiiri - kaavio
- ESP8266: n ohjelmointi yhteydenpitoon välittäjän kanssa
- MQTT: n testaus ESP8266: lla Arduinolla
Muutaman viime vuoden aikana esineiden internetistä (Internet of Things) on tullut erottamaton osa jokapäiväistä elämäämme. Älykodeista, älykkäistä polttimoista älylaitteisiin; luojat ja kehittäjät hyödyntävät tätä tekniikkaa luodakseen yhdistettyjen laitteiden verkon, joka tekee jokapäiväisestä elämästämme hieman jännittävämmän. Kaikki tämä on ollut mahdollista viestinnän helppouden takia. Laitteiden välillä on monia mahdollisia tapoja kommunikoida, mutta kaupallisissa ja harrastustuotteissa yksi yleisesti käytetty protokolla on Message Queuing Telemetry Transport (MQTT). Aikaisemmin rakennimme ääniohjatun FM-radion Arduinon ja Google Assistantin avulla, joka käyttää MQTT: tä yhteydenpitoon NodeMCU-kortin kanssa. Tarkista se, jos se kuulostaa mielenkiintoiselta.
Tässä projektissa käytämme ilmaista ja suosittua Eclipse MQTT -välittäjää ja opimme yhdistämään IoT-laitteen (meidän tapauksessamme se on NodeMCU-moduuli) MQTT-välittäjään ja siirtämään tietoja MQTT-välittäjän ja NodeMCU: n välillä.
Mikä on MQTT-protokolla?
Ennen kuin jatkat, on parempi, että sinulla on selkeä käsitys MQTT (Message Queuing Telemetry Transport) -protokollasta. Se on kevyt viestintäkäytäntö, joka käyttää julkaisu / tilaus -menetelmää ja kääntää viestejä useiden laitteiden välillä. MQTT-protokollaa käyttämällä voimme myös lähettää / vastaanottaa tietoja ja ohjata erilaisia lähtölaitteita, kuten lukea anturitietoja jne. Se on kehitetty TCP: n päälle, minkä vuoksi se on nopeampi kuin vastaavat protokollat, kuten HTTP. Sen lisäksi sillä on monia muita etuja muihin protokolliin verrattuna, kuten sen erittäin kevyt, joten se ei kuluta liikaa muistia, se voi toimia hyvin pienellä verkon kaistanleveydellä, minkä lisäksi sillä on sisäänrakennettu vankka suojausprotokolla. Nämä ominaisuudet tekevät siitä sopivan moniin sovelluksiin.
Kuinka MQTT toimii?
MQTT-protokollan toiminnan ymmärtämiseksi meidän on vain ymmärrettävä kolme perustavaa asiaa; yllä oleva kaavio osoittaa sen. Olemme myös selittäneet sen alla artikkelissa.
MQTT-asiakas:
MQTT asiakas on mikä tahansa laite (se voi olla mikro tai palvelin), joka kulkee MQTT toimintoja ja kommunikoi keski-palvelin, joka tunnetaan nimellä ” välittäjä ”. Välittäjä hoitaa tiedonsiirron yhteydessä olevien asiakkaiden välillä.
MQTT-julkaisija:
Kun asiakas haluaa lähettää tietoja, asiakas tunnetaan julkaisijana. Kustantaja julkaisee tiedot tietystä aiheesta. " Aihe " on polku, jolla voimme julkaista / tilata viestejä. Välittäjä lähettää sitten käyttäjän julkaisemat tiedot asiakkaille (tunnetaan myös nimellä Tilaaja), jotka ovat tilanneet kyseisen aiheen.
MQTT-tilaaja:
MQTT Tilaaja yhtyy viesteihin koskevasta MQTT välittäjä lukea lähettämien viestien välittäjänä.
Eclipse Mosquitto -välittäjä
Eclipse Mosquitto on avoimen lähdekoodin MQTT-välittäjä, joka on kevyt ja soveltuu käytettäväksi IoT-laitteissa viestintään. MQTT protokolla tarjoaa kevyt tapa siirtää tietoja käyttäen julkaista / tilata malli. Jos haluat oppia lisää aiheesta, voit vierailla virallisella hyttyssivustolla.
Eclipse Mosquitto -välittäjän perustaminen:
Yhteyden muodostamiseksi välittäjän kanssa meidän on ensin määritettävä se. Tässä projektissa Android-sovellusta käytetään tietojen julkaisemiseen ja tilaamiseen välittäjän kanssa. Seuraavat vaiheet antavat paremman käsityksen asennusprosessista.
Vaihe 1:
Lataa ensin mikä tahansa Google Play Kaupasta / App Storesta saatavana oleva MQTT-asiakasohjelma ja asenna se. Tässä projektissa käytetään sovellusta nimeltä MQTT client, joka näyttää alla olevalta kuvalta.
Vaihe 2:
Napsauta "+" -merkkiä luetteloidaksesi lisäasetukset sovelluksessa, johon aiomme lisätä uuden välittäjän. Kun painiketta napsautetaan, uusi näyttö tulee näkyviin alla olevan kuvan mukaisesti.
Vaihe 3:
Sen jälkeen välittäjän tiedot on täytettävä vaaditussa kentässä. Napsauta ensin sovelluksessa näkyvää vaihtoehtoa "Enabled". Tässä projektissa käytetään Eclipse MQTT -välittäjää, jonka tiedot täytetään alla:
Lempinimi: Anna haluamasi nimi
Isäntä: mqtt.eclipse.org
Satama: 1883
Asiakastunnus: Anna haluamasi tunnus
Yllä olevat tiedot on täytettävä vastaavissa kentissä. Kaikki muut kentät eivät ole pakollisia, ja ne voidaan jättää tyhjiksi. Kun olet valmis, napsauta tallennuspainiketta tallentaaksesi välittäjän tiedot.
Kun se on tehty, android-sovelluksen asennusprosessi on ohi ja nyt voimme siirtyä asioiden laitteistopuolelle.
Tarvittavat komponentit
Täydellinen luettelo vaadituista osista on kuvattu alla. Koska tämä piiri on yksinkertainen, löydät kaikki tarvittavat osat paikallisesta harrastekaupasta.
- SolmuMCU
- LED
- Leipälauta
- Johtojen liittäminen
- Ohjelmointikaapeli
Eclipse MQTT -testipiiri - kaavio
Seuraavassa on esitetty Basic MQTT -projektin kytkentäkaavio:
ESP8266: n ohjelmointi yhteydenpitoon välittäjän kanssa
Yksinkertainen Arduino-koodi huolehtii kaikesta tarvittavasta viestinnästä MQTT-välittäjän ja NodeMCU: n välillä. Tässä osassa opit yksityiskohtaisesti, kuinka tämä toiminto toimii.
Määritä Arduino IDE ja lähetä koodi:
Jos lataat koodin NodeMCU: hun ensimmäistä kertaa, sinun on ensin määritettävä Arduino IDE. Voit tehdä sen vain noudattamalla alla olevia yksinkertaisia ohjeita.
Avaa ensin Arduino IDE ja siirry sitten kohtaan Tiedosto -> Asetukset -> Asetukset .
Kopioi seuraavaksi alla oleva URL-osoite ja liitä se 'Board Board Manager URL -kenttään' ja napsauta OK. Voit tarkistaa alla olevan kuvan tietääksesi, miten olemme tehneet sen.
Linkki:
Siirry seuraavaksi kohtaan Työkalut> Lauta> Levyjen hallinta . Kirjoita Board's Manager -ikkunaan hakukenttään ESP 8266 ja paina Enter. Valitse sitten uusin versio avattavasta valikosta ja napsauta Asenna. Alla oleva kuva antaa sinulle selkeän kuvan.
Lopuksi, kun asennus on valmis, siirry kohtaan Tools -> Board -> ja valitse NodeMCU 1.0 (ESP-12E Module). Nyt voit ohjelmoida NodeMCU: n Arduino IDE: llä. Kun olemme lopettaneet Arduino IDE: n asennuksen, voimme nyt ladata koko koodin. Mutta ensin, lue koko koodin nopea selitys.
Ensinnäkin, olemme sisällyttäneet "ESP8266WiFi.h" ESP8266: n käyttöön ja "PubSubClient.h" MQTT: lle.
ESP8266-kirjasto löytyy valmiiksi rakennetusta Arduino-kirjastosta, mutta sinun on ladattava PubSubClient-kirjasto siihen liittyvästä GitHub-arkistosta.
#sisältää
Määritä sitten verkon tunnistetiedot, kuten Wi-Fi-käyttäjänimesi ja salasanasi. Korvaa kirjautumistietosi vastaavasti "admin" ja "12345678" sijaan.
const char * ssid = "admin"; const char * password = "12345678";
Seuraavaksi meidän on määritettävä MQTT-palvelin. Olemme käyttäneet tähän projektiin Eclipse MQTT -palvelinta, minkä vuoksi palvelimen osoite annetaan nimellä "mqtt.eclipse.org". Mutta jos aiot käyttää jotain muuta palvelinta, kuten Mosquitto, Adafruit, voit korvata sen omalla palvelimesi osoitteella ja porttinumerolla.
const char * mqtt_server = "mqtt.eclipse.org"; const int mqtt_port = 1883;
Seuraavaksi luodaan ilmentymät luokille WiFiClient ja PubSubClient , joita käytetään koko ohjelmassa.
WiFiClient espClient; PubSubClient-asiakas (espClient);
Vuonna setup () jakso, kutsumme WiFi.begin () ensimmäinen, jossa tämä menetelmä yhdistää pitääkin haluamasi hotspot.
WiFi.begin (ssid, salasana);
Seuraavaksi tarkistamme onnistuneen verkkoyhteyden käyttämällä menetelmää WiFi.status () . Onnistuneen yhteyden muodostamisen jälkeen Serial Monitoriin tulostetaan viesti yhdistetyn verkon SSID: llä.
while (WiFi.status ()! = WL_CONNECTED) {viive (500); Serial.println ("Yhdistetään WiFi-verkkoon.."); } Serial.print ("Yhdistetty WiFi-verkkoon:"); Serial.println (WiFi.SSID ());
Nyt meidän on luotava välittäjä. Tätä varten olemme käyttäneet setServer- menetelmää; tähän menetelmään tarvitaan kaksi argumenttia, jotka olemme määrittäneet aiemmin. Jos nyt haluamme vastaanottaa viestejä palvelimelta, meidän on luotava soittopyyntö. Tätä varten käytämme setCallback (takaisinsoitto) -menetelmää.
client.setServer (mqtt_server, mqtt_port); client.setCallback (MQTTcallback);
Nyt olemme käyttäneet connect (clientID) -toimintoa yhteyden muodostamiseen ESP8266-asiakasohjelmaan. Tässä clientID on asiakkaan nimi, ja sen on oltava yksilöllinen. Jos se on kytketty, onnistumisviesti voidaan näyttää sarjamoduulin sisällä.
if (client.connect ("ESP8266")) {Serial.println ("kytketty"); } else {Serial.print ("epäonnistui tilan kanssa") Serial.println (client.state ()); viive (2000); }
Seuraavaksi kutsumme client.subscribe () , sisäänrakennettu MQTT toiminto, jota käytetään merkitsemään tiettyyn aiheeseen. Tässä projektissa olemme käyttäneet tilaajanimenä esp / test-testiä.
client.subscribe ("esp / test");
Nyt kutsutaan MQTTcallback- toimintoa tarkistamaan, onko päivitettyjä tietoja saatavilla. Jos uutta tietoa on saatavilla, tämä toiminto käsittelee vastaanotetut tiedot ja tulostaa sarjamonitorissa viestin, jossa on alkuperäinen viesti ja aiheen nimi, johon viesti vastaanotetaan.
Seuraavaksi muunnamme viestit merkkijonoksi, jotta sitä voidaan verrata ja tarkistaa mahdollisten laukaisutoimintojen varalta. Tässä projektissa LED kytketään päälle / pois päältä MQTT-komennoilla, kuten alla olevassa koodissa näkyy.
for (int i = 0; i <pituus; i ++) {viesti = viesti + (char) hyötykuorma; } Sarja.tulos (viesti); if (viesti == "päällä") {digitalWrite (LED, KORKEA); }
Lopuksi julkaista aihetta koskevat tiedot. Toimintoa client.publish () käytetään. Tässä projektissa painikkeen tila tarkistetaan, jos painiketta painetaan, viesti julkaistaan aiheessa ” esp / test1 ” alla olevan kuvan mukaisesti.
if (digitalRead (D1) == 0)) {asiakas.publish ("esp / test1", "Hei ESP8266: sta"); } muu; asiakas.loop ();
MQTT: n testaus ESP8266: lla Arduinolla
Viimeisessä testauksessa aiomme käyttää aiemmin perustamaamme Android-sovellusta.
Avaa MQTT-asiakassovellus ja varmista, että matkapuhelimellasi on aktiivinen Internet-yhteys. Lisäksi hotspotilla, johon NodeMCU on kytketty, pitäisi olla aktiivinen Internet-yhteys. Kun kaikki on yhdistetty Internetiin, lähetämme ESP-moduulista "Hello from ESP8266" -merkkijonon, joka näkyy Android-sovelluksessa, ja saamme ilmoituksen. Seuraavaksi lähetämme merkkijonon Android-sovelluksesta, joka sytyttää LEDin, joka on kytketty ESP8266 Node MCU -levyyn.
Vaihe 1: (Tilaa aihe):
Napsauta sovelluksen Tallennettu MQTT -vaihtoehtoa, jonka olemme aiemmin määrittäneet. Se avautuu ruudulle, jossa sitä kehotetaan tilaamaan aihe. Olemme aiemmin määrittäneet aiheen nimellä " esp / test1 ". Joten kirjoitamme Android-sovellukseen " esp / test1 ". Napsauta Tilaa, niin tekemällä sinulle näytetään alla oleva näyttö, jossa se kirjoitetaan kuten "Ei viestiä vastaanotettu" tietystä aiheesta.
Napsauta nyt painiketta 'Yhdistetty', joka on liitetty solmuunMCU. Koodimme mukaan viesti " Hei ESP8266: sta " julkaistaan Aiheessa, ja ruudulla on ilmoitus, joka vastaanottaa alla olevan kuvan.
Vaihe 2: Julkaise aiheeseen:
Voit nyt julkaista aiheessa napsauttamalla sovelluksen YLÄNUOLI-painiketta ja se avaa näytön alla olevan kuvan mukaisesti.
Kirjoita nyt Aihe-kenttään " esp / test " ja kirjoita viestikenttään " päällä " tai " pois " kytkeäksesi LED: n päälle tai pois. Esimerkiksi, jos ”päällä” on julkaistu aiheessa, LED-merkkivalo syttyy ja jos ”pois” on julkaistu aiheessa, LED sammuu.
Toivottavasti pidit artikkelista ja opit jotain uutta. Jos sinulla on kysyttävää tästä artikkelista, voit kommentoida alla tai voit käyttää sen sijaan foorumiamme.