- Components necessaris
- Esquema de connexions
- Instal·lació de les biblioteques de núvol MQTT a Raspberry Pi
- Explicació de codificació per controlar Raspberry Pi GPIO amb MQTT
En un tutorial anterior hem parlat sobre el protocol MQTT i hem instal·lat el servidor MQTT local al nostre Raspberry Pi per controlar el GPIO localment. Però l’inconvenient del servidor MQTT local és que no podem controlar els GPIO des de qualsevol part del món, només proporciona serveis localment. Però si aquest servidor MQTT està allotjat en algun núvol, qualsevol aparell connectat a Raspberry Pi es pot controlar globalment.
Aquí, en aquest tutorial, utilitzarem Adafruit IO com a broker MQTT per controlar un aparell de CA connectat a Raspberry Pi GPIO. Consulteu també altres tutorials domòtics controlats per IoT:
- Domòtica controlada per veu basada en IOT mitjançant ESP8266 i aplicació per a Android
- Domòtica controlada per telèfon intel·ligent mitjançant Arduino
- Domòtica controlada per Internet basada en IoT mitjançant microcontrolador PIC i Adafruit IO
- Automatització domèstica controlada per web basada en IoT mitjançant Raspberry Pi
- Domòtica controlada per veu basada en l'Assistent de Google mitjançant un escut Wi-Fi Arduino de bricolatge
Components necessaris
- Raspberry Pi amb Raspbian Stretch instal·lat.
- Mòdul de relés
- Bombeta
- Jumper Wires
Aquí utilitzarem SSH per accedir a Raspberry Pi des del portàtil. Podeu utilitzar la connexió VNC o Escriptori remot a l'ordinador portàtil o bé connectar el vostre Raspberry pi amb un monitor. Obteniu més informació sobre com configurar Raspberry Pi aquí sense cap cap cap cap monitor.
Esquema de connexions
El diagrama de circuits per a aquests electrodomèstics controlats per IoT amb núvol MQTT i Raspberry Pi és senzill, només cal connectar una bombeta amb mòdul de relé al pin GPIO 35 del raspberry Pi.


Instal·lació de les biblioteques de núvol MQTT a Raspberry Pi
Aquí la plataforma Adafruit IO s’utilitza amb Raspberry Pi com a broker MQTT. Com que hem utilitzat la plataforma Adafruit IO moltes vegades en els nostres tutorials anteriors, podem utilitzar-la de manera similar a Raspberry Pi.
Simplement feu un compte a la plataforma Adafruit IO i creeu un feed, si no sabeu com fer-ho i personalitzar el tauler d'Adafruit, seguiu l'enllaç.
Després de fer el tauler, instal·leu poques biblioteques a Raspberry Pi per començar a utilitzar MQTT.
1. En primer lloc, actualitzeu Pi i Python emetent les ordres següents
sudo apt-get update sudo apt-get upgrade sudo pip3 install --upgrade setuptools
2. Ara, instal·leu les biblioteques de parpelleig Rpi.gpio i Adafruit mitjançant les ordres següents
sudo pip3 instal·la RPI.GPIO sudo pip3 instal·la adafruit-blinka
3. Instal·leu la biblioteca d'Adafruit IO mitjançant l'ordre següent
sudo pip3 instal·la adafruit-io
4. Cloneu els exemples d’adafruit de github amb l’ordre següent
git clone https://github.com/adafruit/Adafruit_IO_Python.git
5. A continuació, aneu a la carpeta d'exemples introduint l'ordre següent al terminal:
cd Adafruit_IO_Python / examples / basics
Si no esteu segur de quin directori esteu, podeu comprovar-ho executant pwd.
6. Per a tots els exemples d'aquesta carpeta, haureu d'establir ADAFRUIT_IO_KEY i ADAFRUIT_IO_USERNAME, que es poden trobar al tauler d'Adafruit. Com es mostra a continuació

Activeu el botó del tauler d'Adafruit IO i hauríeu de veure el següent al terminal del vostre Pi.
7. Ara, obriu el fitxer subscribe.py mitjançant l' editor nano . Escriviu l'ordre següent per obrir-lo
sudo nano subscribe.py
Hem de modificar aquest programa per controlar qualsevol GPIO des del tauler.
Explicació de codificació per controlar Raspberry Pi GPIO amb MQTT
Primer, importeu totes les biblioteques necessàries per utilitzar pins GPIO i el client Adafruit MQTT.
importar RPi.GPIO com a sistemes d'importació GPIO des d'Adafruit_IO importar MQTTClient
Ara, configureu el mode GPIO i definiu el número de pin LED i configureu-lo com a sortida.
GPIO.setmode (GPIO.BOARD) GPIO.setwarnings (fals) ledPin = 12 GPIO.setup (ledPin, GPIO.OUT)
A continuació, hem d’establir la clau AIO i el nom d’usuari que hem trobat mentre creavem el tauler.
ADAFRUIT_IO_KEY = 'YOUR_AIO_KEY' ADAFRUIT_IO_USERNAME = 'YOUR_AIO_USERNAME'
Introduïu el nom del feed que heu donat per encendre i apagar la llum. Aquí és "lleuger".
FEED_ID = "clar"
Ara, definiu una funció que es cridarà quan es produeixi un esdeveniment. Per tant, subscriureem el feed mitjançant client.subscribe (FEED_ID)
connectat per defecte (client): client.subscribe (FEED_ID) print ("Esperant dades del feed…")
Després de subscriure el feed, hem de comprovar el nou valor i emmagatzemar-lo en una variable de càrrega útil . Per a aquest missatge es diu la funció. Per tant, sempre que hi hagi "1" en la variable de càrrega útil, feu que el pin del LED sigui ALT i, per a "0", feu-lo BAIX.
missatge def (client, feed_id, payload): print ("Feed {0} ha rebut un valor nou: {1}". format (feed_id, payload)) si payload == 1: GPIO.output (ledPin, GPIO.HIGH) més: GPIO.output (ledPin, GPIO.LOW)
Ara, creeu un client MQTT per connectar-vos amb la plataforma Adafruit IO i enviar els missatges cap aquí i cap enrere.
client = client MQTTC (ADAFRUIT_IO_USERNAME, ADAFRUIT_IO_KEY) client.on_connect = connectat client.on_disconnect = desconnectat
A més, tingueu cura de la sagnia adequada al codi, ja que mostrarà un error. Al final del tutorial es dóna un codi python complet.
Finalment, deseu el programa amb ctrl + x i premeu la tecla Enter. Ara hem d'executar l'script per subscriure els missatges. Per tant, al terminal escriviu python subscribe.py i premeu la tecla Enter.
python subscribe.py
Veureu un missatge esperant dades de feed … com es mostra a la instantània.
Ara, assegureu-vos que el mòdul de retransmissió estigui connectat amb el pin GPIO de Raspberry Pi i, a continuació, aneu al tauler d’Adafruit IO i canvieu l’alimentació de llum. La bombeta s'hauria d'encendre quan es rep "1" i s'ha d'apagar quan es rep "0", tal com es mostra a continuació.

D'aquesta manera, podem controlar qualsevol aparell des de qualsevol part del món mitjançant l'ús de Raspberry Pi i el núvol MQTT
