- Componente necesare
- Diagrama circuitului
- Instalarea bibliotecilor Cloud MQTT pe Raspberry Pi
- Explicație de codare pentru controlul Raspberry Pi GPIO cu MQTT
În tutorialul anterior am discutat despre Protocolul MQTT și am instalat serverul local MQTT pe Raspberry Pi pentru controlul local GPIO. Dar dezavantajul serverului local MQTT este că nu putem controla GPIO-urile de oriunde din lume, acesta furnizând doar servicii la nivel local. Dar dacă acest server MQTT este găzduit pe un nor, orice aparat conectat la Raspberry Pi poate fi controlat la nivel global.
Aici, în acest tutorial, vom folosi Adafruit IO ca broker MQTT pentru a controla un aparat de curent alternativ conectat la Raspberry Pi GPIO. De asemenea, verificați alte tutoriale controlate de IoT Home Automation:
- Automatizare acasă controlată vocală bazată pe IOT utilizând ESP8266 și aplicația Android
- Domotică controlată prin telefon inteligent folosind Arduino
- Automatizare bazată pe web controlată de IoT utilizând microcontrolerul PIC și Adafruit IO
- Automatizare casnică web controlată bazată pe IoT utilizând Raspberry Pi
- Automatizare casnică controlată prin voce a asistentului Google utilizând scutul Wi-Fi Arduino DIY
Componente necesare
- Raspberry Pi cu Raspbian Stretch instalat în el.
- Modul releu
- Bec
- Sârme jumper
Aici vom folosi SSH pentru a accesa Raspberry Pi pe laptop. Puteți utiliza conexiunea VNC sau Remote Desktop pe laptop sau puteți conecta Raspberry pi cu un monitor. Aflați mai multe despre configurarea Raspberry Pi fără cap aici fără monitor.
Diagrama circuitului
Diagrama circuitului pentru aceste electrocasnice controlate IoT cu cloud MQTT și Raspberry Pi este simplă, trebuie doar să conectați un bec cu modul de releu pe pinul GPIO 35 al raspberry Pi.
Instalarea bibliotecilor Cloud MQTT pe Raspberry Pi
Aici platforma Adafruit IO este utilizată cu Raspberry Pi ca broker MQTT. Deoarece am folosit platforma IO Adafruit de multe ori în tutorialele noastre anterioare, o putem folosi în Raspberry Pi.
Doar creați un cont pe platforma Adafruit IO și creați un feed, dacă nu știți cum să creați feed și să personalizați tabloul de bord Adafruit, urmați linkul.
După ce ați realizat tabloul de bord, instalați câteva biblioteci în Raspberry Pi pentru a începe cu MQTT.
1. Mai întâi, actualizați Pi și Python prin emiterea următoarelor comenzi
sudo apt-get update sudo apt-get upgrade sudo pip3 install --upgrade setuptools
2. Acum, instalați bibliotecile de clipire Rpi.gpio și Adafruit folosind comenzile de mai jos
sudo pip3 instalează RPI.GPIO sudo pip3 instalează adafruit-blinka
3. Instalați biblioteca Adafruit IO folosind comanda de mai jos
sudo pip3 instalează adafruit-io
4. Clonați exemplele adafruit din github folosind comanda de mai jos
git clone https://github.com/adafruit/Adafruit_IO_Python.git
5. Apoi, navigați la folderul de exemple introducând următoarea comandă în terminal:
cd Adafruit_IO_Python / exemple / elemente de bază
Dacă nu sunteți sigur în ce director vă aflați, puteți verifica acest lucru executând pwd.
6. Pentru toate exemplele din acest folder, va trebui să setați ADAFRUIT_IO_KEY și ADAFRUIT_IO_USERNAME, care pot fi găsite din tabloul de bord Adafruit. Așa cum se arată mai jos
Comutați butonul de pe tabloul de bord Adafruit IO și ar trebui să vedeți următoarele în terminalul Pi.
7. Acum, deschideți fișierul subscribe.py folosind nano editor. Tastați următoarea comandă pentru ao deschide
sudo nano subscribe.py
Trebuie să modificăm acest program pentru a controla orice GPIO din tabloul de bord.
Explicație de codare pentru controlul Raspberry Pi GPIO cu MQTT
Mai întâi, importați toate bibliotecile necesare pentru a utiliza pinii GPIO și clientul Adafruit MQTT.
import RPi.GPIO ca sisteme de import GPIO din Adafruit_IO import MQTTClient
Acum, setați modul GPIO și definiți numărul pinului LED și setați ca ieșire.
GPIO.setmode (GPIO.BOARD) GPIO.setwarnings (False) ledPin = 12 GPIO.setup (ledPin, GPIO.OUT)
Apoi, trebuie să setăm cheia AIO și numele de utilizator pe care le-am găsit în timpul creării tabloului de bord.
ADAFRUIT_IO_KEY = 'YOUR_AIO_KEY' ADAFRUIT_IO_USERNAME = 'YOUR_AIO_USERNAME'
Introduceți numele feedului pe care l-ați dat pentru a aprinde și a stinge lumina. Aici este „ușoară”.
FEED_ID = „lumină”
Acum, definiți o funcție care va fi apelată atunci când va avea loc un eveniment. Deci, vom subscrie Feedul folosind client.subscribe (FEED_ID)
conectat def (client): client.subscribe (FEED_ID) print („Se așteaptă datele de alimentare…”)
După abonarea feedului, trebuie să verificăm noua valoare și să o stocăm într-o variabilă de sarcină utilă . Pentru acest mesaj se apelează funcția. Deci, ori de câte ori există „1” în variabila sarcinii utile, faceți pinul LED HIGH și pentru „0”, faceți-l LOW.
mesaj def (client, feed_id, payload): print ('Feed {0} a primit o valoare nouă: {1}'. format (feed_id, payload)) dacă payload == 1: GPIO.output (ledPin, GPIO.HIGH) altceva: GPIO.output (ledPin, GPIO.LOW)
Acum, creați un client MQTT pentru a vă conecta cu platforma Adafruit IO și pentru a trimite mesajele înainte și înapoi.
client = MQTTClient (ADAFRUIT_IO_USERNAME, ADAFRUIT_IO_KEY) client.on_connect = conectat client.on_disconnect = deconectat
De asemenea, aveți grijă la indentarea corectă în cod, altfel va afișa o eroare. Codul complet Python este dat la sfârșitul tutorialului.
În cele din urmă, salvați programul folosind ctrl + x și apăsați Enter. Acum, trebuie să rulăm scriptul pentru a abona mesajele. Deci, în terminalul de tip python subscribe.py și apăsați Enter.
python subscribe.py
Veți vedea un mesaj În așteptarea datelor despre feed … așa cum se arată mai jos instantaneu.
Acum, asigurați-vă că modulul de releu este conectat cu pinul GPIO al Raspberry Pi și apoi mergeți la tabloul de bord Adafruit IO și schimbați alimentarea luminii. Becul trebuie să se aprindă atunci când „1“ este primit și oprit atunci când „0“ este primit așa cum se arată mai jos.
În acest fel, putem controla orice aparat de oriunde din lume folosind cloud-ul Raspberry Pi și MQTT