Sisukord:

MQTT kasutamine koos Raspberry Pi ja ESP8266 -ga: 8 sammu (piltidega)
MQTT kasutamine koos Raspberry Pi ja ESP8266 -ga: 8 sammu (piltidega)

Video: MQTT kasutamine koos Raspberry Pi ja ESP8266 -ga: 8 sammu (piltidega)

Video: MQTT kasutamine koos Raspberry Pi ja ESP8266 -ga: 8 sammu (piltidega)
Video: Using Heltec ESP32 OLED Wifi Kit 2024, November
Anonim
Kuidas kasutada MQTT -d koos Raspberry Pi ja ESP8266 -ga
Kuidas kasutada MQTT -d koos Raspberry Pi ja ESP8266 -ga

Selles juhendis selgitan, mis on MQTT -protokoll ja kuidas seda kasutatakse seadmete vaheliseks suhtlemiseks. Seejärel näitan praktilise näitena teile, kuidas seadistada lihtsat kahe kliendi süsteemi, kus ESP8266 moodul saadab sõnumi nupule vajutamisel Pythoni programmi. Täpsemalt kasutan selle projekti jaoks Adafruit HUZZAH moodulit, Raspberry Pi ja lauaarvutit. Raspberry Pi tegutseb MQTT maaklerina ja Pythoni klient käivitatakse eraldi lauaarvutist (valikuline, kuna seda saab kasutada Raspberry Pi -ga).

Selle juhendi järgimiseks peavad teil olema mõned põhiteadmised elektroonikast ja Arduino tarkvara kasutamisest. Samuti peaksite olema tuttav käsurealiidese kasutamisega (Raspberry Pi jaoks). Loodetavasti, kui olete omandanud teadmised, mis on MQTT ja kuidas seda põhistsenaariumi korral kasutada, saate luua oma asjade Interneti projekte!

Nõutavad osad

  • 1 x Raspberry Pi, ühendatud kohaliku võrguga (töötab Jessie)
  • 1 x ESP8266 moodul (Adafruit HUZZAH)
  • 1 x leivalaud
  • 3 x hüppajajuhtmed (mees-mees)
  • 1 x nupp
  • 1 x 10 kΩ takisti (pruun-must-oranž värvikood)

Olen loonud selle juhendi, kuna MQTT on mind alati protokollina huvitanud ja selle kasutamiseks on palju erinevaid viise. Tundus aga, et ma ei saanud pead murdma, kuidas seadmeid selle kasutamiseks kodeerida. Selle põhjuseks oli asjaolu, et ma ei teadnud/ei saanud aru, mis tegelikult toimub, et võtta minu "Tere, maailm!" seadmest A ja saatke see seadmesse B. Seega otsustasin selle juhendi kirjutada, et (loodetavasti) õpetada teile, kuidas see töötab, ja tugevdada ka enda arusaamist sellest!

Samm: mis on MQTT?

Mis on MQTT?
Mis on MQTT?

MQTT ehk MQ Telemetry Transport on sõnumiprotokoll, mis võimaldab mitmel seadmel omavahel rääkida. Praegu on see asjade Interneti jaoks populaarne protokoll, kuigi seda on kasutatud muuks otstarbeks - näiteks Facebook Messenger. Huvitaval kombel leiutati MQTT 1999. aastal - see tähendab, et see on sama vana kui mina!

MQTT põhineb ideel, et seadmed saavad teemasid avaldada või tellida. Nii näiteks. Kui seade nr 1 on salvestanud temperatuuri ühest andurist, võib see avaldada teema (nt „Temperatuur”) teate, mis sisaldab selle salvestatud temperatuuriväärtust. See teade saadetakse MQTT maaklerile, mida võite kujutada kui kohtvõrgu lülitit/ruuterit. Kui MQTT maakler on sõnumi kätte saanud, saadab ta selle kõigile sama teema tellinud seadmetele (antud juhul seadmele nr 2).

Selles projektis avaldame teema ESP8266 abil ja loome Pythoni skripti, mis tellib sama teema Raspberry Pi kaudu, mis toimib MQTT maaklerina. MQTT suurepärane asi on see, et see on kerge, nii et see sobib ideaalselt töötamiseks väikeste mikrokontrolleritega, näiteks ESP8266, kuid see on ka laialdaselt saadaval - nii et saame seda käivitada ka Pythoni skriptiga.

Loodetavasti on teil selle projekti lõpus arusaam sellest, mis on MQTT ja kuidas seda tulevikus oma projektide jaoks kasutada.

Samm: MQTT maakleri installimine Raspberry Pi -le

MQTT maakleri installimine Raspberry Pi -le
MQTT maakleri installimine Raspberry Pi -le
MQTT maakleri installimine Raspberry Pi -le
MQTT maakleri installimine Raspberry Pi -le
MQTT maakleri installimine Raspberry Pi -le
MQTT maakleri installimine Raspberry Pi -le

MQTT -süsteemi seadistamiseks vajame maaklerit, nagu eelmises etapis selgitatud. Vaarika Pi jaoks kasutame MQTT maaklerit "Mosquitto". Enne selle installimist on alati parem oma Raspberry Pi värskendada.

sudo apt-get update

sudo apt-get upgrade

Kui olete seda teinud, installige mosquitto ja seejärel sääsk-klientide paketid.

sudo apt -get install mosquitto -y

sudo apt-get install mosquitto-customers -y

Kui olete nende kahe paketi installimise lõpetanud, peame maakleri konfigureerima. Sääsevahendaja konfiguratsioonifail asub aadressil /etc/mosquitto/mosquitto.conf, nii et avage see oma lemmiktekstiredaktoriga. Kui teil pole lemmiktekstiredaktorit või ei tea, kuidas käsurea redigeerijaid kasutada, kasutan nano, et saaksite järgida järgmist.

sudo nano /etc/mosquitto/mosquitto.conf

Selle faili allosas peaksite nägema rida:

include_dir /etc/mosquitto/conf.d

Kustuta see rida. Lisage faili lõppu järgmised read.

allow_anonymous false

Paroolifail/etc/mosquitto/pwfile kuulaja 1883

Neid ridu trükkides oleme öelnud sääskele, et me ei taha, et keegi meie maakleriga ühendust võtaks, kes ei annaks kehtivat kasutajanime ja parooli (hakkame neid sekunditega seadma) ja et me soovime, et sääsk kuulake sõnumeid pordi numbril 1883.

Kui te ei soovi, et maakler nõuaks kasutajanime ja parooli, ärge lisage kahte lisatud esimest rida (st lubage_anonüümne… ja paroolifail…). Kui olete seda teinud, jätkake Raspberry Pi taaskäivitamisega.

Nüüd sulgege (ja salvestage) see fail. Kui järgite nano -näidet, vajutage CTRL+X ja tippige küsimisel Y.

Kuna me just teatasime mosquitole, et kasutajad, kes proovivad kasutada MQTT maaklerit, peavad olema autentitud, peame nüüd mosquittole ütlema, mis on kasutajanimi ja parool! Niisiis, tippige järgmine käsk - asendades kasutajanime soovitud kasutajanimega - seejärel sisestage soovitud parool (märkus: kui konfiguratsioonifaili redigeerimisel määrasite teistsuguse paroolifaili tee, asendage allolev tee üks, mida kasutasite).

sudo mosquitto_passwd -c/etc/mosquitto/pwfile kasutajanimi

Kuna oleme just sääskede konfiguratsioonifaili muutnud, peaksime Raspberry Pi taaskäivitama.

sudo taaskäivitamine

Kui Raspberry Pi on taaskäivitamise lõpetanud, peaks teil olema täielikult toimiv MQTT maakler! Järgmisena proovime sellega suhelda, kasutades mitmeid erinevaid seadmeid/meetodeid!

Samm: maakleri testimine

Maakleri testimine
Maakleri testimine

Kui olete sääse Raspberry Pi -le installinud, saate sellele kiire testi teha - veendumaks, et kõik töötab õigesti. Sel eesmärgil saame käsureal kasutada kahte käsku. mosquitto_pub ja mosquitto_sub. Selles etapis juhendan teid nende vahendite kasutamisel meie maakleri testimiseks.

Maakleri testimiseks peate avama kaks käsurea akent. Kui kasutate Puttyt või mõnda muud SSH -klienti, on see sama lihtne kui teise SSH -akna avamine ja sisselogimine nagu tavaliselt. Kui pääsete oma Pi -le juurde UNIX -terminalist, on see täpselt sama. Kui kasutate Raspberry Pi otse, peate GUI -režiimis avama kaks terminaliakent (GUI käivitamiseks saab kasutada käsku startxcan).

Nüüd, kui olete avanud kaks akent, saame katsetamisega alustada. Sisestage ühte kahest terminalist järgmine käsk, asendades kasutajanime ja parooli eelmises etapis seadistatud omadega.

mosquitto_sub -d -u kasutajanimi -P parool -testi

Kui otsustasite eelmises etapis kasutajanime ja parooli mitte seada, siis nüüdsest ignoreerige käskude lippe -u ja -P. Näiteks käsk mosquitto_sub oleks näiteks järgmine:

mosquitto_sub -d -testi

Käsk mosquitto_sub tellib teema ja kuvab terminaliaknas kõik sõnumid, mis saadetakse määratud teemale. Siin tähendab -d silumisrežiimi, nii et kõik sõnumid ja tegevused väljastatakse ekraanile. -u ja -P peaksid olema iseenesestmõistetavad. Lõpuks on -t selle teema nimi, mida me soovime tellida - antud juhul "test".

Järgmisena proovime teises terminaliaknas avaldada sõnumi "test" teemale. Sisestage järgmine, pidades meeles kasutajanime ja parooli muutmist:

mosquitto_pub -d -u kasutajanimi -P parool -t test -m "Tere, maailm!"

Kui vajutate sisestusklahvi, peaksite nägema oma sõnumit "Tere, maailm!" ilmuvad esimeses terminaliaknas, mida kasutasime (tellimiseks). Kui see nii on, olete valmis alustama tööd ESP8266 -ga!

4. samm: ESP8266 (Adafruit HUZZAH) seadistamine

ESP8266 seadistamine (Adafruit HUZZAH)
ESP8266 seadistamine (Adafruit HUZZAH)
ESP8266 seadistamine (Adafruit HUZZAH)
ESP8266 seadistamine (Adafruit HUZZAH)
ESP8266 seadistamine (Adafruit HUZZAH)
ESP8266 seadistamine (Adafruit HUZZAH)
ESP8266 seadistamine (Adafruit HUZZAH)
ESP8266 seadistamine (Adafruit HUZZAH)

See samm, kui see on spetsiifiline Adafruit HUZZAH jaoks (kuna seda kasutan selle projekti lõpuleviimiseks). Kui kasutate mõnda muud Arduino / ESP8266 seadet, võiksite selle sammu vahele jätta. Siiski soovitan teil seda lugeda, igaks juhuks, kui siin on teie jaoks asjakohast teavet.

Selle projekti jaoks kavatsen HUZZAH -i programmeerida Arduino tarkvara abil. Seega, kui te pole seda veel teinud, installige kindlasti Arduino tarkvara (uuem kui 1.6.4). Selle saate alla laadida siit.

Kui olete Arduino tarkvara installinud, avage see ja navigeerige jaotisse Fail-> Eelistused. Siin peaksite nägema (akna allosas) tekstikasti sildiga: "Täiendavate tahvlite halduri URL -id". Selles tekstikasti kopeerige ja kleepige järgmine link:

arduino.esp8266.com/stable/package_esp8266com_index.json

Muudatuste salvestamiseks klõpsake nuppu OK. Nüüd avage juhatuse haldur (Tööriistad-> Juhatus-> Juhatuse haldur) ja otsige ESP8266. Installige esp8266 by ESP8266 kogukonna pakett. Taaskäivitage Arduino tarkvara.

Nüüd, enne kui saame plaati programmeerida, peame valima mõned erinevad suvandid. Valige menüüst Tools (Tööriistad) Adafruit HUZZAH ESP8266 (Board), 80 MHz (CPU sagedus) (saate kasutada 160 MHz, kui soovite seda ületada, kuid praegu kasutan 80 MHz), 4M (3M SPIFFS) välgu suuruse jaoks ja 115200 üleslaadimiskiiruse jaoks. Valige kindlasti ka kasutatav COM -port (see sõltub teie seadistusest).

Enne mis tahes koodi üleslaadimist peate veenduma, et HUZZAH on alglaaduri režiimis. Selle lubamiseks hoidke all nuppu tahvlil, millel on märge GPIO0, ja samal ajal hoidke all ka lähtestusnuppu. Seejärel vabastage nupp Lähtesta ja seejärel GPIO0. Kui olete seda õigesti teinud, peaks GPIO0 vajutamisel süttinud punane valgusdiood nüüd nõrgalt põlema.

Koodi mikrokontrollerisse üleslaadimiseks veenduge esmalt, et HUZZAH oleks alglaaduri režiimis, seejärel klõpsake lihtsalt Arduino IDE -s üleslaadimisnuppu.

Kui teil on probleeme HUZZAHi seadistamisega, leiate lisateavet Adafruit'i enda õpetusest.

Samm: ESP8266 programmeerimine

ESP8266 programmeerimine
ESP8266 programmeerimine

Nüüd hakkame ESP8266 programmeerima, kuid enne alustamist peate Arduino raamatukogu haldurisse installima järgmised teegid (Sketch-> Include Libraries-> Manage Libraries)

  • Põrge2
  • PubSubClient

Kui olete need teegid installinud, saate käivitada koodi, mille olen sellesse juhendisse lisanud (MQTT_Publish.zip). Olen seda kindlasti kommenteerinud, et saaksite aru, mida iga sektsioon teeb, ja see peaks loodetavasti võimaldama teil seda oma vajadustele kohandada.

Ärge unustage muuta koodi ülaosas olevaid konstandeid, et teie ESP8266 saaks ühenduse luua teie WiFi -võrgu ja teie MQTT maakleriga (Raspberry Pi).

Kui otsustasite MQTT maaklerile kasutajanime ja parooli mitte määrata, laadige selle asemel alla fail MQTT_PublishNoPassword.zip.

6. toiming: Pythoni kliendi (paho-mqtt) installimine

Pythoni kliendi installimine (paho-mqtt)
Pythoni kliendi installimine (paho-mqtt)

Õnneks on see samm väga lihtne! Mosquitto python kliendi installimiseks peate lihtsalt sisestama käsureale (Linux/Mac) või isegi käsureale (Windows) järgmise.

pip install paho-mqtt

Märkus. Windowsi käsureal võib pip -käsu käivitamisel tekkida probleem, kui te pole Pythoni installimisel määranud, et soovite, et pip installitaks ja python lisataks muutujale PATH. Selle parandamiseks on mitmeid viise, kuid ma arvan, et lihtsalt Pythoni uuesti installimine on lihtsaim viis. Kui kahtled - anna google!

Samm: Pythoni klient - tellimine

Pythoni klient - tellimine
Pythoni klient - tellimine

Selles etapis seadistame Pythoni skripti (kas Raspberry Pi -s või mõnes muus võrku ühendatud arvutis), et käsitleda kõiki sõnumeid, mille ESP8266 saadab (avaldab) MQTT -i teemale.

Olen lisanud allpool oleva püütoni koodi (PythonMQTT_Subscribe.py), mida on kommenteeritud, et aidata teil toimuvast aru saada, kuid selgitan ka siin mõningaid põhifunktsioone.

Kui te pole varem MQTT -ühenduse jaoks kasutajanime ja parooli määranud, laadige selle asemel alla fail PythonMQTT_SubscribeNoPassword.py.

Samm: suhtlemine ESP8266 seadmete vahel

ESP8266 seadmete vahel suhtlemine
ESP8266 seadmete vahel suhtlemine

Näiteks kui soovite seadistada IoT -võrku, võiksite suhelda ESP8266 seadmete vahel. Õnneks pole see palju keerulisem kui kood, mille oleme varem kirjutanud, kuid seal on paar märkimisväärset muudatust.

Selleks, et üks ESP saaks andmeid teisele saata, peab esimene ESP teema jaoks avaldama ja teine ESP selle teema tellima. See seadistus võimaldab ühesuunalist vestlust - ESP (1) kuni ESP (2). Kui tahame, et ESP (2) räägiks ESP -ga (1), saame luua uue teema, mille ESP (2) avaldab ja ESP (1) tellib. Õnneks võib meil olla samal teemal mitu tellijat, nii et kui soovite andmeid saata mitmesse süsteemi, vajate ainult ühte teemat (mille nad kõik tellivad, välja arvatud seade, mis andmeid saadab). avaldama).

Kui vajate abi, et välja selgitada, mida iga seade peab tegema, mõelge süsteemile kui inimeste ruumile. Kui ESP (1) avaldab, võite ette kujutada seda seadet "kõlarina" ja kõik seadmed, mis teemat tellivad, on selles näites "kuulajad".

Olen lisanud allpool mõne näidiskoodi, mis näitab, kuidas ESP8266 saab teema tellida ja teatud sõnumeid kuulata - 1 ja 0. Kui 1 on vastu võetud, lülitatakse sisse LED -indikaator (HUZZAH - GPIO 0). Kui saabub 0, lülitatakse see LED välja.

Kui soovite töödelda keerulisemaid andmeid, tuleks seda teha funktsioonis ReceivedMessage (vt koodi).

Kui teil on vaja oma projektide jaoks andmeid nii saata kui ka vastu võtta, saate selles etapis sisalduvasse koodi lisada eelmise näite avaldamisfunktsiooni. Seda tuleks käsitleda põhifunktsioonis Arduino loop ().

Ärge unustage muuta koodi ülaosas olevaid muutujaid, et need sobiksid teie võrguga!

Soovitan: