Tartalomjegyzék:
- 1. lépés: Hőmérsékletfigyelés
- 2. lépés: A Cloud4Rpi.io beállítása
- 3. lépés: UPS felügyelet
- 4. lépés: Felkészülés a „gyártásra”
- 5. lépés: Vezérlőpult beállítása
Videó: DIY házfigyelés a RaspberryPi és a Cloud4Rpi segítségével: 5 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:41
Egy téli hétvégén elmentem a vidéki házamba, és megtudtam, hogy nagyon hideg van. Valami történt az árammal, és az RCD megszakító kikapcsolta, és a fűtés is leállt. Szerencsém volt, hogy odaértem, különben néhány nap alatt minden lefagyott volna, ami nagyon rossz a csöveknek és a radiátoroknak.
Több Raspberry Pi volt a közelben, és egy hőérzékelő, így arra gondoltam - miért nem készítek egy egyszerű felügyeleti eszközt? Az alábbi utasítások feltételezik, hogy Raspberry Pi van Raspbian és hálózati kapcsolattal. Az én esetemben ez a Raspberry Pi B+ Raspbiannal (2018-06-27-raspbian-stretch-lite).
1. lépés: Hőmérsékletfigyelés
Hogyan csatlakoztatható a DS18B20 hőmérséklet -érzékelő? Csak a google -ban, hogyan kell ezt csinálni, és sok ilyen képet fog látni:
Az én esetemben fekete, sárga és piros vezetékek voltak. A fekete földelt, a földelőcsaphoz megy, a piros a tápfeszültség - a 3,3 V -os érintkezőhöz, a sárga pedig az adatokhoz - a GPIO4 tűhöz kell mennie, 4,7 kOm ellenállással az adatok és a tápellátás között. Megjegyzés: több érzékelőt is csatlakoztathat párhuzamosan (digitálisak és különböző címekkel rendelkeznek), csak egy ellenállás szükséges. Az érzékelő csatlakoztatása után engedélyezni kell az 1Wire-t a raspi-configban:
sudo raspi-config
Lépjen az 5 interfész lehetőségre, engedélyezze a P7 1-Wire-t, és indítsa újra.
Ezután tesztelheti, hogy látja -e az érzékelőt:
sudo modprobe w1-gpiosudo modprobe w1-thermls/sys/bus/w1/devices/
Valami ilyesmit kellene látnia:
pi@vcontrol: ~ $ ls/sys/bus/w1/devices/28–00044eae2dff w1_bus_master1
28–00044eae2dff a hőmérséklet -érzékelőnk.
A hardver készen áll. Most be kell állítanom a felügyeleti részt. Szükségem van valamire, ami megmutatja az adatokat, és értesít, ha a készüléket egy időre lekapcsolják, vagy nincs áram, vagy alacsony a hőmérséklet. Nyilvánvaló, hogy ez nem lehet maga a raspberry pi, valami szervernek vagy szolgáltatásnak kell lennie az interneten, amely figyeli a készülékemet.
Létre tudok hozni egy egyszerű szervert, szerzek egy tárhelyet és beállítok mindent, de őszintén, nem akarom. Szerencsére valaki már gondolkodott ezen, és létrehozta a cloud4rpi.io - felhővezérlő panelt az eszközéhez.
2. lépés: A Cloud4Rpi.io beállítása
A Cloud4Rpi olyan szolgáltatást nyújt, amely lehetővé teszi, hogy készüléke adatokat küldjön és fogadjon MQTT vagy HTTP protokollok használatával. Van egy ügyfélkönyvtáruk a Pythonhoz, ezért a Python -ot fogom használni.
A Cloud4Rpi szolgáltatáshoz tartozó Python -példák már tartalmazzák a DS18B20 hőmérséklet -érzékelő kódját.
Így elmentem a https://cloud4rpi.io oldalra, létrehoztam egy fiókot, és hozzáadtam egy új eszközt. Az eszközoldal egy tokent tartalmaz - egy karakterláncot, amely azonosítja az eszközt, és amelyet meg kell adni az adatokat küldő programban.
Először is mindig jó ötlet frissíteni a csomagkezelőt és frissíteni a csomagokat (megjegyzés: órákig is eltarthat, ha nem frissített egy ideig):
sudo apt-get update && sudo apt-get upgrade
Ezután telepítse a git -et, a Python -ot és a csomagkezelőjét, a Pip -et:
sudo apt-get install git python python-pip
Ezután telepítse a cloud4rpi Python könyvtárat:
sudo pip telepítse a cloud4rpi -t
Végül kész vagyok megírni a vezérlőprogramomat. A https://github.com/cloud4rpi/cloud4rpi-raspberrypi címen elérhető példából indulok ki.
git klón https://github.com/cloud4rpi/cloud4rpi-raspberrypi… cloud4rpicd cloud4rpi
A fő programfájl a control.py - módosítanom kell az igényeimhez. Először szerkessze a programot, és illesszen be egy tokent:
sudo nano control.py
Keressen egy sort DEVICE_TOKEN = '…'], és adjon meg egy eszköz tokent. Ezt követően egyszerűen futtathatom a programot: Működik és jelent egy hőmérsékletet a RoomTemp változóban:
sudo python control.py
Működik és jelent egy hőmérsékletet a RoomTemp változóban.
Ne feledje, hogy minden onewire ds18b20 érzékelőt felfedez
ds_sensors = ds18b20. DS18B20.find_all ()
és az első talált érzékelőt használja:
RoomTemp ': {' type ':' numeric ',' bind ': ds_sensors [0] ha ds_sensors else Nincs}
Ok, ez könnyű volt, mert a mintaprogramban minden megtalálható, ami a Raspberry Pi ds18b20 érzékelőjével való működéshez szükséges. Most meg kell találnom az áramellátás jelentésének módját.
3. lépés: UPS felügyelet
A következő dolog, amit felügyelni szeretnék, az UPS állapota, tehát ha áramkimaradás van, tudnom kell róla, mielőtt minden lekapcsol.
Van egy APC UPS -em USB vezérléssel, így gyorsan googlizva megállapítottam, hogy szükségem van apcupsd -re. https://www.anites.com/2013/09/monitoring-ups.html… Többször is megpróbáltam telepíteni az apt-get-en keresztül, és számomra különböző okok miatt nem működött. Megmutatom, hogyan kell telepíteni a forrásokból.
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
Ezután szerkesztem az apcupsd.conf fájlt, hogy USB -n keresztül csatlakozzam az UPS -hez.
sudo nano /etc/apcupsd/apcupsd.conf# #UPSCABLE smart UPSCABLE usb ##UPSTYPE apcsmart #DEVICE/dev/ttyS0 UPSTYPE usb DEVICE
Most csatlakoztathatom az USB -kábelt az UPS -ről a RaspberryPi -hez, és tesztelhetem, hogy megtalálható -e UPS.
sudo apctest
Nem adhat hibaüzenetet.
Most el kell indítani a sevice apcupsd programot:
sudo systemctl indítsa el az apcupsd parancsot
Az UPS állapotának lekérdezéséhez használhatok egy állapotparancsot:
sudo /etc/init.d/apcupsd állapot
És valami ilyesmit adna ki:
APC: 001, 035, 0855DATE: 2018-10-14 16:55:30 +0300 HOSTNAME: vcontrol VERSION: 3.14.14 (2016. május 31.) debian UPSNAME: vcontrol KÁBEL: USB-kábel-meghajtó: USB UPS-illesztőprogram UPSMODE: Egyedül STARTTIME: 2018-10-14 16:54:28 +0300 MODELL: Back-UPS XS 650CI STATUS: ONLINE LINEV: 238.0 Volts LOADPCT: 0.0 százalék BCHARGE: 100.0 százalék IDŐZÁR: 293.3 perc MBATTCHG: 5 százalék MINTIMEL: 3 perc MAXTIME: 0 másodperc ÉRZÉK: Közepes LOTRÁN: 140.0 V HITRÁN: 300.0 Volt RIASZTÁS: 30 másodperc BATTV: 14.2 Volt LASTXFER: Nincs áttétel turnon óta NUMXFERS: 0 TONBATT: 0 másodperc CUMONBATT: 0 másodperc: 2014-06-10 NOMINV: 230 V NOMBATTV: 12,0 V NOMPOWER: 390 Watt FIRMWARE: 892. R3. I USB FW: R3 END APC: 2018-10-14 16:55:38 +0300
Szükségem van egy állapotra - ez az „STATUS:” sor.
A Cloud4rpi könyvtár tartalmaz egy „rpy.py” modult, amely visszaadja a Raspberry Pi rendszerparamétereit, például a gazdagép nevét vagy a processzor hőmérsékletét. Mivel ezek a paraméterek néhány parancs futtatásának és a kimeneti elemzésnek az eredményei, tartalmaz egy praktikus „parse_output” funkciót is, amely pontosan azt teszi, amire szükségem van. Így kaphatom meg az UPS állapotomat:
def ups_status (): result = rpi.parse_output (r'STATUS / s+: / s+(S+) ', [' /etc/init.d/apcupsd ',' status ']) if result: return result else: return 'ISMERETLEN'
Ahhoz, hogy ezt az állapotot elküldhessem a cloud4rpi -nek, deklarálnom kell egy változó UPSStatus állapotot, és hozzá kell kötnem az ups_status függvényemhez: Most már futtathatom a programomat:
variables = {'RoomTemp': {'type': 'numeric', 'bind': ds_sensors [0]}, 'UPSStatus': {'type': 'string', 'bind': ups_status}}
És azonnal látom a változómat a cloud4rpi eszköz oldalán.
4. lépés: Felkészülés a „gyártásra”
Minden működik, és most elő kell készítenem a készüléket felügyelet nélküli üzemmódra.
Először is beállítom az időintervallumokat. A lekérdezési időköz határozza meg, hogy a program milyen gyakran ellenőrzi a hőmérsékletet és az UPS állapotát - állítsa egy másodpercre.
Az eredményeket 5 percenként küldik a felhőbe, a diagnosztikai információkat pedig óránként.
# ÁllandóDATA_SENDING_INTERVAL = 300 # sec DIAG_SENDING_INTERVAL = 3600 # sec POLL_INTERVAL = 1 # sec
Amikor az UPS állapota megváltozik - nem akarom, hogy a készülék 5 percet várjon, és azonnal küldök adatokat. Tehát kissé módosítottam a fő hurkot, és így néz ki:
data_timer = 0diag_timer = 0 prevUPS = 'ONLINE', míg igaz: newUPS = ups_status () if (data_timer <= 0) vagy (newUPS! = prevUPS): device.publish_data () data_timer = DATA_SENDING_INTERVAL prevUPS = newUPS <diag device.publish_diag () diag_timer = DIAG_SENDING_INTERVAL alvás (POLL_INTERVAL) diag_timer -= POLL_INTERVAL data_timer -= POLL_INTERVAL
Tesztelés: futtassa a szkriptet:
sudo python control.py
És megnézhetem az UPS állapotát az eszköz oldalamon.
Ha kikapcsolom az UPS áramellátását, az állapot néhány másodpercen belül megváltozik, tehát minden működik. Most el kell indítanom az apcupsd -t és a control.py -t a rendszer indításakor. Az Apcupsd szolgáltatás régi, és a modern raspbian rendszeren való indításhoz módosítanom kell az /etc/init.d/apcupsd fájlt, hozzáadva ezeket a sorokat valahol a tetején:
### BEGIN INIT INFO # A következőket tartalmazza: apcupsd # Required-Start: $ all # Required-Stop: # Default-Start: 2 3 4 5 # Default-Stop: # Short-Description: APC UPS démon… ### END INIT INFO#
Ezután engedélyezze a szolgáltatást:
sudo systemctl engedélyezze az apcupsd -t
Ezután indítsa el a szolgáltatást:
sudo systemctl indítsa el az apcupsd parancsot
Most az apcupsd elindul a rendszer indításakor.
A control.py szolgáltatásként történő telepítéséhez a mellékelt service_install.sh parancsfájlt használtam:
sudo bash service_install.sh ~/cloud4rpi/control.py
Most a szolgáltatás elindult, és túl kell élnie az újraindítást.
5. lépés: Vezérlőpult beállítása
A Cloud4rpi lehetővé teszi, hogy beállítsak egy vezérlőpanelt az eszközömhöz. Hozzáadhat „widgeteket”, és kötheti őket az eszközváltozókhoz.
A készülékem két olvasható változót biztosít - RoomTemp és UPSStatus:
variables = {'RoomTemp': {'type': 'numeric', 'bind': ds_sensors [0]}, 'UPSStatus': {'type': 'string', 'bind': ups_status}}
Hozzáadtam 3 kütyüt - Szám a RoomTemp számára, Szöveg az UPSStatushoz és egy diagram a RoomTemphez.
Tudok riasztásokat beállítani, ezért e -mailt kapok, ha a hőmérséklet a megadott tartományon kívül esik, az UPS offline állapotba került, vagy maga az eszköz nem küld adatokat, amikor kellene. Most már biztos lehetek abban, hogy a vidéki házam rendben van, és értesítést kaphatok ha valami nincs rendben, akkor felhívhatom a szomszédokat, és megkérhetem őket, hogy ellenőrizzék, mi történik. Itt található a control.py tényleges kódja.
Ajánlott:
Irányítsa a háztartási gépeket az Alexa segítségével az ESP8266 vagy az ESP32 segítségével: 8 lépés
Irányítsa a háztartási gépeket Alexa segítségével az ESP8266 vagy ESP32 segítségével: Hé, mi újság, srácok! Akarsh itt a CETech -től. Ez a projektem segíteni fog az életed megkönnyítésében, és úgy fogsz érezni magad, mint egy király, miután irányítottad a házban lévő eszközöket, csak parancsot adva Alexának. A legfontosabb dolog e
A hőmérséklet figyelése és rögzítése Bluetooth LE és RaspberryPi segítségével: 9 lépés (képekkel)
Hőmérséklet figyelése és rögzítése Bluetooth LE és RaspberryPi segítségével: Ez az útmutató arról szól, hogyan állítsunk össze egy többcsomópontos hőmérséklet-figyelő rendszert Bluetooth LE érzékelő hibával a Blue Radios (BLEHome) és a RaspberryPi 3B segítségével. A Bluetooth LE szabvány fejlesztésének köszönhetően most már könnyen elérhető
Készítsen Apple HomeKit hőmérséklet -érzékelő (DHT22) eszközt RaspberryPI és DHT22 segítségével: 11 lépés
Készítsen egy Apple HomeKit hőmérséklet -érzékelő (DHT22) eszközt RaspberryPI és DHT22 segítségével: olcsó hőmérséklet / páratartalom érzékelőt kerestem, amellyel figyelemmel kísérhetem, mi történik a feltérképezési térben, mivel azt tapasztaltam, hogy tavasszal nagyon nedves volt , és nagyon nedves volt. Ezért kerestem egy elfogadható árú érzékelőt, amivel
Készítsen Apple HomeKit hőmérséklet -érzékelőt (BME280) RaspberryPI és BME280 segítségével: 5 lépés
Készítsen Apple HomeKit hőmérséklet -érzékelőt (BME280) RaspberryPI és BME280 segítségével: Az elmúlt hónapokban az IOT eszközökkel játszottam, és körülbelül 10 különböző érzékelőt telepítettem a házam és a nyaralóm körülményeinek megfigyelésére. És eredetileg az AOSONG DHT22 mérsékelt páratartalom érzékelőt kezdtem használni
Mozgásérzékelő használata a RaspberryPi és a Telegram Bot segítségével: 4 lépés
A mozgásérzékelő használata a RaspberryPi és a Telegram Bot segítségével: Sziasztok. Ebben a bejegyzésben Raspberry Pi táviratbotot fogunk használni PIR (mozgás) érzékelővel