Obsah:
- Krok 1: Monitorovanie teploty
- Krok 2: Nastavenie Cloud4Rpi.io
- Krok 3: Monitorovanie UPS
- Krok 4: Príprava na „výrobu“
- Krok 5: Nastavenie ovládacieho panela
Video: DIY monitorovanie domu s RaspberryPi a Cloud4Rpi: 5 krokov
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:58
Jedného zimného víkendu som išiel do svojho vidieckeho domu a zistil som, že je tam veľká zima. Niečo sa stalo s elektrickou energiou a istič RCD ho vypol a taktiež sa vyplo kúrenie. Mal som šťastie, že som tam prišiel, inak by o niekoľko dní bolo všetko zmrazené, čo je veľmi zlé pre potrubia a radiátory.
Mal som okolo niekoľko Raspberry Pi a tepelný senzor, tak som si povedal - prečo nevyrobím jednoduché monitorovacie zariadenie? Nasledujúce pokyny predpokladajú, že máte Raspberry Pi s nastavením Raspbian a sieťové pripojenie. V mojom prípade je to Raspberry Pi B+ s Raspbian (2018–06–27-raspbian-stret-lite).
Krok 1: Monitorovanie teploty
Ako pripojiť snímač teploty DS18B20? Stačí si vygoogliť, ako to urobiť, a uvidíte veľa podobných obrázkov:
V mojom prípade som mal čierne, žlté a červené drôty. Čierna je uzemnená, ide na uzemňovací kolík, červená je napájaná - ide na 3,3 V pin a žltá je na dáta - mala by ísť na pin GPIO4 s odporom 4,7 kOm prepojeným medzi dátami a napájaním. Poznámka, môžete pripojiť niekoľko senzorov paralelne (sú digitálne a majú rôzne adresy), potrebujete iba jeden odpor. Po pripojení senzora by ste mali povoliť 1Wire v raspi-config:
sudo raspi-config
Prejdite na 5 možností rozhrania, povoľte 1-Wire P7 a reštartujte počítač.
Potom môžete vyskúšať, či vidíte senzor:
sudo modprobe w1-gpiosudo modprobe w1-thermls/sys/bus/w1/devices/
Mali by ste vidieť niečo také:
pi@vcontrol: ~ $ ls/sys/bus/w1/devices/28–00044eae2dff w1_bus_master1
28–00044eae2dff je náš teplotný senzor.
Hardvér je pripravený. Teraz musím nastaviť monitorovaciu časť. Potrebujem niečo, čo by mi ukázalo údaje a upozornilo ma, ak je zariadenie na chvíľu odpojené alebo nie je napájané, alebo je nízka teplota. Očividne to nemôže byť samotný malinový pi, na internete by mal byť nejaký server alebo služba, ktorá monitoruje moje zariadenie.
Môžem vytvoriť jednoduchý server, získať hosting a nastaviť všetko, ale úprimne povedané, nechcem. Našťastie už na to niekto myslel a vytvoril cloud4rpi.io - ovládací panel cloudu pre vaše zariadenie.
Krok 2: Nastavenie Cloud4Rpi.io
Cloud4Rpi poskytuje službu, ktorá umožňuje vášmu zariadeniu odosielať a prijímať údaje pomocou protokolov MQTT alebo HTTP. Majú klientsku knižnicu pre Python, takže použijem Python.
Príklady Pythonu, ktoré sa dodávajú so službou Cloud4Rpi, už obsahujú kód pre snímač teploty DS18B20.
Išiel som teda na https://cloud4rpi.io, vytvoril som si účet a pridal tam nové zariadenie. Stránka zariadenia obsahuje token - reťazec, ktorý identifikuje zariadenie a ktorý by mal byť zadaný v programe, ktorý odosiela údaje.
Na začiatok je vždy dobré aktualizovať správcu balíkov a aktualizovať balíky (poznámka: môže to trvať hodiny, pokiaľ ste chvíľu neaktualizovali):
sudo apt-get update && sudo apt-get upgrade
Potom nainštalujte git, Python a jeho správcu balíkov Pip:
sudo apt-get install git python python-pip
Potom nainštalujte knižnicu cloud4rpi Python:
sudo pip install cloud4rpi
Nakoniec som pripravený napísať svoj riadiaci program. Vychádzam z príkladu, ktorý je k dispozícii na
git klon https://github.com/cloud4rpi/cloud4rpi-raspberrypi… cloud4rpicd cloud4rpi
Hlavný programový súbor je control.py - potrebujem ho upraviť pre svoje potreby. Najprv upravte program a prilepte token:
sudo nano control.py
Nájdite riadok DEVICE_TOKEN = '…'] a zadajte tam token zariadenia. Potom môžem jednoducho spustiť program: Funguje a hlási teplotu v premennej RoomTemp:
sudo python control.py
Funguje a hlási teplotu v premennej RoomTemp.
Všimnite si toho, že objavuje všetky snímače onewire ds18b20
ds_sensors = ds18b20. DS18B20.find_all ()
a používa prvý nájdený senzor:
RoomTemp ': {' type ':' numeric ',' bind ': ds_sensors [0] if ds_sensors else None}
Ok, to bolo jednoduché, pretože ukážkový program má všetko, čo je potrebné pre prácu so senzorom ds18b20 na Raspberry Pi. Teraz musím nájsť spôsob, ako nahlásiť stav napájania.
Krok 3: Monitorovanie UPS
Ďalšia vec, ktorú chcem monitorovať, je stav UPS, takže ak dôjde k výpadku napájania, budem o tom vedieť skôr, ako sa všetko odpojí.
Mám UPS APC s USB ovládaním, tak som rýchlo googlil a zistil som, že potrebujem apcupsd. https://www.anites.com/2013/09/monitoring-ups.html… Skúšal som to niekoľkokrát nainštalovať pomocou apt-get a nefungovalo mi to z rôznych dôvodov. Ukážem, ako ho nainštalovať zo zdrojov.
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
Potom upravím apcupsd.conf, aby sa pripojil k môjmu UPS cez usb.
sudo nano /etc/apcupsd/apcupsd.conf# #UPSCABLE smart UPSCABLE usb ##UPSTYPE apcsmart #DEVICE/dev/ttyS0 UPSTYPE usb DEVICE
Teraz môžem zapojiť USB kábel z UPS do RaspberryPi a otestovať, či by sa našiel UPS.
sudo apctest
Nemalo by vám to zobrazovať žiadne chybové správy.
Teraz by sa malo začať so správou apcupsd:
sudo systemctl start apcupsd
Na zisťovanie stavu UPS môžem použiť príkaz stavu:
sudo /etc/init.d/apcupsd stav
A výstup by bol asi takýto:
APC: 001, 035, 0855DÁTUM: 2018-10-14 16:55:30 +0300 HOSTNAME: vcontrol VERZIA: 3.14.14 (31. mája 2016) debian UPSNAME: vcontrol KÁBEL: USB KABELOVÝ OVLADAČ: USB ovládač UPS UPSMODE: Samostatný STARTTIME: 2018-10-14 16:54:28 +0300 MODEL: Back-UPS XS 650CI STATUS: ONLINE LINEV: 238,0 Volts LOADPCT: 0,0 Percent BCHARGE: 100,0 Percent TIMELEFT: 293,3 Minutes MBATTCHG: 5 Percent MINTIMEL: 3 Minutes MAXTIME: 0sekundový SENSE: Stredné LOTRANY: 140,0 Voltov HITRANY: 300,0 Voltov ALARMDEL: 30 sekúnd BATTV: 14,2 Voltov LASTXFER: Žiadne prenosy od obratu NUMXFERS: 0 TONBATT: 0 Sekundy CUMONBATT: 0 Sekundy XOFFBATT: N0 A STATAG: 0: 2014-06-10 NOMINV: 230 Voltov NOMBATTV: 12,0 Voltov NOMPOWER: 390 Wattov FIRMWARE: 892. R3. I USB FW: R3 END APC: 2018-10-14 16:55:38 +0300
Potrebujem stav - čo je riadok „STAV:“.
Knižnica Cloud4rpi obsahuje modul „rpy.py“, ktorý vracia systémové parametre Raspberry Pi, ako je názov hostiteľa alebo teplota procesora. Pretože všetky tieto parametre sú výsledkom spustenia niektorých príkazov a analýzy výstupu, obsahuje tiež praktickú funkciu „parse_output“, ktorá robí presne to, čo potrebujem. Takto získate stav UPS:
def ups_status (): result = rpi.parse_output (r'STATUS / s+: / s+( S+) ', [' /etc/init.d/apcupsd ',' status ']) if result: return result else: return „NEZNÁMY“
Na odoslanie tohto stavu na cloud4rpi musím deklarovať premennú UPSStatus a previazať ju s mojou funkciou ups_status: Teraz môžem spustiť svoj program:
variables = {'RoomTemp': {'type': 'numeric', 'bind': ds_sensors [0]}, 'UPSStatus': {'type': 'string', 'bind': ups_status}}
A svoju premennú môžem okamžite vidieť na stránke zariadenia cloud4rpi.
Krok 4: Príprava na „výrobu“
Všetko funguje a teraz musím pripraviť svoje zariadenie na bezobslužný režim.
Na začiatok upravím časové intervaly. Interval hlasovania určuje, ako často program kontroluje teplotu a stav UPS - nastavte ho na jednu sekundu.
Výsledky sa odosielajú do cloudu každých 5 minút a diagnostické informácie - každú hodinu.
# ConstantsDATA_SENDING_INTERVAL = 300 # s DIAG_SENDING_INTERVAL = 3600 # s POLL_INTERVAL = 1 # s
Keď sa zmení stav UPS - nechcem, aby moje zariadenie čakalo 5 minút a okamžite odosielam údaje. Takže som mierne upravil hlavnú slučku a vyzerá to takto:
data_timer = 0diag_timer = 0 prevUPS = 'ONLINE' while True: newUPS = ups_status () if (data_timer <= 0) or (newUPS! = prevUPS): device.publish_data () data_timer = DATA_SENDING_INTERVAL prevUPS = newUPS if diag_timer < device.publish_diag () diag_timer = DIAG_SENDING_INTERVAL spánok (POLL_INTERVAL) diag_timer -= POLL_INTERVAL data_timer -= POLL_INTERVAL
Testovanie: spustite skript:
sudo python control.py
A môžem sledovať stav UPS na stránke svojho zariadenia.
Ak vypnem napájanie UPS, stav sa zmení za niekoľko sekúnd, takže všetko funguje. Teraz musím pri štarte systému spustiť apcupsd a moje control.py. Služba Apcupsd je stará a aby som ju spustil na modernom raspbiane, mal by som zmeniť súbor /etc/init.d/apcupsd pridaním týchto riadkov niekde hore:
### BEGIN INIT INFO # Poskytuje: apcupsd # Požadovaný štart: $ all # Požadovaný stop: # Predvolený štart: 2 3 4 5 # Predvolené zastavenie: # Krátky popis: APC démon UPS … ### END INIT INFO#
Potom povoľte službu:
sudo systemctl povoliť apcupsd
Potom spustite službu:
sudo systemctl start apcupsd
Teraz sa apcupsd spustí pri spustení systému.
Na nainštalovanie control.py ako služby som použil dodaný skript service_install.sh:
sudo bash service_install.sh ~/cloud4rpi/control.py
Teraz je služba spustená a musí prežiť reštart.
Krok 5: Nastavenie ovládacieho panela
Cloud4rpi mi umožňuje nastaviť ovládací panel pre moje zariadenie. Môžete pridať „miniaplikácie“a prepojiť ich s premennými zariadenia.
Moje zariadenie ponúka dve premenné iba na čítanie - RoomTemp a UPSStatus:
variables = {'RoomTemp': {'type': 'numeric', 'bind': ds_sensors [0]}, 'UPSStatus': {'type': 'string', 'bind': ups_status}}
Pridal som 3 widgety - číslo pre RoomTemp, text pre UPSStatus a graf pre RoomTemp.
Môžem nastaviť upozornenia, takže dostanem e -mail, keď je teplota mimo špecifikovaného rozsahu, UPS sa prepne do režimu offline alebo samotné zariadenie neposiela údaje, keď by malo. Teraz si môžem byť istý, že môj vidiecky dom je v poriadku a môžem byť upozornený keď niečo nie je v poriadku, môžem zavolať susedom a požiadať ich, aby skontrolovali, čo sa deje. Tu je skutočný kód control.py.
Odporúča:
Ubidots + ESP32- Prediktívne monitorovanie stroja: 10 krokov
Ubidots + ESP32- Prediktívne monitorovanie strojov: Prediktívna analýza vibrácií a teploty stroja vytváraním e-mailových udalostí a záznamom vibrácií v hárku Google pomocou Ubidots. Prediktívna údržba a monitorovanie stavu stroja Nárast novej technológie, tj internetu vecí, ťažkého priemyslu
Arduino, monitorovanie otvárania dverí prostredníctvom Gmailu: 6 krokov
Arduino, monitorovanie otvárania dverí prostredníctvom Gmailu: V tomto návode vám ukážem, ako zistiť udalosť otvárania dverí a odoslať upozornenie prostredníctvom Gmailu pomocou Arduino Uno. Ak ste začiatočník, môžete sa dozvedieť viac o wifi a senzore v Arduino - návody na WiFi a Arduino - senzor dverí. Poďme
Monitorovanie práčky/sušičky bielizne s ESP8266 a senzorom zrýchlenia: 6 krokov
Monitorovanie práčky/sušičky bielizne S ESP8266 a senzorom akcelerácie: Práčka/sušička bielizne je v suteréne a vy do nej spravidla vložíte hromadu oblečenia a potom sa zamestnáte vo svojej ďalšej práci v domácnosti. Prehliadate oblečenie, ktoré zostalo rozmočené a absorbujúce sa v suteréne vášho stroja
Monitorovanie teploty a vlhkosti pomocou NODE MCU A BLYNK: 5 krokov
Monitorovanie teploty a vlhkosti pomocou NODE MCU A BLYNK: Ahoj, priatelia V tomto návode sa naučíme, ako získať teplotu a vlhkosť atmosféry pomocou snímača teploty a vlhkosti DHT11 pomocou aplikácie Node MCU a BLYNK
Monitorovanie zeleného domu s IOT: 5 krokov
Monitorovanie zeleného domu pomocou IOT: Pokiaľ ide o poľnohospodárstvo, monitorovanie teploty & vlhkosť rastlín je dôležitým faktorom ich prežitia. V súčasnosti ľudia používajú teplomery pripevnené v skleníku, aby poľnohospodári mohli merať teplotu. Táto manuálna aplikácia však