Obsah:
- Krok 1: Monitorování teploty
- Krok 2: Nastavení Cloud4Rpi.io
- Krok 3: Monitorování UPS
- Krok 4: Příprava na „výrobu“
- Krok 5: Nastavení ovládacího panelu
Video: DIY domácí monitorování s RaspberryPi a Cloud4Rpi: 5 kroků
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:21
Jednoho zimního víkendu jsem šel do svého venkovského domu a zjistil, že je tam velká zima. Něco se stalo s elektřinou a jistič RCD jej vypnul a topení také zhaslo. Měl jsem štěstí, že jsem tam přišel, jinak by za několik dní bylo všechno zmrzlé, což je velmi špatné pro potrubí a radiátory.
Měl jsem kolem sebe několik Raspberry Pi a teplotní senzor, tak jsem si řekl - proč nevytvořím jednoduché monitorovací zařízení? Níže uvedené pokyny předpokládají, že máte Raspberry Pi s nastavením Raspbian a síťovým připojením. V mém případě je to Raspberry Pi B+ s Raspbianem (2018–06–27-raspbian-stret-lite).
Krok 1: Monitorování teploty
Jak připojit teplotní senzor DS18B20? Stačí si vygooglit, jak to udělat, a uvidíte spoustu obrázků, jako je tento:
V mém případě jsem měl černý, žlutý a červený vodič. Černá je uzemněná, jde na zemnící kolík, červená je napájení - jde na 3,3 V pin a žlutá je datová - měla by jít na pin GPIO4 s odporem 4,7 kOm připojeným mezi daty a napájením. Poznámka, můžete připojit několik senzorů paralelně (jsou digitální a mají různé adresy), potřebujete pouze jeden odpor. Po připojení senzoru byste měli povolit 1Wire v raspi-config:
sudo raspi-config
Přejděte na 5 možností rozhraní, povolte P7 1-Wire a restartujte počítač.
Poté můžete vyzkoušet, zda vidíte senzor:
sudo modprobe w1-gpiosudo modprobe w1-thermls/sys/bus/w1/devices/
Měli byste vidět něco takového:
pi@vcontrol: ~ $ ls/sys/bus/w1/devices/28–00044eae2dff w1_bus_master1
28–00044eae2dff je naše teplotní čidlo.
Hardware je připraven. Nyní musím nastavit monitorovací část. Potřebuji něco, co by mi ukázalo data a upozornilo mě, pokud je zařízení na chvíli odpojeno nebo není napájení, nebo je nízká teplota. Očividně to nemůže být samotný malinový pi, na internetu by měl být nějaký server nebo služba, která monitoruje moje zařízení.
Mohu vytvořit jednoduchý server, získat hosting a vše nastavit, ale laskavě, nechci. Naštěstí už na to někdo myslel a vytvořil cloud4rpi.io - cloudový ovládací panel pro vaše zařízení.
Krok 2: Nastavení Cloud4Rpi.io
Cloud4Rpi poskytuje službu, která umožňuje vašemu zařízení odesílat a přijímat data pomocí protokolů MQTT nebo HTTP. Mají klientskou knihovnu pro Python, takže použiji Python.
Příklady Pythonu, které jsou součástí služby Cloud4Rpi, již obsahují kód pro teplotní čidlo DS18B20.
Šel jsem tedy na https://cloud4rpi.io, vytvořil si účet a přidal tam nové zařízení. Stránka zařízení má token - řetězec, který identifikuje zařízení a který by měl být zadán v programu, který odesílá data.
Na začátek je vždy dobré aktualizovat správce balíčků a upgradovat balíčky (poznámka: může to trvat hodiny, pokud jste nějakou dobu neaktualizovali):
sudo apt-get update && sudo apt-get upgrade
Poté nainstalujte git, Python a jeho správce balíčků Pip:
sudo apt-get install git python python-pip
Poté nainstalujte knihovnu cloud4rpi Python:
sudo pip install cloud4rpi
Nakonec jsem připraven napsat svůj kontrolní program. Vycházím z příkladu dostupného na
klon git https://github.com/cloud4rpi/cloud4rpi-raspberrypi… cloud4rpicd cloud4rpi
Hlavní soubor programu je control.py - potřebuji jej upravit pro své potřeby. Nejprve upravte program a vložte token:
sudo nano control.py
Najděte řádek DEVICE_TOKEN = '…'] a zadejte tam token zařízení. Poté mohu jednoduše spustit program: Funguje a hlásí teplotu v proměnné RoomTemp:
sudo python control.py
Funguje a hlásí teplotu v proměnné RoomTemp.
Všimněte si, že objeví všechny senzory onewire ds18b20
ds_sensors = ds18b20. DS18B20.find_all ()
a používá první nalezený senzor:
RoomTemp ': {' type ':' numeric ',' bind ': ds_sensors [0] if ds_sensors else None}
Dobře, to bylo snadné, protože ukázkový program má vše, co je požadováno pro práci se senzorem ds18b20 na Raspberry Pi. Nyní musím najít způsob, jak nahlásit stav napájení.
Krok 3: Monitorování UPS
Další věc, kterou chci sledovat, je stav UPS, takže pokud dojde k výpadku napájení, budu o tom vědět, než se vše odpojí.
Mám APC UPS s ovládáním USB, takže jsem rychle googlil a zjistil, že potřebuji apcupsd. https://www.anites.com/2013/09/monitoring-ups.html… Zkoušel jsem to několikrát nainstalovat pomocí apt-get a z různých důvodů mi to nefungovalo. Ukážu, jak jej nainstalovat ze zdrojů.
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
Poté upravím apcupsd.conf tak, aby se připojil k mému UPS přes USB.
sudo nano /etc/apcupsd/apcupsd.conf# #UPSCABLE smart UPSCABLE usb ##UPSTYPE apcsmart #DEVICE/dev/ttyS0 UPSTYPE usb DEVICE
Nyní mohu zapojit USB kabel z UPS do RaspberryPi a vyzkoušet, jestli by se našel UPS.
sudo apctest
Mělo by vám to poskytnout žádné chybové zprávy.
Nyní by měla být spuštěna služba apcupsd:
sudo systemctl start apcupsd
Chcete -li zjistit stav UPS, mohu použít stavový příkaz:
sudo /etc/init.d/apcupsd stav
A výstup by vypadal nějak takto:
APC: 001, 035, 0855DATUM: 2018-10-14 16:55:30 +0300 HOSTNAME: vcontrol VERZE: 3.14.14 (31. května 2016) debian UPSNAME: vcontrol CABLE: USB Cable DRIVER: USB UPS Driver UPSMODE: Stand Alone STARTTIME: 2018-10-14 16:54:28 +0300 MODEL: Back-UPS XS 650CI STATUS: ONLINE LINEV: 238,0 Voltů LOADPCT: 0,0 procenta BCHARGE: 100,0 procenta TIMELEFT: 293,3 minut MBATTCHG: 5 procent MINTIMEL: 3 minuty MAXTIME: 0 Seconds SENSE: Medium LOTRANS: 140,0 Volts HITRANS: 300,0 Volts ALARMDEL: 30 Seconds BATTV: 14,2 Volts LASTXFER: Žádné přenosy od otočení NUMXFERS: 0 TONBATT: 0 Seconds CUMONBATT: 0 Seconds XOFFBATT: N0 A STATAG: 0: 2014-06-10 NOMINV: 230 Voltů NOMBATTV: 12,0 Voltů NOMPOWER: 390 W FIRMWARE: 892. R3. I USB FW: R3 END APC: 2018-10-14 16:55:38 +0300
Potřebuji stav - což je řádek „STATUS:“.
Knihovna Cloud4rpi obsahuje modul „rpy.py“, který vrací systémové parametry Raspberry Pi, jako je název hostitele nebo teplota procesoru. Protože všechny tyto parametry jsou výsledkem spuštění některých příkazů a analýzy výstupu, obsahuje také praktickou funkci „parse_output“, která dělá přesně to, co potřebuji. Takto zjistím svůj 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ÁMÝ'
K odeslání tohoto stavu do cloud4rpi musím deklarovat proměnnou UPSStatus a svázat ji s funkcí ups_status: Nyní mohu spustit svůj program:
variables = {'RoomTemp': {'type': 'numeric', 'bind': ds_sensors [0]}, 'UPSStatus': {'type': 'string', 'bind': ups_status}}
A hned vidím svoji proměnnou na stránce zařízení cloud4rpi.
Krok 4: Příprava na „výrobu“
Všechno funguje a teď musím zařízení připravit do bezobslužného režimu.
Nejprve upravím časové intervaly. Interval dotazování určuje, jak často program kontroluje teplotu a stav UPS - nastavte jej na jednu sekundu.
Výsledky jsou odesílány do cloudu každých 5 minut a diagnostické informace - každou hodinu.
# ConstantsDATA_SENDING_INTERVAL = 300 # s DIAG_SENDING_INTERVAL = 3600 # s POLL_INTERVAL = 1 # s
Když se změní stav UPS - nechci, aby moje zařízení čekalo 5 minut a data odesílám okamžitě. Takže jsem mírně upravil hlavní smyčku a vypadá 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ánek (POLL_INTERVAL) diag_timer -= POLL_INTERVAL data_timer -= POLL_INTERVAL
Testování: spustit skript:
sudo python control.py
A na stránce svého zařízení mohu sledovat stav UPS.
Pokud vypnu napájení UPS, stav se změní za několik sekund, takže vše funguje. Nyní potřebuji spustit apcupsd a můj control.py při spuštění systému. Služba Apcupsd je stará a abych ji spustil na moderním raspbianu, měl bych upravit soubor /etc/init.d/apcupsd přidáním těchto řádků někam nahoru:
### BEGIN INIT INFO # Poskytuje: apcupsd # Required-Start: $ all # Required-Stop: # Default-Start: 2 3 4 5 # Default-Stop: # Short-Description: APC UPS daemon… ### END INIT INFO#
Poté službu aktivujte:
sudo systemctl povolit apcupsd
Poté spusťte službu:
sudo systemctl start apcupsd
Nyní bude apcupsd spuštěno při spuštění systému.
K instalaci control.py jako služby jsem použil dodaný skript service_install.sh:
sudo bash service_install.sh ~/cloud4rpi/control.py
Nyní je služba spuštěna a přežije restart.
Krok 5: Nastavení ovládacího panelu
Cloud4rpi mi umožňuje nastavit ovládací panel pro mé zařízení. Můžete přidat „widgety“a svázat je s proměnnými zařízení.
Moje zařízení poskytuje dvě proměnné pouze pro čtení - RoomTemp a UPSStatus:
variables = {'RoomTemp': {'type': 'numeric', 'bind': ds_sensors [0]}, 'UPSStatus': {'type': 'string', 'bind': ups_status}}
Přidal jsem 3 widgety - číslo pro RoomTemp, text pro UPSStatus a graf pro RoomTemp.
Mohu nastavit upozornění, takže dostanu e -mail, když je teplota mimo specifikovaný rozsah, UPS přejde do režimu offline nebo samotné zařízení neposílá data, když by mělo. Nyní si mohu být jistý, že můj venkovský dům je v pořádku a mohu být upozorněn když je něco špatně, mohu zavolat sousedům a požádat je, aby zkontrolovali, co se děje. Zde je skutečný kód control.py.
Doporučuje:
Robotický podvozek HUNIE pro domácí domácí práce: 6 kroků
Robotický podvozek HUNIE pro domácí domácí práce: Nahoře je moje první stavba robota. Jsem docela šikovný v elektronice, udělal jsem nějaké počítačové programování před třemi desítkami let a hledal jsem nového koníčka, protože RC letadla už nezapadají do mého životního stylu (příliš daleko do terénu). Stavím
Ovládejte domácí spotřebiče přes LoRa - LoRa v domácí automatizaci - Dálkové ovládání LoRa: 8 kroků
Ovládejte domácí spotřebiče přes LoRa | LoRa v domácí automatizaci | Dálkové ovládání LoRa: Ovládejte a automatizujte své elektrické spotřebiče na dlouhé vzdálenosti (kilometry) bez připojení k internetu. To je možné prostřednictvím LoRa! Hej, co se děje, lidi? Akarsh zde od CETech. Tato PCB má také OLED displej a 3 relé, která
Monitorování domácí vlhkosti a teploty: 11 kroků
Monitorování domácí vlhkosti a teploty: Ahoj lidi! Abyste mohli začít tím nejlepším způsobem, malý příběh o projektu. Nedávno jsem promoval a přestěhoval se do Rakouska na svou první pozici inženýra. Země je krásná, ale velmi chladná & v zimě vlhké. Rychle jsem začal
DIY hlasem/internetem ovládaná domácí automatizace a monitorování pomocí ESP8266 a Google Home Mini: 6 kroků
Doma automatizovaná a monitorovaná domácí automatizace a monitorování pomocí ESP8266 a Google Home Mini: Hej !! Po dlouhé přestávce jsem tady, protože všichni musíme dělat něco nudného (práce), jak vydělat. Po všech článcích DOMÁCÍ AUTOMATIZACE, které jsem napsal z BLUETOOTH, IR, Local WIFI, Cloud, tj. Těch obtížných, * NYNÍ * přichází nejjednodušší, ale nejefektivnější
Domácí monitorování Raspberry Pi s Dropboxem: 7 kroků
Domácí monitorování Raspberry Pi s Dropboxem: Tento tutoriál vám ukáže, jak vytvořit jednoduchý a rozšiřitelný domácí monitorovací systém pomocí Raspberry Pi, webové kamery, několika elektrických komponent a vašeho účtu Dropbox. Dokončený systém vám umožní vzdáleně požadovat a prohlížet obrázky z