Cuprins:

Monitorizarea temperaturii camerei controlată Raspberry Pi cu ieșire de imagine Gnuplot și capacitate de alertă prin e-mail: 7 pași
Monitorizarea temperaturii camerei controlată Raspberry Pi cu ieșire de imagine Gnuplot și capacitate de alertă prin e-mail: 7 pași

Video: Monitorizarea temperaturii camerei controlată Raspberry Pi cu ieșire de imagine Gnuplot și capacitate de alertă prin e-mail: 7 pași

Video: Monitorizarea temperaturii camerei controlată Raspberry Pi cu ieșire de imagine Gnuplot și capacitate de alertă prin e-mail: 7 pași
Video: Teste convertoare DC/DC coborâtoare ieftine 2024, Iunie
Anonim
Monitorizarea temperaturii camerei controlată Raspberry Pi cu ieșire de imagine Gnuplot și abilitate de alertă prin e-mail
Monitorizarea temperaturii camerei controlată Raspberry Pi cu ieșire de imagine Gnuplot și abilitate de alertă prin e-mail

Acolo unde lucrez, există o cameră foarte importantă, care găzduiește multe computere. Temperatura ambiantă a acestei camere trebuie să fie foarte rece pentru a optimiza performanța acestor sisteme. Mi s-a cerut să vin cu un sistem de monitorizare care are capacitatea de a trimite o formă de alertă câtorva persoane care le va anunța că ceva nu este în regulă cu aerul condiționat din camera respectivă. Hardware-ul pentru această construcție, am folosit Raspberry pi și un senzor USB de temperatură și umiditate. Pentru monitorizare, am folosit Gnuplot pentru a trasa trei grafice de temperatură și pentru a crea imaginea acestor grafice. Apoi am creat o pagină HTML dedicată care va fi găzduită pe Raspberry pi, astfel încât condițiile actuale, acele imagini de ieșire gnuplot, să poată fi monitorizate de pe o pagină web din rețeaua noastră. Pentru alertare, am ales să merg cu Gmail. Am găsit un exemplu de cod într-o revistă Linux User. (Desigur, puteți utiliza orice server de poștă electronică odată ce cunoașteți atribuțiile de port necesare.) Pentru aceasta, am creat un cont de e-mail dedicat Gmail pentru aceste alerte. De asemenea, ca o caracteristică adăugată, atunci când a fost declanșată o alertă, atașez un grafic la e-mail, astfel încât persoana care primește e-mailul să poată avea o idee despre cât de drastică a fost creșterea care a provocat alerta.

Pasul 1: Configurarea hardware-ului

Configurarea hardware
Configurarea hardware

Configurarea hardware-ului nu este prea mare. Raspberry pi rulează Raspian, iar senzorul de temperatură USB se conectează direct la unul dintre porturile USB. Consumul de energie al acestui senzor este minim și, ca urmare, l-am alimentat direct de la Raspberry pi. Cu toate acestea, pentru dispozitivele alimentate cu USB cu un consum mai mare de energie, aș recomanda alimentarea acestora printr-un hub USB alimentat și nu direct din portul USB al Raspberry pi. Odată ce senzorul de temperatură este alimentat, acesta oferă un șir serial care conține temperatura și citirile de umiditate ale condițiilor actuale. temperatura = 20,9 ° C umiditate = 62,7% punct de rouă = 13,0 ° CA scriptul python analizează acest șir și stochează valorile de temperatură și umiditate în trei fișiere text la fiecare cinci minute; un fișier text zilnic, 24 de ore și 48 de ore (Diferențele vor fi discutate mai târziu în secțiunea HTML). Din aceste fișiere, Gnuplot va genera graficele și ulterior imaginile setului de date din fiecare fișier. Înainte de a discuta despre scriptul python, voi vorbi despre pregătirea Raspberry pi. Deoarece monitorizarea se face online, trebuie instalat un server web. Am încercat câteva dintre ele pe vremea mea pe Raspberry pi, dar, deși este cam mare, prefer Apache. Pentru a instala Apache pe Raspberry pi, pur și simplu tastați: sudo apt-get install apache2 Vă va oferi o solicitare înainte de instalare, apăsați „y” pentru da și Apache va fi instalat câteva minute, în funcție de Raspberry pi dvs. Odată ce este gata, trebuie să instalați două plugin-uri Python: python-serial și plug-ul python-gnuplot. (Deși mi-am dat seama că recentele versiuni Raspian au standardul plug-in python-serial, dar doar pentru a fi în siguranță.) Pentru a le instala pe cele pe care le tastați: sudo apt-get install python-serial python-gnuplot -ins vor fi instalate. Și cu aceasta configurarea hardware este completă.

Pasul 2: Configurare software - Configurare e-mail și destinatari

creați adresa de e-mail Înainte de a ajunge prea departe în software acum ar fi un moment bun pentru a crea un cont Gmail din care să vă trimiteți alertele prin e-mail. (Acest exemplu folosește GMail, dar orice server de poștă electronică poate fi utilizat odată ce știm setările portului SMTP) Codul Python este destul de simplu, dar importurile necesare sunt critice. Fără ele nimic nu ar funcționa.de la timp import * import timp import import serie smtplib import Gnuplot import os import sys În cele din urmă, lista de distribuție. Desigur, trebuie să adăugăm destinatarii e-mailului. Fiecare adresă de e-mail este salvată într-o variabilă.

Pasul 3: Configurare software - Configurare serială și analiză

Apoi ne uităm la configurarea serială. Este doar o problemă de configurare a parametrilor care se potrivește cu ieșirea serială de la senzor. Senzorul emite un șir serial la 9600 8 N 1, care este un format standard. După ce șirul a fost primit, există mai multe moduri de a analiza acest șir în python și, probabil, mai fiabil. Modul în care o fac este să caut caracterele „temp” din șirul serial. Odată localizat, este pur și simplu o chestiune de a citi următoarele 46 de caractere seriale într-un șir. Șirul colectat poate fi acum adresat ca elemente dintr-o matrice. Datele dorite sunt analizate din șir și salvate în cele trei fișiere împreună cu marca de timp corespunzătoare.timestamp = strftime ("% d% b% Y% H:% M:% S", localtime ())

Pasul 4: Configurare software - Gnuplot

Configurare software - Gnuplot
Configurare software - Gnuplot
Configurare software - Gnuplot
Configurare software - Gnuplot
Configurare software - Gnuplot
Configurare software - Gnuplot

Gnuplot este un instrument grafic în linia de comandă. Odată ce ați aflat elementele de bază, acesta poate fi un instrument destul de puternic pentru afișarea grafică a seturilor de date. Odată ce indicăm gnuplot unde se află datele din fișier, putem trasa valorile dorite. Voi folosi timpul pe axa X și temperatura noastră pe axa Y. Plotarea timpului din experiența mea este cea mai dificilă, deoarece trebuie să obțineți formatul orei în gnuplot pentru a se potrivi cu formatul fișierului text. După ce toate opțiunile de graficare sunt complete și după preferința dvs., Gnuplot poate crea o imagine a acestui grafic. Aceasta va fi imaginea pe care o vom folosi pe pagina noastră Web mai târziu. Am ales să merg cu o imagine-p.webp

Pasul 5: Configurare software - Setare prag și e-mail

Pragul pentru alertare trebuie făcut prin încercări și erori pentru configurarea dvs. camera care adăpostește sistemele nu are ferestre, astfel încât odată ce aerul condiționat se oprește, se poate încălzi foarte repede. Inițial, m-am uitat la setul de date timp de câteva zile și am urmărit variațiile de temperatură înainte să decid asupra valorii de alertă de 30 de grade C. Aceasta este setată ca o variabilă în sciptul Python. Este posibil să nu pară foarte mare, dar odată ce a fost declanșată alerta, totuși doriți să vă acordați timp pentru a remedia problema înainte ca aceasta să devină critică.

Pentru simplitate, trimit e-mailuri individuale pe lista de corespondență. Deoarece lista de corespondență este scurtă, nu m-am deranjat niciodată să trimit un e-mail către mai mulți destinatari. Un lucru de remarcat aici, deoarece rulez acest script ca o lucrare cron la fiecare 5 minute, nu doriți să trimiteți e-mailuri la fiecare 5 minute după ce pragul a fost declanșat. Pentru a evita acest lucru, scriu data și ora alertei într-un fișier și verific acest fișier înainte de a trimite e-mailuri pentru a vedea dacă sistemul este deja într-o stare de alertă. Odată ajuns într-o stare de alertă, va retrimite un e-mail numai la fiecare oră după primul declanșator, atât timp cât sistemul este în stare de alertă. În acest fel, Gmail nu vă blochează trimiterea prea multor e-mailuri într-o perioadă scurtă de timp.

Pasul 6: Configurare software - HTML

Monitorizarea întregului sistem se face printr-o pagină web și este nevoie de un script html foarte simplu. Imaginile pe care le-a creat Gnuplot le folosesc pur și simplu pe aceleași dimensiuni ale imaginii. Cred că am trecut prin aproximativ 3 dimensiuni pentru aceste imagini care au dat cea mai bună potrivire pe ecranul meu. Înainte de a crea scriptul html, să creăm un folder pentru acesta. În mod implicit, folderul de găzduire web este situat la / var / www /. Deși singurul scop al acestui Raspberry pi este să monitorizeze această cameră și să emită alerte prin e-mail, pentru o bună păstrare a casei am creat un folder separat în folderul / var / www /. Deoarece acest folder aparține utilizatorului root, trebuie să utilizați sudo pentru a crea un folder este această locație. sudo mkdir / var / www / temperature În acest exemplu am folosit temperatura ca nume al folderului, dar puteți folosi orice nume aici, dar amintiți-vă, deoarece acest lucru va trebui introdus în bara de adrese pentru a vizualiza această pagină. Această cale este stocată într-o variabilă din scriptul python. Chiar dacă locația de găzduire trebuie să fie modificată sau scriptul să fie modificat pentru un alt sistem, acesta poate fi doar schimbat din această locație. vreau să execut aici. Vă recomandăm să numiți scriptul html „index.html”, deoarece acest lucru ar simplifica acest lucru atunci când încercați să găsiți această pagină. Lucrul esențial este să vă asigurați că dimensiunea imaginii este aceeași cu dimensiunea imaginii din Gnuplot., trebuie pur și simplu să introduceți adresa IP a Raspberry Pi urmată de / temperature (sau ceea ce ați numit vreodată folderul dvs.) Am mai multe sisteme la locul de muncă care monitorizează diferite lucruri și toate produc o ieșire grafică a rezultatelor lor. Așa că am creat o pagină care are link-uri către toate aceste pagini, așa că nu trebuie să-mi fac griji cu privire la introducerea adresei de fiecare dată când vreau să accesez aceste pagini.

Pasul 7: Sunt în viață …

Am folosit acest lucru pentru a monitoriza temperatura într-o sală de calculatoare, dar acestea ar fi putut fi destul de multe date de la orice sursă. Odată ce poate fi stocat într-un fișier text și știți că este format Gnuplot poate face restul. Un lucru pe care l-am adăugat recent la acest proiect este să trimit un e-mail de tip „bătăi de inimă”. Asta este în prima lună, la 9 dimineața, am un script care rulează prin e-mail lista de e-mail pentru a le informa că sistemul rulează așa cum ar trebui și totul este bine în cameră.

Utilizarea listei cronjob ca:

Recomandat: