Kazalo:
- 1. korak: Nadzor temperature
- 2. korak: Nastavitev Cloud4Rpi.io
- 3. korak: Nadzor UPS
- 4. korak: Priprava na "proizvodnjo"
- 5. korak: Nastavitev nadzorne plošče
Video: Domači nadzor doma z RaspberryPi in Cloud4Rpi: 5 korakov
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:04
Nekega zimskega vikenda sem šel na svojo podeželsko hišo in ugotovil, da je tam zelo hladno. Nekaj se je zgodilo z elektriko in RCD ga je izklopil, ogrevanje pa je tudi izginilo. Imel sem srečo, da sem prišel tja, sicer bi bilo v nekaj dneh vse zmrznjeno, kar je zelo slabo za cevi in radiatorje.
V bližini sem imel več Raspberry Pi in termični senzor, zato sem pomislil - zakaj ne bi naredil preproste nadzorne naprave? Spodnja navodila predvidevajo, da imate Raspberry Pi z nastavljeno Raspbian in omrežno povezavo. V mojem primeru je to Raspberry Pi B+ z Raspbian (2018–06–27-raspbian-stretch-lite).
1. korak: Nadzor temperature
Kako priključiti temperaturni senzor DS18B20? Samo poiščite, kako to storite, in videli boste veliko podobnih slik:
V mojem primeru sem imel črne, rumene in rdeče žice. Črna je ozemljena, gre na ozemljitveni zatič, rdeča za napajanje - preide na 3.3v pin, rumena pa za podatke - bi morala iti na pin GPIO4, z uporom 4,7 kOm med podatki in napajanjem. vzporedno (digitalni so in imajo različne naslove) potrebujete le en upor. Ko priključite senzor, morate v raspi-config omogočiti 1Wire:
sudo raspi-config
Pojdite na 5 možnosti vmesnika, omogočite P7 1-Wire in znova zaženite.
Nato lahko preizkusite, ali vidite senzor:
sudo modprobe w1-gpiosudo modprobe w1-thermls/sys/bus/w1/devices/
Morali bi videti nekaj takega:
pi@vcontrol: ~ $ ls/sys/bus/w1/devices/28–00044eae2dff w1_bus_master1
28–00044eae2dff je naš temperaturni senzor.
Strojna oprema je pripravljena. Zdaj moram nastaviti nadzorni del. Potrebujem nekaj, kar bi mi pokazalo podatke in me obvestilo, če je naprava za nekaj časa odklopljena ali ni električne energije ali je temperatura nizka. Očitno to ne more biti malinovo pi, sam internetni strežnik ali storitev bi morala spremljati mojo napravo.
Lahko ustvarim preprost strežnik, dobim gostovanje in vse nastavim, ampak iskreno, nočem. Na srečo je o tem že kdo razmišljal in ustvaril cloud4rpi.io - nadzorno ploščo v oblaku za vašo napravo.
2. korak: Nastavitev Cloud4Rpi.io
Cloud4Rpi ponuja storitev, ki vaši napravi omogoča pošiljanje in sprejemanje podatkov z uporabo protokolov MQTT ali HTTP. Imajo knjižnico odjemalcev za Python, zato bom uporabil Python.
Primeri Pythona, ki so priloženi storitvi Cloud4Rpi, že vsebujejo kodo za senzor temp. DS18B20.
Tako sem šel na https://cloud4rpi.io, ustvaril račun in tam dodal novo napravo. Na strani naprave je žeton - niz, ki identificira napravo, in ga je treba navesti v programu, ki pošilja podatke.
Za začetek je vedno dobro posodobiti upravitelja paketov in nadgraditi pakete (opomba: lahko traja nekaj ur, če nekaj časa niste nadgradili):
sudo apt-get update && sudo apt-get upgrade
Nato namestite git, Python in njegov upravitelj paketov Pip:
sudo apt-get install git python python-pip
Nato namestite knjižnico Python cloud4rpi:
sudo pip namestite cloud4rpi
Končno sem pripravljen napisati svoj nadzorni program. Izhajam iz primera, ki je na voljo na
git clone https://github.com/cloud4rpi/cloud4rpi-raspberrypi… cloud4rpicd cloud4rpi
Glavna programska datoteka je control.py - za svoje potrebe jo moram spremeniti. Najprej uredite program in prilepite žeton:
sudo nano control.py
Poiščite vrstico DEVICE_TOKEN = '…'] in tam podajte žeton naprave. Po tem lahko preprosto zaženem program: deluje in poroča o temperaturi v spremenljivki RoomTemp:
sudo python control.py
Deluje in poroča o temperaturi v spremenljivki RoomTemp.
Upoštevajte, da odkriva vse senzorje onewire ds18b20
ds_sensors = ds18b20. DS18B20.find_all ()
in uporablja prvi najdeni senzor:
RoomTemp ': {' type ':' numeric ',' bind ': ds_sensors [0] if ds_sensors else None}
V redu, to je bilo enostavno, saj ima vzorčni program vse, kar je potrebno za delo s senzorjem ds18b20 na Raspberry Pi. Zdaj moram najti način za poročanje o stanju napajanja.
3. korak: Nadzor UPS
Naslednja stvar, ki jo želim spremljati, je stanje UPS, zato bom, če pride do izpada električne energije, to izvedel, preden se vse prekine.
Imam APC UPS z USB krmiljenjem, zato sem hitro pobrskal in ugotovil, da potrebujem apcupsd. https://www.anites.com/2013/09/monitoring-ups.html… Večkrat sem ga poskusil namestiti prek apt-get in mi iz različnih razlogov ni delovalo. Pokazal bom, kako ga namestiti iz virov.
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
Nato uredim apcupsd.conf, da se povežem z UPS prek usb.
sudo nano /etc/apcupsd/apcupsd.conf# #UPSCABLE smart UPSCABLE usb ##UPSTYPE apcsmart #DEVICE/dev/ttyS0 UPSTYPE usb DEVICE
Zdaj lahko priključim kabel USB iz UPS v RaspberryPi in preizkusim, če bi našli UPS.
sudo apctest
Ne bi smel sporočiti nobenih sporočil o napakah.
Zdaj je treba zagnati aplikacijo sevice apcupsd:
sudo systemctl zaženite apcupsd
Za zahtevno stanje UPS -a lahko uporabim ukaz za stanje:
sudo /etc/init.d/apcupsd status
In prikazalo bi se nekaj takega:
APC: 001, 035, 0855DATE: 2018-10-14 16:55:30 +0300 HOSTNAME: vcontrol VERZIJA: 3.14.14 (31. maj 2016) debian UPSNAME: vcontrol CABLE: USB kabel 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 voltov LOADPCT: 0,0 odstotka BCHARGE: 100,0 odstotka TIMEELEFT: 293,3 minute MBATTCHG: 5 odstotkov MINTIMEL: 3 minute MAXTIME 0 sekund SENSE: srednji LOTRANS: 140,0 voltov HITRANS: 300,0 voltov ALARMDEL: 30 sekund BATTV: 14,2 voltov LASTXFER: od preklopa ni prenosov NUMXFERS: 0 TONBATT: 0 sekund CUMONBATT: 0 sekund XOFFBATT: N/A STATX0BT0B00B004: 2014-06-10 NOMINV: 230 V NOMBATTV: 12,0 V NOMPOWER: 390 W FIRMWARE: 892. R3. I USB FW: R3 END APC: 2018-10-14 16:55:38 +0300
Potrebujem status - to je vrstica "STATUS:".
Knjižnica Cloud4rpi vsebuje modul ‘rpy.py’, ki vrne sistemske parametre Raspberry Pi, kot sta ime gostitelja ali temperatura procesorja. Ker so vsi ti parametri rezultat izvajanja nekaterih ukazov in razčlenitve izhoda, vsebuje tudi priročno funkcijo 'parse_output', ki naredi točno tisto, kar potrebujem. Tako dobim svoj status UPS:
def ups_status (): result = rpi.parse_output (r'STATUS / s+: / s+( S+) ', [' /etc/init.d/apcupsd ',' status ']) če je rezultat: return result else: return 'NEPOZNATO'
Če želite poslati to stanje v cloud4rpi, moram razglasiti spremenljivko UPSStatus in jo povezati z mojo funkcijo ups_status: Zdaj lahko zaženem svoj program:
spremenljivke = {'RoomTemp': {'type': 'numeric', 'bind': ds_sensors [0]}, 'UPSStatus': {'type': 'string', 'bind': ups_status}}
Svojo spremenljivko lahko takoj vidim na strani naprave cloud4rpi.
4. korak: Priprava na "proizvodnjo"
Vse deluje, zdaj pa moram svojo napravo pripraviti na način brez nadzora.
Za začetek bom prilagodil časovne intervale. Interval ankete določa, kako pogosto program preverja temperaturo in stanje UPS - nastavite ga na eno sekundo.
Rezultati se pošljejo v oblak vsakih 5 minut, diagnostični podatki pa vsako uro.
# KonstanteDATA_SENDING_INTERVAL = 300 # s DIAG_SENDING_INTERVAL = 3600 # s POLL_INTERVAL = 1 # s
Ko se stanje UPS spremeni - ne želim, da moja naprava čaka 5 minut, in podatke pošljem takoj. Zato sem nekoliko spremenil glavno zanko in izgleda tako:
data_timer = 0diag_timer = 0 prevUPS = 'ONLINE' medtem ko je True: newUPS = ups_status () if (data_timer <= 0) ali (newUPS! = prevUPS): device.publish_data () data_timer = DATA_SENDING_INTERVAL prevUPS = newUPS če diag_timer < device.publish_diag () diag_timer = DIAG_SENDING_INTERVAL spanje (POLL_INTERVAL) diag_timer -= POLL_INTERVAL data_timer -= POLL_INTERVAL
Testiranje: zaženi skript:
sudo python control.py
In stanje UPS lahko spremljam na strani svoje naprave.
Če izklopim napajanje UPS, se stanje spremeni v nekaj sekundah, tako da vse deluje. Zdaj moram ob zagonu sistema zagnati apcupsd in moj control.py. Storitev Apcupsd je stara in za zagon v sodobnem raspbianu bi morala spremeniti datoteko /etc/init.d/apcupsd, tako da nekje na vrhu dodam te vrstice:
### BEGIN INIT INFO # Zagotavlja: apcupsd # Zahtevan-začetek: $ all # Zahtevan-Stop: # Privzeti zagon: 2 3 4 5 # Default-Stop: # Kratek opis: demon APC UPS… ### END INIT INFO#
Nato omogočite storitev:
sudo systemctl omogoči apcupsd
Nato zaženite storitev:
sudo systemctl zaženite apcupsd
Zdaj se bo program apcupsd zagnal ob zagonu sistema.
Za namestitev control.py kot storitve sem uporabil priloženi skript service_install.sh:
sudo bash service_install.sh ~/cloud4rpi/control.py
Zdaj je storitev zagnana in mora preživeti ponovni zagon.
5. korak: Nastavitev nadzorne plošče
Cloud4rpi mi omogoča nastavitev nadzorne plošče za mojo napravo. Dodate lahko »pripomočke« in jih povežete s spremenljivkami naprave.
Moja naprava ponuja dve spremenljivki samo za branje - RoomTemp in UPSStatus:
spremenljivke = {'RoomTemp': {'type': 'numeric', 'bind': ds_sensors [0]}, 'UPSStatus': {'type': 'string', 'bind': ups_status}}
Dodal sem 3 pripomočke - številko za RoomTemp, Besedilo za UPSStatus in grafikon za RoomTemp.
Lahko nastavim opozorila, zato prejmem e -poštno sporočilo, ko je temperatura zunaj določenega območja, UPS je bil brez povezave ali pa naprava sama ne pošilja podatkov, ko bi morala. Zdaj sem lahko prepričan, da je moja hiša v redu, in me lahko obvestijo ko je kaj narobe, lahko pokličem sosede in jih prosim, naj preverijo, kaj se dogaja. Tukaj je dejanska koda control.py.
Priporočena:
IP kamera z uporabo Raspberry Pi Zero (nadzor doma, 1. del): 5 korakov
IP kamera z uporabo Raspberry Pi Zero (1. nadzor doma, 1. del): To je prva objava v novi mini seriji, kjer gradimo sistem za nadzor doma, predvsem z uporabo Raspberry Pis. V tem prispevku uporabljamo Raspberry PI zero in ustvarimo IP kamero, ki pretaka video preko RTSP. Izhodni video je veliko višji q
Možnosti NVR za sistem za domači nadzor doma: 3 koraki
Možnosti NVR za domači nadzorni sistem DIY: V tretjem delu te serije ocenjujemo možnosti NVR tako za Raspberry Pi kot za osebni računalnik z operacijskim sistemom Windows. Operacijski sistem MotionEye preizkusimo na Raspberry Pi 3 in nato pogledamo iSpy, ki je vodilna odprtokodna rešitev za video nadzor in varnost.
Nadzor svetlosti PWM LED nadzor s potisnimi gumbi, Raspberry Pi in Scratch: 8 korakov (s slikami)
Nadzor svetlosti Upravljanje LED na osnovi PWM s potisnimi gumbi, Raspberry Pi in Scratch: poskušal sem najti način, kako svojim učencem razložiti, kako deluje PWM, zato sem si zadal nalogo, da poskušam nadzorovati svetlost LED z dvema gumboma - en gumb poveča svetlost LED, drugi pa ga zatemni. Za program
Domača avtomatizacija in nadzor z glasovno/internetno kontrolo doma z uporabo ESP8266 in Google Home Mini: 6 korakov
Domača avtomatizacija in nadzor doma z glasovnim/internetnim nadzorom z uporabo ESP8266 in Google Home Mini: Hej !! Po dolgem premoru sem tukaj, saj moramo vsi narediti nekaj dolgočasnega (dela), da zaslužimo. Po vseh člankih HOME AUTOMATION, ki sem jih napisal iz BLUETOOTH, IR, Local WIFI, Cloud, tj. najlažji, a najučinkovitejši
Nadzor pametnega doma z Alexa in Arduino: 9 korakov (s slikami)
Nadzor pametnega doma z uporabo Alexa in Arduina: V sedanjem svetu ljudje preživijo več časa na delovnem mestu in ne doma. Zato je potreben sistem za nadzor doma, kjer lahko ljudje spoznajo razmere v hiši, medtem ko so v službi. Še bolje bi bilo, če bi nekdo