Përmbajtje:

Si të përdorni MQTT me Raspberry Pi dhe ESP8266: 8 hapa (me fotografi)
Si të përdorni MQTT me Raspberry Pi dhe ESP8266: 8 hapa (me fotografi)

Video: Si të përdorni MQTT me Raspberry Pi dhe ESP8266: 8 hapa (me fotografi)

Video: Si të përdorni MQTT me Raspberry Pi dhe ESP8266: 8 hapa (me fotografi)
Video: Использование комплекта Wi-Fi Heltec ESP32 OLED 2024, Nëntor
Anonim
Si të përdorni MQTT me Raspberry Pi dhe ESP8266
Si të përdorni MQTT me Raspberry Pi dhe ESP8266

Në këtë Instructable, unë do të shpjegoj se çfarë është protokolli MQTT dhe si përdoret për të komunikuar midis pajisjeve. Pastaj, si një demonstrim praktik, do t'ju tregoj se si të vendosni një sistem të thjeshtë me dy klientë, ku një modul ESP8266 do të dërgojë një mesazh te një program Python kur shtypet një buton. Në mënyrë të veçantë, unë jam duke përdorur një modul Adafruit HUZZAH për këtë projekt, një Raspberry Pi dhe një kompjuter desktop. Raspberry Pi do të veprojë si ndërmjetësi MQTT, dhe klienti Python do të drejtohet nga një kompjuter i veçantë desktop (opsional, pasi kjo mund të ekzekutohet në Raspberry Pi).

Për të ndjekur së bashku me këtë Instructable, do t'ju duhet të keni disa njohuri bazë të elektronikës dhe si të përdorni softuerin Arduino. Ju gjithashtu duhet të jeni të njohur me përdorimin e një ndërfaqeje të linjës së komandës (për Raspberry Pi). Shpresojmë, pasi të keni fituar njohurinë se çfarë është MQTT dhe si ta përdorni atë në një skenar bazë, do të jeni në gjendje të krijoni projektet tuaja IoT!

Pjesët e kërkuara

  • 1 x Raspberry Pi, e lidhur me një rrjet lokal (drejton Jessie)
  • 1 x modul ESP8266 (Adafruit HUZZAH)
  • 1 x Breadboard
  • 3 x tela bluzë (Mashkull-te-Mashkull)
  • 1 x Buton butoni
  • Rezistencë 1 x 10k Ohm (Kodi i ngjyrës kafe-e zezë-portokalli)

Unë kam krijuar këtë Instructable, pasi MQTT më ka interesuar gjithmonë si protokoll dhe ka shumë mënyra të ndryshme që mund të përdoret. Sidoqoftë, nuk mund të mendoja se si të kodoja pajisjet për ta përdorur atë. Kjo ishte sepse nuk e dija/kuptoja se çfarë po ndodhte në të vërtetë për të marrë "Përshëndetje, Botë!" nga pajisja A dhe dërgojeni atë në pajisjen B. Prandaj, vendosa ta shkruaj këtë Instructable për t'ju mësuar (me shpresë) se si funksionon, dhe gjithashtu të përforcoj kuptimin tim për të!

Hapi 1: Çfarë është MQTT?

Çfarë është MQTT?
Çfarë është MQTT?

MQTT, ose MQ Telemetry Transport, është një protokoll mesazhesh i cili lejon pajisje të shumta të flasin me njëra -tjetrën. Aktualisht, është një protokoll popullor për Internetin e Gjërave, megjithëse është përdorur për qëllime të tjera - për shembull, Facebook Messenger. Interesante MQTT u shpik në 1999 - do të thotë se është aq i vjetër sa unë!

MQTT bazohet në idenë që pajisjet mund të publikojnë ose të regjistrohen në tema. Kështu, për shembull. Nëse Pajisja #1 ka regjistruar temperaturën nga një prej sensorëve të saj, mund të publikojë një mesazh i cili përmban vlerën e temperaturës që ka regjistruar, në një temë (p.sh. "Temperatura"). Ky mesazh i dërgohet një ndërmjetësi MQTT, të cilin mund ta mendoni si një ndërrues/ruter në një rrjet lokal. Pasi ndërmjetësi MQTT të ketë marrë mesazhin, ai do ta dërgojë atë në çdo pajisje (në këtë rast, Pajisja #2) të cilat janë të regjistruara në të njëjtën temë.

Në këtë projekt, ne do të botojmë në një temë duke përdorur një ESP8266 dhe do të krijojmë një shkrim Python që do të regjistrohet në të njëjtën temë, përmes një Raspberry Pi i cili do të veprojë si ndërmjetësi MQTT. Gjëja e shkëlqyeshme në lidhje me MQTT është se është e lehtë, kështu që është e përkryer për të punuar në mikrokontrollues të vegjël si një ESP8266, por është gjithashtu gjerësisht e disponueshme - kështu që ne mund ta ekzekutojmë atë edhe në një shkrim Python.

Shpresojmë, në fund të këtij projekti, do të keni një kuptim se çfarë është MQTT dhe si ta përdorni atë për projektet tuaja në të ardhmen.

Hapi 2: Instalimi i ndërmjetësit MQTT në Raspberry Pi

Instalimi i ndërmjetësit MQTT në Raspberry Pi
Instalimi i ndërmjetësit MQTT në Raspberry Pi
Instalimi i ndërmjetësit MQTT në Raspberry Pi
Instalimi i ndërmjetësit MQTT në Raspberry Pi
Instalimi i ndërmjetësit MQTT në Raspberry Pi
Instalimi i ndërmjetësit MQTT në Raspberry Pi

Për të konfiguruar sistemin tonë MQTT, ne kemi nevojë për një ndërmjetës, siç u shpjegua në hapin e mëparshëm. Për Raspberry Pi, ne do të përdorim ndërmjetësin MQTT "Mosquitto". Para se ta instalojmë këtë, është gjithmonë më mirë të përditësoni Raspberry Pi tonë.

përditësim sudo apt-get

sudo apt-get upgrade

Pasi ta keni bërë këtë, instaloni mushkonjat dhe pastaj paketat e klientëve të mushkonjave.

sudo apt -get install mushkonja -y

sudo apt-get install mushkonja-klientë -y

Kur të keni përfunduar instalimin e këtyre dy paketave, do të na duhet të konfigurojmë ndërmjetësin. Skedari i konfigurimit të ndërmjetësit të mushkonjave gjendet në /etc/mosquitto/mosquitto.conf, kështu që hapeni këtë me redaktuesin tuaj të preferuar të tekstit. Nëse nuk keni një redaktues teksti të preferuar ose nuk dini si të përdorni ndonjë nga redaktorët e vijës së komandës, unë do të përdor nano kështu që ju mund të ndiqni së bashku:

sudo nano /etc/mosquitto/mosquitto.conf

Në fund të këtij skedari, duhet të shihni rreshtin:

përfshini_dir /etc/mosquitto/conf.d

Fshini këtë rresht. Shtoni rreshtat e mëposhtëm në fund të skedarit.

lejoni_anonim false

fjalekalimi_file/etc/mushkonja/dëgjuesi pwfile 1883

Duke shtypur ato rreshta, ne i kemi thënë mushkonjave se nuk duam që dikush të lidhet me ndërmjetësin tonë i cili nuk jep një emër përdoruesi dhe fjalëkalim të vlefshëm (ne do t'i vendosim ato në një sekondë) dhe se duam që mushkonja të dëgjoni mesazhet në numrin e portit 1883.

Nëse nuk doni që ndërmjetësi të kërkojë një emër përdoruesi dhe fjalëkalim, mos përfshini dy rreshtat e parë që shtuam (p.sh. lejoni_anonim… dhe skedar fjalëkalimi …). Nëse e keni bërë këtë, atëherë kaloni në rindezjen e Raspberry Pi.

Tani mbyllni (dhe ruani) atë skedar. Nëse jeni duke ndjekur shembullin nano, shtypni CTRL+X dhe shkruani Y kur ju kërkohet.

Për shkak se ne sapo i kemi thënë mushkonjave se përdoruesit që përpiqen të përdorin ndërmjetësin MQTT duhet të vërtetohen, tani duhet t'i tregojmë mushkonjave se çfarë janë emri i përdoruesit dhe fjalëkalimi! Pra, shkruani komandën e mëposhtme - duke zëvendësuar emrin e përdoruesit me emrin e përdoruesit që dëshironi - pastaj futni fjalëkalimin që dëshironi kur ju kërkohet (Shënim: nëse, kur redaktoni skedarin e konfigurimit, keni specifikuar një shteg të ndryshëm password_file, zëvendësoni rrugën më poshtë me një që keni përdorur)

sudo mosquitto_passwd -c/etc/mosquitto/pwfile emri i përdoruesit

Ndërsa sapo kemi ndryshuar skedarin e konfigurimit të mushkonjave, duhet të rindizim Raspberry Pi.

rindez sudo

Pasi Raspberry Pi të ketë përfunduar rindezjen, duhet të keni një ndërmjetës MQTT plotësisht funksionues! Tjetra, ne do të përpiqemi të bashkëveprojmë me të, duke përdorur një numër pajisjesh/metodash të ndryshme!

Hapi 3: Testimi i ndërmjetësit

Testimi i ndërmjetësit
Testimi i ndërmjetësit

Pasi të keni instaluar mushkonjat në Raspberry Pi, mund t'i jepni një test të shpejtë - vetëm për t'u siguruar që gjithçka po funksionon si duhet. Për këtë qëllim, ekzistojnë dy komanda që mund t'i përdorim në vijën e komandës. mushkonja_pub dhe mushkonja_sub. Në këtë hap, unë do t'ju udhëzoj duke përdorur secilën prej tyre për të testuar ndërmjetësin tonë.

Për të testuar ndërmjetësin, do t'ju duhet të hapni dy dritare të linjës së komandës. Nëse jeni duke përdorur Putty ose një klient tjetër SSH, kjo është aq e thjeshtë sa të hapni një dritare tjetër SSH dhe të regjistroheni si zakonisht. Nëse po përdorni Pi tuaj nga një terminal UNIX, kjo është saktësisht e njëjtë. Nëse jeni duke përdorur Raspberry Pi drejtpërdrejt, do t'ju duhet të hapni dy dritare terminale në modalitetin GUI (komanda startxcan të përdoret për të filluar GUI).

Tani që keni hapur dy dritare, ne mund të fillojmë me testimin. Në njërën nga dy terminalet, shtypni komandën e mëposhtme, duke zëvendësuar emrin e përdoruesit dhe fjalëkalimin me ato që keni vendosur në hapin e mëparshëm.

mosquitto_sub -d -u username -P fjalëkalim -t test

Nëse keni vendosur të mos vendosni një emër përdoruesi dhe fjalëkalim në hapin e mëparshëm, atëherë tani e tutje, injoroni flamujt -u dhe -P në komandat. Pra, si shembull, komanda mosquitto_sub do të ishte tani:

mosquitto_sub -d -t test

Komanda mosquitto_sub do të regjistrohet në një temë dhe do të shfaqë çdo mesazh që dërgohet në temën e specifikuar në dritaren e terminalit. Këtu, -d do të thotë mënyra e korrigjimit, kështu që të gjitha mesazhet dhe aktivitetet do të dalin në ekran. -u dhe -P duhet të jenë vetë -shpjeguese. Së fundi, -t është emri i temës në të cilën duam të pajtohemi - në këtë rast, "test".

Tjetra, në dritaren tjetër të terminalit, ne do të përpiqemi të publikojmë një mesazh për temën "test". Shkruani sa vijon, duke kujtuar përsëri për të ndryshuar emrin e përdoruesit dhe fjalëkalimin:

mosquitto_pub -d -u username -P fjalëkalim -t test -m "Përshëndetje, Botë!"

Kur shtypni enter, duhet të shihni mesazhin tuaj "Përshëndetje, Botë!" shfaqen në dritaren e parë të terminalit që kemi përdorur (për t'u abonuar). Nëse është kështu, jeni gati të filloni të punoni në ESP8266!

Hapi 4: Vendosja e ESP8266 (Adafruit HUZZAH)

Vendosja e ESP8266 (Adafruit HUZZAH)
Vendosja e ESP8266 (Adafruit HUZZAH)
Vendosja e ESP8266 (Adafruit HUZZAH)
Vendosja e ESP8266 (Adafruit HUZZAH)
Vendosja e ESP8266 (Adafruit HUZZAH)
Vendosja e ESP8266 (Adafruit HUZZAH)
Vendosja e ESP8266 (Adafruit HUZZAH)
Vendosja e ESP8266 (Adafruit HUZZAH)

Ky hap është specifik për Adafruit HUZZAH (pasi kjo është ajo që unë jam duke përdorur për të përfunduar këtë projekt). Nëse jeni duke përdorur një pajisje tjetër Arduino / ESP8266, mund të dëshironi të kaloni këtë hap. Sidoqoftë, unë do t'ju këshilloja që ta lexoni pa kursim, vetëm në rast se ka ndonjë informacion këtu që mund të jetë i rëndësishëm për ju.

Për këtë projekt, unë do të programoj HUZZAH me programin Arduino. Pra, nëse nuk e keni bërë tashmë, sigurohuni që të instaloni programin Arduino (më i ri se 1.6.4). Mund ta shkarkoni këtu.

Pasi të keni instaluar programin Arduino, hapeni atë dhe lundroni te File-> Preferences. Këtu duhet të shihni (afër fundit të dritares) një kuti teksti me etiketën: "URL shtesë të menaxherit të bordeve". Në këtë kuti teksti, kopjoni dhe ngjisni lidhjen e mëposhtme:

arduino.esp8266.com/stable/package_esp8266com_index.json

Klikoni OK për të ruajtur ndryshimet tuaja. Tani hapni Menaxherin e Bordit (Tools-> Board-> Board Manager) dhe kërkoni për ESP8266. Instaloni paketën e komunitetit esp8266 by ESP8266. Rinisni programin Arduino.

Tani, para se të mund të programojmë tabelën, duhet të zgjedhim disa opsione të ndryshme. Në opsionin e menysë Tools, zgjidhni Adafruit HUZZAH ESP8266 për Bordin, 80 MHz për Frekuencën e CPU (mund të përdorni 160 MHz nëse dëshironi ta mbingarkoni, por tani për tani unë do të përdor 80 MHz), 4M (3M SPIFFS) për madhësinë e blicit dhe 115200 për shpejtësinë e ngarkimit. Gjithashtu, sigurohuni që të zgjidhni portën COM që po përdorni (kjo do të varet nga konfigurimi juaj).

Para se të ngarkoni ndonjë kod, duhet të siguroheni që HUZZAH është në modalitetin e ngarkuesit. Për ta mundësuar këtë, mbani të shtypur butonin në tabelën e shënuar GPIO0, dhe ndërsa mbahet, mbani të shtypur edhe butonin Reset. Pastaj, lëshoni butonin Reset, dhe pastaj GPIO0. Nëse e keni bërë këtë në mënyrë korrekte, LED i kuq që ndizet kur shtypni GPIO0 tani duhet të jetë i ndezur dobët.

Për të ngarkuar kodin në mikrokontrollues, së pari sigurohuni që HUZZAH është në modalitetin e ngarkuesit, pastaj thjesht klikoni butonin e ngarkimit në Arduino IDE.

Nëse keni ndonjë problem me ngritjen e HUZZAH, informacione të mëtejshme mund të gjenden në tutorialin e Adafruit.

Hapi 5: Programimi i ESP8266

Programimi i ESP8266
Programimi i ESP8266

Tani do të fillojmë të programojmë ESP8266, por para se të fillojmë, do t'ju duhet të instaloni bibliotekat e mëposhtme në menaxherin e Bibliotekës Arduino (Skica-> Përfshirja e Bibliotekave-> Menaxhimi i Bibliotekave)

  • Kërcim2
  • PubSubClient

Pasi të keni instaluar ato biblioteka, do të jeni në gjendje të ekzekutoni kodin që kam përfshirë në këtë Instructable (MQTT_Publish.zip). Unë jam siguruar që ta komentoj në mënyrë që të kuptoni se çfarë po bën secila pjesë, dhe kjo me shpresë do t'ju mundësojë që ta përshtatni atë me nevojat tuaja.

Mos harroni të ndryshoni konstantet në krye të kodit në mënyrë që ESP8266 juaj të lidhet me rrjetin tuaj WiFi dhe ndërmjetësin tuaj MQTT (Raspberry Pi).

Nëse keni vendosur të mos vendosni një emër përdoruesi dhe fjalëkalim për ndërmjetësin MQTT, atëherë në vend të kësaj shkarkoni skedarin MQTT_PublishNoPassword.zip.

Hapi 6: Instalimi i Python Client (paho-mqtt)

Instalimi i Python Client (paho-mqtt)
Instalimi i Python Client (paho-mqtt)

Fatmirësisht, ky hap është shumë i thjeshtë! Për të instaluar klientin mushkonja python, ju vetëm duhet të shkruani sa vijon në rreshtin e komandës (Linux/Mac) apo edhe command prompt (Windows).

pip instaloni paho-mqtt

Shënim: Komanda e Windows -it mund të ketë një problem me ekzekutimin e komandës pip nëse nuk specifikoni që dëshironi të instaloni pip dhe python të shtohet në ndryshoren tuaj PATH kur instaloni Python. Ka një numër mënyrash për ta rregulluar këtë, por unë mendoj se vetëm riinstalimi i Python është mënyra më e lehtë. Nëse keni dyshime - jepni një google!

Hapi 7: Klienti Python - Abonimi

Klienti Python - Abonimi
Klienti Python - Abonimi

Në këtë hap, ne do të konfigurojmë shkrimin Python (ose në Raspberry Pi vetë ose në një kompjuter tjetër të lidhur në rrjet) për të trajtuar të gjitha mesazhet që dërgohen (publikohen) nga ESP8266 në temën MQTT.

Unë kam përfshirë kodin python më poshtë (PythonMQTT_Subscribe.py), i cili është komentuar për t'ju ndihmuar të kuptoni se çfarë po ndodh, por unë do të shpjegoj disa nga karakteristikat kryesore edhe këtu.

Nëse nuk keni vendosur një emër përdoruesi dhe fjalëkalim për lidhjen MQTT më herët, shkarkoni skedarin PythonMQTT_SubscribeNoPassword.py në vend.

Hapi 8: Komunikimi midis pajisjeve ESP8266

Komunikimi midis pajisjeve ESP8266
Komunikimi midis pajisjeve ESP8266

Nëse dëshironi të krijoni një rrjet IoT, për shembull, mund të dëshironi të komunikoni midis pajisjeve ESP8266. Fatmirësisht, kjo nuk është shumë më komplekse sesa kodi që kemi shkruar më parë, megjithatë, ka disa ndryshime të dukshme.

Që një ESP të dërgojë të dhëna te një tjetër, ESP -ja e parë do të duhet të publikojë në temë, dhe ESP -ja e dytë do të duhet të regjistrohet në atë temë. Ky konfigurim do të lejojë një bisedë të njëanshme - ESP (1) me ESP (2). Nëse duam që ESP (2) të flasë përsëri me ESP (1), ne mund të krijojmë një temë të re, të cilës ESP (2) do të publikojë, dhe ESP (1) do të regjistrohet. Fatmirësisht, ne mund të kemi abonentë të shumtë në të njëjtën temë, kështu që nëse doni të dërgoni të dhëna në një numër sistemesh, do t'ju duhet vetëm një temë (së cilës ata të gjithë regjistrohen, përveç pajisjes që po dërgon të dhënat, pasi kjo do të të jetë botuese).

Nëse keni nevojë për ndihmë për të kuptuar se çfarë duhet të bëjë çdo pajisje, mendoni për sistemin si një dhomë njerëzish. Nëse ESP (1) po boton, ju mund ta imagjinoni këtë pajisje si një "altoparlant", dhe çdo pajisje që po pajtohet me temën është "dëgjues" në këtë shembull.

Unë kam përfshirë disa shembuj të kodit më poshtë, i cili tregon se si një ESP8266 mund të regjistrohet në një temë dhe të dëgjojë mesazhe të caktuara - 1 dhe 0. Nëse merret 1, LED në bord (për HUZZAH - GPIO 0) ndizet Me Nëse merret 0, kjo LED është e fikur.

Nëse dëshironi të përpunoni të dhëna më komplekse, kjo duhet të bëhet në funksionin ReceivedMessage (shiko kodin).

Për projektet tuaja, nëse keni nevojë të dërgoni dhe merrni të dhëna, mund të përfshini funksionin e publikimit nga shembulli i mëparshëm në kodin e përfshirë në këtë hap. Kjo duhet të trajtohet në funksionin kryesor të lakut Arduino ().

Mos harroni të ndryshoni variablat në krye të kodit që i përshtaten rrjetit tuaj!

Recommended: