![Az MQTT használata a Raspberry Pi és az ESP8266 segítségével: 8 lépés (képekkel) Az MQTT használata a Raspberry Pi és az ESP8266 segítségével: 8 lépés (képekkel)](https://i.howwhatproduce.com/preview/how-to/10440069-how-to-use-mqtt-with-the-raspberry-pi-and-esp8266-8-steps-with-pictures.webp)
Tartalomjegyzék:
- 1. lépés: Mi az MQTT?
- 2. lépés: Az MQTT Broker telepítése a Raspberry Pi -re
- 3. lépés: A közvetítő tesztelése
- 4. lépés: Az ESP8266 beállítása (Adafruit HUZZAH)
- 5. lépés: Az ESP8266 programozása
- 6. lépés: A Python Client (paho-mqtt) telepítése
- 7. lépés: Python kliens - feliratkozás
- 8. lépés: Kommunikáció az ESP8266 eszközök között
2025 Szerző: John Day | [email protected]. Utoljára módosítva: 2025-01-23 14:48
![Az MQTT használata a Raspberry Pi és az ESP8266 segítségével Az MQTT használata a Raspberry Pi és az ESP8266 segítségével](https://i.howwhatproduce.com/images/003/image-7936-9-j.webp)
Ebben az utasításban elmagyarázom, hogy mi az MQTT protokoll és hogyan használják az eszközök közötti kommunikációhoz. Ezután gyakorlati példaként bemutatom, hogyan kell beállítani egy egyszerű két kliens rendszert, ahol egy ESP8266 modul üzenetet küld gomb megnyomásakor a Python programba. Konkrétan egy Adafruit HUZZAH modult használok ehhez a projekthez, egy Raspberry Pi -t és egy asztali számítógépet. A Raspberry Pi lesz az MQTT bróker, a Python kliens pedig külön asztali számítógépről fog futni (opcionális, mivel ez a Raspberry Pi -n is futtatható).
Ennek az utasításnak a követéséhez alapvető ismeretekkel kell rendelkeznie az elektronikáról és az Arduino szoftver használatáról. Ismerje a parancssori felület használatát (a Raspberry Pi esetében). Remélhetőleg, miután megszerezte a tudást arról, hogy mi az MQTT, és hogyan kell használni egy alapvető forgatókönyvben, képes lesz saját IoT -projektek létrehozására!
Szükséges alkatrészek
- 1 x Raspberry Pi, helyi hálózathoz csatlakoztatva (Jessie fut)
- 1 x ESP8266 modul (Adafruit HUZZAH)
- 1 x kenyeretábla
- 3 db jumper vezeték (férfi-férfi)
- 1 x nyomógomb
- 1 x 10 k ohmos ellenállás (barna-fekete-narancs színkód)
Létrehoztam ezt az Instructable -t, mivel az MQTT protokollként mindig is érdekelt, és sokféle módon lehet használni. Azonban úgy tűnt, nem tudom a fejemben járni, hogyan kell kódolni az eszközöket a használathoz. Ez azért volt, mert nem tudtam/értettem, hogy valójában mi történik a "Hello, World!" az A eszközről, és elküldöm a B eszközre. Ezért úgy döntöttem, hogy megírom ezt az utasítást, hogy (remélhetőleg) megtanítsam, hogyan működik, és hogy megerősítsem a saját megértésemet!
1. lépés: Mi az MQTT?
![Mi az MQTT? Mi az MQTT?](https://i.howwhatproduce.com/images/003/image-7936-10-j.webp)
Az MQTT vagy az MQ Telemetry Transport egy üzenetküldő protokoll, amely lehetővé teszi több eszköz közötti beszélgetést. Jelenleg ez egy népszerű protokoll a tárgyak internete számára, bár más célokra is használták - például a Facebook Messenger. Érdekes módon az MQTT -t 1999 -ben találták fel - vagyis annyi idős, mint én!
Az MQTT azon az elképzelésen alapul, hogy az eszközök közzétehetnek vagy feliratkozhatnak témákra. Így például. Ha az 1. eszköz rögzítette a hőmérsékletet valamelyik érzékelőjéről, akkor üzenetet tehet közzé, amely tartalmazza a rögzített hőmérsékleti értéket egy témához (pl. "Hőmérséklet"). Ezt az üzenetet egy MQTT Broker küldi el, amelyre úgy gondolhat, mint egy helyi hálózat kapcsolójára/útválasztójára. Amint az MQTT Broker megkapta az üzenetet, elküldi azt minden olyan eszközre (ebben az esetben a 2. eszközre), amelyek előfizettek ugyanarra a témára.
Ebben a projektben egy témához fogunk publikálni egy ESP8266 használatával, és létrehozunk egy Python -szkriptet, amely feliratkozik ugyanarra a témára, egy Raspberry Pi -n keresztül, amely az MQTT Brokerként fog működni. Az MQTT nagyszerű tulajdonsága, hogy könnyű, így tökéletes kis mikrovezérlőkön, például ESP8266 -on való futtatásra, de széles körben is elérhető - így futtathatjuk Python -szkripten is.
Remélhetőleg a projekt végén meg fogja érteni, hogy mi az MQTT és hogyan kell használni a saját projektjeihez a jövőben.
2. lépés: Az MQTT Broker telepítése a Raspberry Pi -re
![Az MQTT Broker telepítése a Raspberry Pi -re Az MQTT Broker telepítése a Raspberry Pi -re](https://i.howwhatproduce.com/images/003/image-7936-11-j.webp)
![Az MQTT Broker telepítése a Raspberry Pi -re Az MQTT Broker telepítése a Raspberry Pi -re](https://i.howwhatproduce.com/images/003/image-7936-12-j.webp)
![Az MQTT Broker telepítése a Raspberry Pi -re Az MQTT Broker telepítése a Raspberry Pi -re](https://i.howwhatproduce.com/images/003/image-7936-13-j.webp)
Az MQTT rendszerünk beállításához brókerre van szükségünk, amint azt az előző lépésben kifejtettük. A Raspberry Pi esetében a "Mosquitto" MQTT brókerét fogjuk használni. Mielőtt ezt telepítenénk, mindig a legjobb frissíteni a Raspberry Pi -t.
sudo apt-get update
sudo apt-get upgrade
Miután ezt megtette, telepítse a mosquitto, majd a mosquitto-customers csomagokat.
sudo apt -get install mosquitto -y
sudo apt-get install mosquitto-customers -y
Ha befejezte a két csomag telepítését, konfigurálnunk kell a közvetítőt. A mosquitto broker konfigurációs fájlja az /etc/mosquitto/mosquitto.conf címen található, ezért nyissa meg ezt kedvenc szövegszerkesztőjével. Ha nincs kedvenc szövegszerkesztője, vagy nem tudja használni a parancssori szerkesztőket, akkor a nano -t fogom használni, hogy kövesse az alábbi lépéseket:
sudo nano /etc/mosquitto/mosquitto.conf
A fájl alján a következő sort kell látnia:
include_dir /etc/mosquitto/conf.d
Törölje ezt a sort. Adja hozzá a következő sorokat a fájl aljához.
allow_anonymous false
jelszó_fájl/etc/mosquitto/pwfile figyelő 1883
A sorok beírásával azt mondtuk a mosquitto -nak, hogy nem akarjuk, hogy bárki csatlakozzon a brókerünkhöz, aki nem ad meg érvényes felhasználónevet és jelszót (ezeket egy másodpercen belül beállítjuk), és azt akarjuk, hogy a szúnyog figyelje az üzeneteket az 1883 -as porton.
Ha nem szeretné, hogy a bróker felhasználónevet és jelszót írjon elő, ne írja be az első két sort, amelyet hozzáadtunk (azaz allow_anonymous… és password_file…). Ha ezt megtette, ugorjon a Raspberry Pi újraindítására.
Most zárja be (és mentse) a fájlt. Ha követi a nano példát, nyomja meg a CTRL+X billentyűt, és írja be az Y billentyűt, amikor a rendszer kéri.
Mivel most mondtuk a mosquitto -nak, hogy az MQTT bróker segítségével próbáló felhasználókat hitelesíteni kell, most meg kell mondanunk a mosquitto -nak, hogy mi a felhasználónév és a jelszó! Tehát írja be a következő parancsot - cserélje ki a felhasználónevet a kívánt felhasználónévvel -, majd írja be a kívánt jelszót, amikor a rendszer kéri (Megjegyzés: ha a konfigurációs fájl szerkesztésekor másik password_file elérési utat adott meg, cserélje ki az alábbi elérési utat a amit használtál).
sudo mosquitto_passwd -c/etc/mosquitto/pwfile felhasználónév
Mivel most módosítottuk a szúnyogkonfigurációs fájlt, újra kell indítanunk a Raspberry Pi -t.
sudo újraindítás
Miután a Raspberry Pi befejezte az újraindítást, rendelkeznie kell egy teljesen működő MQTT brókerrel! Ezután megpróbálunk kölcsönhatásba lépni vele, számos különböző eszköz/módszer segítségével!
3. lépés: A közvetítő tesztelése
![A bróker tesztelése A bróker tesztelése](https://i.howwhatproduce.com/images/003/image-7936-14-j.webp)
Miután telepítette a szúnyogot a Raspberry Pi -re, gyors tesztet végezhet - csak hogy megbizonyosodjon arról, hogy minden megfelelően működik. Ebből a célból két parancsot használhatunk a parancssorban. mosquitto_pub és mosquitto_sub. Ebben a lépésben végigvezetem Önt ezek mindegyikén, hogy tesztelje közvetítőnket.
A közvetítő teszteléséhez két parancssori ablakot kell megnyitnia. Ha Putty -t vagy más SSH -klienst használ, ez olyan egyszerű, mint egy másik SSH -ablak megnyitása és bejelentkezés a szokásos módon. Ha a Pi -t UNIX terminálról éri el, ez pontosan ugyanaz. Ha közvetlenül a Raspberry Pi -t használja, akkor két terminálablakot kell megnyitnia GUI módban (a startxcan paranccsal indítható el a GUI).
Most, hogy megnyitott két ablakot, elkezdhetjük a tesztelést. A két terminál egyikébe írja be a következő parancsot, és cserélje le a felhasználónevet és a jelszót az előző lépésben beállítottakkal.
mosquitto_sub -d -u felhasználónév -P jelszó -t teszt
Ha az előző lépésben úgy döntött, hogy nem állít be felhasználónevet és jelszót, akkor ezentúl figyelmen kívül hagyja a parancsok -u és -P jelzőit. Tehát például a mosquitto_sub parancs most a következő lenne:
mosquitto_sub -d -t teszt
A mosquitto_sub parancs előfizet egy témára, és a terminál ablakában megjeleníti a megadott témához küldött üzeneteket. Itt a -d hibakeresési módot jelent, így minden üzenet és tevékenység megjelenik a képernyőn. -u és -P legyenek magától értetődőek. Végül, -t annak a témakörnek a neve, amelyre fel szeretnénk iratkozni - ebben az esetben a "teszt".
Ezután a másik terminál ablakban megpróbálunk közzétenni egy üzenetet a "teszt" témában. Írja be a következőt, és ne feledje újra megváltoztatni a felhasználónevet és a jelszót:
mosquitto_pub -d -u felhasználónév -P jelszó -t teszt -m "Hello, World!"
Amikor megnyomja az enter billentyűt, megjelenik a "Hello, World!" megjelenik az első terminál ablakban, amelyet használtunk (előfizetésre). Ha ez a helyzet, akkor készen áll arra, hogy elkezdjen dolgozni az ESP8266 -on!
4. lépés: Az ESP8266 beállítása (Adafruit HUZZAH)
![Az ESP8266 beállítása (Adafruit HUZZAH) Az ESP8266 beállítása (Adafruit HUZZAH)](https://i.howwhatproduce.com/images/003/image-7936-15-j.webp)
![Az ESP8266 beállítása (Adafruit HUZZAH) Az ESP8266 beállítása (Adafruit HUZZAH)](https://i.howwhatproduce.com/images/003/image-7936-16-j.webp)
![Az ESP8266 beállítása (Adafruit HUZZAH) Az ESP8266 beállítása (Adafruit HUZZAH)](https://i.howwhatproduce.com/images/003/image-7936-17-j.webp)
![Az ESP8266 beállítása (Adafruit HUZZAH) Az ESP8266 beállítása (Adafruit HUZZAH)](https://i.howwhatproduce.com/images/003/image-7936-18-j.webp)
Ez a lépés, ha az Adafruit HUZZAH -ra jellemző (mivel ezt használom a projekt befejezéséhez). Ha másik Arduino / ESP8266 eszközt használ, akkor ezt a lépést kihagyhatja. Azt tanácsolom azonban, hogy olvassa el, hátha van olyan információ, amely releváns lehet az Ön számára.
Ehhez a projekthez a HUZZAH programozását fogom végezni az Arduino szoftverrel. Tehát, ha még nem tette meg, feltétlenül telepítse az Arduino szoftvert (újabb, mint 1.6.4). Letöltheti innen.
Miután telepítette az Arduino szoftvert, nyissa meg, és keresse meg a Fájl-> Beállítások lehetőséget. Itt látnia kell (az ablak alja közelében) egy szövegdobozt a "További táblák kezelő URL -címei" felirattal. Ebben a szövegmezőben másolja ki és illessze be a következő linket:
arduino.esp8266.com/stable/package_esp8266com_index.json
Kattintson az OK gombra a módosítások mentéséhez. Most nyissa meg a Fórumkezelőt (Eszközök-> Tábla-> Táblakezelő), és keresse meg az ESP8266 parancsot. Telepítse az esp8266 by ESP8266 közösségi csomagot. Indítsa újra az Arduino szoftvert.
Mielőtt programoznánk a táblát, ki kell választanunk néhány különböző opciót. Az Eszközök menüpontban válassza az Adafruit HUZZAH ESP8266 fórumon, 80 MHz a CPU frekvenciáját (160 MHz -et használhat, ha szeretné túlhajtani, de most 80 MHz -et fogok használni), 4M (3M SPIFFS) a vaku méretéhez és 115200 a feltöltési sebességhez. Ezenkívül feltétlenül válassza ki a használt COM -portot (ez a beállításoktól függ).
Mielőtt bármilyen kódot feltöltene, győződjön meg arról, hogy a HUZZAH rendszerbetöltő módban van. Ennek engedélyezéséhez tartsa lenyomva a GPIO0 feliratú táblán lévő gombot, és amíg ez tartva, tartsa lenyomva a Reset gombot is. Ezután engedje fel a Reset gombot, majd a GPIO0 -t. Ha ezt helyesen tette, akkor a GPIO0 megnyomásakor kigyulladó piros LED -nek halványan kell világítania.
A kód feltöltéséhez a mikrokontrollerbe először győződjön meg arról, hogy a HUZZAH rendszerbetöltő módban van, majd egyszerűen kattintson a feltöltés gombra az Arduino IDE -ben.
Ha problémái vannak a HUZZAH beállításával, további információkat az Adafruit saját oktatóanyagában talál.
5. lépés: Az ESP8266 programozása
![Az ESP8266 programozása Az ESP8266 programozása](https://i.howwhatproduce.com/images/003/image-7936-19-j.webp)
Most elkezdjük programozni az ESP8266 programot, de mielőtt elkezdenénk, telepítenie kell a következő könyvtárakat az Arduino könyvtárkezelőbe (Sketch-> Include Libraries-> Library Libraries)
- Ugrálás2
- PubSubClient
Miután telepítette ezeket a könyvtárakat, futtathatja az ebben az utasításban (MQTT_Publish.zip) szereplő kódot. Gondoskodtam arról, hogy megjegyzést fűzzek hozzá, hogy megértsék, mit tesznek az egyes szakaszok, és ez remélhetőleg lehetővé teszi, hogy az igényeihez igazítsa.
Ne felejtse el megváltoztatni az állandókat a kód tetején, hogy az ESP8266 csatlakozzon a WiFi hálózathoz és az MQTT Brokerhez (a Raspberry Pi).
Ha úgy döntött, hogy nem állít be felhasználónevet és jelszót az MQTT Brokerhez, töltse le helyette az MQTT_PublishNoPassword.zip fájlt.
6. lépés: A Python Client (paho-mqtt) telepítése
![A Python Client (paho-mqtt) telepítése A Python Client (paho-mqtt) telepítése](https://i.howwhatproduce.com/images/003/image-7936-20-j.webp)
Szerencsére ez a lépés nagyon egyszerű! A mosquitto python kliens telepítéséhez egyszerűen írja be a következőt a parancssorba (Linux/Mac) vagy akár a parancssorba (Windows).
pip install paho-mqtt
Megjegyzés: A Windows parancssorban probléma merülhet fel a pip parancs futtatásakor, ha nem adta meg, hogy a pip telepítését és a python hozzáadását szeretné a PATH változóhoz a Python telepítésekor. Ennek számos módja van, de szerintem a Python újratelepítése a legegyszerűbb. Ha kétségei vannak - adjon egy google -t!
7. lépés: Python kliens - feliratkozás
![Python kliens - feliratkozás Python kliens - feliratkozás](https://i.howwhatproduce.com/images/003/image-7936-21-j.webp)
Ebben a lépésben beállítjuk a Python szkriptet (akár a Raspberry Pi -n, akár egy másik, a hálózathoz csatlakoztatott számítógépen), hogy kezelje az ESP8266 által az MQTT témához küldött (közzétett) üzeneteket.
Az alábbiakban felsoroltam a python kódot (PythonMQTT_Subscribe.py), amelyet azért írtunk, hogy segítsen megérteni, mi történik, de néhány főbb jellemzőt itt is elmagyarázok.
Ha korábban nem állított be felhasználónevet és jelszót az MQTT kapcsolathoz, töltse le helyette a PythonMQTT_SubscribeNoPassword.py fájlt.
8. lépés: Kommunikáció az ESP8266 eszközök között
![Kommunikáció az ESP8266 eszközök között Kommunikáció az ESP8266 eszközök között](https://i.howwhatproduce.com/images/003/image-7936-22-j.webp)
Ha például IoT hálózatot szeretne beállítani, akkor érdemes kommunikálni az ESP8266 eszközök között. Szerencsére ez nem sokkal bonyolultabb, mint a korábban írt kód, azonban van néhány figyelemre méltó változás.
Ahhoz, hogy az egyik ESP adatokat küldjön a másiknak, az első ESP -nek közzé kell tennie a témában, a második ESP -nek pedig fel kell iratkoznia erre a témára. Ez a beállítás lehetővé teszi az egyirányú beszélgetést - ESP (1) - ESP (2). Ha azt szeretnénk, hogy az ESP (2) visszaszóljon az ESP -hez (1), létrehozhatunk egy új témát, amelyet az ESP (2) közzétesz, és az ESP (1) feliratkozik. Szerencsére több előfizetőnk is lehet ugyanabban a témában, így ha több rendszerre szeretne adatokat küldeni, akkor csak egy témára lesz szüksége (amelyre mindegyik előfizet, kivéve az adatokat küldő eszközt) közzététel).
Ha segítségre van szüksége ahhoz, hogy kitalálja, mit kell tennie az egyes eszközöknek, gondoljon a rendszerre, mint egy emberek szobájára. Ha az ESP (1) publikál, akkor elképzelheti ezt az eszközt "hangszóróként", és minden olyan eszköz, amely előfizet a témára, "hallgat" ebben a példában.
Az alábbiakban néhány példakódot mutatok be, amelyek bemutatják, hogy az ESP8266 hogyan tud előfizetni egy témára, és figyelni bizonyos üzeneteket - 1 és 0. Ha 1 érkezik, a fedélzeti LED (a HUZZAH - GPIO 0 esetén) bekapcsol. Ha 0 érkezik, ez a LED kialszik.
Ha összetettebb adatokat szeretne feldolgozni, akkor ezt a ReceivedMessage funkcióban kell elvégezni (lásd a kódot).
Saját projektjei esetében, ha adatokat is kell küldeni és fogadni, akkor az előző példából származó közzétételi funkciót beépítheti az ebben a lépésben szereplő kódba. Ezt a fő Arduino loop () függvényben kell kezelni.
Ne felejtse el megváltoztatni a kód tetején található változókat a hálózatának megfelelően!
Ajánlott:
A Raspberry Pi használata, a magasság, a nyomás és a hőmérséklet mérése az MPL3115A2 segítségével: 6 lépés
![A Raspberry Pi használata, a magasság, a nyomás és a hőmérséklet mérése az MPL3115A2 segítségével: 6 lépés A Raspberry Pi használata, a magasság, a nyomás és a hőmérséklet mérése az MPL3115A2 segítségével: 6 lépés](https://i.howwhatproduce.com/images/002/image-3285-34-j.webp)
A Raspberry Pi használata, a tengerszint feletti magasság, a nyomás és a hőmérséklet mérése az MPL3115A2 segítségével: Tudja, hogy mi a tulajdonosa, és tudja meg, miért van az Ön számára! Érdekes. Az Internet Automation korát éljük, mivel rengeteg új alkalmazásba süllyed. Számítógép és elektronika rajongóként sokat tanultunk a Raspberry Pi -vel
Az MQTT használata a Raspberry Pi és az ESP8266/sonoff segítségével: 4 lépés
![Az MQTT használata a Raspberry Pi és az ESP8266/sonoff segítségével: 4 lépés Az MQTT használata a Raspberry Pi és az ESP8266/sonoff segítségével: 4 lépés](https://i.howwhatproduce.com/images/002/image-5730-21-j.webp)
Az MQTT használata a Raspberry Pi és az ESP8266/sonoff segítségével: Üdvözlök mindenkit! Ma megmutatom, hogyan konfigurálható a málna pi és az ESP8266 alapú sonoff wifi relékapcsoló a háztartási készülékek vezérléséhez a világ bármely pontjáról. ennek a tanulságosnak, ha gondosan követte az utasításomat
Az ESP8266 használata Arduino és Blynk segítségével: 4 lépés
![Az ESP8266 használata Arduino és Blynk segítségével: 4 lépés Az ESP8266 használata Arduino és Blynk segítségével: 4 lépés](https://i.howwhatproduce.com/images/005/image-14726-27-j.webp)
Az ESP8266 használata Arduino és Blynk segítségével: Csatlakoztassa Arduino Mega készülékét a blynk alkalmazáshoz az espp8266 pajzs használatával
A zseblámpától a mozgásérzékelőig ESP8266 és MQTT segítségével: 5 lépés (képekkel)
![A zseblámpától a mozgásérzékelőig ESP8266 és MQTT segítségével: 5 lépés (képekkel) A zseblámpától a mozgásérzékelőig ESP8266 és MQTT segítségével: 5 lépés (képekkel)](https://i.howwhatproduce.com/images/001/image-337-91-j.webp)
A zseblámpától a mozgásérzékelőig ESP8266 és MQTT segítségével: Ebben a bejegyzésben az alábbi tételeket mutatnám be: A LED -eknek korlátozó áramkörre van szükségük ahhoz, hogy a zseblámpa a hordozható akkumulátorral működő fényt készítsen, és a LED -eket az ESP8266 segítségével tompítsa az MQTT -n keresztül és egy rövid magyarázat arra, hogyan
Az ESP32 használata a LED vezérléséhez Blynk segítségével WiFi -n keresztül: 7 lépés (képekkel)
![Az ESP32 használata a LED vezérléséhez Blynk segítségével WiFi -n keresztül: 7 lépés (képekkel) Az ESP32 használata a LED vezérléséhez Blynk segítségével WiFi -n keresztül: 7 lépés (képekkel)](https://i.howwhatproduce.com/images/001/image-1564-110-j.webp)
Az ESP32 használata a LED vezérléséhez Blynk segítségével WiFi -n keresztül: Ez az oktatóanyag az ESP32 fejlesztői táblát fogja használni a LED vezérléséhez Blynk segítségével WiFi -n keresztül. A Blynk egy platform iOS és Android alkalmazásokkal az Arduino, a Raspberry Pi és a kedvelők interneten keresztüli vezérlésére. Ez egy digitális műszerfal, ahol egy