Sadržaj:

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

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

Video: Raspberry Pi kontrolirano praćenje sobne temperature s Gnuplot izlazom slike i sposobnošću upozorenja e -poštom: 7 koraka
Video: The Ascent Test (Deutsch) Krasser Cyberpunk Action RPG Shooter im Review (German, many subtitles) 2024, Lipanj
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čunala. Temperatura okoline ove prostorije mora biti vrlo hladna da bi se optimizirale performanse ovih sustava. Zamoljen sam da smislim sustav za nadzor 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 te USB senzor temperature i vlažnosti. Za nadzor sam koristio Gnuplot za crtanje tri temperaturna grafikona i stvaranje slike tih grafikona. Zatim sam stvorio namjensku HTML stranicu koja će biti smještena na Raspberry pi -ju tako da se trenutni uvjeti, te slike gnuplot -a, mogu nadzirati s web stranice unutar naše mreže. Za upozorenje sam se odlučio koristiti Gmail. Našao sam primjer koda u časopisu Linux User. (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 značajka, kad 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

Postavljanje hardvera
Postavljanje hardvera

Nema mnogo za postavljanje hardvera. Raspberry pi pokreće Raspian, a USB senzor temperature jednostavno se priključuje izravno u jedan od USB priključaka. Potrošnja energije ovog senzora je minimalna i zbog toga sam ga napajao izravno s Raspberry pi. Međutim, za USB uređaje s malo većom potrošnjom energije, preporučio bih da ih napajate 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čitanja vlažnosti trenutnih uvjeta. temperatura = 20,9 ° C vlažnost = 62,7% rosišta = 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 razgovaram o python skripti govorit ću o pripremi Raspberry pi. Budući da se nadzor vrši putem interneta, potrebno je instalirati web poslužitelj. Isprobao sam ih nekoliko u svoje vrijeme na Raspberry piju, 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 Dati će vam upit prije instalacije, pritisnite "y" za da i i Apache će se instalirati nekoliko minuta, ovisno o vašem Raspberry pi. je učinjeno, morate instalirati dva dodatka za python: python-serial i dodatak python-gnuplot. (Iako sam shvatio da novija Raspian verzija ima standard za dodatak python-serijski, ali samo radi sigurnosti.) Da biste instalirali one koje upisujete: sudo apt-get install python-serial python-gnuplotJoš jednom nakon potvrde upita, ovi dodaci -in će biti instaliran. Time je hardversko postavljanje dovršeno.

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

stvorite adresu e -poštePrije nego što sada previše zađemo u softver, bilo bi dobro vrijeme za stvaranje Gmail računa za slanje upozorenja e -poštom. (Ovaj primjer koristi GMail, ali bilo koji poslužitelj pošte može se koristiti kad saznamo postavke smtp porta) Python kôd prilično je jasan, ali je potreban uvoz kritičan. Bez njih ništa ne bi funkcioniralo.od vremena uvoz *vrijeme uvoza uvoz serijski uvoz smtplib uvoz Gnuplot uvoz os uvoz sysNapokon, popis adresa. Naravno da moramo dodati primatelje e -pošte. Svaka e -adresa spremljena je 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 s 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 jest tražiti znakove "temp" u serijskom nizu. Jednom locirano jednostavno je pitanje čitanja 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 pripadajuć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 naredbenog retka. 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 i 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 mogućnosti grafikona dovršene 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štom

Prag upozorenja mora se izvršiti pokušajem i pogreškom za vaše postavljanje. prostorija u kojoj se nalaze sustavi nema prozore pa se nakon što se klima uređaj zaustavi vrlo brzo može jako zagrijati. U početku sam nekoliko dana gledao skup podataka i promatrao varijacije temperature prije nego što sam se odlučio za vrijednost upozorenja od 30 stupnjeva C. To je postavljeno kao varijabla unutar python scipta. To se možda ne čini jako visokim, ali nakon što se upozorenje aktivira, ipak si želite dati vremena da ispravite problem prije nego što postane kritičan.

Radi jednostavnosti, šaljem pojedinačne e -poruke na mailing listu. Budući da je lista slanja kratka, nikada se nisam zamarao slanjem jedne e -pošte nekolicini primatelja. 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 sustav već u stanju upozorenja. Jednom u stanju upozorenja, e -poštu će slati samo svaki sat nakon prvog okidača, sve dok je sustav u stanju upozorenja. Na taj način Gmail ne blokira slanje previše e -poruka u kratkom vremenskom razdoblju.

Korak 6: Postavljanje softvera - HTML

Nadzor cijelog sustava vrši se putem web stranice, a za to je potrebna vrlo osnovna html skripta. Slike koje je Gnuplot stvorio jednostavno koristim iste dimenzije slike. Vjerujem da sam prošao oko 3 veličine za ove slike koje su se najbolje uklopile na moj zaslon. Prije nego stvorimo html skriptu, napravimo mapu za nju. Mapa web hostinga prema zadanim postavkama nalazi se na/var/www/. Iako je jedina svrha ovog Raspberry pi -ja nadziranje ove sobe i izdavanje upozorenja putem e -pošte, za dobro održavanje kuće stvorio sam zasebnu mapu u/var/www/mapi. 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 mape, ali ovdje možete koristiti bilo koji naziv, ali zapamtite jer će se to morati unijeti u adresnu traku da biste vidjeli ovu stranicu. Ovaj je put pohranjen u varijabli unutar python skripte. Čak i ako se mjesto hostinga mora promijeniti ili skripta mora biti promijenjena za drugi sustav, može se jednostavno promijeniti s ove jedne 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. Ja bih vam preporučio da imenujete html skriptu "index.html" jer bi to pojednostavilo pokušaj pronalaženja ove stranice. Najvažnije je provjeriti je li veličina slike jednaka veličini slike iz Gnuplota. Da biste pogledali ovu stranicu, jednostavno morate unijeti IP adresu Raspberry Pi -a iza koje slijedi /temperatura (ili kako ste već nazvali svoju mapu). Imam nekoliko sustava na poslu koji nadziru različite stvari i svi oni daju neke grafičke rezultate svojih rezultata. Stoga sam stvorio stranicu koja ima veze na sve ove stranice 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čunalnoj učionici, ali to su mogli biti prilično podaci iz bilo kojeg izvora. Nakon što se može pohraniti u tekstualnu datoteku i znate da je format Gnuplot može učiniti ostalo. Jedna stvar koju sam nedavno dodao ovom projektu je slanje svojevrsne e -pošte "heartbeat". To je prvog u mjesecu u 9 sati ujutro. Imam skriptu koja se pokreće putem e -pošte s popisa za slanje poruka kako bi im javila da sustav radi kako treba i da je sve u redu.

Upotreba cronjob popisa kao:

Preporučeni: