- Potrebne komponente
- Shema vezja
- Namestitev oblačnih knjižnic MQTT na Raspberry Pi
- Razlaga kodiranja za nadzor Raspberry Pi GPIO z MQTT
V prejšnji vadnici smo razpravljali o protokolu MQTT in na naš Raspberry Pi namestili lokalni strežnik MQTT za lokalno krmiljenje GPIO. Toda pomanjkljivost lokalnega strežnika MQTT je ta, da GPIO-jev ne moremo nadzorovati od koder koli na svetu, storitve pa nudi le lokalno. Če pa ta strežnik MQTT gostuje v nekem oblaku, je mogoče vse naprave, povezane z Raspberry Pi, nadzorovati po vsem svetu.
V tej vadnici bomo Adafruit IO uporabili kot posrednika MQTT za nadzor AC naprave, povezane z Raspberry Pi GPIO. Oglejte si tudi druge vaje za IoT, ki jih nadzoruje IoT:
- Domača avtomatizacija z glasovno krmiljenjem na osnovi IOT z uporabo ESP8266 in aplikacije Android
- Pametni telefon nadzira domačo avtomatizacijo z uporabo Arduina
- Spletna avtomatizacija doma, ki temelji na IoT, z uporabo mikrokrmilnika PIC in Adafruit IO
- Spletna nadzorna avtomatizacija doma s pomočjo Raspberry Pi na osnovi IoT
- Domača avtomatizacija na osnovi Googlovega asistenta z uporabo DIY Arduino Wi-Fi Shield
Potrebne komponente
- Raspberry Pi z nameščenim Raspbian Stretch.
- Relejni modul
- Žarnica
- Jumper žice
Tu bomo uporabili SSH za dostop do Raspberry Pi na prenosnem računalniku. Na prenosnem računalniku lahko uporabite povezavo VNC ali oddaljeno namizje ali pa Raspberry pi povežete z monitorjem. Več o nastavitvi Raspberry Pi brez glave tukaj brez monitorja.
Shema vezja
Shema vezij za te gospodinjske aparate z IoT nadzorovanim oblakom z oblakom MQTT in Raspberry Pi je preprosta, samo priključite žarnico z relejskim modulom na GPIO pin 35 maline Pi.
Namestitev oblačnih knjižnic MQTT na Raspberry Pi
Tu se platforma Adafruit IO uporablja z Raspberry Pi kot posrednik MQTT. Ker smo platformo Adafruit IO že večkrat uporabili v prejšnjih vajah, jo lahko uporabimo tudi v Raspberry Pi.
Preprosto ustvarite račun na platformi Adafruit IO in ustvarite vir, če ne veste, kako narediti vir in prilagodite nadzorno ploščo Adafruit, potem sledite povezavi.
Po izdelavi armaturne plošče v Raspberry Pi namestite nekaj knjižnic, da začnete uporabljati MQTT.
1. Najprej posodobite svoj Pi in Python z izdajo naslednjih ukazov
sudo apt-get update sudo apt-get nadgradnja sudo pip3 install --upgrade setuptools
2. Zdaj namestite knjižnici utripanja Rpi.gpio in Adafruit z uporabo spodnjih ukazov
sudo pip3 namestite RPI.GPIO sudo pip3 namestite adafruit-blinka
3. Namestite knjižnico Adafruit IO z uporabo spodnjega ukaza
sudo pip3 namesti adafruit-io
4. Klonirajte primere adafruit iz github-a z uporabo spodnjega ukaza
klon git https://github.com/adafruit/Adafruit_IO_Python.git
5. Nato se pomaknite do mape z primeri, tako da v terminal vnesete naslednji ukaz:
cd Adafruit_IO_Python / primeri / osnove
Če niste prepričani, v katerem imeniku ste, lahko to preverite tako, da zaženete pwd.
6. Za vse primere v tej mapi boste morali nastaviti ADAFRUIT_IO_KEY in ADAFRUIT_IO_USERNAME, ki ju najdete na nadzorni plošči Adafruit. Kot je prikazano spodaj
Preklopite gumb na nadzorni plošči Adafruit IO in na terminalu vašega Pi bi morali videti naslednje.
7. Zdaj odprite datoteko subscribe.py z urejevalnikom nano . Vnesite naslednji ukaz, da ga odprete
sudo nano subscribe.py
Ta program moramo spremeniti tako, da nadzoruje kateri koli GPIO z armaturne plošče.
Razlaga kodiranja za nadzor Raspberry Pi GPIO z MQTT
Najprej uvozite vse potrebne knjižnice za uporabo zatičev GPIO in odjemalca Adafruit MQTT.
uvozi RPi.GPIO kot GPIO import sys iz Adafruit_IO import MQTTClient
Zdaj nastavite način GPIO ter določite številko LED-diode in nastavite kot izhod.
GPIO.setmode (GPIO.BOARD) GPIO.setwarnings (False) ledPin = 12 GPIO.setup (ledPin, GPIO.OUT)
Nato moramo nastaviti tipko AIO in uporabniško ime, ki smo jih našli med ustvarjanjem armaturne plošče.
ADAFRUIT_IO_KEY = 'YOUR_AIO_KEY' ADAFRUIT_IO_USERNAME = 'YOUR_AIO_USERNAME'
Vnesite ime vira, ki ste ga navedli za vklop in izklop lučke. Tukaj je "svetloba".
FEED_ID = 'svetloba'
Zdaj določite funkcijo, ki bo poklicana, ko se bo zgodil dogodek. Torej, vir bomo naročili z uporabo client.subscribe (FEED_ID)
def connected (odjemalec): client.subscribe (FEED_ID) print ('Čakanje na podatke vira…')
Po naročilu vira moramo preveriti novo vrednost in ga shraniti v spremenljivko koristnega tovora . Za to sporočilo se prikliče funkcija. Torej, kadar je v spremenljivki koristnega tovora "1", vodite zatič VISOKO, za "0" pa NIZKO.
def sporočilo (odjemalec, FEED_ID, nosilnost): print ("Feed {0} prejeli nove vrednosti: {1}". format (FEED_ID, nosilnost)) , če nosilnost == 1: GPIO.output (ledPin, GPIO.HIGH) drugega: GPIO.output (ledPin, GPIO.LOW)
Zdaj ustvarite odjemalca MQTT za povezavo s platformo Adafruit IO in pošiljanje sporočil sem ter tja.
odjemalec = MQTTClient (ADAFRUIT_IO_USERNAME, ADAFRUIT_IO_KEY) client.on_connect = povezan odjemalec.on_disconnect = odklopljen
Pazite tudi na pravilno vdolbino v kodi, sicer bo prikazana napaka. Popolna koda pythona je podana na koncu vadnice.
Na koncu shranite program s kombinacijo tipk ctrl + x in pritisnite Enter. Zdaj moramo zagnati skript, da se naročimo na sporočila. Torej V terminalu vnesite python subscribe.py in pritisnite Enter.
python subscribe.py
Videli boste sporočilo Waiting For Feed Data …, kot je prikazano spodaj.
Zdaj se prepričajte, da je relejni modul povezan z GPIO zatičem Raspberry Pi, nato pa pojdite na nadzorno ploščo Adafruit IO in spremenite dovod svetlobe. Žarnica mora vklopiti, ko je "1" je prejel in izklopi, ko "0", je prejel, kot je prikazano spodaj.
Na ta način lahko z uporabo oblakov Raspberry Pi in MQTT nadzorujemo katero koli napravo od koder koli na svetu