Sisällysluettelo:
- Vaihe 1: Lämpötilan valvonta
- Vaihe 2: Cloud4Rpi.io: n määrittäminen
- Vaihe 3: UPS -valvonta
- Vaihe 4: Valmistautuminen "tuotantoon"
- Vaihe 5: Ohjauspaneelin asentaminen
Video: DIY -talon valvonta RaspberryPi: n ja Cloud4Rpi: n avulla: 5 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:01
Eräänä talviviikonloppuna menin maalaistalooni ja huomasin, että siellä oli hyvin kylmä. Jotain oli tapahtunut sähkön kanssa ja vikavirtasuojakytkin oli sammuttanut sen, ja myös lämmitys katkesi. Olin onnekas, kun tulin sinne, muuten muutamassa päivässä kaikki olisi jäätynyt, mikä on erittäin huono putkille ja pattereille.
Minulla oli useita Raspberry Pi -laitteita ja lämpöanturi, joten ajattelin - miksi en tee yksinkertaista valvontalaitetta? Alla olevissa ohjeissa oletetaan, että sinulla on Raspberry Pi, jossa on Raspbian ja verkkoyhteys. Minun tapauksessani se on Raspberry Pi B+ ja Raspbian (2018-06-27-raspbian-stretch-lite).
Vaihe 1: Lämpötilan valvonta
Kuinka kytkeä DS18B20 -lämpötila -anturi? Googlaamalla miten tämä tehdään, näet paljon tämänkaltaisia kuvia:
Minun tapauksessani minulla oli musta, keltainen ja punainen johto. Musta on maadoitettu, menee maadoitusnastaan, punainen on virta - menee 3,3 voltin nastaan ja keltainen on data - pitäisi mennä GPIO4 -nastaan, jossa 4,7 kOm: n vastus on kytketty datan ja virran välille. rinnakkain (ne ovat digitaalisia ja niillä on eri osoitteet), tarvitset vain yhden vastuksen. Kun olet liittänyt anturin, sinun on otettava 1Wire käyttöön raspi-configissa:
sudo raspi-config
Siirry 5 liitäntävaihtoehtoon, ota P7 1-Wire käyttöön ja käynnistä uudelleen.
Sitten voit testata, näetkö anturin:
sudo modprobe w1-gpiosudo modprobe w1-thermls/sys/bus/w1/devices/
Sinun pitäisi nähdä jotain tällaista:
pi@vcontrol: ~ $ ls/sys/bus/w1/devices/28–00044eae2dff w1_bus_master1
28–00044eae2dff on lämpötila -anturimme.
Laitteisto on valmis. Nyt minun on asennettava seurantaosa. Tarvitsen jotain, joka näyttäisi minulle tiedot ja ilmoittaisi minulle, jos laite on irrotettu hetkeksi tai siinä ei ole virtaa tai lämpötila on alhainen. Ilmeisesti tämä ei voi olla vadelma pi itse, Internetissä pitäisi olla jokin palvelin tai palvelu, joka valvoo laitettani.
Voin luoda yksinkertaisen palvelimen, hankkia isännöinnin ja määrittää kaiken, mutta honely, en halua. Onneksi joku on jo ajatellut tätä ja luonut laitteellesi cloud4rpi.io - pilvipalvelun.
Vaihe 2: Cloud4Rpi.io: n määrittäminen
Cloud4Rpi tarjoaa palvelun, jonka avulla laitteesi voi lähettää ja vastaanottaa tietoja MQTT- tai HTTP -protokollien avulla. Heillä on asiakaskirjasto Pythonille, joten käytän Pythonia.
Cloud4Rpi -palvelun mukana tulevat Python -esimerkit sisältävät jo koodin DS18B20 -lämpötila -anturille.
Joten menin osoitteeseen https://cloud4rpi.io, loin tilin ja lisäsin uuden laitteen sinne. Laitesivulla on tunnus - merkkijono, joka tunnistaa laitteen ja joka on määritettävä tietoja lähettävässä ohjelmassa.
Aluksi on aina hyvä päivittää paketinhallinta ja päivittää paketit (huomaa: voi kestää tunteja, jos et ole päivittänyt jonkin aikaa):
sudo apt-get update && sudo apt-get update
Asenna sitten git, Python ja sen paketinhallinta Pip:
sudo apt-get install git python python-pip
Asenna sitten cloud4rpi Python -kirjasto:
sudo pip asenna cloud4rpi
Lopuksi olen valmis kirjoittamaan ohjausohjelmani. Aloitan esimerkistä, joka on saatavilla osoitteessa
git klooni https://github.com/cloud4rpi/cloud4rpi-raspberrypi… cloud4rpicd cloud4rpi
Pääohjelmatiedosto on control.py - minun on muokattava sitä tarpeitani varten. Muokkaa ensin ohjelmaa ja liitä merkki:
sudo nano control.py
Etsi rivi DEVICE_TOKEN = '…'] ja määritä siellä laitteen tunnus. Sen jälkeen voin yksinkertaisesti suorittaa ohjelman: Se toimii ja ilmoittaa lämpötilan RoomTemp -muuttujassa:
sudo python control.py
Se toimii ja ilmoittaa RoomTemp -muuttujan lämpötilan.
Huomaa, että se löytää kaikki onewire ds18b20 -anturit
ds_sensors = ds18b20. DS18B20.find_all ()
ja käyttää ensimmäistä löydettyä anturia:
RoomTemp ': {' type ':' numeric ',' bind ': ds_sensors [0] jos ds_sensors else Ei mitään}
Ok, se oli helppoa, koska näyteohjelmassa on kaikki mitä tarvitaan Raspberry Pi -laitteen ds18b20 -anturin kanssa työskentelyyn. Nyt minun on löydettävä tapa ilmoittaa virran tila.
Vaihe 3: UPS -valvonta
Seuraava asia, jota haluan seurata, on UPS -tila, joten jos sähkökatkos tulee, tiedän siitä ennen kuin kaikki katkeaa.
Minulla on APC UPS USB -ohjauksella, joten googletin nopeasti ja huomasin, että tarvitsen apcupsd. https://www.anites.com/2013/09/monitoring-ups.html… Yritin useita kertoja asentaa sen apt-getin kautta, mutta se ei toiminut minulle useista syistä. Näytän kuinka asentaa se lähteistä.
wget https://sourceforge.net/projects/apcupsd/files/ap…tar xvf apcupsd-3.14.14.tar.gz cd apcupsd-3.14.14./configure --enable-usb sudo make sudo make install
Sitten muokkaan apcupsd.confia yhdistämään UPS -laitteeni USB -liitännän kautta.
sudo nano /etc/apcupsd/apcupsd.conf# #UPSCABLE smart UPSCABLE usb ##UPSTYPE apcsmart #DEVICE/dev/ttyS0 UPSTYPE usb DEVICE
Nyt voin liittää USB -kaapelin UPS: stä RaspberryPiin ja testata, löytyisikö UPS.
sudo apctest
Sen ei pitäisi antaa sinulle virheilmoituksia.
Nyt palvelun apcupsd pitäisi käynnistää:
sudo systemctl käynnistä apcupsd
UPS: n tilan salaamiseen voin käyttää tilakomentoa:
sudo /etc/init.d/apcupsd -tila
Ja se antaisi jotain tällaista:
APC: 001, 035, 0855PÄIVÄMÄÄRÄ: 2018-10-14 16:55:30 +0300 HOSTNAME: vcontrol VERSIO: 3.14.14 (31. toukokuuta 2016) debian UPSNAME: vcontrol KAAPELI: USB-kaapeliohjain: USB UPS -ohjaimen UPSMODE: Yksin STARTTIME: 2018-10-14 16:54:28 +0300 MALLI: Back-UPS XS 650CI TILA: ONLINE LINEV: 238.0 volttia LOADPCT: 0.0 Prosentti BCHARGE: 100.0 Prosentti AIKA: 293.3 minuuttia MBATTCHG: 5 prosenttia MINTIMEL: 3 minuuttia MAXTIME: 0 sekuntia SENSE: Keskikokoiset LOTRANIT: 140,0 volttia HITRANS: 300,0 volttia HÄLYTYS: 30 sekuntia BATTV: 14,2 volttia LASTXFER: Ei siirtoja vuoron jälkeen NUMXFERS: 0 TONBATT: 0 sekuntia CUMONBATT: 0 sekuntia XOFFBATT: N: A 0ATAT2400: 2014-06-10 NOMINV: 230 volttia NOMBATTV: 12,0 volttia TEHO: 390 wattia FIRMWARE: 892. R3. I USB FW: R3 END APC: 2018-10-14 16:55:38 +0300
Tarvitsen tilan - joka on "TILA:" -rivi.
Cloud4rpi -kirjasto sisältää moduulin rpy.py, joka palauttaa Raspberry Pi -järjestelmän parametrit, kuten isäntänimen tai suorittimen lämpötilan. Koska kaikki nämä parametrit ovat seurausta joidenkin komentojen suorittamisesta ja tuloksen tulostuksesta, se sisältää myös kätevän "parse_output" -toiminnon, joka tekee juuri sen, mitä tarvitsen. Näin saan UPS -tilani:
def ups_status (): result = rpi.parse_output (r'STATUS / s+: / s+(S+) ', [' /etc/init.d/apcupsd ',' status ']) if result: return result else: return 'TUNTEMATON'
Jotta voin lähettää tämän tilan cloud4rpi: lle, minun on ilmoitettava muuttuja UPSStatus ja sitottava se ups_status -funktiooni: Nyt voin suorittaa ohjelman:
muuttujat = {'RoomTemp': {'type': 'numeric', 'bind': ds_sensors [0]}, 'UPSStatus': {'type': 'string', 'bind': ups_status}}
Ja näen muuttujan heti cloud4rpi -laitesivulla.
Vaihe 4: Valmistautuminen "tuotantoon"
Kaikki toimii, ja nyt minun on valmisteltava laite valvomattomaan tilaan.
Aluksi aion säätää aikavälejä. Kyselyväli määrittää, kuinka usein ohjelma tarkistaa lämpötilan ja UPS -tilan - aseta se sekuntiin.
Tulokset lähetetään pilveen 5 minuutin välein ja diagnostiikkatiedot tunnin välein.
# VakiotDATA_SENDING_INTERVAL = 300 # s DIAG_SENDING_INTERVAL = 3600 # s POLL_INTERVAL = 1 # s
Kun UPS -tila muuttuu - en halua laitteeni odottavan 5 minuuttia ja lähetän tiedot välittömästi. Joten olen hieman muuttanut pääsilmukkaa ja se näyttää tältä:
data_timer = 0diag_timer = 0 prevUPS = 'ONLINE', kun taas True: newUPS = ups_status () if (data_timer <= 0) tai (newUPS! = prevUPS): device.publish_data () data_timer = DATA_SENDING_INTERVAL prevUPS = newUPS <diag device.publish_diag () diag_timer = DIAG_SENDING_INTERVAL lepotila (POLL_INTERVAL) diag_timer -= POLL_INTERVAL data_timer -= POLL_INTERVAL
Testaus: suorita komentosarja:
sudo python control.py
Ja voin katsoa UPS: n tilaa laitesivultani.
Jos sammutan UPS -virran, tila muuttuu muutamassa sekunnissa, joten kaikki toimii. Nyt minun on käynnistettävä apcupsd ja control.py järjestelmän käynnistyksen yhteydessä. Apcupsd -palvelu on vanha ja aloittaakseni sen nykyaikaisella raspbianilla, minun pitäisi muokata /etc/init.d/apcupsd -tiedostoa lisäämällä nämä rivit jonnekin yläreunaan:
### BEGIN INIT INFO # Tarjoaa: apcupsd # Required-Start: $ all # Required-Stop: # Default-Start: 2 3 4 5 # Default-Stop: # Short-Description: APC UPS daemon… ### END INIT TIEDOT#
Ota sitten palvelu käyttöön:
sudo systemctl ottaa apcupsd käyttöön
Käynnistä sitten palvelu:
sudo systemctl käynnistä apcupsd
Nyt apcupsd käynnistetään järjestelmän käynnistyksen yhteydessä.
Asentamalla control.py palveluksi käytin mukana toimitettua service_install.sh -komentosarjaa:
sudo bash service_install.sh ~/cloud4rpi/control.py
Nyt palvelu on aloitettu ja se selviää uudelleenkäynnistyksestä.
Vaihe 5: Ohjauspaneelin asentaminen
Cloud4rpi antaa minun määrittää ohjauspaneelin laitteelleni. Voit lisätä widgettejä ja sitoa ne laitemuuttujiin.
Laitteessani on kaksi vain luku -muuttujaa - RoomTemp ja UPSStatus:
muuttujat = {'RoomTemp': {'type': 'numeric', 'bind': ds_sensors [0]}, 'UPSStatus': {'type': 'string', 'bind': ups_status}}
Lisäsin 3 widgettiä - RoomTempin numero, UPSStatusin teksti ja RoomTempin kaavion.
Voin asettaa hälytyksiä, joten saan sähköpostiviestin, kun lämpötila on määritetyn alueen ulkopuolella, UPS siirtyi offline -tilaan tai laite ei itse lähetä tietoja silloin, kun sen pitäisi olla. kun jotain on vialla, voin soittaa naapureille ja pyytää heitä tarkistamaan, mitä tapahtuu. Tässä on control.py: n todellinen koodi.
Suositeltava:
Lämpötilan ja kosteuden valvonta NODE MCU: n ja BLYNK: n avulla: 5 vaihetta
Lämpötilan ja kosteuden valvonta NODE MCU: n ja BLYNK: n avulla: Hei kaverit Tässä opetusohjelmassa opimme, kuinka saada ilmakehän lämpötila ja kosteus käyttämällä DHT11-lämpötila- ja kosteusanturia Node MCU- ja BLYNK-sovellusten avulla
Huoneen lämpötilan ja kosteuden valvonta ESP32- ja AskSensors Cloud -palvelun avulla: 6 vaihetta
Huonelämpötilan ja -kosteuden valvonta ESP32- ja AskSensors Cloud -palvelun avulla: Tässä opetusohjelmassa opit valvomaan huoneesi tai työpöytäsi lämpötilaa ja kosteutta käyttämällä DHT11- ja ESP32 -laitteita, jotka on yhdistetty pilveen. Tekniset tiedot: DHT11 -anturi pystyy mittaamaan lämpötilan
Lämpötilan valvonta MCP9808: n ja Raspberry Pi: n avulla: 4 vaihetta
Lämpötilan valvonta MCP9808: n ja Raspberry Pi: n avulla: MCP9808 on erittäin tarkka digitaalinen lämpötila -anturi ± 0,5 ° C I2C minimoduuli. Ne on varustettu käyttäjän ohjelmoitavilla rekistereillä, jotka helpottavat lämpötilan tunnistamista. Korkean tarkkuuden lämpötila-anturista MCP9808 on tullut teollisuus
DHT -lämpötilan ja kosteuden valvonta ESP8266: n ja AskSensors IoT -alustan avulla: 8 vaihetta
DHT -lämpötilan ja -kosteuden valvonta ESP8266: n ja AskSensors IoT -alustan avulla: Aiemmassa ohjeessa esittelin vaiheittaisen oppaan ESP8266 nodeMCU: n ja AskSensors IoT -alustan käytön aloittamiseksi. solmuun MCU. DHT11 on yleisesti käytetty lämpötila ja kosteus
DIY -ääni-/Internet -ohjattu kodin automaatio ja valvonta ESP8266: n ja Google Home Minin avulla: 6 vaihetta
DIY -ääni-/Internet -ohjattu kodin automaatio ja valvonta ESP8266: n ja Google Home Minin avulla: Hei !! Pitkän tauon jälkeen olen täällä, koska meidän kaikkien on tehtävä jotain tylsää (työtä) ansaitaksemme. Kaikkien HOME AUTOMATION -artikkelien jälkeen, jotka olen kirjoittanut BLUETOOTH, IR, Local WIFI, Cloud eli vaikeista, * NYT * tulee helpoin mutta tehokkain