- Kinakailangan ang Mga Bahagi
- Diagram ng Circuit
- Pag-install ng MQTT Cloud Library sa Raspberry Pi
- Pag-coding ng Paliwanag para sa pagkontrol sa Raspberry Pi GPIO sa MQTT
Sa nakaraang tutorial tinalakay namin ang tungkol sa MQTT Protocol at na-install ang lokal na server ng MQTT sa aming Raspberry Pi para sa pagkontrol sa GPIO nang lokal. Ngunit ang disbentaha ng lokal na MQTT server ay hindi namin makontrol ang mga GPIO mula sa kahit saan sa mundo, nagbibigay lamang ito ng mga serbisyo nang lokal. Ngunit kung ang MQTT server na ito ay naka-host sa ilang ulap kung gayon ang anumang mga kasangkapan na nakakonekta sa Raspberry Pi ay maaaring kontrolin sa buong mundo.
Dito, sa tutorial na ito, gagamitin namin ang Adafruit IO bilang MQTT broker upang makontrol ang isang AC appliance na konektado sa Raspberry Pi GPIO. Suriin din ang iba pang mga tutorial na Home Automation na kinokontrol ng IoT:
- IOT batay sa Voice Controlled Home Automation na gumagamit ng ESP8266 at Android App
- Kinokontrol ng Smart Phone ang Home Automation Gamit ang Arduino
- Ang IoT batay sa Web na kinokontrol na Home Automation gamit ang PIC Microcontroller at Adafruit IO
- Batay sa IoT sa Web Controlled Home Automation na gumagamit ng Raspberry Pi
- Ang Kinokontrol na Bahay na Kinokontrol ng Boses ng Google Assistant na gumagamit ng DIY Arduino Wi-Fi Shield
Kinakailangan ang Mga Bahagi
- Raspberry Pi na may naka-install na Raspbian Stretch dito.
- Relay Module
- Bombilya
- Jumper Wires
Dito, gagamitin namin ang SSH upang ma-access ang Raspberry Pi sa laptop. Maaari mong gamitin ang koneksyon ng VNC o Remote Desktop sa laptop, o maaaring ikonekta ang iyong Raspberry pi sa isang monitor. Matuto nang higit pa tungkol sa pag-set up ng Raspberry Pi nang walang ulo dito nang walang monitor.
Diagram ng Circuit
Circuit diagram para sa IoT Controlled Home appliances na may MQTT cloud at Raspberry Pi ay simple, ikonekta lamang ang isang bombilya na may relay module sa GPIO pin 35 ng raspberry Pi.
Pag-install ng MQTT Cloud Library sa Raspberry Pi
Dito ginagamit ang platform ng Adafruit IO kasama ang Raspberry Pi bilang MQTT broker. Tulad ng ginamit namin ng platform ng Adafruit IO nang maraming beses sa aming nakaraang mga tutorial na katulad maaari naming itong gamitin sa Raspberry Pi.
Gumawa lamang ng isang account sa platform ng Adafruit IO at gumawa ng isang feed, kung hindi mo alam kung paano gumawa ng feed at ipasadya ang Adafruit dashboard pagkatapos ay sundin ang link.
Matapos gawin ang dashboard, mag-install ng ilang mga aklatan sa Raspberry Pi upang makapagsimula sa MQTT.
1. Una, i-update ang Iyong Pi at Python sa pamamagitan ng pag-isyu ng mga sumusunod na utos
sudo apt-get update sudo apt-get upgrade sudo pip3 install --i-upgrade ang mga setuptools
2. Ngayon, i-install ang mga library ng Rpi.gpio at Adafruit blink gamit ang mga utos sa ibaba
sudo pip3 i-install ang RPI.GPIO sudo pip3 i-install ang adafruit-blinka
3. I-install ang Adafruit IO library gamit ang utos sa ibaba
sudo pip3 i-install ang adafruit-io
4. I-clone ang mga halimbawa ng adafruit mula sa github gamit ang ibaba na utos
git clone https://github.com/adafruit/Adafruit_IO_Python.git
5. Pagkatapos, mag-navigate sa folder ng mga halimbawa sa pamamagitan ng pagpasok ng sumusunod na utos sa terminal:
cd Adafruit_IO_Python / mga halimbawa / pangunahing kaalaman
Kung hindi ka sigurado kung aling direktoryo ang nasa iyo, maaari mo itong suriin sa pamamagitan ng pagpapatakbo ng pwd.
6. Para sa lahat ng mga halimbawa sa folder na ito, kakailanganin mong itakda ang ADAFRUIT_IO_KEY at ADAFRUIT_IO_USERNAME, na maaaring matagpuan mula sa Adafruit dashboard. Tulad ng ipinakita sa ibaba
I-toggle ang pindutan sa dashboard ng Adafruit IO, at dapat mong makita ang sumusunod sa terminal ng iyong Pi.
7. Ngayon, buksan ang file na subscribe.py gamit ang nano editor. I-type ang sumusunod na utos upang buksan ito
sudo nano subscribe.py
Kailangan nating baguhin ang program na ito upang makontrol ang anumang GPIO mula sa dashboard.
Pag-coding ng Paliwanag para sa pagkontrol sa Raspberry Pi GPIO sa MQTT
Una, i-import ang lahat ng kinakailangang mga silid aklatan upang magamit ang mga GPIO pin at Adafruit MQTT client.
i-import ang RPi.GPIO bilang GPIO import sys mula sa Adafruit_IO import MQTTClient
Ngayon, itakda ang mode na GPIO at tukuyin ang LED pin number at itakda bilang output.
GPIO.setmode (GPIO.BOARD) GPIO.setwarnings (Mali) ledPin = 12 GPIO.setup (ledPin, GPIO.OUT)
Susunod, kailangan naming itakda ang key ng AIO at Username na aming natagpuan habang nilikha ang dashboard.
ADAFRUIT_IO_KEY = 'IYONG_AIO_KEY' ADAFRUIT_IO_USERNAME = 'IYONG_AIO_USERNAME'
Ipasok ang pangalan ng feed na ibinigay mo upang i-on at i-off ang ilaw. Dito, ito ay "ilaw".
FEED_ID = 'ilaw'
Ngayon, tukuyin ang isang pagpapaandar na tatawagin kapag magkakaroon ng isang kaganapan. Kaya, mag- e- subscribe kami ng Feed gamit ang client.subscribe (FEED_ID)
def konektado (client): client.subscribe (FEED_ID) print ('Naghihintay para sa feed data…')
Matapos mag-subscribe ang feed, kailangan nating suriin ang bagong halaga at iimbak ito sa isang variable ng payload . Para sa pagpapaandar ng mensahe na ito ay tinatawag na. Kaya, tuwing mayroong "1" na variable ng payload, gawin ang led pin na TAAS at para sa "0" gawin itong LOW.
mensahe ng def (client, feed_id, payload): print ('Feed {0} nakatanggap ng bagong halaga: {1}'. format (feed_id, payload)) kung payload == 1: GPIO.output (ledPin, GPIO.HIGH) iba pa: GPIO.output (ledPin, GPIO.LOW)
Ngayon, lumikha ng isang client ng MQTT upang kumonekta sa platform ng Adafruit IO at ipadala ang mga mensahe pabalik-balik.
client = MQTTClient (ADAFRUIT_IO_USERNAME, ADAFRUIT_IO_KEY) client.on_connect = konektado client.on_disconnect = naka-disconnect
Gayundin, mag-ingat tungkol sa tamang pag-indent sa code na iba ay magpapakita ito ng isang error. Ang kumpletong python code ay ibinibigay sa pagtatapos ng tutorial.
Panghuli, i-save ang programa gamit ang ctrl + x at pindutin ang enter. Ngayon, kailangan naming patakbuhin ang script upang mag-subscribe ang mga mensahe. Kaya Sa terminal type python subscribe.py at pindutin ang enter.
python subscribe.py
Makakakita ka ng isang mensahe Naghihintay Para sa Data ng Feed … tulad ng ipinakita sa ibaba snapshot.
Ngayon, siguraduhin na ang module ng relay ay konektado sa GPIO pin ng Raspberry Pi at pagkatapos ay pumunta sa Adafruit IO dashboard at baguhin ang light feed. Ang bombilya ay dapat na i-on kapag ang "1" ay natanggap at naka-off kapag ang "0" ay natanggap tulad ng ipinapakita sa ibaba.
Sa ganitong paraan maaari naming makontrol ang anumang kasangkapan mula sa kahit saan sa mundo sa pamamagitan ng paggamit ng Raspberry Pi at MQTT cloud