- Súčasti sú povinné
- Schéma zapojenia
- Inštalácia cloudových knižníc MQTT na Raspberry Pi
- Vysvetlenie kódovania pre ovládanie GPIO Raspberry Pi pomocou MQTT
V predchádzajúcom tutoriáli sme diskutovali o protokole MQTT a nainštalovaní lokálneho servera MQTT na náš Raspberry Pi pre lokálne riadenie GPIO. Nevýhodou lokálneho servera MQTT je však to, že nemôžeme ovládať GPIO odkiaľkoľvek na svete, poskytuje služby iba lokálne. Pokiaľ je ale tento server MQTT hostený na nejakom cloude, potom je možné globálne ovládať akékoľvek zariadenia pripojené k Raspberry Pi.
Tu v tomto tutoriále použijeme Adafruit IO ako sprostredkovateľa MQTT na ovládanie striedavého prúdu pripojeného k Raspberry Pi GPIO. Skontrolujte tiež ďalšie výukové programy domácej automatizácie riadené pomocou IoT:
- Hlasovo riadená domáca automatizácia založená na IOT pomocou ESP8266 a aplikácie pre Android
- Inteligentný telefón riadený domácou automatizáciou pomocou Arduina
- Webom riadená domáca automatizácia založená na IoT pomocou mikrokontroléra PIC a I / O Adafruit
- Domáca automatizácia riadená webom IoT pomocou Raspberry Pi
- Hlasovo ovládaná domáca automatizácia založená na službe Google Assistant pomocou štítu Wi-Fi Arduino od firmy DIY
Súčasti sú povinné
- Raspberry Pi s nainštalovaným Raspbian Stretch.
- Reléový modul
- Žiarovka
- Prepojovacie drôty
Tu použijeme SSH na prístup k Raspberry Pi na notebooku. Môžete použiť pripojenie VNC alebo vzdialenej pracovnej plochy na prenosnom počítači alebo môžete pripojiť svoju Raspberry pi k monitoru. Tu sa dozviete viac o bezhlavom nastavení Raspberry Pi bez monitora.
Schéma zapojenia
Schéma zapojenia tohto domáceho spotrebiča riadeného pomocou IoT s cloudom MQTT a Raspberry Pi je jednoduchá, stačí pripojiť žiarovku s reléovým modulom na GPIO pin 35 maliny Pi.
Inštalácia cloudových knižníc MQTT na Raspberry Pi
Tu sa platforma Adafruit IO používa s Raspberry Pi ako sprostredkovateľom MQTT. Pretože sme platformu Adafruit IO už mnohokrát použili v našich predchádzajúcich tutoriáloch, podobne ju môžeme použiť aj v Raspberry Pi.
Stačí si vytvoriť účet na platforme Adafruit IO a vytvoriť informačný kanál. Ak neviete, ako vytvoriť informačný kanál a prispôsobiť ovládací panel Adafruit, kliknite na odkaz.
Po vytvorení hlavného panela nainštalujte do knižnice Raspberry Pi niekoľko knižníc, aby ste mohli začať s MQTT.
1. Najskôr aktualizujte svoje Pi a Python zadaním nasledujúcich príkazov
sudo apt-get aktualizácia sudo apt-get aktualizácia sudo pip3 install --upgrade setuptools
2. Teraz nainštalujte blikajúce knižnice Rpi.gpio a Adafruit pomocou nižšie uvedených príkazov
sudo pip3 install RPI.GPIO sudo pip3 install adafruit-blinka
3. Nainštalujte knižnicu Adafruit IO pomocou nižšie uvedeného príkazu
sudo pip3 nainštalovať adafruit-io
4. Klonujte príklady adafruitu z githubu pomocou príkazu dole
git klon https://github.com/adafruit/Adafruit_IO_Python.git
5. Potom prejdite do priečinka príklady zadaním nasledujúceho príkazu do terminálu:
cd Adafruit_IO_Python / examples / basics
Ak si nie ste istí, v ktorom adresári sa nachádzate, môžete to skontrolovať spustením programu pwd.
6. Pre všetky príklady v tomto priečinku budete musieť nastaviť ADAFRUIT_IO_KEY a ADAFRUIT_IO_USERNAME, ktoré nájdete na hlavnom paneli Adafruit. Ako je uvedené nižšie
Prepnite tlačidlo na prístrojovej doske Adafruit IO a v termináli vášho Pi by ste mali vidieť toto.
7. Teraz otvorte súbor subscribe.py pomocou nano editora. Zadajte nasledujúci príkaz a otvorte ho
sudo nano subscribe.py
Tento program musíme upraviť, aby sme ovládali akýkoľvek GPIO z palubnej dosky.
Vysvetlenie kódovania pre ovládanie GPIO Raspberry Pi pomocou MQTT
Najskôr importujte všetky požadované knižnice, aby ste mohli používať piny GPIO a klienta Adafruit MQTT.
import RPi.GPIO ako GPIO import sys z Adafruit_IO import MQTTClient
Teraz nastavte režim GPIO a definujte počet pinov LED a nastavte ako výstup.
GPIO.setmode (GPIO.BOARD) GPIO.setwarnings (False) ledPin = 12 GPIO.setup (ledPin, GPIO.OUT)
Ďalej musíme nastaviť kľúč AIO a používateľské meno, ktoré sme našli pri vytváraní palubnej dosky.
ADAFRUIT_IO_KEY = 'YOUR_AIO_KEY' ADAFRUIT_IO_USERNAME = 'YOUR_AIO_USERNAME'
Zadajte názov informačného kanála, ktorý ste zadali na zapnutie a vypnutie svetla. Tu je to „ľahké“.
FEED_ID = 'light'
Teraz definujte funkciu, ktorá sa bude volať, keď dôjde k udalosti. Takže sa prihlásime na odber informačného kanála pomocou klienta.subscribe (FEED_ID)
def connected (client): client.subscribe (FEED_ID) print ('Waiting for feed data…')
Po prihlásení na odber informačného kanála musíme skontrolovať novú hodnotu a uložiť ju do premennej užitočného zaťaženia . Pre túto správu sa volá funkcia. Takže vždy, keď je v premennej užitočného zaťaženia „1“, urobte LED pin HIGH a pre „0“ LOW.
správa def (klient, feed_id, payload): print ('Feed {0} dostal novú hodnotu: {1}'. format (feed_id, payload)), ak payload == 1: GPIO.output (ledPin, GPIO.HIGH) else: GPIO.output (ledPin, GPIO.LOW)
Teraz vytvorte klienta MQTT na pripojenie k platforme Adafruit IO a odosielanie správ tam a späť.
klient = MQTTClient (ADAFRUIT_IO_USERNAME, ADAFRUIT_IO_KEY) client.on_connect = pripojený klient.on_disconnect = odpojený
Dajte pozor aj na správne odsadenie v kóde, inak ukáže chybu. Celý pythonový kód je uvedený na konci tutoriálu.
Nakoniec program uložte pomocou kombinácie klávesov ctrl + x a stlačte kláves Enter. Teraz musíme spustiť skript, aby sme si mohli predplatiť správy. Takže v termináli zadajte python subscribe.py a stlačte kláves Enter.
python subscribe.py
Zobrazí sa správa Čaká sa na údaje informačného kanála …, ako je znázornené na nasledujúcom obrázku.
Teraz skontrolujte, či je reléový modul prepojený s pinom GPIO Raspberry Pi, a potom choďte na prístrojovú dosku Adafruit IO a zmeňte prívod svetla. Žiarovka by zapnúť, keď je prijatá a vypnutý, keď je prijatá "0", ako je uvedené nižšie "1".
Týmto spôsobom môžeme ovládať akékoľvek zariadenie odkiaľkoľvek na svete pomocou cloudu Raspberry Pi a MQTT