Cuprins:
- Pasul 1: Monitorizarea temperaturii
- Pasul 2: Configurarea Cloud4Rpi.io
- Pasul 3: Monitorizarea UPS
- Pasul 4: Pregătirea pentru „producție”
- Pasul 5: Configurarea unui panou de control
Video: Monitorizare casă DIY cu RaspberryPi și Cloud4Rpi: 5 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:43
Într-un weekend de iarnă, m-am dus la casa mea de la țară și am aflat că era foarte frig acolo. Ceva se întâmplase cu electricitatea și întrerupătorul RCD îl oprise și încălzirea s-a oprit și ea. Am avut norocul că am venit acolo, altfel în câteva zile totul ar fi fost înghețat, ceea ce este foarte rău pentru țevi și radiatoare.
Aveam câteva Raspberry Pi în jur și un senzor termic, așa că m-am gândit - de ce nu fac un dispozitiv simplu de monitorizare? Instrucțiunile de mai jos presupun că aveți configurat un Raspberry Pi cu Raspbian și conexiunea de rețea. În cazul meu, este Raspberry Pi B + cu Raspbian (2018-06-27-raspbian-stretch-lite).
Pasul 1: Monitorizarea temperaturii
Cum se conectează un senzor de temperatură DS18B20? Doar google cum să faceți acest lucru și veți vedea o mulțime de imagini de genul acesta:
În cazul meu aveam fire negre, galbene și roșii. Negrul este împământat, merge la pinul de masă, roșu este putere - merge la pinul de 3,3v, iar galbenul este de date - ar trebui să meargă la pinul GPIO4, cu rezistor de 4,7 kOm conectat între date și putere. Notă, puteți conecta mai mulți senzori în paralel (sunt digitale și au adrese diferite), aveți nevoie de un singur rezistor. După conectarea senzorului, ar trebui să activați 1Wire în raspi-config:
sudo raspi-config
Mergeți la 5 opțiuni de interfață, activați P7 1-Wire și reporniți.
Apoi puteți testa dacă vedeți senzorul:
sudo modprobe w1-gpiosudo modprobe w1-thermls / sys / bus / w1 / devices /
Ar trebui să vedeți așa ceva:
pi @ vcontrol: ~ $ ls / sys / bus / w1 / devices / 28–00044eae2dff w1_bus_master1
28–00044eae2dff este senzorul nostru de temperatură.
Hardware-ul este gata. Acum trebuie să configurez partea de monitorizare. Am nevoie de ceva care să-mi arate datele și să mă anunțe dacă dispozitivul este deconectat o perioadă de timp sau dacă nu există curent sau temperatura este scăzută. Evident, acesta nu poate fi raspberry pi în sine, ar trebui să existe un server sau un serviciu pe internet care să-mi monitorizeze dispozitivul.
Pot să creez un server simplu, să primesc o găzduire și să configurez totul, dar cu sinceritate, nu vreau. Din fericire, cineva s-a gândit deja la acest lucru și a creat cloud4rpi.io - un panou de control cloud pentru dispozitivul dvs.
Pasul 2: Configurarea Cloud4Rpi.io
Cloud4Rpi oferă un serviciu care permite dispozitivului dvs. să trimită și să primească date folosind protocoalele MQTT sau HTTP. Au o bibliotecă client pentru Python, așa că voi folosi Python.
Exemplele Python care vin cu serviciul Cloud4Rpi conțin deja cod pentru senzorul de temperatură DS18B20.
Așa că m-am dus la https://cloud4rpi.io, am creat un cont și am adăugat un nou dispozitiv acolo. Pagina dispozitivului are un simbol - un șir care identifică dispozitivul și care ar trebui specificat în programul care trimite date.
Pentru început, este întotdeauna o idee bună să actualizați un manager de pachete și să actualizați pachetele (notă: poate dura câteva ore dacă nu ați făcut upgrade de ceva timp):
sudo apt-get update && sudo apt-get upgrade
Apoi, instalați git, Python și managerul de pachete Pip:
sudo apt-get install git python python-pip
Apoi, instalați biblioteca Python cloud4rpi:
sudo pip instalează cloud4rpi
În sfârșit, sunt gata să scriu programul meu de control. Încep de la un exemplu disponibil la
git clone https://github.com/cloud4rpi/cloud4rpi-raspberrypi… cloud4rpicd cloud4rpi
Fișierul principal al programului este control.py - Trebuie să îl modific pentru nevoile mele. Mai întâi, editați programul și lipiți un simbol:
sudo nano control.py
Găsiți o linie DEVICE_TOKEN = '…'] și specificați acolo un jeton de dispozitiv. După aceea, pot pur și simplu să rulez programul: funcționează și raportează o temperatură în variabila RoomTemp:
sudo python control.py
Funcționează și raportează o temperatură în variabila RoomTemp.
Rețineți că descoperă toți senzorii onewire ds18b20
ds_sensors = ds18b20. DS18B20.find_all ()
și folosește primul senzor găsit:
RoomTemp ': {' type ':' numeric ',' bind ': ds_sensors [0] if ds_sensors else None}
Ok, a fost ușor, deoarece programul eșantion are tot ceea ce este necesar pentru a funcționa cu senzorul ds18b20 pe Raspberry Pi. Acum trebuie să găsesc modalitatea de raportare a stării puterii.
Pasul 3: Monitorizarea UPS
Următorul lucru pe care vreau să îl monitorizez este starea UPS-ului, așa că, dacă există întreruperi de curent, voi ști despre asta înainte ca totul să se deconecteze.
Am un UPS APC cu control USB, așa că am căutat rapid pe Google și am constatat că am nevoie de apcupsd. https://www.anites.com/2013/09/monitoring-ups.html… Am încercat de mai multe ori să îl instalez prin apt-get și nu funcționa pentru mine din diferite motive. Vă voi arăta cum să îl instalați din surse.
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
Apoi editez apcupsd.conf pentru a mă conecta la UPS-ul meu prin USB.
sudo nano /etc/apcupsd/apcupsd.conf# #UPSCABLE smart UPSCABLE usb # #UPSTYPE apcsmart #DEVICE / dev / ttyS0 UPSTYPE usb DEVICE
Acum pot conecta cablul USB de la UPS la RaspberryPi și pot testa dacă va fi găsit UPS.
sudo apctest
Nu ar trebui să vă ofere niciun mesaj de eroare.
Acum sevice apcupsd ar trebui să fie pornit:
sudo systemctl pornește apcupsd
Pentru interogarea stării UPS pot folosi o comandă de stare:
sudo /etc/init.d/apcupsd status
Și ar produce un astfel de lucru:
APC: 001, 035, 0855 DATA: 2018-10-14 16:55:30 +0300 NOM DE GAZNĂ: vcontrol VERSIUNE: 3.14.14 (31 mai 2016) debian NUMEU UPS: vcontrol CABLU: Cablu USB 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 Volts LOADPCT: 0,0 Procent BCHARGE: 100,0 Procent TIMELEFT: 293,3 Minute MBATTCHG: 5 Procente MINTIMEL: 3 Minute MAXTIME: 0 secunde SENSE: mediu LOTRANS: 140,0 volți HITRANS: 300,0 volți ALARMDEL: 30 secunde BATTV: 14,2 volți LASTXFER: Fără transferuri de la turnon NUMXFERS: 0 TONBATT: 0 secunde CUMONBATT: 0 secunde XOFFBATT: N / A STATFLAG: 0x0500: 0x0500: 0x0500: 2014-06-10 NOMINV: 230 volți NOMBATTV: 12,0 volți NOMPOWER: 390 wați FIRMWARE: 892. R3. I USB FW: R3 END APC: 2018-10-14 16:55:38 +0300
Am nevoie de o stare - care este linia „STATUS:”.
Biblioteca Cloud4rpi conține un modul „rpy.py” care returnează parametrii sistemului Raspberry Pi, cum ar fi numele gazdei sau temperatura cpu. Deoarece toți acești parametri sunt rezultatele executării unor comenzi și analizei de ieșire, conține și o funcție utilă „parse_output” care face exact ceea ce am nevoie. Iată cum să obțin statutul meu UPS:
def ups_status (): result = rpi.parse_output (r'STATUS / s +: / s + (S +) ', [' /etc/init.d/apcupsd ',' status ']) if result: return result else: return 'NECUNOSCUT'
Pentru a trimite această stare către cloud4rpi, trebuie să declar o variabilă UPSStatus și să o leg de funcția mea ups_status: Acum pot rula programul meu:
variables = {'RoomTemp': {'type': 'numeric', 'bind': ds_sensors [0]}, 'UPSStatus': {'type': 'string', 'bind': ups_status}}
Și îmi pot vedea imediat variabila pe pagina dispozitivului cloud4rpi.
Pasul 4: Pregătirea pentru „producție”
Totul funcționează și acum trebuie să-mi pregătesc dispozitivul în modul nesupravegheat.
Pentru început, voi ajusta intervalele de timp. Intervalul de sondare definește cât de des programul verifică temperatura și starea UPS - setați-l la o secundă.
Rezultatele sunt trimise în cloud la fiecare 5 minute, iar informațiile de diagnosticare - la fiecare oră.
# ConstanteDATA_SENDING_INTERVAL = 300 # sec DIAG_SENDING_INTERVAL = 3600 # sec POLL_INTERVAL = 1 # sec
Când starea UPS se schimbă - nu vreau ca dispozitivul meu să aștepte 5 minute și trimit date imediat. Așa că am modificat ușor bucla principală și arată astfel:
data_timer = 0diag_timer = 0 prevUPS = 'ONLINE' în timp ce True: newUPS = ups_status () if (data_timer <= 0) or (newUPS! = prevUPS): device.publish_data () data_timer = DATA_SENDING_INTERVAL prevUPS = newUPS if diag_timer <= 0: device.publish_diag () diag_timer = DIAG_SENDING_INTERVAL sleep (POLL_INTERVAL) diag_timer - = POLL_INTERVAL data_timer - = POLL_INTERVAL
Testare: rulați scriptul:
sudo python control.py
Și pot viziona starea UPS pe pagina dispozitivului meu.
Dacă opresc alimentarea UPS-ului, starea se schimbă în câteva secunde, deci totul funcționează. Acum trebuie să pornesc apcupsd și control.py la pornirea sistemului. Serviciul Apcupsd este vechi și pentru al porni pe raspbian modern, ar trebui să modific fișierul /etc/init.d/apcupsd, adăugând aceste linii undeva în partea de sus:
### BEGIN INIT INFO # Oferă: apcupsd # Required-Start: $ all # Required-Stop: # Default-Start: 2 3 4 5 # Default-Stop: # Short-Description: APC UPS daemon … ### END INIT INFO #
Apoi activați serviciul:
sudo systemctl activează apcupsd
Apoi porniți serviciul:
sudo systemctl pornește apcupsd
Acum apcupsd va fi pornit la pornirea sistemului.
Pentru a instala control.py ca serviciu, am folosit scriptul service_install.sh furnizat:
sudo bash service_install.sh ~ / cloud4rpi / control.py
Acum serviciul este început și trebuie să supraviețuiască unei reporniri.
Pasul 5: Configurarea unui panou de control
Cloud4rpi îmi permite să configurez un panou de control pentru dispozitivul meu. Puteți adăuga „widget-uri” și le puteți asocia cu variabilele dispozitivului.
Dispozitivul meu oferă două variabile de numai citire - RoomTemp și UPSStatus:
variables = {'RoomTemp': {'type': 'numeric', 'bind': ds_sensors [0]}, 'UPSStatus': {'type': 'string', 'bind': ups_status}}
Am adăugat 3 widgeturi - Număr pentru RoomTemp, Text pentru UPSStatus și o diagramă pentru RoomTemp.
Pot configura alerte, așa că primesc un e-mail când temperatura este în afara intervalului specificat, UPS-ul a deconectat sau dispozitivul în sine nu trimite date când ar trebui. Acum pot fi sigur că casa mea de țară este ok și pot fi informat când ceva nu este în regulă, așa că pot telefona vecinii și le pot cere să verifice ce se întâmplă. Iată codul real al controlului.py.
Recomandat:
Ubidots + ESP32- Monitorizare predictivă a mașinilor: 10 pași
Ubidots + ESP32- Monitorizarea predictivă a mașinilor: analiza predictivă a vibrațiilor și temperaturii mașinii prin crearea de evenimente de e-mail și o înregistrare a vibrațiilor în foaia Google utilizând Ubidots.Manualizarea predictivă și monitorizarea sănătății mașinilor
Sistem de monitorizare vizuală LoRa pentru agricultură Iot - Proiectarea unei aplicații frontale utilizând Firebase și unghiular: 10 pași
Sistem de monitorizare vizuală LoRa pentru agricultură Iot | Proiectarea unei aplicații frontale folosind Firebase și unghiular: În capitolul precedent vorbim despre modul în care senzorii funcționează cu modulul loRa pentru a popula baza de date în timp real Firebase și am văzut diagrama de nivel foarte înalt cum funcționează întregul nostru proiect. În acest capitol vom vorbi despre cum putem
Sistem de monitorizare și control al climatului interior Raspberry Pi: 6 pași
Sistem de control și control al climei Raspberry Pi: oamenii vor să se simtă confortabil în interiorul casei lor. Deoarece climatul din zona noastră s-ar putea să nu se potrivească cu noi înșine, folosim multe aparate pentru a menține un mediu interior sănătos: încălzitor, răcitor de aer, umidificator, dezumidificator, purificator etc. În zilele noastre, este com
RPI Casă de casă: 5 pași (cu imagini)
RPI Homemade Hat: Bună, mă numesc Boris și acesta este primul meu instructabil. Am un Raspberry Pi 3B + și îl folosesc pentru automatizarea casnică simplă, cum ar fi să controlez televizorul, AC și câteva lumini. Recent am cumpărat un router CNC chinezesc ieftin și am început să fac PCB-uri simple (eu
Pompa inteligentă a mașinii de cafea controlată de senzorul cu ultrasunete Raspberry Pi și HC-SR04 și Cloud4RPi: 6 pași
Pompă inteligentă pentru mașină de cafea controlată de senzorul cu ultrasunete Raspberry Pi și HC-SR04 și Cloud4RPi: în teorie, de fiecare dată când mergi la aparatul de cafea pentru ceașca de dimineață, există doar o șansă de unu la douăzeci să umpleți apa rezervor. Cu toate acestea, în practică, se pare că aparatul găsește cumva o modalitate de a pune întotdeauna această corvoadă asupra ta