- Szükséges alkatrészek
- Kördiagramm
- Az MQTT Cloud Libraries telepítése a Raspberry Pi-re
- Kódolás Magyarázat a Raspberry Pi GPIO MQTT-vel történő vezérléséhez
Az előző oktatóanyagban megvitattuk az MQTT protokollt és telepítettünk egy helyi MQTT szervert a Raspberry Pi-re a GPIO helyi vezérléséhez. De a helyi MQTT szerver hátránya, hogy a GPIO-kat a világ bármely pontjáról nem tudjuk irányítani, csak helyben nyújt szolgáltatásokat. De ha ezt az MQTT szervert valamilyen felhőben tárolják, akkor a Raspberry Pi-hez csatlakoztatott eszközök globálisan vezérelhetők.
Itt, ebben az oktatóanyagban, az Adafruit IO-t fogjuk használni MQTT közvetítőként a Raspberry Pi GPIO-hoz csatlakoztatott váltóáramú készülék vezérléséhez. Ellenőrizzen más IoT által vezérelt otthoni automatizálási oktatóanyagokat is:
- IOT alapú hangvezérelt otthoni automatizálás az ESP8266 és az Android App segítségével
- Okos telefon vezérelt otthoni automatizálás az Arduino használatával
- IoT alapú webes vezérlésű otthoni automatizálás PIC mikrokontroller és Adafruit IO segítségével
- IoT alapú, webes vezérlésű otthoni automatizálás Raspberry Pi használatával
- Google asszisztens alapú hangvezérelt otthoni automatizálás a DIY Arduino Wi-Fi Shield használatával
Szükséges alkatrészek
- Raspberry Pi, benne Raspbian Stretch.
- Relé modul
- Izzó
- Jumper huzalok
Itt az SSH-t fogjuk használni a Raspberry Pi eléréséhez a laptopon. Használhatja a laptopon a VNC vagy a Távoli asztali kapcsolatot, vagy csatlakoztathatja a Raspberry pi monitorhoz. Tudjon meg többet a Raspberry Pi fej nélküli beállításáról itt, monitor nélkül.
Kördiagramm
Az IoT által vezérelt háztartási készülékek kapcsolási rajza az MQTT felhővel és a Raspberry Pi-vel egyszerű, csak csatlakoztasson egy izzómodult tartalmazó izzót a málna Pi GPIO 35-ös tűjéhez.
Az MQTT Cloud Libraries telepítése a Raspberry Pi-re
Itt az Adafruit IO platformot használják a Raspberry Pi-vel, mint MQTT közvetítővel. Mivel korábbi oktatóanyagainkban sokszor használtuk az Adafruit IO platformot, hasonlóan használhatjuk a Raspberry Pi-ben is.
Csak hozzon létre egy fiókot az Adafruit IO platformon, és készítsen hírcsatornát, ha nem tudja, hogyan készítsen hírcsatornát és testre szabhatja az Adafruit irányítópultját, akkor kövesse a linket.
Az irányítópult elkészítése után telepítsen néhány könyvtárat a Raspberry Pi-be az MQTT használatának megkezdéséhez.
1. Először frissítse a Pi és a Python programot a következő parancsok kiadásával
sudo apt-get update sudo apt-get upgrade sudo pip3 install --upgrade setuptools
2. Most telepítse az Rpi.gpio és az Adafruit blink könyvtárakat az alábbi parancsok használatával
sudo pip3 install RPI.GPIO sudo pip3 install adafruit-blinka
3. Telepítse az Adafruit IO könyvtárat az alábbi paranccsal
sudo pip3 telepítse az adafruit-io fájlt
4. Klónozza az adafruit példákat a githubból az alábbi paranccsal
git klón https://github.com/adafruit/Adafruit_IO_Python.git
5. Ezután keresse meg a példák mappát a következő parancs beírásával a terminálba:
cd Adafruit_IO_Python / példák / alapok
Ha nem biztos abban, hogy melyik könyvtárba tartozik, ellenőrizheti ezt a pwd futtatásával.
6. A mappa összes példájához be kell állítania az ADAFRUIT_IO_KEY és az ADAFRUIT_IO_USERNAME nevet, amelyek az Adafruit irányítópultján találhatók. Az alábbiak szerint
Kapcsolja be az Adafruit IO műszerfal gombját, és a következőket kell látnia a Pi termináljában.
7. Most nyissa meg az Subscribe.py fájlt a nano editor segítségével. Írja be a következő parancsot a megnyitásához
sudo nano subscribe.py
Módosítanunk kell ezt a programot, hogy irányítsunk bármilyen GPIO-t az irányítópultról.
Kódolás Magyarázat a Raspberry Pi GPIO MQTT-vel történő vezérléséhez
Először importálja az összes szükséges könyvtárat a GPIO csapok és az Adafruit MQTT kliens használatához.
importálja az RPi.GPIO-t GPIO-ként, importálja a rendszereket az Adafruit_IO import MQTTClient-ből
Most állítsa be a GPIO módot, és határozza meg a LED csapszeg számát, és állítsa be kimenetként.
GPIO.setmode (GPIO.BOARD) GPIO.setwarnings (False) ledPin = 12 GPIO.setup (ledPin, GPIO.OUT)
Ezután be kell állítanunk az AIO kulcsot és a felhasználónévet, amelyet az irányítópult létrehozása során találtunk.
ADAFRUIT_IO_KEY = 'YOUR_AIO_KEY' ADAFRUIT_IO_USERNAME = 'YOUR_AIO_USERNAME'
Írja be a hírcsatorna nevét, amelyet a fény be- és kikapcsolásához adott. Itt „könnyű”.
FEED_ID = 'fény'
Most adjon meg egy függvényt, amelyet akkor hívnak meg, amikor esemény történik. Tehát feliratkozunk a hírcsatornára a client.subscribe (FEED_ID) használatával
def csatlakoztatva (kliens): client.subscribe (FEED_ID) print ('Feed adatokra vár…')
A hírcsatorna feliratkozása után meg kell vizsgálnunk az új értéket, és egy hasznos terhelés változóba kell tárolnunk. Erre az üzenetre hívjuk meg a függvényt. Tehát, amikor a hasznos terhelés változóban „1” van, akkor a led csapot HIGH-ra állítsa, „0” esetén pedig LOW-ra.
def üzenet (kliens, feed_id, hasznos terhelés): print ('Feed {0} kapott új értéket: {1}'. format (feed_id, hasznos teher)), ha hasznos teher == 1: GPIO.output (ledPin, GPIO.HIGH) else: GPIO.output (ledPin, GPIO.LOW)
Most hozzon létre egy MQTT klienst, hogy csatlakozzon az Adafruit IO platformhoz, és küldje el az üzeneteket ide-oda.
kliens = MQTTClient (ADAFRUIT_IO_USERNAME, ADAFRUIT_IO_KEY) kliens.on_connect = csatlakoztatott kliens.on_disconnect = leválasztva
Vigyázzon a kód megfelelő behúzására is, különben hibát fog mutatni. A teljes python kód az oktatóanyag végén található.
Végül mentse el a programot a ctrl + x gombbal, és nyomja meg az Enter billentyűt. Most futtatnunk kell a szkriptet az üzenetek feliratkozásához. Tehát a terminálban írja be a python Subscribe.py elemet, és nyomja meg az Enter billentyűt.
python subscribe.py
Megjelenik a Várakozás a híradatokra … üzenet, amint az a pillanatképen látható.
Most ellenőrizze, hogy a relé modul csatlakozik-e a Raspberry Pi GPIO tűjéhez, majd lépjen az Adafruit IO műszerfalához és változtassa meg a fénytáplálást. Az izzónak be kell kapcsolnia, amikor az „1” jelet kapja, és ki kell kapcsolnia, amikor a „0” jelet kapja, az alábbiak szerint.
Így a Raspberry Pi és az MQTT felhő használatával bármely készüléket a világ bármely pontjáról irányíthatunk