Sadržaj:
- Korak 1: Nadzor temperature
- Korak 2: Postavljanje Cloud4Rpi.io
- Korak 3: Nadzor UPS -a
- Korak 4: Priprema za "proizvodnju"
- Korak 5: Postavljanje upravljačke ploče
Video: Kućni nadzor "uradi sam" s RaspberryPi i Cloud4Rpi: 5 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:35
Jednog zimskog vikenda otišao sam u svoju seosku kuću i otkrio da je tamo jako hladno. Nešto se dogodilo s električnom energijom, a prekidač za isključenje sklopke ga je isključio, a i grijanje je nestalo. Imao sam sreću što sam došao tamo, inače bi za nekoliko dana sve bilo smrznuto, što je jako loše za cijevi i radijatore.
U blizini sam imao nekoliko Raspberry Pi i termalni senzor pa sam pomislio - zašto ne napravim jednostavan uređaj za nadzor? Upute u nastavku pretpostavljaju da imate Raspberry Pi s postavljenom Raspbian i mrežnom vezom. U mom slučaju to je Raspberry Pi B+ s Raspbian-om (2018–06–27-raspbian-stretch-lite).
Korak 1: Nadzor temperature
Kako spojiti senzor temperature DS18B20? Samo guglajte kako to učiniti, i vidjet ćete mnogo ovakvih slika:
U mom slučaju imao sam crnu, žutu i crvenu žicu. Crno je uzemljeno, ide na pin za uzemljenje, crveno je na napajanju - ide na pin od 3,3 V, a žuto je na podatku - trebalo bi ići na pin GPIO4, s otpornikom od 4,7 kOm spojenim između podataka i napajanja. Napomena: možete spojiti nekoliko senzora paralelno (digitalni su i imaju različite adrese) potreban vam je samo jedan otpornik. Nakon povezivanja senzora, trebate omogućiti 1Wire u raspi-config:
sudo raspi-config
Idite na 5 mogućnosti sučelja, omogućite P7 1-Wire i ponovno pokrenite sustav.
Zatim možete testirati možete li vidjeti senzor:
sudo modprobe w1-gpiosudo modprobe w1-thermls/sys/bus/w1/devices/
Trebali biste vidjeti ovako nešto:
pi@vcontrol: ~ $ ls/sys/bus/w1/devices/28–00044eae2dff w1_bus_master1
28–00044eae2dff je naš senzor temperature.
Hardver je spreman. Sada moram postaviti dio za nadzor. Trebam nešto što bi mi pokazalo podatke i obavijestilo me ako je uređaj na neko vrijeme isključen ili nema napajanja, ili je temperatura niska. Očito ovo ne može biti malina pi, trebao bi postojati neki poslužitelj ili usluga na internetu koja nadzire moj uređaj.
Mogu stvoriti jednostavan poslužitelj, dobiti hosting i sve postaviti, ali iskreno, ne želim. Srećom, netko je već razmišljao o ovome i stvorio cloud4rpi.io - upravljačku ploču u oblaku za vaš uređaj.
Korak 2: Postavljanje Cloud4Rpi.io
Cloud4Rpi pruža uslugu koja vašem uređaju omogućuje slanje i primanje podataka pomoću MQTT ili HTTP protokola. Oni imaju knjižnicu klijenata za Python, pa ću koristiti Python.
Primjeri Pythona koji dolazi s Cloud4Rpi uslugom već sadrže kod za senzor temperature DS18B20.
Pa sam otišao na https://cloud4rpi.io, stvorio račun i tamo dodao novi uređaj. Stranica uređaja ima token - niz koji identificira uređaj i koji bi trebao biti naveden u programu koji šalje podatke.
Za početak, uvijek je dobra ideja ažurirati upravitelja paketa i nadograditi pakete (napomena: mogu proći sati ako niste nadograđivali neko vrijeme):
sudo apt-get update && sudo apt-get upgrade
Zatim instalirajte git, Python i njegov upravitelj paketa Pip:
sudo apt-get install git python python-pip
Zatim instalirajte biblioteku cloud4rpi Python:
sudo pip instalirajte cloud4rpi
Konačno, spreman sam za pisanje svog kontrolnog programa. Polazim od primjera dostupnog na
git klon https://github.com/cloud4rpi/cloud4rpi-raspberrypi… cloud4rpicd cloud4rpi
Glavna programska datoteka je control.py - moram je izmijeniti za svoje potrebe. Prvo uredite program i zalijepite token:
sudo nano control.py
Pronađite redak DEVICE_TOKEN = '…'] i tamo navedite token uređaja. Nakon toga mogu jednostavno pokrenuti program: On radi i izvještava o temperaturi u varijabli RoomTemp:
sudo python control.py
Radi i prijavljuje temperaturu u varijabli RoomTemp.
Imajte na umu da otkriva sve onewire ds18b20 senzore
ds_senzori = ds18b20. DS18B20.find_all ()
i koristi prvi pronađeni senzor:
RoomTemp ': {' type ':' numeric ',' bind ': ds_sensors [0] if ds_sensors else None}
U redu, to je bilo jednostavno, jer ogledni program ima sve što je potrebno za rad sa senzorom ds18b20 na Raspberry Pi. Sada moram pronaći način da prijavim stanje napajanja.
Korak 3: Nadzor UPS -a
Sljedeće što želim pratiti je stanje UPS -a, pa ako dođe do nestanka struje, ja ću to znati prije nego se sve prekine.
Imam APC UPS sa USB kontrolom pa sam brzo proguglao i otkrio da mi treba apcupsd. https://www.anites.com/2013/09/monitoring-ups.html… Nekoliko puta sam ga pokušao instalirati putem apt-get-a, ali mi iz različitih razloga nije uspio. Pokazat ću kako ga instalirati iz izvora.
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
Zatim uređujem apcupsd.conf za povezivanje s UPS -om putem USB -a.
sudo nano /etc/apcupsd/apcupsd.conf# #UPSCABLE smart UPSCABLE usb ##UPSTYPE apcsmart #DEVICE/dev/ttyS0 UPSTYPE usb DEVICE
Sada mogu priključiti USB kabel iz UPS -a u RaspberryPi i testirati hoće li se pronaći UPS.
sudo apctest
Ne bi vam trebao slati poruke o pogrešci.
Sada bi trebalo pokrenuti sevice apcupsd:
sudo systemctl start apcupsd
Za upitni status UPS -a mogu upotrijebiti naredbu statusa:
sudo /etc/init.d/apcupsd status
I ispisalo bi nešto ovako:
APC: 001, 035, 0855DATUM: 2018-10-14 16:55:30 +0300 HOSTNAME: vcontrol VERZIJA: 3.14.14 (31. svibnja 2016.) debian UPSNAME: vcontrol KABEL: USB kabel DRIVER: USB UPS upravljački program UPSMODE: Samostalno STARTTIME: 2018-10-14 16:54:28 +0300 MODEL: Back-UPS XS 650CI STATUS: ONLINE LINEV: 238,0 volti LOADPCT: 0,0 posto BCHARGE: 100,0 posto TIMEELEFT: 293,3 minute MBATTCHG: 5 posto MINTIMEL: 3 minute MAXTIME 0 sekundi SENSE: srednji LOTRANI: 140,0 Volti HITRANS: 300,0 Volti ALARMDEL: 30 sekundi BATTV: 14,2 Volti POSLJEDNJI: Nema prijenosa od okreta NUMXFERS: 0 TONBATT: 0 Sekundi CUMONBATT: 0 Sekundi XOFFBATT: N/A STAL0B00B0BT0B003B004B004: 2014-06-10 NOMINV: 230 V NOMBATTV: 12,0 V NOMPOWER: 390 WAT FIRMA: 892. R3. I USB FW: R3 END APC: 2018-10-14 16:55:38 +0300
Trebam status - a to je redak "STATUS:".
Knjižnica Cloud4rpi sadrži modul ‘rpy.py’ koji vraća parametre sustava Raspberry Pi, poput imena hosta ili temperature procesora. Budući da su svi ti parametri rezultati pokretanja nekih naredbi i raščlanjivanja izlaza, oni također sadrže zgodnu funkciju ‘parse_output’ koja radi upravo ono što mi treba. Evo kako dobiti status UPS -a:
def ups_status (): result = rpi.parse_output (r'STATUS / s+: / s+(S+) ', [' /etc/init.d/apcupsd ',' status ']) if result: return result else: return 'NEPOZNATO'
Da bih poslao ovaj status cloud4rpi, moram deklarirati varijablu UPSStatus i povezati je sa svojom funkcijom ups_status: Sada mogu pokrenuti svoj program:
varijable = {'RoomTemp': {'type': 'numeric', 'bind': ds_sensors [0]}, 'UPSStatus': {'type': 'string', 'bind': ups_status}}
I odmah mogu vidjeti svoju varijablu na stranici uređaja cloud4rpi.
Korak 4: Priprema za "proizvodnju"
Sve funkcionira i sada moram svoj uređaj pripremiti na način rada bez nadzora.
Za početak ću prilagoditi vremenske intervale. Interval ispitivanja određuje koliko često program provjerava temperaturu i stanje UPS -a - postavite ga na jednu sekundu.
Rezultati se šalju u oblak svakih 5 minuta, a dijagnostičke informacije - svaki sat.
# KonstanteDATA_SENDING_INTERVAL = 300 # s DIAG_SENDING_INTERVAL = 3600 # s POLL_INTERVAL = 1 # s
Kad se status UPS -a promijeni - ne želim da moj uređaj čeka 5 minuta i odmah šaljem podatke. Pa sam malo izmijenio glavnu petlju i izgleda ovako:
data_timer = 0diag_timer = 0 prevUPS = 'ONLINE' dok je True: newUPS = ups_status () if (data_timer <= 0) ili (newUPS! = prevUPS): device.publish_data () data_timer = DATA_SENDING_INTERVAL prevUPS = new = UPS ako je diag_timer device.publish_diag () diag_timer = DIAG_SENDING_INTERVAL spavanje (POLL_INTERVAL) diag_timer -= POLL_INTERVAL data_timer -= POLL_INTERVAL
Testiranje: pokrenite skriptu:
sudo python control.py
I mogu gledati stanje UPS -a na stranici svog uređaja.
Ako isključim napajanje UPS -a, status se promijeni za nekoliko sekundi, tako da sve radi. Sada moram pokrenuti apcupsd i svoj control.py pri pokretanju sustava. Apcupsd usluga je stara i da bih je pokrenuo na modernom raspbianu, trebao bih izmijeniti /etc/init.d/apcupsd datoteku dodavanjem ovih redaka negdje pri vrhu:
### BEGIN INIT INFO # Pruža: apcupsd # Obavezno-početak: $ all # Obavezno-zaustavljanje: # Zadano-pokretanje: 2 3 4 5 # Zadano-zaustavljanje: # Kratki opis: APC UPS demon … ### END INIT INFO#
Zatim omogućite uslugu:
sudo systemctl omogućiti apcupsd
Zatim pokrenite uslugu:
sudo systemctl start apcupsd
Sada će se apcupsd pokrenuti pri pokretanju sustava.
Da bih instalirao control.py kao uslugu, upotrijebio sam priloženu skriptu service_install.sh:
sudo bash service_install.sh ~/cloud4rpi/control.py
Sada je usluga pokrenuta i treba preživjeti ponovno podizanje sustava.
Korak 5: Postavljanje upravljačke ploče
Cloud4rpi mi omogućuje postavljanje upravljačke ploče za moj uređaj. Možete dodati "widgete" i povezati ih s varijablama uređaja.
Moj uređaj nudi dvije varijable samo za čitanje - RoomTemp i UPSStatus:
varijable = {'RoomTemp': {'type': 'numeric', 'bind': ds_sensors [0]}, 'UPSStatus': {'type': 'string', 'bind': ups_status}}
Dodao sam 3 widgeta - broj za RoomTemp, Tekst za UPSStatus i grafikon za RoomTemp.
Mogu postaviti upozorenja, pa dobivam e -poruku kada je temperatura izvan navedenog raspona, UPS se isključio ili sam uređaj ne šalje podatke kada bi trebao. Sada mogu biti siguran da je moja seoska kuća u redu i mogu biti obaviješten kad nešto nije u redu, mogu nazvati susjede i zamoliti ih da provjere što se događa. Evo stvarnog koda control.py.
Preporučeni:
Džepni sat "uradi sam": 9 koraka
Uradi sam džepni sat: U ovom užurbanom svijetu praćenje vremena potrebno je za bolje performanse i biti hobist zašto ne biste napravili uređaj za praćenje vremena. Zahvaljujući tehnologiji postoje uređaji koji se zovu 'sat' ali! zadovoljstvo kad radite sami
Uradi sam Uradi BB-8 u Indiji -- Android kontroliran i pričljiv -- U prirodnoj veličini: 19 koraka (sa slikama)
Uradi sam Uradi BB-8 u Indiji || Android kontroliran i pričljiv || U prirodnoj veličini: PRETPLATITE SE na moj kanal za više projekata.Ovaj projekt govori o tome kako izgraditi radni, pričajući, pričajući, arduino kontrolirani droid D-Starwars BB-8. koristit ćemo samo kućanske materijale i malo Arduino sklopova. U tome smo
Novi bežični IOT senzorski sloj za kućni sustav za nadzor okoliša: 5 koraka (sa slikama)
Novi bežični IOT senzorski sloj za kućni sustav za nadzor okoliša: Ova uputa opisuje jeftiniji, bežični IOT senzorski sloj na bateriju za moj raniji Instructable: LoRa IOT sustav za nadzor okoliša kod kuće. Ako već niste pogledali ovaj raniji Instructable, preporučujem da pročitate uvod
Raspberry Pi kućni nadzor s Dropboxom: 7 koraka
Raspberry Pi kućni nadzor s Dropboxom: Ovaj će vam vodič pokazati kako stvoriti jednostavan i proširiv sustav za nadzor doma pomoću Raspberry Pi, web kamere, nekoliko električnih komponenti i vašeg Dropbox računa. Gotov sustav omogućit će vam daljinsko traženje i pregled slika od
Kućni nadzor putem Twittera i YouTubea: 6 koraka
Kućni nadzor putem Twittera i YouTubea: Najnovijom verzijom Yoics za Windows možete jednostavno pretvoriti bilo koju web kameru u svoj osobni nadzorni sustav, gdje se videozapisi automatski prenose na YouTube & šalje se obavijest na Twitteru