Tartalomjegyzék:

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)

Videó: Az MQTT használata a Raspberry Pi és az ESP8266 segítségével: 8 lépés (képekkel)

Videó: Az MQTT használata a Raspberry Pi és az ESP8266 segítségével: 8 lépés (képekkel)
Videó: 7. ESP32 webkliens IOT alkalmazások 2024, Június
Anonim
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

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?

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
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
Az MQTT Broker telepítése a Raspberry Pi -re

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

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)
Az ESP8266 beállítása (Adafruit HUZZAH)
Az ESP8266 beállítása (Adafruit HUZZAH)
Az ESP8266 beállítása (Adafruit HUZZAH)
Az ESP8266 beállítása (Adafruit HUZZAH)
Az ESP8266 beállítása (Adafruit HUZZAH)
Az ESP8266 beállítása (Adafruit HUZZAH)

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

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

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

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

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: