- Komponenter, der kræves
- Kredsløbsdiagram
- Installation af MQTT Cloud Libraries på Raspberry Pi
- Kodning Forklaring til styring af Raspberry Pi GPIO med MQTT
I forrige tutorial har vi diskuteret om MQTT-protokol og installeret lokal MQTT-server på vores Raspberry Pi til styring af GPIO lokalt. Men ulempen ved den lokale MQTT-server er, at vi ikke kan kontrollere GPIO'erne fra hvor som helst i verden, den leverer kun tjenester lokalt. Men hvis denne MQTT-server er hostet i en eller anden sky, kan alle apparater, der er tilsluttet Raspberry Pi, styres globalt.
Her i denne vejledning bruger vi Adafruit IO som MQTT-mægler til at styre et vekselstrømsapparat, der er tilsluttet Raspberry Pi GPIO. Kontroller også andre IoT-kontrollerede hjemmeautomatiseringsvejledninger:
- IOT-baseret stemmestyret hjemmeautomatisering ved hjælp af ESP8266 og Android App
- Smart telefonstyret hjemmeautomatisering ved hjælp af Arduino
- IoT-baseret webstyret hjemmeautomatisering ved hjælp af PIC Microcontroller og Adafruit IO
- IoT-baseret webstyret hjemmeautomatisering ved hjælp af Raspberry Pi
- Google Assistent-baseret stemmestyret hjemmeautomatisering ved hjælp af DIY Arduino Wi-Fi Shield
Komponenter, der kræves
- Raspberry Pi med Raspbian Stretch installeret i den.
- Relæmodul
- Pære
- Jumper Wires
Her bruger vi SSH til at få adgang til Raspberry Pi på den bærbare computer. Du kan bruge VNC- eller Remote Desktop-forbindelse på den bærbare computer eller tilslutte din Raspberry pi til en skærm. Lær mere om opsætning af Raspberry Pi uden hoved her uden en skærm.
Kredsløbsdiagram
Kredsløbsdiagram til denne IoT-styrede husholdningsapparater med MQTT cloud og Raspberry Pi er enkel, bare tilslut en pære med relæmodul på GPIO pin 35 på raspberry Pi.
Installation af MQTT Cloud Libraries på Raspberry Pi
Her bruges Adafruit IO-platform med Raspberry Pi som MQTT-mægler. Da vi har brugt Adafruit IO- platformen mange gange i vores tidligere tutorials på samme måde, kan vi bruge den i Raspberry Pi.
Bare lav en konto på Adafruit IO-platformen og lav et feed, hvis du ikke ved hvordan man laver feed og tilpasser Adafruit-dashboardet, så følg linket.
Efter at have lavet dashboard, skal du installere få biblioteker i Raspberry Pi for at komme i gang med MQTT.
1. Opdater først din Pi og Python ved at udstede følgende kommandoer
sudo apt-get opdater sudo apt-get opgradering sudo pip3 installation - opgrader installationsværktøjer
2. Installer nu Rpi.gpio og Adafruit blinkbiblioteker ved hjælp af nedenstående kommandoer
sudo pip3 installere RPI.GPIO sudo pip3 installere adafruit-blinka
3. Installer Adafruit IO-biblioteket ved hjælp af kommandoen nedenfor
sudo pip3 installer adafruit-io
4. Klon adafruiteksemplerne fra github ved hjælp af kommandoen nedenfor
git-klon https://github.com/adafruit/Adafruit_IO_Python.git
5. Naviger derefter til eksempelmappen ved at indtaste følgende kommando i terminalen:
cd Adafruit_IO_Python / eksempler / basics
Hvis du ikke er sikker på, hvilken mappe du er i, kan du kontrollere dette ved at køre pwd.
6. For alle eksempler i denne mappe skal du indstille ADAFRUIT_IO_KEY og ADAFRUIT_IO_USERNAME, som kan findes fra Adafruit-dashboardet. Som vist nedenfor
Skift knappen på Adafruit IO dashboard, og du skal se følgende i terminalen på din Pi.
7. Åbn nu subscribe.py- filen ved hjælp af nano- editor. Skriv følgende kommando for at åbne den
sudo nano subscribe.py
Vi er nødt til at ændre dette program for at kontrollere ethvert GPIO fra instrumentbrættet.
Kodning Forklaring til styring af Raspberry Pi GPIO med MQTT
Først skal du importere alle de nødvendige biblioteker for at bruge GPIO-ben og Adafruit MQTT-klient.
importer RPi.GPIO som GPIO import sys fra Adafruit_IO import MQTTClient
Indstil nu GPIO-tilstand, og definer LED-pin-nummer og indstil som output.
GPIO.setmode (GPIO.BOARD) GPIO.setwarnings (False) ledPin = 12 GPIO.setup (ledPin, GPIO.OUT)
Dernæst skal vi indstille AIO-nøgle og brugernavn, som vi har fundet under oprettelsen af dashboardet.
ADAFRUIT_IO_KEY = 'DIN_AIO_KEY' ADAFRUIT_IO_USERNAME = 'DIN_AIO_USERNAME'
Indtast det feednavn, du har givet for at tænde og slukke for lyset. Her er det “let”.
FEED_ID = 'lys'
Definer nu en funktion, der kaldes, når der sker en begivenhed. Så vi abonnerer på feedet ved hjælp af client.subscribe (FEED_ID)
def connected (client): client.subscribe (FEED_ID) print ('Waiting for feed data…')
Efter abonnement på feedet skal vi kontrollere den nye værdi og gemme den i en nyttelastvariabel . For denne meddelelse kaldes funktionen. Så når der er “1” i nyttelastvariablen, skal du gøre ledestiften HØJ og for “0” gøre den LAV.
def besked (klient, feed_id, nyttelast): print ('Feed {0} modtaget ny værdi: {1}'. format (feed_id, nyttelast)) hvis nyttelast == 1: GPIO.output (ledPin, GPIO.HIGH) ellers: GPIO.output (ledPin, GPIO.LOW)
Opret nu en MQTT-klient for at oprette forbindelse til Adafruit IO-platformen og sende meddelelserne frem og tilbage.
klient = MQTTClient (ADAFRUIT_IO_USERNAME, ADAFRUIT_IO_KEY) client.on_connect = tilsluttet client.on_disconnect = afbrudt
Vær også opmærksom på korrekt fordybning i koden ellers viser den en fejl. Komplet pythonkode gives i slutningen af vejledningen.
Til sidst skal du gemme programmet ved hjælp af ctrl + x og trykke på enter. Nu skal vi køre scriptet for at abonnere på meddelelserne. Så I terminal type python subscribe.py og tryk på enter.
python subscribe.py
Du vil se en meddelelse Venter på feeddata … som vist nedenfor snapshot.
Sørg nu for, at relæmodulet er forbundet med GPIO-pin i Raspberry Pi, og gå derefter til Adafruit IO-dashboard og skift lysindføring. Den pære skal tænde, når ”1” er modtaget og slukkes, når ”0” modtages som vist nedenfor.
På denne måde kan vi styre ethvert apparat fra hvor som helst i verden ved hjælp af Raspberry Pi og MQTT cloud