Obsah:

Riadené monitorovanie izbovej teploty Raspberry Pi s výstupom obrazu Gnuplot a schopnosťou upozorňovať na e -maily: 7 krokov
Riadené monitorovanie izbovej teploty Raspberry Pi s výstupom obrazu Gnuplot a schopnosťou upozorňovať na e -maily: 7 krokov

Video: Riadené monitorovanie izbovej teploty Raspberry Pi s výstupom obrazu Gnuplot a schopnosťou upozorňovať na e -maily: 7 krokov

Video: Riadené monitorovanie izbovej teploty Raspberry Pi s výstupom obrazu Gnuplot a schopnosťou upozorňovať na e -maily: 7 krokov
Video: Высокая плотность 2022 2024, Jún
Anonim
Riadené monitorovanie izbovej teploty Raspberry Pi s výstupom obrazu Gnuplot a možnosťou upozornenia e -mailom
Riadené monitorovanie izbovej teploty Raspberry Pi s výstupom obrazu Gnuplot a možnosťou upozornenia e -mailom

Tam, kde pracujem, je veľmi dôležitá miestnosť, v ktorej je veľa počítačov. Teplota okolia tejto miestnosti musí byť veľmi chladná, aby sa optimalizoval výkon týchto systémov. Bol som požiadaný, aby som prišiel s monitorovacím systémom, ktorý má schopnosť odoslať určitú formu upozornenia niekoľkým ľuďom, ktorí ich upozornia, že s klimatizáciou v danej miestnosti nie je niečo v poriadku. Hardvér pre túto zostavu som použil Raspberry pi a USB snímač teploty a vlhkosti. Na monitorovanie som použil Gnuplot na vykreslenie troch teplotných grafov a vytvorenie obrazu týchto grafov. Potom som vytvoril vyhradenú stránku HTML, ktorá bude hostená na Raspberry pi, takže súčasné podmienky, tieto výstupné obrázky gnuplot, bude možné monitorovať z webovej stránky v našej sieti. Na upozornenie som sa rozhodol použiť Gmail. Našiel som nejaký ukážkový kód v časopise Linux User. (Samozrejme, môžete použiť ľubovoľný poštový server, keď poznáte potrebné priradenia portov.) Na to som vytvoril špeciálne e -mailové konto pre Gmail pre tieto upozornenia. Tiež ako pridaná funkcia, keď bolo spustené upozornenie, prikladám k e -mailu jeden graf, aby osoba prijímajúca e -mail získala predstavu o tom, aké drastické zvýšenie výstrahy spôsobilo.

Krok 1: Nastavenie hardvéru

Nastavenie hardvéru
Nastavenie hardvéru

Na nastavovanie hardvéru toho veľa nie je. Na Raspberry pi beží Raspian a snímač teploty USB sa jednoducho pripája priamo do jedného z portov USB. Spotreba energie tohto senzora je minimálna a v dôsledku toho som ho napájal priamo z Raspberry pi. V prípade zariadení napájaných USB s o niečo vyššou spotrebou energie by som však odporučil napájať ich pomocou napájaného rozbočovača USB, a nie priamo z portu USB Raspberry pi. Akonáhle je teplotný snímač napájaný, poskytuje sériový reťazec, ktorý obsahuje teplotu a hodnoty vlhkosti súčasných podmienok. teplota = 20,9 ° C vlhkosť = 62,7% rosný bod = 13,0 ° Python skript CA analyzuje tento reťazec a každých päť minút uloží hodnoty teploty a vlhkosti do troch textových súborov; textové súbory denne, 24 hodín a 48 hodín (Rozdiely budú diskutované neskôr v sekcii HTML). Z týchto súborov Gnuplot vygeneruje grafy a následne obrázky množiny údajov v každom súbore. Predtým, ako rozoberiem skript pythonu, poviem vám o príprave Raspberry pi. Keďže monitorovanie sa má vykonávať online, je potrebné nainštalovať webový server. Skúsil som niekoľko z nich svojho času na Raspberry pi, ale aj keď je to trochu veľké, dávam prednosť Apache. Ak chcete nainštalovať Apache na svoj Raspberry pi, stačí napísať: sudo apt-get install apache2 Zobrazí sa výzva pred inštaláciou, stlačením klávesu „y“áno a Apache sa nainštaluje niekoľko minút v závislosti od vášho Raspberry pi. Akonáhle to bude hotovo, musíte nainštalovať dva doplnky pythonu: python-serial a zásuvku python-gnuplot. (Aj keď som si uvedomil, že nedávne Raspian buildy majú štandard python-serial plug-in, ale len pre istotu.) Ak chcete nainštalovať tie, ktoré napíšete: sudo apt-get install python-serial python-gnuplot Opäť po potvrdení výziev sa tieto plug -ins budú nainštalované. A tým je nastavenie hardvéru dokončené.

Krok 2: Nastavenie softvéru - Nastavenie e -mailu a príjemcovia

Vytvorte e -mailovú adresu Predtým, ako sa dostaneme k softvéru príliš ďaleko, by bolo vhodné vytvoriť si účet Gmail, z ktorého by ste mohli odosielať e -mailové upozornenia. (Tento príklad používa GMail, ale je možné použiť ľubovoľný poštový server, ak poznáme nastavenia portu smtp.) Kód pythonu je veľmi jednoduchý, ale potrebné importy sú kritické. Bez nich by nič nefungovalo. Od času importu *importu času importu sériového importu smtplib importu Gnuplot importu os importu sysKonečne aj zoznamu adries. Samozrejme musíme pridať príjemcov e -mailu. Každá e -mailová adresa je uložená v premennej.from_address ='[email protected]'to_address1 = 'recipient1.mail.com' to_address2 = 'recipient2.mail.com'username =' [email protected] 'heslo =' custom_email_password '

Krok 3: Nastavenie softvéru - sériové nastavenie a analýza

Ďalej sa pozrieme na sériové nastavenie. Je to len otázka nastavenia parametrov, ktoré zodpovedajú sériovému výstupu zo snímača. Senzor vydáva sériový reťazec na 9600 8 N 1, čo je štandardný formát. Potom, čo bol reťazec prijatý, existuje niekoľko spôsobov, ako tento reťazec analyzovať v pythone a pravdepodobne aj spoľahlivejšie. Spôsob, akým to robím, je hľadať znaky „temp“v sériovom reťazci. Akonáhle je lokalizovaný, je to len otázka prečítania nasledujúcich 46 sériových znakov do reťazca. Zhromaždený reťazec je teraz možné adresovať ako prvky v poli. Požadované údaje sa analyzujú z reťazca a uložia sa do troch súborov spolu s príslušnou časovou pečiatkou. Timestamp = strftime ("%d%b%Y%H:%M:%S", localtime ())

Krok 4: Nastavenie softvéru - Gnuplot

Nastavenie softvéru - Gnuplot
Nastavenie softvéru - Gnuplot
Nastavenie softvéru - Gnuplot
Nastavenie softvéru - Gnuplot
Nastavenie softvéru - Gnuplot
Nastavenie softvéru - Gnuplot

Gnuplot je grafický nástroj príkazového riadka. Akonáhle ste pochopili základy, môže to byť dosť účinný nástroj na grafické zobrazenie množín údajov. GNuplot môže vykresľovať grafy priamo z formátovaného textového súboru a my náhodou máme jeden z kroku analýzy predtým. Akonáhle označíme gnuplot, kde sa v súbore nachádzajú údaje, môžeme vykresliť požadované hodnoty. Budem používať čas na osi X a našu teplotu na osi Y. Vykreslenie času z mojej skúsenosti je najťažšie, pretože musíte získať časový formát v programe gnuplot tak, aby zodpovedal formátu textového súboru. Keď sú všetky možnosti grafov úplné a podľa vašich preferencií, Gnuplot potom môže vytvoriť obrázok tohto grafu. Toto bude obrázok, ktorý použijeme na našej webovej stránke neskôr. Rozhodol som sa použiť obrázok-p.webp

Krok 5: Nastavenie softvéru - nastavenie prahu a odoslanie e -mailom

Prah varovania musí pri vašom nastavení prebehnúť pokusom a omylom. miestnosť, v ktorej sú umiestnené systémy, nemá okná, takže akonáhle sa klimatizácia zastaví, môže sa veľmi rýchlo veľmi zahriať. Spočiatku som niekoľko dní pozeral na súbor údajov a sledoval som kolísanie teploty, než som sa rozhodol pre výstražnú hodnotu 30 stupňov C. Toto je nastavené ako premenná v pythonovom scipte. To sa nemusí zdať príliš vysoké, ale akonáhle sa výstraha spustí, stále si dajte čas na odstránenie problému skôr, ako sa stane kritickým.

Pre jednoduchosť odosielam jednotlivé e -maily na zoznam adries. Keďže zoznam adries je krátky, nikdy som sa neobťažoval odoslať jeden e -mail viacerým príjemcom. Tu je potrebné poznamenať jednu vec: Keďže tento skript spúšťam ako úlohu cron každých 5 minút, nechcete, aby sa po spustení prahu odosielali e -maily každých 5 minút. Aby som to obišiel, napíšem dátum a čas upozornenia do súboru a pred odoslaním akýchkoľvek e -mailov tento súbor skontrolujem, aby som zistil, či je systém už v stave výstrahy. Keď je v stave výstrahy, bude znova odosielať e -maily každú hodinu po prvom spustení, pokiaľ je systém v stave pohotovosti. Gmail tak nezablokuje odosielanie príliš veľkého počtu e -mailov v krátkom čase.

Krok 6: Nastavenie softvéru - HTML

Monitorovanie celého systému sa vykonáva prostredníctvom webovej stránky a je na to potrebný základný skript html. Obrázky, ktoré Gnuplot vytvoril, jednoducho použijem späť na rovnaké rozmery obrázku. Verím, že som prešiel týmito obrázkami asi 3 veľkosti, ktoré najlepšie vyhovovali mojej obrazovke. Predtým, ako vytvoríme skript html, vytvorte preň priečinok. V predvolenom nastavení sa priečinok webhostingu nachádza na/var/www/. Napriek tomu, že jediným účelom tohto Raspberry pi je monitorovať túto miestnosť a vydávať e -mailové upozornenia, pre dobrú starostlivosť o domácnosť som vytvoril samostatný priečinok v priečinku/var/www/. Pretože tento priečinok patrí používateľovi root, musíte na vytvorenie priečinka použiť sudo. sudo mkdir/var/www/teplota V tomto prípade som ako názov priečinka použil teplotu, ale môžete tu použiť ľubovoľný názov, ale pamätajte, že na zobrazenie tejto stránky bude potrebné zadať adresu do panela s adresou. Táto cesta je uložená v premennej v skripte python. Aj keď je potrebné zmeniť umiestnenie hostiteľa alebo skript upraviť pre iný systém, je možné ho zmeniť iba z tohto jedného umiestnenia. Teraz môžeme v tomto priečinku vytvoriť náš skript html, ktorý pamätá na použitie príkazu sudo infront chcete tu popraviť. Odporúčam vám pomenovať html skript „index.html“, pretože by to zjednodušilo pri hľadaní tejto stránky. Najdôležitejšie je uistiť sa, že veľkosť obrázka je rovnaká ako veľkosť obrázka od spoločnosti Gnuplot. Ak chcete zobraziť túto stránku Stačí zadať IP adresu Raspberry Pi a za ňou /teplotu (alebo čokoľvek, čomu ste priečinok pomenovali) Mám v prevádzke niekoľko systémov monitorujúcich rôzne veci a všetky produkujú nejaký grafický výstup svojich výsledkov. Vytvoril som teda stránku, ktorá obsahuje odkazy na všetky tieto stránky, aby som sa nemusel starať o zadávanie adresy zakaždým, keď sa chcem na tieto stránky dostať.

Krok 7: Som nažive …

Použil som to na monitorovanie teploty v počítačovej miestnosti, ale mohlo ísť o údaje z akéhokoľvek zdroja. Akonáhle to môže byť uložené v textovom súbore a viete, že je to formát, Gnuplot dokáže urobiť ostatné. Jedna vec, ktorú som nedávno pridal do tohto projektu, je odoslať určitý druh „prezývky“. To je prvý deň v mesiaci o 9:00, mám spustený skript, ktorý pošle e -mail na zoznam adries, aby im oznámil, že systém beží tak, ako by mal a že je všetko v poriadku.

Použitie zoznamu cronjob ako:

Odporúča: