Sisällysluettelo:
- Vaihe 1: Mikä on MQTT?
- Vaihe 2: Asenna MQTT Broker Raspberry Pi -laitteeseen
- Vaihe 3: Välittäjän testaaminen
- Vaihe 4: ESP8266: n määrittäminen (Adafruit HUZZAH)
- Vaihe 5: ESP8266: n ohjelmointi
- Vaihe 6: Python Clientin (paho-mqtt) asentaminen
- Vaihe 7: Python -asiakas - tilaaminen
- Vaihe 8: Tiedonsiirto ESP8266 -laitteiden välillä
Video: MQTT: n käyttäminen Raspberry Pi: n ja ESP8266: n kanssa: 8 vaihetta (kuvilla)
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:01
Tässä Instructable -ohjelmassa selitän, mikä on MQTT -protokolla ja miten sitä käytetään laitteiden väliseen kommunikointiin. Sen jälkeen näytän käytännön esimerkkinä, kuinka asennat yksinkertaisen kahden asiakasjärjestelmän, jossa ESP8266 -moduuli lähettää viestin Python -ohjelmaan, kun painiketta painetaan. Käytän erityisesti Adafruit HUZZAH -moduulia tähän projektiin, Raspberry Pi: tä ja pöytätietokonetta. Raspberry Pi toimii MQTT -välittäjänä ja Python -asiakas ajetaan erillisestä pöytätietokoneesta (valinnainen, koska tämä voidaan käyttää Raspberry Pi -laitteella).
Tämän ohjeen noudattamiseksi sinulla on oltava perustiedot elektroniikasta ja Arduino -ohjelmiston käytöstä. Sinun pitäisi myös tuntea komentorivikäyttöliittymän käyttö (Raspberry Pi). Toivottavasti kun olet saanut tiedon siitä, mitä MQTT on ja miten sitä käytetään perusskenaariossa, voit luoda omia IoT -projekteja!
Tarvittavat osat
- 1 x Raspberry Pi, kytketty paikalliseen verkkoon (käynnissä Jessie)
- 1 x ESP8266 -moduuli (Adafruit HUZZAH)
- 1 x leipälauta
- 3 x hyppyjohdot (uros-uros)
- 1 x painike
- 1 x 10 k ohmin vastus (ruskea-musta-oranssi värikoodi)
Olen luonut tämän Instructable -ohjelman, koska MQTT on aina kiinnostanut minua protokollana ja sitä voidaan käyttää monella eri tavalla. En kuitenkaan näyttänyt saavan päätäni siitä, kuinka koodata laitteita sen käyttämiseksi. Tämä johtui siitä, että en tiennyt/ymmärtänyt, mitä todella tapahtui "Hello, World!" laitteesta A ja lähettää sen laitteeseen B. Siksi päätin kirjoittaa tämän ohjeen (toivottavasti) opettamaan sinulle, miten se toimii, ja vahvistamaan myös omaa ymmärrystäni siitä!
Vaihe 1: Mikä on MQTT?
MQTT tai MQ Telemetry Transport on viestiprotokolla, jonka avulla useat laitteet voivat puhua keskenään. Tällä hetkellä se on suosittu esineiden Internet -protokolla, vaikka sitä on käytetty muihin tarkoituksiin - esimerkiksi Facebook Messenger. Mielenkiintoista on, että MQTT keksittiin vuonna 1999 - eli se on yhtä vanha kuin minä!
MQTT perustuu ajatukseen, että laitteet voivat julkaista tai tilata aiheita. Joten esimerkiksi. Jos laite #1 on tallentanut lämpötilan yhdestä anturistaan, se voi julkaista aiheeseen viestin, joka sisältää sen tallentaman lämpötila -arvon (esim. "Lämpötila"). Tämä viesti lähetetään MQTT -välittäjälle, jota voidaan ajatella kytkimenä/reitittimenä lähiverkossa. Kun MQTT Broker on vastaanottanut viestin, se lähettää sen kaikille laitteille (tässä tapauksessa Device #2), jotka ovat tilanneet saman aiheen.
Tässä projektissa julkaisemme aiheeseen käyttäen ESP8266: ta ja luomme Python -komentosarjan, joka tilaa tämän saman aiheen, Raspberry Pi: n kautta, joka toimii MQTT -välittäjänä. MQTT: n hieno asia on se, että se on kevyt, joten se sopii täydellisesti pienille mikro -ohjaimille, kuten ESP8266, mutta se on myös laajalti saatavilla - joten voimme käyttää sitä myös Python -skriptillä.
Toivottavasti tämän projektin lopussa sinulla on ymmärrys siitä, mitä MQTT on ja miten voit käyttää sitä omiin projekteihisi tulevaisuudessa.
Vaihe 2: Asenna MQTT Broker Raspberry Pi -laitteeseen
MQTT -järjestelmän asentamiseksi tarvitsemme välittäjää, kuten edellisessä vaiheessa selitettiin. Raspberry Pi: ssä käytämme "Mosquitto" MQTT -välittäjää. Ennen kuin asennamme tämän, on aina parasta päivittää Raspberry Pi.
sudo apt-get päivitys
sudo apt-get päivitys
Kun olet tehnyt tämän, asenna mosquitto ja sitten hyttysasiakaspaketit.
sudo apt -get install mosquitto -y
sudo apt-get install mosquitto-customers -y
Kun olet asentanut nämä kaksi pakettia, meidän on määritettävä välittäjä. Hyttysvälittäjän asetustiedosto sijaitsee /etc/mosquitto/mosquitto.conf, joten avaa tämä suosikkitekstieditorillasi. Jos sinulla ei ole suosikkitekstieditoria tai et osaa käyttää mitään komentorivieditoria, käytän nanoa, jotta voit seurata seuraavaa:
sudo nano /etc/mosquitto/mosquitto.conf
Tämän tiedoston alareunassa pitäisi näkyä rivi:
include_dir /etc/mosquitto/conf.d
Poista tämä rivi. Lisää seuraavat rivit tiedoston alaosaan.
allow_anonymous false
salasanatiedosto/etc/mosquitto/pwfile -kuuntelija 1883
Kirjoittamalla nämä rivit olemme sanoneet mosquitolle, ettemme halua kenenkään yhdistävän välittäjäämme, joka ei anna kelvollista käyttäjätunnusta ja salasanaa (asetamme nämä sekunneissa) ja että haluamme hyttysten kuuntele viestejä portin numerolla 1883.
Jos et halua välittäjän vaativan käyttäjänimeä ja salasanaa, älä lisää kahta ensimmäistä lisäämäämme riviä (eli salli_anonyymi… ja salasanatiedosto…). Jos olet tehnyt tämän, siirry Raspberry Pi: n uudelleenkäynnistykseen.
Sulje (ja tallenna) tiedosto. Jos seuraat nanoesimerkkiä, paina CTRL+X ja kirjoita Y pyydettäessä.
Koska olemme juuri kertoneet mosquitolle, että käyttäjät, jotka yrittävät käyttää MQTT -välittäjää, on todennettava, meidän on nyt kerrottava mosquitolle, mikä käyttäjätunnus ja salasana ovat! Kirjoita siis seuraava komento - korvaa käyttäjätunnus haluamallasi käyttäjänimellä - ja anna sitten salasana, jota pyydetään (Huomaa: jos määritystiedostoa muokatessasi annoit eri salasanatiedostopolun, korvaa alla oleva polku käyttämäsi).
sudo mosquitto_passwd -c/etc/mosquitto/pwfile käyttäjätunnus
Koska olemme juuri muuttaneet hyttysmääritystiedostoa, meidän on käynnistettävä Raspberry Pi uudelleen.
sudo uudelleenkäynnistys
Kun Raspberry Pi on käynnistänyt uudelleen, sinulla pitäisi olla täysin toimiva MQTT -välittäjä! Seuraavaksi yritämme olla vuorovaikutuksessa sen kanssa käyttämällä useita erilaisia laitteita/menetelmiä!
Vaihe 3: Välittäjän testaaminen
Kun olet asentanut hyttynen Raspberry Pi -laitteeseen, voit antaa sille nopean testin - vain varmistaaksesi, että kaikki toimii oikein. Tätä tarkoitusta varten on kaksi komentoa, joita voimme käyttää komentorivillä. mosquitto_pub ja mosquitto_sub. Tässä vaiheessa opastan sinua käyttämään näitä kaikkia välittäjämme testaamiseen.
Välittäjän testaamiseksi sinun on avattava kaksi komentorivi -ikkunaa. Jos käytät Puttyä tai muuta SSH -asiakasta, tämä on yhtä helppoa kuin avata toinen SSH -ikkuna ja kirjautua sisään tavalliseen tapaan. Jos käytät Pi -laitettasi UNIX -päätelaitteesta, tämä on täsmälleen sama. Jos käytät Raspberry Pi: tä suoraan, sinun on avattava kaksi pääteikkunaa GUI -tilassa (komentoa startxcan voidaan käyttää GUI: n käynnistämiseen).
Nyt kun olet avannut kaksi ikkunaa, voimme aloittaa testauksen. Kirjoita jompikumpi päätelaitteista seuraava komento ja korvaa käyttäjänimi ja salasana edellisellä vaiheessa määrittämilläsi.
mosquitto_sub -d -u käyttäjätunnus -P salasana -testi
Jos päätit olla asettamatta käyttäjänimeä ja salasanaa edellisessä vaiheessa, jätä tästä lähtien huomiotta komennot -u ja -P. Joten esimerkiksi mosquitto_sub -komento olisi nyt:
mosquitto_sub -d -testi
Mosquitto_sub -komento tilaa aiheen ja näyttää kaikki viestit, jotka lähetetään määritettyyn aiheeseen pääteikkunassa. Tässä -d tarkoittaa virheenkorjaustilaa, joten kaikki viestit ja toiminta näytetään näytöllä. -u ja -P pitäisi olla itsestään selviä. Lopuksi -t on aiheen nimi, jonka haluamme tilata - tässä tapauksessa "testi".
Seuraavaksi, toisessa pääteikkunassa, yritämme julkaista viestin "testi" -aiheeseen. Kirjoita seuraava ja muista vaihtaa käyttäjänimi ja salasana:
mosquitto_pub -d -u käyttäjätunnus -P salasana -testi -m "Hei, maailma!"
Kun painat enter, sinun pitäisi nähdä viesti "Hei, maailma!" ilmestyvät ensimmäiseen käyttämäämme pääteikkunaan (tilaamaan). Jos näin on, voit aloittaa työskentelyn ESP8266: n parissa!
Vaihe 4: ESP8266: n määrittäminen (Adafruit HUZZAH)
Tämä vaihe, jos se on erityinen Adafruit HUZZAH: lle (koska käytän tätä projektia loppuun). Jos käytät toista Arduino / ESP8266 -laitetta, voit ohittaa tämän vaiheen. Suosittelen kuitenkin, että luet sen lukemattomana, siltä varalta, että täällä on sinulle sopivaa tietoa.
Tätä projektia varten aion ohjelmoida HUZZAH: n Arduino -ohjelmistolla. Joten jos et ole jo tehnyt sitä, muista asentaa Arduino -ohjelmisto (uudempi kuin 1.6.4). Voit ladata sen täältä.
Kun olet asentanut Arduino-ohjelmiston, avaa se ja siirry kohtaan Tiedosto-> Asetukset. Tässä pitäisi näkyä (lähellä ikkunan alaosaa) tekstiruutu, jonka otsikko on "Lisätaulujen hallinnan URL -osoitteet". Kopioi ja liitä seuraava linkki tähän tekstiruutuun:
arduino.esp8266.com/stable/package_esp8266com_index.json
Tallenna muutokset napsauttamalla OK. Avaa nyt hallituksen johtaja (Työkalut-> Hallitus-> Hallituksen johtaja) ja etsi ESP8266. Asenna esp8266 by ESP8266 -yhteisöpaketti. Käynnistä Arduino -ohjelmisto uudelleen.
Ennen kuin voimme ohjelmoida levyn, meidän on valittava muutama eri vaihtoehto. Valitse Työkalut -valikkovaihtoehdosta Adafruit HUZZAH ESP8266 levylle, 80 MHz suorittimen taajuudelle (voit käyttää 160 MHz, jos haluat ylikellottaa sen, mutta toistaiseksi käytän 80 MHz), 4M (3M SPIFFS) salaman koolle ja 115200 latausnopeudelle. Muista myös valita käyttämäsi COM -portti (tämä riippuu asetuksistasi).
Ennen kuin voit ladata koodin, sinun on varmistettava, että HUZZAH on käynnistyslataustilassa. Ota tämä käyttöön painamalla GPIO0 -levyn painiketta ja pitämällä sitä painettuna myös nollauspainiketta. Vapauta sitten nollauspainike ja sitten GPIO0. Jos olet tehnyt tämän oikein, punaisen LED -valon, joka syttyi GPIO0 -näppäintä painettaessa, pitäisi nyt olla himmeä.
Jos haluat ladata koodin mikrokontrolleriin, varmista ensin, että HUZZAH on käynnistyslataustilassa, ja napsauta sitten Arduino IDE: n latauspainiketta.
Jos sinulla on ongelmia HUZZAH: n käyttöönotossa, lisätietoja on Adafruitin omassa opetusohjelmassa.
Vaihe 5: ESP8266: n ohjelmointi
Nyt aloitamme ESP8266: n ohjelmoinnin, mutta ennen kuin voimme aloittaa, sinun on asennettava seuraavat kirjastot Arduino-kirjastonhallintaan (Luonnos-> Sisällytä kirjastot-> Hallitse kirjastoja)
- Bounce2
- PubSubClient
Kun olet asentanut nämä kirjastot, voit suorittaa koodin, jonka olen sisällyttänyt tähän ohjeeseen (MQTT_Publish.zip). Olen kommentoinut sitä ehdottomasti, jotta ymmärrät, mitä kukin osio tekee, ja toivottavasti voit mukauttaa sen tarpeisiisi.
Muista muuttaa vakioita koodin yläosassa, jotta ESP8266 voi muodostaa yhteyden WiFi -verkkoon ja MQTT Brokeriin (Raspberry Pi).
Jos päätät olla asettamatta käyttäjänimeä ja salasanaa MQTT Brokerille, lataa sen sijaan MQTT_PublishNoPassword.zip -tiedosto.
Vaihe 6: Python Clientin (paho-mqtt) asentaminen
Onneksi tämä vaihe on hyvin yksinkertainen! Jos haluat asentaa mosquitto python -asiakkaan, sinun tarvitsee vain kirjoittaa seuraava komentoriville (Linux/Mac) tai jopa komentokehotteeseen (Windows).
pip asenna paho-mqtt
Huomautus: Windowsin komentokehotteessa saattaa olla ongelma pip -komennon suorittamisessa, jos et määrittänyt, että haluat, että pip asennetaan ja python lisätään PATH -muuttujaan, kun asennit Pythonin. On olemassa useita tapoja korjata tämä, mutta mielestäni vain Pythonin asentaminen on helpoin tapa. Jos olet epävarma - anna sille google!
Vaihe 7: Python -asiakas - tilaaminen
Tässä vaiheessa aiomme asentaa Python -komentosarjan (joko itse Raspberry Pi -laitteeseen tai toiseen verkkoon yhdistettyyn tietokoneeseen) käsittelemään kaikkia viestejä, jotka ESP8266 lähettää (julkaisee) MQTT -aiheeseen.
Olen lisännyt alla olevan python -koodin (PythonMQTT_Subscribe.py), joka on kommentoitu auttamaan sinua ymmärtämään, mitä tapahtuu, mutta selitän myös joitain pääominaisuuksia täällä.
Jos et määrittänyt käyttäjänimeä ja salasanaa MQTT -yhteydelle aiemmin, lataa sen sijaan PythonMQTT_SubscribeNoPassword.py -tiedosto.
Vaihe 8: Tiedonsiirto ESP8266 -laitteiden välillä
Jos haluat esimerkiksi perustaa IoT -verkon, haluat ehkä kommunikoida ESP8266 -laitteiden välillä. Onneksi tämä ei ole paljon monimutkaisempi kuin koodi, jonka olemme aiemmin kirjoittaneet, mutta siihen on tehty muutamia merkittäviä muutoksia.
Jotta yksi ESP lähettää tietoja toiselle, ensimmäisen ESP: n on julkaistava aiheeseen ja toisen ESP: n on tilattava kyseinen aihe. Tämä asetus mahdollistaa yksisuuntaisen keskustelun - ESP (1) - ESP (2). Jos haluamme, että ESP (2) puhuu takaisin ESP: lle (1), voimme luoda uuden aiheen, jonka ESP (2) julkaisee ja ESP (1) tilaa. Onneksi meillä voi olla useita tilaajia samasta aiheesta, joten jos haluat lähettää tietoja useisiin järjestelmiin, tarvitset vain yhden aiheen (jonka he kaikki tilaavat lukuun ottamatta laitetta, joka lähettää tiedot) julkaista).
Jos tarvitset apua kunkin laitteen tehtävien selvittämisessä, ajattele järjestelmää ihmishuoneena. Jos ESP (1) julkaisee, voit kuvitella tämän laitteen "kaiuttimeksi", ja kaikki aiheeseen liittyvät laitteet ovat "kuuntelijoita" tässä esimerkissä.
Olen lisännyt alla esimerkkikoodin, joka osoittaa, kuinka ESP8266 voi tilata aiheen ja kuunnella tiettyjä viestejä - 1 ja 0. Jos 1 vastaanotetaan, sisäinen LED (HUZZAH - GPIO 0) syttyy. Jos vastaanotetaan 0, tämä LED sammuu.
Jos haluat käsitellä monimutkaisempia tietoja, tämä on tehtävä ReceivedMessage -toiminnossa (katso koodi).
Jos sinun on sekä lähetettävä että vastaanotettava dataa omille projekteillesi, voit sisällyttää edellisen esimerkin julkaisutoiminnon tähän vaiheeseen sisältyvään koodiin. Tämä on käsiteltävä Arduino -silmukan () päätoiminnossa.
Muista muuttaa koodin yläosassa olevat muuttujat verkostosi mukaan!
Suositeltava:
Infrapuna -anturin käyttäminen Arduinon kanssa: 8 vaihetta (kuvien kanssa)
Infrapuna -anturin käyttäminen Arduinon kanssa: Mikä on infrapuna -anturi? . IR -signaali
MQTT: n käyttäminen Raspberry Pi: n ja ESP8266/sonoffin kanssa: 4 vaihetta
MQTT: n käyttäminen Raspberry Pi: n ja ESP8266/sonoffin kanssa: Hei kaikki! Tänään aion näyttää sinulle, miten voit määrittää vadelmapi- ja ESP8266 -pohjaisen sonoff -wifi -relekytkimen ohjaamaan kodinkoneitasi kaikkialta maailmasta. tästä ohjeesta, jos olet noudattanut huolellisesti ohjeitani
Sormenjälkitunnistimen käyttäminen ajanvaraukseen yhdessä XAMP -ratkaisun kanssa: 6 vaihetta (kuvien kanssa)
Sormenjälkitunnistimen käyttäminen ajanvaraukseen yhdessä XAMP -ratkaisun kanssa Ratkaisu: Kouluprojektissa etsimme ratkaisua oppilaiden läsnäolon seurantaan. Monet opiskelijoistamme tulevat myöhään. On työlästä työtä tarkistaa heidän läsnäolonsa. Toisaalta keskustelua on paljon, koska opiskelijat sanovat usein
RPLIDAR 360 ° -laserskannerin käyttäminen Arduinon kanssa: 3 vaihetta (kuvien kanssa)
RPLIDAR 360 ° -laserskannerin käyttäminen Arduinon kanssa: Olen suuri sumorobotien rakentamisen fani ja etsin aina uusia mielenkiintoisia antureita ja materiaaleja, joita voin käyttää paremman, nopeamman ja älykkäämmän robotin rakentamiseen. Sain tietää RPLIDAR A1: stä, jonka voit saada 99 dollarilla osoitteessa DFROBOT.com. Sanoin olevani kiinnostunut
DMX512 / RDM: n käyttäminen Raspberry Pi: n kanssa: 6 vaihetta (kuvien kanssa)
DMX512 / RDM: n käyttö Raspberry Pi: n kanssa: Raspberry Pi: tä voidaan käyttää valaistuksen ohjaamiseen DMX512 -väylän kautta. DMX512-väyläjärjestelmissä RS-485: tä käytetään fyysisenä kerroksena. RS422 / RS485 -sarjamuotoinen HAT on täysin galvaanisesti eristetty sarjaliikenteen HAT, joka on suunniteltu käytettäväksi Raspberry Pi