- Būtini komponentai
- Grandinės schema
- „MQTT Cloud Libraries“ diegimas „Raspberry Pi“
- Kodavimas Paaiškinimas, kaip valdyti „Raspberry Pi GPIO“ naudojant MQTT
Ankstesnėje pamokoje aptarėme MQTT protokolą ir įdiegėme vietinį MQTT serverį savo „Raspberry Pi“, kad galėtume valdyti GPIO vietoje. Tačiau vietinio MQTT serverio trūkumas yra tas, kad mes negalime valdyti GPIO iš bet kurios pasaulio vietos, jis teikia paslaugas tik vietoje. Bet jei šis MQTT serveris priglobtas prie kokio nors debesies, visus su „Raspberry Pi“ prijungtus prietaisus galima valdyti visame pasaulyje.
Čia, šioje pamokoje, naudosime „Adafruit IO“ kaip MQTT brokerį, kad valdytume kintamosios srovės prietaisą, prijungtą prie „Raspberry Pi GPIO“. Taip pat patikrinkite kitas „IoT“ valdomas namų automatikos pamokas:
- Balso valdoma namų automatika naudojant IOT, naudojant ESP8266 ir „Android App“
- Išmaniojo telefono valdoma namų automatika naudojant „Arduino“
- DI interneto pagrindu valdoma namų automatika naudojant PIC mikrovaldiklį ir „Adafruit IO“
- DI interneto pagrindu valdoma namų automatika naudojant „Raspberry Pi“
- „Google“ padėjėjo valdoma balsu valdoma namų automatika naudojant „DIY Arduino“ „Wi-Fi Shield“
Būtini komponentai
- „Raspberry Pi“ su joje įdiegta „Raspbian Stretch“.
- Relės modulis
- Lemputė
- Šuolių laidai
Čia naudosime SSH norėdami pasiekti „Raspberry Pi“ nešiojamuoju kompiuteriu. Galite naudoti VNC arba nuotolinio darbalaukio ryšį nešiojamame kompiuteryje arba prijungti „Raspberry pi“ su monitoriumi. Sužinokite daugiau apie „Raspberry Pi“ nustatymą be galvos čia be monitoriaus.
Grandinės schema
Šių „ IoT“ valdomų buitinių prietaisų, turinčių „MQTT“ debesį ir „Raspberry Pi“, schema yra paprasta, tiesiog prijunkite lemputę su relės moduliu ant aviečių Pi GPIO kaiščio 35.
„MQTT Cloud Libraries“ diegimas „Raspberry Pi“
Čia „ Adafruit IO“ platforma naudojama kartu su „Raspberry Pi“ kaip MQTT brokeriu. Panašiai kaip „ Adafruit IO“ platformą naudojome ankstesnėse mokymo programose, ją galime naudoti ir „Raspberry Pi“.
Tiesiog sukurkite paskyrą „Adafruit IO“ platformoje ir sukurkite sklaidos kanalą, jei nežinote, kaip sukurti pašarą ir pritaikyti „Adafruit“ informacijos suvestinę, tada spustelėkite nuorodą.
Atlikę informacijos suvestinę, įdiekite keletą bibliotekų „Raspberry Pi“, kad galėtumėte pradėti naudoti MQTT.
1. Pirmiausia atnaujinkite „Pi“ ir „Python“, išleisdami šias komandas
sudo apt-get update sudo apt-get upgrade sudo pip3 install - atnaujinti setuptools
2. Dabar įdiekite „Rpi.gpio“ ir „Adafruit“ mirksėjimo bibliotekas naudodamiesi žemiau esančiomis komandomis
sudo pip3 įdiekite RPI.GPIO sudo pip3 įdiekite „adafruit-blinka“
3. Įdiekite „Adafruit IO“ biblioteką naudodami žemiau esančią komandą
sudo pip3 įdiekite „adafruit-io“
4. Klonuokite adafruit pavyzdžius iš „github“ naudodami komandą žemiau
„git“ klonas https://github.com/adafruit/Adafruit_IO_Python.git
5. Tada eikite į aplanką pavyzdžiai, įvesdami šią komandą į terminalą:
cd „Adafruit_IO_Python“ / pavyzdžiai / pagrindai
Jei nežinote, kuriame kataloge esate, galite tai patikrinti paleisdami „ pwd“.
6. Visuose šio aplanko pavyzdžiuose turite nustatyti ADAFRUIT_IO_KEY ir ADAFRUIT_IO_USERNAME, kuriuos galite rasti „Adafruit“ informacijos suvestinėje. Kaip parodyta žemiau
Perjunkite „Adafruit IO“ prietaisų skydelio mygtuką ir „Pi“ terminale turėtumėte pamatyti šiuos dalykus.
7. Dabar atidarykite Subscribe.py failą naudodami „ nano“ redaktorių. Įveskite šią komandą, kad ją atidarytumėte
sudo nano subscribe.py
Turime modifikuoti šią programą, kad valdytume bet kurį GPIO iš informacijos suvestinės.
Kodavimas Paaiškinimas, kaip valdyti „Raspberry Pi GPIO“ naudojant MQTT
Pirmiausia importuokite visas reikalingas bibliotekas, kad galėtumėte naudoti GPIO kaiščius ir „Adafruit MQTT“ klientą.
importuoti RPi.GPIO kaip GPIO importuoti sistemas iš „Adafruit_IO“ importuoti „MQTTClient“
Dabar nustatykite GPIO režimą ir apibrėžkite LED kaiščių skaičių ir nustatykite kaip išvestį.
GPIO.setmode (GPIO.BOARD) GPIO.setwarnings (False) ledPin = 12 GPIO.setup (ledPin, GPIO.OUT)
Tada turime nustatyti AIO raktą ir vartotojo vardą, kuriuos radome kurdami informacijos suvestinę.
ADAFRUIT_IO_KEY = 'YOUR_AIO_KEY' ADAFRUIT_IO_USERNAME = 'YOUR_AIO_USERNAME'
Įveskite sklaidos kanalo pavadinimą, kurį nurodėte įjungti ir išjungti šviesą. Čia jis yra „lengvas“.
FEED_ID = 'šviesa'
Dabar apibrėžkite funkciją, kuri bus iškviesta įvykiui įvykus. Taigi, mes prenumeruosime kanalą naudodami „ client.subscribe“ (FEED_ID)
def prijungtas (klientas): client.subscribe (FEED_ID) print ('Laukiama informacijos santraukos…')
Užsiprenumeravę kanalą, turime patikrinti, ar nėra naujos vertės, ir išsaugoti ją naudingosios apkrovos kintamajame. Šiam pranešimui iškviečiama funkcija. Taigi, kai naudingosios apkrovos kintamajame yra „1“, padarykite LED kaištį aukštą, o „0“ - žemą.
def pranešimas (klientas, FEED_ID, naudingoji apkrova): spausdinimo ("tiekimas {0} gavo naują vertę: {1}". formatas (FEED_ID, naudingoji apkrova)) , jei naudingoji == 1: GPIO.output (ledPin, GPIO.HIGH) kitur: GPIO.output („ledPin“, GPIO.LOW)
Dabar sukurkite MQTT klientą, kad galėtumėte prisijungti prie „Adafruit IO“ platformos ir siųsti pranešimus pirmyn ir atgal.
klientas = MQTTClient (ADAFRUIT_IO_USERNAME, ADAFRUIT_IO_KEY) klientas.on_connect = prijungtas klientas.on_disconnect = atjungtas
Taip pat pasirūpinkite tinkama įtrauka kode, nes kitu atveju pasirodys klaida. Pilnas pitono kodas pateikiamas mokymo programos pabaigoje.
Galiausiai išsaugokite programą naudodami „Ctrl“ + x ir paspauskite „Enter“. Dabar, norėdami užsiprenumeruoti pranešimus, turime paleisti scenarijų. Taigi terminale įveskite python subscribe.py ir paspauskite Enter.
python subscribe.py
Pamatysite pranešimą Laukiant kanalo duomenų …, kaip parodyta žemiau esančioje nuotraukoje.
Dabar įsitikinkite, kad relės modulis sujungtas su „Raspberry Pi“ GPIO kaiščiu, tada eikite į „Adafruit IO“ prietaisų skydelį ir pakeiskite šviesos tiekimą. Lemputė turėtų įjungti, kai "1" yra gautas ir išjungiamas, kai "0" yra gauta, kaip parodyta žemiau.
Tokiu būdu mes galime valdyti bet kokį prietaisą iš bet kurios pasaulio vietos naudodami Raspberry Pi ir MQTT cloud