Sisukord:
- Samm: temperatuuri jälgimine
- 2. toiming: Cloud4Rpi.io seadistamine
- 3. samm: UPS -i jälgimine
- Samm: valmistamiseks valmistumine
- Samm: juhtpaneeli seadistamine
Video: DIY maja jälgimine RaspberryPi ja Cloud4Rpi abil: 5 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:48
Ühel talvisel nädalavahetusel läksin maamajja ja sain teada, et seal on väga külm. Midagi oli juhtunud elektriga ja RCD kaitselüliti oli selle välja lülitanud ning ka küte läks välja. Mul vedas, et tulin sinna, muidu oleks mitme päevaga kõik külmunud, mis on torudele ja radiaatoritele väga halb.
Mul oli mitu Raspberry Pi -d ja termoandur, nii et mõtlesin - miks ma ei tee lihtsat jälgimisseadet? Allpool toodud juhised eeldavad, et teil on Raspberry Pi koos Raspbiani ja võrguühendusega. Minu puhul on see Raspberry Pi B+ koos Raspbianiga (2018–06–27-raspbian-stretch-lite).
Samm: temperatuuri jälgimine
Kuidas ühendada temperatuuriandur DS18B20? Lihtsalt googeldage, kuidas seda teha, ja näete palju selliseid pilte:
Minu puhul olid mul mustad, kollased ja punased juhtmed. Must on maandatud, läheb maandusnõelale, punane on toide - läheb 3,3 -voldisele ja kollane on andmed - peaks minema GPIO4 kontaktile, andmete ja toite vahel on ühendatud 4,7 kOm takisti. Märkus. Saate ühendada mitu andurit paralleelselt (need on digitaalsed ja neil on erinevad aadressid) vajate ainult ühte takistit. Pärast anduri ühendamist peaksite lubama 1Wire raspi-konfiguratsioonis:
sudo raspi-config
Minge 5 liidesevaliku juurde, lubage P7 1-Wire ja taaskäivitage.
Seejärel saate testida, kas näete andurit:
sudo modprobe w1-gpiosudo modprobe w1-thermls/sys/bus/w1/devices/
Peaksite nägema midagi sellist:
pi@vcontrol: ~ $ ls/sys/bus/w1/devices/28–00044eae2dff w1_bus_master1
28–00044eae2dff on meie temperatuuriandur.
Riistvara on valmis. Nüüd pean seadistama jälgimisosa. Mul on vaja midagi, mis näitaks mulle andmeid ja teavitaks mind, kui seade on mõneks ajaks lahti ühendatud, toide puudub või temperatuur on madal. Ilmselgelt ei saa see olla raspberry pi ise, Internetis peaks olema mõni server või teenus, mis jälgib minu seadet.
Ma võin luua lihtsa serveri, hankida hostimise ja kõik seadistada, kuid ma ei taha seda teha. Õnneks on keegi sellele juba mõelnud ja loonud teie seadme jaoks pilvjuhtimispaneeli cloud4rpi.io.
2. toiming: Cloud4Rpi.io seadistamine
Cloud4Rpi pakub teenust, mis võimaldab teie seadmel andmeid saata ja vastu võtta, kasutades MQTT- või HTTP -protokolle. Neil on Pythoni jaoks klienditeek, nii et ma kasutan Pythoni.
Cloud4Rpi teenusega kaasnevad Pythoni näited sisaldavad juba koodi DS18B20 temperatuuriandurit.
Niisiis läksin aadressile https://cloud4rpi.io, lõin konto ja lisasin sinna uue seadme. Seadme lehel on žetoon - string, mis tuvastab seadme ja mis tuleks andmeid saatvas programmis täpsustada.
Alustuseks on alati hea mõte paketihaldurit värskendada ja pakette uuendada (märkus: kui te pole mõnda aega uuendanud, võib see võtta tunde):
sudo apt-get update && sudo apt-get upgrade
Seejärel installige git, Python ja selle paketihaldur Pip:
sudo apt-get install git python python-pip
Seejärel installige cloud4rpi Pythoni teek:
sudo pip installige cloud4rpi
Lõpuks olen valmis oma juhtimisprogrammi kirjutama. Alustan näitest, mis on saadaval aadressil
git kloon https://github.com/cloud4rpi/cloud4rpi-raspberrypi… cloud4rpicd cloud4rpi
Peamine programmifail on control.py - pean seda oma vajaduste järgi muutma. Esmalt muutke programmi ja kleepige märk:
sudo nano control.py
Leidke rida DEVICE_TOKEN = '…'] ja määrake seal seadme tunnus. Pärast seda saan programmi lihtsalt käivitada: see töötab ja teatab RoomTemp muutuja temperatuurist:
sudo python control.py
See töötab ja teatab RoomTemp muutuja temperatuurist.
Pange tähele, et see avastab kõik ühe juhtmega ds18b20 andurid
ds_sensors = ds18b20. DS18B20.find_all ()
ja kasutab esimest leitud andurit:
RoomTemp ': {' type ':' numbriline ',' siduv ': ds_sensors [0] kui ds_sensors else Puudub}
Ok, see oli lihtne, sest näidisprogrammis on kõik, mis on vajalik Raspberry Pi ds18b20 anduriga töötamiseks. Nüüd pean leidma viisi, kuidas toite olekust teatada.
3. samm: UPS -i jälgimine
Järgmine asi, mida tahan jälgida, on UPS -i olek, nii et elektrikatkestuse korral saan sellest teada enne, kui kõik katkeb.
Mul on USB -juhtimisega APC UPS, seega googeldasin kiiresti ja leidsin, et vajan apcupsd. https://www.anites.com/2013/09/monitoring-ups.html… Proovisin seda mitu korda installida rakenduse apt-get kaudu ja see ei töötanud minu jaoks erinevatel põhjustel. Näitan, kuidas seda allikatest installida.
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
Seejärel redigeerin apcupsd.conf, et ühendada oma UPS -iga usb kaudu.
sudo nano /etc/apcupsd/apcupsd.conf# #UPSCABLE nutikas UPSCABLE usb ##UPSTYPE apcsmart #DEVICE/dev/ttyS0 UPSTYPE usb DEVICE
Nüüd saan ühendada USB -kaabli UPS -ist RaspberryPi -ga ja testida, kas UPS -i leitakse.
sudo apctest
See ei tohiks teile veateateid anda.
Nüüd tuleks teenust apcupsd käivitada:
sudo systemctl käivitage apcupsd
UPS -i oleku küsimiseks saan kasutada olekukäsku:
olek sudo /etc/init.d/apcupsd
Ja see annaks midagi sellist:
APC: 001, 035, 0855DATE: 2018-10-14 16:55:30 +0300 HOSTNAME: vcontrol VERSIOON: 3.14.14 (31. mai 2016) debian UPSNAME: vcontrol KAABEL: USB-kaabli draiver: USB UPS-draiveri UPSMODE: eraldi STARTTIME: 2018-10-14 16:54:28 +0300 Mudel: Back-UPS XS 650CI STATUS: ONLINE LINEV: 238.0 Volts LOADPCT: 0.0 Protsent BCHARGE: 100.0 Protsenti TIMELEFT: 293.3 minutit MBATTCHG: 5 protsenti MINTIMEL: 3 minutit MAXTIME: 0 sekundit SENSE: Keskmine LOTRANS: 140,0 volti HITRANS: 300,0 volti ALARMDEL: 30 sekundit BATTV: 14,2 volti LASTXFER: ülekandeid pole pärast pöörde lõppu: 2014-06-10 NOMINV: 230 volti NOMBATTV: 12,0 volti NOMPOWER: 390 vatti FIRMWARE: 892. R3. I USB FW: R3 END APC: 2018-10-14 16:55:38 +0300
Vajan olekut - see on rida „OLEK:“.
Cloud4rpi teek sisaldab moodulit „rpy.py”, mis tagastab Raspberry Pi süsteemi parameetrid, näiteks hostinime või protsessori temperatuuri. Kuna kõik need parameetrid on mõne käsu käivitamise ja väljundi sõelumise tulemus, sisaldab see ka käepärast funktsiooni „parsimise_väljund”, mis teeb täpselt seda, mida vajan. UPS -i oleku vaatamiseks toimige järgmiselt.
def ups_status (): result = rpi.parse_output (r'STATUS / s+: / s+(S+) ', [' /etc/init.d/apcupsd ',' status ']) if result: return result else: return "TUNDMATU"
Selle oleku saatmiseks pilv4rpi -le pean deklareerima muutuja UPSStatus ja siduma selle funktsiooniga ups_status: Nüüd saan oma programmi käivitada:
variables = {'RoomTemp': {'type': 'numbriline', 'bind': ds_sensors [0]}, 'UPSStatus': {'type': 'string', 'bind': ups_status}}
Ja ma näen kohe oma muutujat cloud4rpi seadme lehel.
Samm: valmistamiseks valmistumine
Kõik töötab ja nüüd pean oma seadme järelevalveta režiimi ette valmistama.
Alustuseks kohandan ajavahemikke. Küsitlusintervall määrab, kui sageli programm kontrollib temperatuuri ja UPS -i olekut - määrake see üheks sekundiks.
Tulemused saadetakse pilve iga 5 minuti järel ja diagnostiline teave - iga tund.
# KonstandidDATA_SENDING_INTERVAL = 300 # s DIAG_SENDING_INTERVAL = 3600 # s POLL_INTERVAL = 1 # s
Kui UPS -i olek muutub - ma ei taha, et mu seade ootaks 5 minutit ja saadan andmed kohe. Nii et olen põhiahelat veidi muutnud ja see näeb välja selline:
data_timer = 0diag_timer = 0 prevUPS = 'ONLINE', samas kui True: newUPS = ups_status () if (data_timer <= 0) või (newUPS! = prevUPS): device.publish_data () data_timer = DATA_SENDING_INTERVAL prevUPS = newUPS <diag device.publish_diag () diag_timer = DIAG_SENDING_INTERVAL unerežiim (POLL_INTERVAL) diag_timer -= POLL_INTERVAL data_timer -= POLL_INTERVAL
Testimine: käivitage skript:
sudo python control.py
Ja ma saan oma seadme lehel vaadata UPS -i olekut.
Kui lülitan UPS -i toite välja, muutub olek mõne sekundi jooksul, nii et kõik töötab. Nüüd pean süsteemi käivitamisel käivitama apcupsd ja oma control.py. Apcupsdi teenus on vana ja selle käivitamiseks kaasaegsel raspbianil peaksin faili /etc/init.d/apcupsd muutma, lisades need read kuskile ülaossa:
### ALGATUSINFO # Pakub: apcupsd # Nõutav-Start: $ kõik # Nõutav-seiskamine: # Vaikimisi algus: 2 3 4 5 # Vaikepeatus: # Lühikirjeldus: APC UPS-i deemon… ### END INIT INFO#
Seejärel lubage teenus:
sudo systemctl lubab apcupsd
Seejärel käivitage teenus:
sudo systemctl käivitage apcupsd
Nüüd käivitatakse süsteemi käivitamisel apcupsd.
Control.py installimiseks teenusena kasutasin kaasasolevat skripti service_install.sh:
sudo bash service_install.sh ~/cloud4rpi/control.py
Nüüd on teenus käivitatud ja see peab taaskäivituse üle elama.
Samm: juhtpaneeli seadistamine
Cloud4rpi võimaldab mul seadistada oma seadmele juhtpaneeli. Saate lisada vidinaid ja siduda need seadme muutujatega.
Minu seade pakub kahte kirjutuskaitstud muutujat - RoomTemp ja UPSStatus:
variables = {'RoomTemp': {'type': 'numbriline', 'bind': ds_sensors [0]}, 'UPSStatus': {'type': 'string', 'bind': ups_status}}
Lisasin 3 vidinat - RoomTemp'i number, UPSStatus'i teksti ja RoomTemp'i diagrammi.
Ma saan seadistada märguandeid, nii et ma saan meili, kui temperatuur on määratud vahemikust väljas, UPS läks võrguühenduseta või seade ise ei saada andmeid, kui peaks. Nüüd võin olla kindel, et mu maakodu on korras ja mind saab teavitada kui midagi on valesti, siis saan helistada naabritele ja paluda neil toimuvat kontrollida. Siin on kontroll.py tegelik kood.
Soovitan:
Väikeste poodide jälgimine ja jälgimine: 9 sammu (piltidega)
Jälgi ja jälgi väikestele poodidele: see on süsteem, mis on loodud väikestele kauplustele, mis peaksid olema paigaldatud e-jalgratastele või e-motorolleritele lühikese vahemaaga kohaletoimetamiseks, näiteks pagaritöökoda, mis soovib saiakesi tarnida. Mida tähendab jälgimine ja jälgimine? Jälgimine ja jälgimine on süsteem, mida kasutavad ca
Kiirenduse jälgimine Raspberry Pi ja AIS328DQTR abil Pythoni abil: 6 sammu
Kiirenduse jälgimine Raspberry Pi ja AIS328DQTR abil Pythoni kasutamine: Kiirendus on piiratud, ma arvan, et mõne füüsikaseaduse kohaselt.- Terry Riley Gepard kasutab jälitamisel hämmastavat kiirendust ja kiireid kiiruse muutusi. Kiireim olend kaldal kasutab aeg -ajalt oma tipptempot saagi püüdmiseks
Kiirenduse variatsioonide jälgimine Raspberry Pi ja MMA7455 abil Pythoni abil: 6 sammu
Kiirenduse variatsioonide jälgimine Raspberry Pi ja MMA7455 abil Pythoni abil: ma ei komistanud, vaid testisin gravitatsiooni. See töötab endiselt … Kiirendava kosmosesüstiku esitus selgitas, et süstiku kõrgeimas punktis olev kell valib gravitatsioonilise aja laienemise tõttu kiiremini kui baasi. Mõned
Temperatuuri jälgimine ja salvestamine Bluetooth LE ja RaspberryPi abil: 9 sammu (piltidega)
Temperatuuri jälgimine ja salvestamine Bluetooth LE ja RaspberryPi abil: see juhend annab teavet selle kohta, kuidas panna kokku Blue-Raadio (BLEHome) ja RaspberryPi 3B Bluetooth LE anduriprobleemiga mitme sõlme temperatuuri jälgimissüsteem Tänu Bluetooth LE standardi väljatöötamisele nüüd saadaval
Maja niiskuse ja temperatuuri jälgimine: 11 sammu
Maja niiskuse ja temperatuuri jälgimine: Tere poisid! Parimal viisil alustamiseks väike lugu projektist. Lõpetasin hiljuti ülikooli ja kolisin oma esimeseks insenerikohaks Austriasse. Riik on ilus, kuid väga külm & talveperioodil niiske. Alustasin kiiresti