- Komponente potrebne
- Kružni dijagram
- Instaliranje MQTT Cloud Libraries na Raspberry Pi
- Objašnjenje kodiranja za kontrolu Raspberry Pi GPIO s MQTT
U prethodnom uputstvu razgovarali smo o MQTT protokolu i instalirali lokalni MQTT poslužitelj na naš Raspberry Pi za lokalno upravljanje GPIO-om. No, nedostatak lokalnog MQTT poslužitelja je taj što GPIO-ove ne možemo kontrolirati s bilo kojeg mjesta na svijetu, već pruža usluge samo lokalno. Ali ako je ovaj MQTT poslužitelj hostiran na nekom oblaku, tada se bilo kojim uređajima povezanim s Raspberry Pi može upravljati globalno.
Ovdje ćemo u ovom vodiču koristiti Adafruit IO kao posrednika MQTT za upravljanje AC uređajem povezanim s Raspberry Pi GPIO. Provjerite i ostale tutorijale za automatizaciju kuće pod nadzorom IoT-a:
- Kućna automatizacija temeljena na IOT-u pomoću ESP8266 i Android aplikacije
- Pametnim telefonom kontrolirana kućna automatizacija pomoću Arduina
- IoT temeljena na Internetu internetska kontrola kuće pomoću PIC mikrokontrolera i Adafruit IO
- IoT temeljena internetska automatizirana kuća pomoću Raspberry Pi
- Kućna automatizacija temeljena na Googleovom asistentu pomoću DIY Arduino Wi-Fi štita
Komponente potrebne
- Raspberry Pi s instaliranim Raspbian Stretchom.
- Modul releja
- Žarulja
- Jumper žice
Ovdje ćemo koristiti SSH za pristup Raspberry Pi na prijenosnom računalu. Na prijenosnom računalu možete koristiti vezu VNC ili udaljenu radnu površinu ili možete povezati svoj Raspberry pi s monitorom. Saznajte više o postavljanju Raspberry Pi-a bez glave ovdje bez monitora.
Kružni dijagram
Shema spojeva za ove IoT kontrolirane kućanske uređaje s oblakom MQTT i Raspberry Pi je jednostavna, samo spojite žarulju s relejnim modulom na GPIO pin 35 od maline Pi.


Instaliranje MQTT Cloud Libraries na Raspberry Pi
Ovdje se Adafruit IO platforma koristi s Raspberry Pi kao MQTT posrednik. Kako smo Adafruit IO platformu koristili mnogo puta u našim prethodnim vodičima, slično je možemo koristiti i u Raspberry Pi.
Samo napravite račun na platformi Adafruit IO i napravite feed, ako ne znate kako napraviti feed i prilagoditi nadzornu ploču Adafruit, a zatim slijedite vezu.
Nakon izrade nadzorne ploče, instalirajte nekoliko knjižnica u Raspberry Pi da biste započeli s MQTT-om.
1. Prvo ažurirajte svoj Pi i Python izdavanjem sljedećih naredbi
sudo apt-get update sudo apt-get nadogradnja sudo pip3 install - nadogradnja setuptools
2. Sada instalirajte Rpi.gpio i Adafruit blink knjižnice pomoću naredbi u nastavku
sudo pip3 instaliraj RPI.GPIO sudo pip3 instaliraj adafruit-blinka
3. Instalirajte Adafruit IO knjižnicu pomoću naredbe u nastavku
sudo pip3 instalirati adafruit-io
4. Klonirajte primjere adafruit iz github-a pomoću naredbe u nastavku
git klon https://github.com/adafruit/Adafruit_IO_Python.git
5. Zatim dođite do mape primjera unošenjem sljedeće naredbe u terminal:
cd Adafruit_IO_Python / primjeri / osnove
Ako niste sigurni u kojem ste direktoriju, možete to provjeriti pokretanjem pwd-a.
6. Za sve primjere u ovoj mapi, morat ćete postaviti ADAFRUIT_IO_KEY i ADAFRUIT_IO_USERNAME, koje možete pronaći na nadzornoj ploči Adafruit. Kao što je prikazano niže

Prebacite gumb na nadzornoj ploči Adafruit IO, a na terminalu vašeg Pi trebali biste vidjeti sljedeće.
7. Sada otvorite datoteku subscribe.py pomoću nano uređivača. Upišite sljedeću naredbu da biste je otvorili
sudo nano pretplatite se.py
Moramo izmijeniti ovaj program da bismo kontrolirali bilo koji GPIO s nadzorne ploče.
Objašnjenje kodiranja za kontrolu Raspberry Pi GPIO s MQTT
Prvo uvezite sve potrebne knjižnice za upotrebu GPIO pinova i klijenta Adafruit MQTT.
import RPi.GPIO as GPIO import sys from Adafruit_IO import MQTTClient
Sada postavite GPIO način i definirajte LED pin broj i postavite kao izlaz.
GPIO.setmode (GPIO.BOARD) GPIO.setwarnings (False) ledPin = 12 GPIO.setup (ledPin, GPIO.OUT)
Dalje, moramo postaviti AIO ključ i korisničko ime koje smo pronašli tijekom izrade nadzorne ploče.
ADAFRUIT_IO_KEY = 'YOUR_AIO_KEY' ADAFRUIT_IO_USERNAME = 'YOUR_AIO_USERNAME'
Unesite naziv feeda koji ste dali za uključivanje i isključivanje svjetla. Evo, to je "svjetlost".
FEED_ID = 'svjetlo'
Sada definirajte funkciju koja će se pozivati kad se dogodi događaj. Dakle, pretplatit ćemo Feed koristeći client.subscribe (FEED_ID)
def connected (client): client.subscribe (FEED_ID) print ('Čekanje podataka feeda…')
Nakon pretplate na feed, moramo provjeriti ima li nove vrijednosti i pohraniti ga u varijablu korisnog tereta . Za ovu se poruku poziva funkcija. Dakle, kad god je u varijabli korisnog tereta "1", izvedite vodeći pin VISOKO, a za "0" neka bude NISKO.
def poruka (klijent, feed_id, nosivost): print ('Feed {0} primio je novu vrijednost: {1}'. format (feed_id, payload)) ako je nosivost == 1: GPIO.output (ledPin, GPIO.HIGH) else: GPIO.output (ledPin, GPIO.LOW)
Sada stvorite MQTT klijent za povezivanje s platformom Adafruit IO i slanje poruka amo-tamo.
klijent = MQTTClient (ADAFRUIT_IO_USERNAME, ADAFRUIT_IO_KEY) client.on_connect = povezan client.on_disconnect = odspojen
Također, vodite računa o pravilnom uvlačenju u kod, inače će se prikazati pogreška. Kompletni python kôd dat je na kraju vodiča.
Konačno, spremite program pomoću ctrl + x i pritisnite enter. Sada moramo pokrenuti skriptu kako bismo pretplatili poruke. Dakle, u terminalu upišite python subscribe.py i pritisnite enter.
python pretplati se.py
Vidjet ćete poruku Čekajući podatke feeda … kao što je prikazano ispod snimke.
Sada, provjerite je li modul releja povezan s GPIO pinom Raspberry Pi, a zatim idite na nadzornu ploču Adafruit IO i promijenite dovod svjetla. Žarulja treba uključiti kada je „1” je primio i isključuje kada „0” je primljena kao što je prikazano u nastavku.

Na taj način možemo kontrolirati bilo koji uređaj s bilo kojeg mjesta na svijetu pomoću Raspberry Pi i MQTT oblaka
