- Tarvittavat komponentit
- Piirikaavio
- MQTT Cloud -kirjastojen asentaminen Raspberry Pi -palveluun
- Koodaus Selitys Raspberry Pi GPIO: n ohjaamiseksi MQTT: llä
Edellisessä opetusohjelmassa olemme keskustelleet MQTT-protokollasta ja asentaneet paikallisen MQTT-palvelimen Raspberry Pi -laitteeseemme GPIO: n paikalliseen ohjaamiseen. Mutta paikallisen MQTT-palvelimen haittana on, että emme voi hallita GPIO: ita mistä päin maailmaa tahansa, vaan se tarjoaa palveluja vain paikallisesti. Mutta jos tätä MQTT-palvelinta isännöidään jossakin pilvessä, kaikkia Raspberry Pi -laitteeseen kytkettyjä laitteita voidaan hallita maailmanlaajuisesti.
Tässä, tässä opetusohjelmassa, käytämme Adafruit IO: ta MQTT-välittäjänä ohjaamaan Raspberry Pi GPIO -laitteeseen kytkettyä verkkolaitetta. Tarkista myös muut IoT-ohjatut kotiautomaation oppaat:
- IOT-pohjainen ääniohjattu kotiautomaatio ESP8266: n ja Android-sovelluksen avulla
- Älypuhelimen ohjaama kodin automaatio Arduinolla
- IoT-pohjainen verkko-ohjattu kotiautomaatio PIC-mikrokontrollerin ja Adafruit IO: n avulla
- IoT-pohjainen verkko-ohjattu kotiautomaatio Raspberry Pi: n avulla
- Google Assistant -pohjainen ääniohjattu kotiautomaatio DIY Arduino Wi-Fi Shield -sovelluksella
Tarvittavat komponentit
- Raspberry Pi, johon on asennettu Raspbian Stretch.
- Releyksikkö
- Polttimo
- Neulalangat
Täällä käytämme SSH: tä päästäksesi Raspberry Pi: lle kannettavalla tietokoneella. Voit käyttää VNC- tai etätyöpöytäyhteyttä kannettavalla tietokoneella tai liittää Raspberry pi -laitteen näyttöön. Lue lisää Raspberry Pi: n asettamisesta ilman päätä täältä ilman näyttöä.
Piirikaavio
Kytkentäkaavio tälle IoT-ohjatulle kodinkoneelle, jossa on MQTT-pilvi ja Raspberry Pi, on yksinkertainen, kytke vain vadelmapiirin GPIO-nastaan 35 relemoduulilla varustettu lamppu.
MQTT Cloud -kirjastojen asentaminen Raspberry Pi -palveluun
Tässä Adafruit IO -alustaa käytetään Raspberry Pi: n kanssa MQTT-välittäjänä. Koska olemme käyttäneet Adafruit IO -alustaa monta kertaa aiemmissa oppaissamme, voimme käyttää sitä myös Raspberry Pi: ssä.
Tee vain tili Adafruit IO -alustalla ja tee syöte, jos et tiedä miten tehdä syötettä ja muokata Adafruit-kojelautaa, seuraa linkkiä.
Kun olet tehnyt kojelaudan, asenna muutama kirjasto Raspberry Pi -palveluun aloittaaksesi MQTT: n.
1. Päivitä ensin Pi ja Python antamalla seuraavat komennot
sudo apt-get update sudo apt-get päivitys sudo pip3 install --upgrade setuptools
2. Asenna nyt Rpi.gpio- ja Adafruit-vilkkumiskirjastot alla olevien komentojen avulla
sudo pip3 asenna RPI.GPIO sudo pip3 asenna adafruit-blinka
3. Asenna Adafruit IO -kirjasto alla olevan komennon avulla
sudo pip3 asenna adafruit-io
4. Kloonaa adafruit-esimerkit githubista alla olevan komennon avulla
git-klooni https://github.com/adafruit/Adafruit_IO_Python.git
5. Siirry sitten esimerkkikansioon kirjoittamalla seuraava komento päätelaitteeseen:
cd Adafruit_IO_Python / esimerkit / perusteet
Jos et ole varma, missä hakemistossa olet, voit tarkistaa tämän suorittamalla pwd.
6. Kaikkien tämän kansion esimerkkien osalta sinun on määritettävä ADAFRUIT_IO_KEY ja ADAFRUIT_IO_USERNAME, jotka löytyvät Adafruit-hallintapaneelista. Kuten alla
Vaihda Adafruit IO -hallintapaneelin painiketta, ja sinun pitäisi nähdä seuraava Pi: n päätelaitteessa.
7. Avaa nyt Subscribe.py- tiedosto nanoeditorilla . Kirjoita seuraava komento avataksesi sen
sudo nano subscribe.py
Meidän on muokattava tätä ohjelmaa hallitsemaan GPIO: ta kojelaudasta.
Koodaus Selitys Raspberry Pi GPIO: n ohjaamiseksi MQTT: llä
Tuo ensin kaikki vaaditut kirjastot, jotta voit käyttää GPIO-nastoja ja Adafruit MQTT -asiakasohjelmaa.
tuo RPi.GPIO GPIO: na tuontijärjestelmiä Adafruit_IO-tuonnista MQTTClient
Aseta nyt GPIO-tila ja määritä LED-pin-numero ja aseta lähtö.
GPIO.setmode (GPIO.BOARD) GPIO.setwarnings (False) ledPin = 12 GPIO.setup (ledPin, GPIO.OUT)
Seuraavaksi meidän on määritettävä AIO-avain ja käyttäjänimi, jotka olemme löytäneet kojelautaa luodessamme.
ADAFRUIT_IO_KEY = 'YOUR_AIO_KEY' ADAFRUIT_IO_USERNAME = 'YOUR_AIO_USERNAME'
Syötä syötteen nimi, jonka olet antanut valon sytyttämiseksi ja sammuttamiseksi. Tässä se on "kevyt".
FEED_ID = 'valo'
Määritä nyt toiminto, jota kutsutaan tapahtuman tapahtuessa. Joten me tilata syötteen käyttämällä client.subscribe (FEED_ID)
def kytketty (asiakas): client.subscribe (FEED_ID) print ('Odottaa syötetietoja…')
Syötteen tilaamisen jälkeen meidän on tarkistettava uusi arvo ja tallennettava se hyötykuormamuuttujaan . Tätä viestiä varten kutsutaan toimintoa. Joten aina, kun hyötykuormamuuttujassa on ”1”, tee led-tappi KORKEAksi ja arvoksi “0” tee se MATALAKSI.
def-viesti (asiakas, syötetunnus, hyötykuorma): tulosta ('Syöttö {0} sai uuden arvon: {1}'. muoto (syötetunnus, hyötykuorma)), jos hyötykuorma == 1: GPIO.output (ledPin, GPIO.HIGH) muu: GPIO.output (ledPin, GPIO.LOW)
Luo nyt MQTT-asiakas, jotta voit muodostaa yhteyden Adafruit IO -alustaan ja lähettää viestejä edestakaisin.
client = MQTTClient (ADAFRUIT_IO_USERNAME, ADAFRUIT_IO_KEY) client.on_connect = yhdistetty client.on_disconnect = katkaistu
Huolehdi myös koodin oikeasta sisennyksestä, muuten se näyttää virheen. Täydellinen python-koodi annetaan opetusohjelman lopussa.
Lopuksi tallenna ohjelma painamalla ctrl + x ja paina Enter. Nyt meidän on suoritettava komentosarja tilataksesi viestit. Joten Päätetyypissä python subscribe.py ja paina Enter.
python subscribe.py
Näet viestin Odottaa syötetietoja … kuten alla oleva tilannekuva näkyy.
Varmista nyt, että relemoduuli on liitetty Raspberry Pi: n GPIO-nastaan, ja siirry sitten Adafruit IO -hallintapaneeliin ja vaihda valonsyöttö. Lamppu pitäisi kääntyä, kun ”1” on vastaanotettu, ja pois päältä, kun ”0” on vastaanotettu, kuten on esitetty alla.
Tällä tavalla voimme hallita mitä tahansa laitetta mistä päin maailmaa tahansa Raspberry Pi: n ja MQTT-pilven avulla