- Požadované komponenty
- Kruhový diagram
- Instalace cloudových knihoven MQTT na Raspberry Pi
- Vysvětlení kódování pro ovládání GPIO Raspberry Pi pomocí MQTT
V předchozím tutoriálu jsme diskutovali o protokolu MQTT a nainstalovali jsme místní server MQTT na náš Raspberry Pi pro místní ovládání GPIO. Nevýhodou místního serveru MQTT je však to, že nemůžeme ovládat GPIO odkudkoli na světě, poskytuje služby pouze lokálně. Pokud je však tento server MQTT hostován v nějakém cloudu, lze libovolně zařízení připojená k Raspberry Pi ovládat globálně.
Tady v tomto tutoriálu použijeme Adafruit IO jako MQTT broker pro ovládání AC zařízení připojeného k Raspberry Pi GPIO. Podívejte se také na další výukové programy pro automatizaci domácnosti IoT:
- Hlasově řízená domácí automatizace založená na IOT pomocí ESP8266 a aplikace pro Android
- Smart Phone Controlled Home Automation using Arduino
- Webově řízená domácí automatizace založená na IoT pomocí PIC mikrokontroléru a Adafruit IO
- IoT založená webově řízená domácí automatizace pomocí Raspberry Pi
- Hlasově řízená domácí automatizace založená na Google Assistant pomocí štítu Wi-Fi Arduino pro kutily
Požadované komponenty
- Raspberry Pi s nainstalovaným Raspbian Stretch.
- Reléový modul
- Žárovka
- Propojovací dráty
Zde použijeme SSH pro přístup k Raspberry Pi na notebooku. Můžete použít připojení VNC nebo vzdálené plochy na notebooku nebo můžete připojit Raspberry pi k monitoru. Zde se dozvíte více o bezhlavém nastavení Raspberry Pi bez monitoru.
Kruhový diagram
Schéma zapojení tohoto domácího spotřebiče řízeného IoT s cloudem MQTT a Raspberry Pi je jednoduché, stačí připojit žárovku s reléovým modulem na GPIO pin 35 Raspberry Pi.
Instalace cloudových knihoven MQTT na Raspberry Pi
Zde se platforma Adafruit IO používá s Raspberry Pi jako makléř MQTT. Protože jsme platformu Adafruit IO mnohokrát použili v našich předchozích cvičeních, můžeme ji podobně použít v Raspberry Pi.
Jednoduše si vytvořte účet na platformě Adafruit IO a vytvořte zdroj, pokud nevíte, jak vytvořit zdroj a přizpůsobit řídicí panel Adafruit, postupujte podle odkazu.
Po vytvoření řídicího panelu nainstalujte do Raspberry Pi několik knihoven, abyste mohli začít s MQTT.
1. Nejprve aktualizujte své Pi a Python zadáním následujících příkazů
sudo apt-get update sudo apt-get upgrade sudo pip3 install --upgrade setuptools
2. Nyní nainstalujte knihovny blikání Rpi.gpio a Adafruit pomocí níže uvedených příkazů
sudo pip3 install RPI.GPIO sudo pip3 install adafruit-blinka
3. Nainstalujte knihovnu Adafruit IO pomocí níže uvedeného příkazu
sudo pip3 install adafruit-io
4. Klonujte příklady adafruit z github pomocí níže uvedeného příkazu
git klon https://github.com/adafruit/Adafruit_IO_Python.git
5. Poté přejděte do složky examples zadáním následujícího příkazu do terminálu:
cd Adafruit_IO_Python / příklady / základy
Pokud si nejste jisti, ve kterém adresáři se nacházíte, můžete to zkontrolovat spuštěním pwd.
6. U všech příkladů v této složce budete muset nastavit ADAFRUIT_IO_KEY a ADAFRUIT_IO_USERNAME, které najdete na řídicím panelu Adafruit. Jak je ukázáno níže
Přepněte tlačítko na řídicím panelu Adafruit IO a v terminálu vašeho Pi byste měli vidět následující.
7. Nyní otevřete soubor subscribe.py pomocí nano editoru. Zadejte následující příkaz a otevřete jej
sudo nano subscribe.py
Musíme tento program upravit tak, aby ovládal jakýkoli GPIO z palubní desky.
Vysvětlení kódování pro ovládání GPIO Raspberry Pi pomocí MQTT
Nejprve importujte všechny požadované knihovny, abyste mohli používat piny GPIO a klienta Adafruit MQTT.
import RPi.GPIO jako GPIO import sys z Adafruit_IO import MQTTClient
Nyní nastavte režim GPIO a definujte počet pinů LED a nastavte jako výstup.
GPIO.setmode (GPIO.BOARD) GPIO.setwarnings (False) ledPin = 12 GPIO.setup (ledPin, GPIO.OUT)
Dále musíme nastavit klíč AIO a uživatelské jméno, které jsme našli při vytváření řídicího panelu.
ADAFRUIT_IO_KEY = 'YOUR_AIO_KEY' ADAFRUIT_IO_USERNAME = 'YOUR_AIO_USERNAME'
Zadejte název zdroje, který jste zadali pro zapnutí a vypnutí světla. Zde je to „světlo“.
FEED_ID = 'light'
Nyní definujte funkci, která bude volána, když dojde k události. Takže se přihlásíme k odběru kanálu pomocí klienta.subscribe (FEED_ID)
def connected (client): client.subscribe (FEED_ID) print ('Waiting for feed data…')
Po přihlášení k odběru zdroje musíme zkontrolovat novou hodnotu a uložit ji do proměnné užitečného zatížení . Pro tuto zprávu se volá funkce. Takže kdykoli je v proměnné užitečného zatížení „1“, udělejte LED pin HIGH a pro „0“ LOW.
zpráva def (klient, feed_id, payload): print ('Feed {0} obdržel novou hodnotu: {1}'. format (feed_id, payload)) if payload == 1: GPIO.output (ledPin, GPIO.HIGH) else: GPIO.output (ledPin, GPIO.LOW)
Nyní vytvořte klienta MQTT pro připojení k platformě Adafruit IO a odesílání zpráv sem a tam.
klient = MQTTClient (ADAFRUIT_IO_USERNAME, ADAFRUIT_IO_KEY) client.on_connect = připojený klient.on_disconnect = odpojen
Dbejte také na správné odsazení v kódu, jinak se zobrazí chyba. Kompletní kód pythonu je uveden na konci tutoriálu.
Nakonec program uložte pomocí ctrl + x a stiskněte klávesu Enter. Nyní musíme spustit skript, abychom se mohli přihlásit k odběru zpráv. Takže v typu terminálu python subscribe.py a stiskněte klávesu Enter.
python subscribe.py
Zobrazí se zpráva Čekání na data zdroje … jak je znázorněno níže.
Nyní se ujistěte, že je reléový modul spojen s pinem GPIO Raspberry Pi a poté přejděte na řídicí panel Adafruit IO a změňte zdroj světla. Žárovka by zapnout, když je přijata a vypnut, když je přijata „0“, jak je uvedeno níže „1“.
Tímto způsobem můžeme ovládat jakékoli zařízení odkudkoli na světě pomocí cloudu Raspberry Pi a MQTT