Satura rādītājs:
- 1. darbība: kas ir MQTT?
- 2. solis: MQTT brokera instalēšana Raspberry Pi
- 3. darbība: brokera pārbaude
- 4. darbība. ESP8266 (Adafruit HUZZAH) iestatīšana
- 5. darbība: ESP8266 programmēšana
- 6. darbība: instalējiet Python klientu (paho-mqtt)
- 7. darbība: Python klients - abonēšana
- 8. darbība. Saziņa starp ESP8266 ierīcēm
Video: Kā lietot MQTT ar Raspberry Pi un ESP8266: 8 soļi (ar attēliem)
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:55
Šajā instrukcijā es paskaidrošu, kas ir MQTT protokols un kā tas tiek izmantots, lai sazinātos starp ierīcēm. Pēc tam kā praktisku demonstrāciju es parādīšu, kā iestatīt vienkāršu divu klientu sistēmu, kur ESP8266 modulis nosūtīs ziņojumu uz Python programmu, nospiežot pogu. Konkrēti, šim projektam es izmantoju Adafruit HUZZAH moduli, Raspberry Pi un galddatoru. Raspberry Pi darbosies kā MQTT brokeris, un Python klients tiks palaists no atsevišķa galddatora (pēc izvēles, jo to varētu palaist ar Raspberry Pi).
Lai sekotu līdzi šai instrukcijai, jums ir jābūt pamatzināšanām par elektroniku un Arduino programmatūras izmantošanu. Jums vajadzētu arī iepazīties ar komandrindas saskarnes izmantošanu (Raspberry Pi). Cerams, ka, tiklīdz būsiet ieguvis zināšanas par to, kas ir MQTT un kā to izmantot pamata scenārijā, varēsit izveidot savus IoT projektus!
Nepieciešamās detaļas
- 1 x Raspberry Pi, savienots ar vietējo tīklu (darbojas Jessie)
- 1 x ESP8266 modulis (Adafruit HUZZAH)
- 1 x maizes dēlis
- 3 x vadi (no vīriešiem līdz vīriešiem)
- 1 x spiedpoga
- 1 x 10k omu rezistors (brūns-melns-oranžs krāsu kods)
Esmu izveidojis šo pamācību, jo MQTT vienmēr ir interesējis mani kā protokolu, un ir daudz dažādu veidu, kā to izmantot. Tomēr es nevarēju saprast, kā kodēt ierīces, lai to izmantotu. Tas bija tāpēc, ka es nezināju/nesapratu, kas patiesībā notiek, lai uzņemtu manu "Sveiki, pasaule!" no ierīces A un nosūtīt to uz ierīci B. Tāpēc es nolēmu uzrakstīt šo pamācību, lai (cerams) iemācītu jums, kā tā darbojas, kā arī lai stiprinātu savu izpratni par to!
1. darbība: kas ir MQTT?
MQTT vai MQ telemetrijas transports ir ziņojumapmaiņas protokols, kas ļauj vairākām ierīcēm sarunāties savā starpā. Pašlaik tas ir populārs lietu interneta protokols, lai gan tas ir izmantots citiem mērķiem - piemēram, Facebook Messenger. Interesanti, ka MQTT tika izgudrots 1999. gadā - tas nozīmē, ka tas ir tikpat vecs kā es!
MQTT pamatā ir ideja, ka ierīces var publicēt vai abonēt tēmas. Tā, piemēram. Ja ierīce Nr. 1 ir reģistrējusi temperatūru no viena no saviem sensoriem, tā var publicēt ziņojumu par tematu (piemēram, "Temperatūra"), kurā ir ierakstītā temperatūras vērtība. Šis ziņojums tiek nosūtīts MQTT brokerim, kuru jūs varat uzskatīt par slēdzi/maršrutētāju lokālajā tīklā. Tiklīdz MQTT brokeris ir saņēmis ziņojumu, tas to nosūtīs uz visām ierīcēm (šajā gadījumā ierīci Nr. 2), kuras abonē to pašu tēmu.
Šajā projektā mēs publicēsim tēmu, izmantojot ESP8266, un izveidosim Python skriptu, kas abonēs šo pašu tēmu, izmantojot Raspberry Pi, kas darbosies kā MQTT brokeris. MQTT lieliskais ir tas, ka tas ir viegls, tāpēc ir ideāli piemērots darbam ar maziem mikrokontrolleriem, piemēram, ESP8266, taču tas ir arī plaši pieejams - lai mēs varētu to palaist arī ar Python skriptu.
Cerams, ka šī projekta beigās jums būs izpratne par to, kas ir MQTT un kā to izmantot saviem projektiem nākotnē.
2. solis: MQTT brokera instalēšana Raspberry Pi
Lai iestatītu mūsu MQTT sistēmu, mums ir nepieciešams starpnieks, kā paskaidrots iepriekšējā solī. Raspberry Pi mēs izmantosim MQTT brokeri "Mosquitto". Pirms mēs to instalējam, vienmēr vislabāk ir atjaunināt Raspberry Pi.
sudo apt-get update
sudo apt-get jauninājums
Kad esat to izdarījis, instalējiet mosquitto un pēc tam mosquitto-customers paketes.
sudo apt -get install mosquitto -y
sudo apt-get install mosquitto-customers -g
Kad esat pabeidzis instalēt šīs divas paketes, mums būs jākonfigurē starpnieks. Moskītu māklera konfigurācijas fails atrodas vietnē /etc/mosquitto/mosquitto.conf, tāpēc atveriet to ar savu iecienītāko teksta redaktoru. Ja jums nav iecienītākā teksta redaktora vai jūs nezināt, kā izmantot kādu no komandrindas redaktoriem, es izmantošu nano, lai jūs varētu sekot līdzi:
sudo nano /etc/mosquitto/mosquitto.conf
Šī faila apakšā jums vajadzētu redzēt rindu:
include_dir /etc/mosquitto/conf.d
Izdzēsiet šo rindiņu. Pievienojiet šādas rindas faila apakšdaļā.
allow_anonymous false
Paroles_fails/etc/mosquitto/pwfile klausītājs 1883
Ievadot šīs rindiņas, mēs esam teikuši moskītu, ka nevēlamies, lai kāds ar mūsu brokeri pieslēgtos, kas nepiedāvā derīgu lietotājvārdu un paroli (mēs tos iestatīsim pēc sekundes) un ka mēs vēlamies, lai moskītu klausieties ziņas porta numurā 1883.
Ja nevēlaties, lai brokeris pieprasītu lietotājvārdu un paroli, neiekļaujiet pirmās divas pievienotās rindiņas (t.i., atļaut_anonīmu… un paroles_failu …). Ja esat to izdarījis, pārejiet pie Raspberry Pi restartēšanas.
Tagad aizveriet (un saglabājiet) šo failu. Ja sekojat nano paraugam, nospiediet CTRL+X un pēc uzvednes ierakstiet Y.
Tā kā mēs tikko teicām mosquitto, ka lietotājiem, kuri mēģina izmantot MQTT brokeri, ir jāautentificē, mums tagad jāpasaka mosquitto, kāds ir lietotājvārds un parole! Tātad, ierakstiet šādu komandu - aizstājot lietotājvārdu ar vēlamo lietotājvārdu - pēc tam ievadiet paroli, kuru vēlaties, kad tas tiek prasīts (Piezīme: ja, rediģējot konfigurācijas failu, esat norādījis citu ceļu paroli_faila vietā, nomainiet zemāk esošo ceļu ar vienu, kuru izmantojāt).
sudo mosquitto_passwd -c/etc/mosquitto/pwfile lietotājvārds
Tā kā mēs tikko mainījām moskītu konfigurācijas failu, mums vajadzētu atsāknēt Raspberry Pi.
sudo atsāknēšana
Kad Raspberry Pi ir pabeidzis pārstartēšanu, jums vajadzētu būt pilnībā funkcionējošam MQTT brokerim! Tālāk mēs mēģināsim ar to mijiedarboties, izmantojot vairākas dažādas ierīces/metodes!
3. darbība: brokera pārbaude
Kad esat instalējis odu Raspberry Pi, varat veikt ātru pārbaudi - tikai, lai pārliecinātos, ka viss darbojas pareizi. Šim nolūkam komandrindā varam izmantot divas komandas. mosquitto_pub un mosquitto_sub. Šajā solī es jums norādīšu, kā izmantot katru no tiem, lai pārbaudītu mūsu brokeri.
Lai pārbaudītu starpnieku, jums būs jāatver divi komandrindas logi. Ja izmantojat Putty vai citu SSH klientu, tas ir tik vienkārši, kā atvērt citu SSH logu un pieteikties kā parasti. Ja piekļūstat savam Pi no UNIX termināļa, tas ir tieši tas pats. Ja Raspberry Pi izmantojat tieši, jums būs jāatver divi termināļa logi GUI režīmā (komandu startx var izmantot, lai palaistu GUI).
Tagad, kad esat atvēris divus logus, mēs varam sākt testēšanu. Vienā no diviem termināļiem ierakstiet šādu komandu, aizstājot lietotājvārdu un paroli ar tiem, kurus iestatījāt iepriekšējā solī.
mosquitto_sub -d -u lietotājvārds -P parole -t tests
Ja iepriekšējā solī esat nolēmis neiestatīt lietotājvārdu un paroli, tad turpmāk komandās ignorējiet karodziņus -u un -P. Tātad, piemēram, komanda mosquitto_sub tagad būtu:
mosquitto_sub -d -t tests
Komanda mosquitto_sub abonēs tēmu un termināļa logā parādīs visus ziņojumus, kas tiek nosūtīti uz norādīto tēmu. Šeit -d nozīmē atkļūdošanas režīmu, tāpēc visi ziņojumi un darbības tiks izvadītas ekrānā. -u un -P jābūt pašsaprotamiem. Visbeidzot, -t ir tēmas nosaukums, kuru mēs vēlamies abonēt - šajā gadījumā "tests".
Pēc tam otrā termināļa logā mēs mēģināsim publicēt ziņojumu tēmai "tests". Ierakstiet šo, atceroties vēlreiz mainīt lietotājvārdu un paroli:
mosquitto_pub -d -u lietotājvārds -P parole -t tests -m "Sveika, pasaule!"
Nospiežot taustiņu Enter, jums vajadzētu redzēt ziņojumu "Sveika, pasaule!" parādās pirmajā termināļa logā, kuru izmantojām (abonēšanai). Ja tas tā ir, jūs esat gatavs sākt strādāt pie ESP8266!
4. darbība. ESP8266 (Adafruit HUZZAH) iestatīšana
Šis solis, ja tas attiecas uz Adafruit HUZZAH (jo es to izmantoju, lai pabeigtu šo projektu). Ja izmantojat citu Arduino / ESP8266 ierīci, iespējams, vēlēsities izlaist šo darbību. Tomēr es ieteiktu jums to izlasīt, tikai gadījumā, ja šeit ir kāda informācija, kas jums varētu būt svarīga.
Šim projektam es programmēšu HUZZAH ar Arduino programmatūru. Tātad, ja vēl neesat to izdarījis, noteikti instalējiet Arduino programmatūru (jaunāku par 1.6.4). Jūs to varat lejupielādēt šeit.
Kad esat instalējis Arduino programmatūru, atveriet to un dodieties uz Fails-> Preferences. Šeit jums vajadzētu redzēt (loga apakšdaļā) tekstlodziņu ar uzrakstu: "Papildu dēļu pārvaldnieka vietrāži URL". Šajā tekstlodziņā nokopējiet un ielīmējiet šo saiti:
arduino.esp8266.com/stable/package_esp8266com_index.json
Noklikšķiniet uz Labi, lai saglabātu izmaiņas. Tagad atveriet valdes pārvaldnieku (Rīki-> Padome-> Valdes pārvaldnieks) un meklējiet ESP8266. Instalējiet kopienas pakotni esp8266 by ESP8266. Restartējiet Arduino programmatūru.
Tagad, pirms mēs varam programmēt dēli, mums jāizvēlas dažas dažādas iespējas. Izvēlnē Tools (Rīki) atlasiet Adafruit HUZZAH ESP8266 Board, 80 MHz CPU frekvencei (varat izmantot 160 MHz, ja vēlaties to pārspīlēt, bet pagaidām es izmantošu 80 MHz), 4M (3M SPIFFS) zibspuldzes izmēram un 115200 augšupielādes ātrumam. Noteikti atlasiet arī izmantoto COM portu (tas būs atkarīgs no iestatījumiem).
Pirms koda augšupielādes jums jāpārliecinās, vai HUZZAH ir sāknēšanas ielādes režīmā. Lai to iespējotu, turiet nospiestu tāfeles pogu, kas apzīmēta ar GPIO0, un, kamēr tā tiek turēta, turiet nospiestu arī pogu Atiestatīt. Pēc tam atlaidiet pogu Atiestatīt un pēc tam GPIO0. Ja esat to izdarījis pareizi, sarkanā gaismas diode, kas iedegās, nospiežot GPIO0, tagad būtu vāji iedegta.
Lai augšupielādētu kodu mikrokontrollerī, vispirms pārliecinieties, vai HUZZAH ir bootloader režīmā, pēc tam vienkārši noklikšķiniet uz augšupielādes pogas Arduino IDE.
Ja jums rodas problēmas ar HUZZAH iestatīšanu, papildu informāciju varat atrast pašas Adafruit apmācībā.
5. darbība: ESP8266 programmēšana
Tagad mēs sāksim programmēt ESP8266, bet pirms mēs varam sākt, jums būs jāinstalē šādas bibliotēkas Arduino bibliotēkas pārvaldniekā (Skice-> Iekļaut bibliotēkas-> Pārvaldīt bibliotēkas)
- Atlekšana2
- PubSubClient
Kad esat instalējis šīs bibliotēkas, varēsit palaist kodu, kuru esmu iekļāvis šajā pamācībā (MQTT_Publish.zip). Es noteikti to komentēju, lai jūs varētu saprast, ko katra sadaļa dara, un tam, cerams, vajadzētu ļaut jums to pielāgot savām vajadzībām.
Neaizmirstiet mainīt konstantes koda augšdaļā, lai jūsu ESP8266 varētu izveidot savienojumu ar jūsu WiFi tīklu un jūsu MQTT brokeri (Raspberry Pi).
Ja esat nolēmis nenoteikt lietotājvārdu un paroli MQTT brokerim, tā vietā lejupielādējiet failu MQTT_PublishNoPassword.zip.
6. darbība: instalējiet Python klientu (paho-mqtt)
Par laimi, šis solis ir ļoti vienkāršs! Lai instalētu mosquitto python klientu, jums vienkārši jāievada komandrindā (Linux/Mac) vai pat komandu uzvednē (Windows).
pip instalēt paho-mqtt
Piezīme. Windows komandu uzvednē var rasties problēma, izpildot komandu pip, ja, instalējot Python, nenorādījāt, ka vēlaties instalēt pip un pievienot Python mainīgajam PATH. Ir vairāki veidi, kā to labot, bet es domāju, ka vienkāršākais veids ir vienkārši pārinstalēt Python. Ja rodas šaubas - dodiet to google!
7. darbība: Python klients - abonēšana
Šajā solī mēs iestatīsim Python skriptu (vai nu pašā Raspberry Pi, vai citā datorā, kas savienots ar tīklu), lai apstrādātu visus ziņojumus, kurus ESP8266 sūta (publicē) uz tēmu MQTT.
Tālāk esmu iekļāvis python kodu (PythonMQTT_Subscribe.py), kas ir komentēts, lai palīdzētu jums saprast notiekošo, taču arī šeit es paskaidrošu dažas galvenās funkcijas.
Ja iepriekš neesat iestatījis lietotājvārdu un paroli MQTT savienojumam, tā vietā lejupielādējiet failu PythonMQTT_SubscribeNoPassword.py.
8. darbība. Saziņa starp ESP8266 ierīcēm
Piemēram, ja vēlaties izveidot IoT tīklu, iespējams, vēlēsities sazināties starp ESP8266 ierīcēm. Par laimi, tas nav daudz sarežģītāks par iepriekš rakstīto kodu, tomēr ir dažas ievērojamas izmaiņas.
Lai viens ESP varētu nosūtīt datus citam, pirmajam ESP būs jāpublicē tēma, bet otrajam ESP būs jāabonē šī tēma. Šī iestatīšana ļaus vienvirziena sarunai - no ESP (1) līdz ESP (2). Ja mēs vēlamies, lai ESP (2) atgrieztos ESP (1), mēs varam izveidot jaunu tēmu, kuru ESP (2) publicēs, un ESP (1) abonēs. Par laimi, mums var būt vairāki abonenti par vienu tēmu, tādēļ, ja vēlaties nosūtīt datus uz vairākām sistēmām, jums būs nepieciešama tikai viena tēma (kuru viņi visi abonē, izņemot ierīci, kas sūta datus). publicēt).
Ja jums nepieciešama palīdzība, lai noskaidrotu, kas katrai ierīcei jādara, domājiet par sistēmu kā par cilvēku istabu. Ja tiek publicēts ESP (1), jūs varat iedomāties šo ierīci kā “skaļruni”, un visas ierīces, kas abonē šo tēmu, šajā piemērā ir “klausītāji”.
Tālāk esmu iekļāvis koda piemēru, kas parāda, kā ESP8266 var abonēt tēmu un klausīties noteiktus ziņojumus - 1 un 0. Ja tiek saņemts 1, tiek ieslēgta iebūvētā gaismas diode (ierīcei HUZZAH - GPIO 0).. Ja tiek saņemts 0, šī gaismas diode tiek izslēgta.
Ja vēlaties apstrādāt sarežģītākus datus, tas jādara funkcijā ReceivedMessage (sk. Kodu).
Saviem projektiem, ja jums ir nepieciešams gan nosūtīt, gan saņemt datus, šajā posmā iekļautajā kodā varat iekļaut publicēšanas funkciju no iepriekšējā piemēra. Tas jārīkojas galvenajā Arduino cilpas () funkcijā.
Atcerieties mainīt mainīgos koda augšdaļā, lai tie atbilstu jūsu tīklam!
Ieteicams:
RGB LED MATRIX, LIETOT NEOPIXEL: 8 soļi (ar attēliem)
RGB LED MATRIX, IZMANTOJOT NEOPIXEL: Šajā apmācībā es jums parādīšu, kā izveidot 5*5 RGB LEDMATRIX, izmantojot NEOPIXEL. Izmantojot šo matricu, mēs varam parādīt aizraujošas animācijas, emocijzīmes un ļoti vienkāršus burtus. sāksim
MĀJAS AUTOMATIZĀCIJA, PAMATOJOTIES uz LOKĀLO MQTT SERVERI, LIETOT APAŅU PI UN NODEMKU DĒLI: 6 soļi
MĀJAS AUTOMATIZĀCIJA, PAMATOJOTIES UZ LOKĀLO MQTT SERVERI, LIETOT RASPBERRY PI UN NODEMCU BOARD: Līdz šim esmu izveidojis vairākus mācību video par ierīču vadīšanu internetā. Un tāpēc es vienmēr izvēlējos Adafruit MQTT serveri, jo tas bija viegli lietojams un arī lietotājam draudzīgs. Bet visas šīs lietas bija balstītas uz internetu. Tas nozīmē, ka mēs
Kā lietot MQTT ar Raspberry Pi un ESP8266/sonoff: 4 soļi
Kā lietot MQTT ar Raspberry Pi un ESP8266/sonoff: Sveiki visi! Šodien es jums parādīšu, kā konfigurēt aveņu pi un uz ESP8266 balstītu sonoff wifi releja slēdzi, lai kontrolētu sadzīves tehniku no jebkuras vietas pasaulē. šo pamācību, ja esat rūpīgi izpildījis manu norādījumu
Kā lietot DMX512 / RDM ar Raspberry Pi: 6 soļi (ar attēliem)
Kā lietot DMX512 / RDM ar Raspberry Pi: Raspberry Pi var izmantot apgaismojuma vadībai, izmantojot DMX512 kopni. DMX512 kopņu sistēmās RS-485 tiek izmantots kā fiziskais slānis. Mūsu RS422 / RS485 sērijas HAT ir pilnībā galvaniski izolēta sērijveida komunikācija HAT, kas paredzēta lietošanai ar Raspberry Pi
Kā lejupielādēt un lietot Instagram: 28 soļi (ar attēliem)
Kā lejupielādēt un lietot Instagram: Šīs instrukcijas mērķis ir palīdzēt jums iemācīties lejupielādēt un izmantot Instagram personiskai lietošanai. Sociālie mediji ir arvien pieaugoša mūsu ikdienas sastāvdaļa, Instagram ir visaugstāk kā viena no populārākajām sociālajām formām