Sadržaj:

Raspberry Pi kontrolirano praćenje sobne temperature s Gnuplot izlazom slike i mogućnošću upozorenja e -poštom: 7 koraka
Raspberry Pi kontrolirano praćenje sobne temperature s Gnuplot izlazom slike i mogućnošću upozorenja e -poštom: 7 koraka

Video: Raspberry Pi kontrolirano praćenje sobne temperature s Gnuplot izlazom slike i mogućnošću upozorenja e -poštom: 7 koraka

Video: Raspberry Pi kontrolirano praćenje sobne temperature s Gnuplot izlazom slike i mogućnošću upozorenja e -poštom: 7 koraka
Video: The Ascent Test (Deutsch) Krasser Cyberpunk Action RPG Shooter im Review (German, many subtitles) 2024, Jun
Anonim
Raspberry Pi kontrolirano praćenje sobne temperature s Gnuplot izlazom slike i mogućnošću upozorenja putem e -pošte
Raspberry Pi kontrolirano praćenje sobne temperature s Gnuplot izlazom slike i mogućnošću upozorenja putem e -pošte

Tamo gdje ja radim, postoji jedna vrlo važna prostorija u kojoj se nalazi mnogo računara. Temperatura okoline ove prostorije mora biti vrlo hladna da bi se optimizirale performanse ovih sistema. Zamoljen sam da smislim sistem za nadgledanje koji ima mogućnost slanja nekog oblika upozorenja nekolicini ljudi koji će ih obavijestiti da nešto nije u redu s klima uređajem u toj prostoriji. Hardver za ovu izgradnju koristio sam Raspberry pi i USB senzor temperature i vlažnosti. Za praćenje, koristio sam Gnuplot za crtanje tri temperaturna grafikona i kreiranje slike tih grafikona. Zatim sam stvorio namjensku HTML stranicu koja će biti smještena na Raspberry pi -ju tako da se trenutni uslovi, te slike gnuplot -a, mogu nadzirati s web stranice unutar naše mreže. Za upozorenje sam se odlučio na Gmail. Našao sam neki primjer koda u korisničkom časopisu za Linux. (Naravno da možete koristiti bilo koji poslužitelj pošte ako znate potrebne dodjele portova.) Za to sam stvorio namjenski Gmail račun e -pošte za ova upozorenja. Također, kao dodatna funkcija, kada se aktivira upozorenje, e -poruci prilažem jedan grafikon tako da osoba koja prima e -poruku može steći dojam o tome koliko je drastično povećanje uzrokovalo upozorenje.

Korak 1: Postavljanje hardvera

Podešavanje hardvera
Podešavanje hardvera

Nema mnogo za postavljanje hardvera. Raspberry pi pokreće Raspian, a USB senzor temperature jednostavno se priključuje direktno na jedan od USB priključaka. Potrošnja energije ovog senzora je minimalna i kao rezultat toga napajao sam ga izravno iz Raspberry pi. Međutim, za USB uređaje s malo većom potrošnjom energije, preporučio bih da se napajaju putem USB čvorišta s napajanjem, a ne izravno s USB priključka Raspberry pi. Nakon što se senzor temperature uključi, on pruža serijski niz koji sadrži temperaturu i očitavanja vlažnosti trenutnih uslova. temperatura = 20,9 ° C vlažnost = 62,7% tačke rose = 13,0 ° CA python skripta raščlanjuje ovaj niz i pohranjuje vrijednosti temperature i vlažnosti u tri tekstualne datoteke svakih pet minuta; tekstualne datoteke dnevno, 24 sata i 48 sati (o razlikama će biti riječi kasnije u odjeljku HTML). Iz ovih datoteka, Gnuplot će generirati grafikone, a zatim i slike skupa podataka u svakoj datoteci. Prije nego što razgovaram o python skripti govorit ću o pripremi Raspberry pi. Budući da će se nadzor vršiti na mreži, potrebno je instalirati web server. Nekad sam ih isprobao na Raspberry pi, ali iako je malo veći, više volim Apache. Da biste instalirali Apache na svoj Raspberry pi, jednostavno upišite: sudo apt-get install apache2 Dat će vam upit prije instalacije, pritisnite "y" za da i i Apache će se instalirati nekoliko minuta ovisno o vašem Raspberry pi. je završeno, morate instalirati dva dodatka za python: python-serial i dodatak python-gnuplot. (Iako sam shvatio da novija Raspian verzija ima standard za dodatak python-serial, ali samo radi sigurnosti.) Da biste instalirali one koje otkucate: sudo apt-get install python-serial python-gnuplotJoš jednom nakon što potvrdite upite, ovi dodaci -in će biti instaliran. Time je hardversko postavljanje završeno.

Korak 2: Postavljanje softvera - Postavljanje e -pošte i primatelji

kreirajte adresu e -poštePrije nego što sada previše zađemo u softver, bilo bi dobro vrijeme za kreiranje Gmail računa za slanje upozorenja putem e -pošte. (Ovaj primjer koristi GMail, ali bilo koji poslužitelj pošte može se koristiti kada saznamo postavke smtp porta) Python kôd je prilično jasan, ali je potreban uvoz kritičan. Bez njih ništa ne bi funkcioniralo. Od vremena import *vrijeme uvoza uvoz serijski uvoz smtplib uvoz Gnuplot uvoz ili uvoz sysFinally, mailing lista. Naravno, moramo dodati primatelje e -pošte. Svaka adresa e -pošte je spremljena u varijablu.from_address ='[email protected]'to_address1 = 'primatelj1.mail.com' to_address2 = 'primatelj2.mail.com'username =' [email protected] 'lozinka =' custom_email_password '

Korak 3: Postavljanje softvera - Serijsko postavljanje i raščlanjivanje

Zatim gledamo serijsko postavljanje. Samo je pitanje postavljanja parametara koji odgovaraju serijskom izlazu sa senzora. Senzor daje serijski niz na 9600 8 N 1 koji je standardni format. Nakon što je niz primljen, postoji nekoliko načina raščlanjivanja ovog niza u pythonu i vrlo vjerojatno pouzdanije. Način na koji ja to radim je da tražim "temp" znakove u serijskom nizu. Jednom locirano jednostavno je čitanje sljedećih 46 serijskih znakova u niz. Prikupljeni niz se sada može adresirati kao elementi u nizu. Željeni podaci se raščlanjuju iz niza i spremaju u tri datoteke zajedno s odgovarajućom vremenskom oznakom.timestamp = strftime ("%d%b%Y%H:%M:%S", localtime ())

Korak 4: Postavljanje softvera - Gnuplot

Postavljanje softvera - Gnuplot
Postavljanje softvera - Gnuplot
Postavljanje softvera - Gnuplot
Postavljanje softvera - Gnuplot
Postavljanje softvera - Gnuplot
Postavljanje softvera - Gnuplot

Gnuplot je grafički alat komandne linije. Nakon što ste shvatili osnove, to može biti prilično moćan alat za grafički prikaz skupova podataka. Gnuplot može iscrtati izravno iz formatirane tekstualne datoteke, a mi ga slučajno imamo prije iz koraka raščlanjivanja. Nakon što označimo gnuplotu gdje se u datoteci nalaze podaci možemo iscrtati željene vrijednosti. Koristit ću vrijeme na osi X, a našu temperaturu na osi Y. Iscrtavanje vremena iz mog iskustva je najteže jer morate dobiti format vremena u gnuplotu kako bi odgovarao formatu tekstualne datoteke. Nakon što su sve opcije grafikona potpune i prema vašim željama, Gnuplot tada može stvoriti sliku ovog grafikona. Ovo će biti slika koju ćemo kasnije koristiti na našoj web stranici. Odlučio sam se za-p.webp

Korak 5: Postavljanje softvera - postavljanje praga i slanje e -pošte

Prag upozorenja mora se izvršiti pokušajem i greškom za vaše postavljanje. prostorija u kojoj se nalaze sistemi nema prozore, pa kad se klima uređaj zaustavi, vrlo brzo se može jako zagrijati. U početku sam nekoliko dana gledao skup podataka i posmatrao varijacije temperature pre nego što sam se odlučio za upozoravajuću vrednost od 30 stepeni C. Ovo je postavljeno kao promenljiva u okviru python scipta. Ovo se možda ne čini jako visokim, ali nakon što se upozorenje aktivira, i dalje želite dati sebi vremena da ispravite problem prije nego što postane kritičan.

Radi jednostavnosti, šaljem pojedinačne e -poruke na mailing listu. Pošto je lista slanja kratka, nikada se nisam zamarao slanjem jedne e -pošte nekolicini primalaca. Ovdje treba napomenuti jednu stvar. Budući da ovu skriptu pokrećem kao cron posao svakih 5 minuta, ne želite slati e -poštu svakih 5 minuta nakon što se aktivira prag. Da bih to zaobišao, zapisujem datum i vrijeme upozorenja u datoteku i provjeravam ovu datoteku prije slanja bilo kakve e -pošte da vidim je li sistem već u stanju upozorenja. Jednom u stanju upozorenja, samo će ponovo slati e -poštu svakih sat vremena nakon prvog okidača, sve dok je sistem u stanju upozorenja. Na taj način Gmail ne blokira slanje previše e -poruka u kratkom vremenskom periodu.

Korak 6: Postavljanje softvera - HTML

Nadzor cijelog sistema vrši se putem web stranice i za to je potrebna vrlo osnovna html skripta. Slike koje je Gnuplot stvorio jednostavno koristim iste dimenzije slike. Vjerujem da sam prošao kroz približno 3 veličine za ove slike koje su se najbolje uklopile na moj ekran. Prije nego stvorimo html skriptu, napravimo mapu za nju. Mapa web hostinga se prema zadanim postavkama nalazi na/var/www/. Iako je jedina svrha ovog Raspberry pi -a nadziranje ove prostorije i izdavanje upozorenja putem e -pošte, za dobro održavanje kuće stvorio sam zasebnu mapu u/var/www/folderu. Budući da ova mapa pripada root korisniku, morate koristiti sudo za stvaranje mape na ovoj lokaciji. sudo mkdir/var/www/temperatureU ovom primjeru sam koristio temperaturu kao naziv foldera, ali ovdje možete koristiti bilo koji naziv, ali zapamtite jer će to biti potrebno unijeti u traku za adresu da biste vidjeli ovu stranicu. Ova putanja je pohranjena u varijabli unutar python skripte. Čak i ako se lokacija hostinga mora promijeniti ili skripta mora biti promijenjena za drugi sistem, može se jednostavno promijeniti s ove lokacije. Sada možemo stvoriti našu html skriptu u ovoj mapi sjećajući se da koristite sudo ispred svih naredbi koje želite izvršiti ovdje. Preporučio bih vam da imenujete html skriptu "index.html" jer bi to pojednostavilo pokušaj pronalaženja ove stranice. Najvažnije je osigurati da veličina slike bude ista kao veličina slike iz Gnuplot -a. Da biste pogledali ovu stranicu, jednostavno morate unijeti IP adresu Raspberry Pi -a iza koje slijedi /temperature (ili kako ste već nazvali svoju mapu). Imam nekoliko sistema na poslu koji nadgledaju različite stvari i svi oni daju neke grafičke rezultate svojih rezultata. Stoga sam stvorio stranicu koja ima veze do svih ovih stranica tako da ne moram brinuti o unosu adrese svaki put kad želim pristupiti tim stranicama.

Korak 7: Živ sam…

Koristio sam ovo za praćenje temperature u računarskoj prostoriji, ali to su mogli biti prilično podaci iz bilo kojeg izvora. Jednom kada se može pohraniti u tekstualnu datoteku, a vi znate da je format Gnuplot može učiniti ostalo. Jedna stvar koju sam nedavno dodao ovom projektu je da pošaljem svojevrsnu poruku "heartbeat". To je prvog u mjesecu u 9 sati ujutro. Imam skriptu koja se pokreće putem e -pošte dopisnoj listi kako bi im javila da sistem radi kako treba i da je sve u redu u prostoriji.

Koristeći cronjob listu kao:

Preporučuje se: