INHOUDSOPGAWE:

Raspberry Pi -beheerde kamertemperatuurmonitering met Gnuplot -beelduitvoer en e -poswaarskuwingsvermoë: 7 stappe
Raspberry Pi -beheerde kamertemperatuurmonitering met Gnuplot -beelduitvoer en e -poswaarskuwingsvermoë: 7 stappe

Video: Raspberry Pi -beheerde kamertemperatuurmonitering met Gnuplot -beelduitvoer en e -poswaarskuwingsvermoë: 7 stappe

Video: Raspberry Pi -beheerde kamertemperatuurmonitering met Gnuplot -beelduitvoer en e -poswaarskuwingsvermoë: 7 stappe
Video: Raspberry Pi - Что нужно знать? Что нужно иметь? Достаточно купить только плату? 2024, November
Anonim
Raspberry Pi -beheerde kamertemperatuurmonitering met Gnuplot -beelduitvoer en e -poswaarskuwingsvermoë
Raspberry Pi -beheerde kamertemperatuurmonitering met Gnuplot -beelduitvoer en e -poswaarskuwingsvermoë

Waar ek werk, is daar 'n baie belangrike kamer met baie rekenaars. Die kamertemperatuur van hierdie kamer moet baie koel wees om die werkverrigting van hierdie stelsels te optimaliseer. Ek is gevra om 'n moniteringstelsel op te stel wat die moontlikheid het om 'n paar waarskuwings na 'n paar mense te stuur wat hulle in kennis stel dat daar iets fout is met die lugversorging in die kamer. en 'n USB -temperatuur- en humiditeitsensor. Vir monitering het ek Gnuplot gebruik om drie temperatuurgrafieke te teken en 'n beeld van die grafieke te skep. Ek het toe 'n spesiale HTML -bladsy geskep wat op die Raspberry pi aangebied word, sodat die huidige toestande, die gnuplot -afbeeldings, vanaf 'n webwerf in ons netwerk gemonitor kan word. Ek het 'n voorbeeldkode in 'n Linux User -tydskrif gevind. (U kan natuurlik enige posbediener gebruik sodra u die nodige poortopdragte ken.) Hiervoor het ek 'n spesiale Gmail -e -posrekening vir hierdie waarskuwings geskep. As 'n ekstra funksie, heg ek 'n grafiek aan die e -pos as 'n waarskuwing geaktiveer word, sodat die persoon wat die e -pos ontvang, 'n idee kan kry van die drastiese toename wat die waarskuwing veroorsaak het.

Stap 1: Die hardeware -opstelling

Die hardeware -opstelling
Die hardeware -opstelling

Daar is nie veel om die hardeware op te stel nie. Die Raspberry pi werk met Raspian en die USB -temperatuursensor kan eenvoudig direk in een van die USB -poorte gekoppel word. Die kragverbruik van hierdie sensor is minimaal, en daarom het ek dit direk vanaf die Framboos -pi aangedryf. Vir toestelle met 'n bietjie meer kragverbruik op USB -toestelle, sou ek aanbeveel om dit deur 'n aangedrewe USB -hub aan te dryf en nie direk vanaf die Raspberry pi se USB -poort nie. humiditeitsmetings van die huidige toestande. temperatuur = 20,9 ° C humiditeit = 62,7% dauwpunt = 13,0 ° CA python -skrip ontleed hierdie string en stoor elke vyf minute die temperatuur- en humiditeitswaardes in drie tekslêers; daagliks, 24 uur en 48 uur tekslêers (die verskille word later in die HTML -afdeling bespreek). Uit hierdie lêers sal Gnuplot die grafieke en daarna die beelde van die datastel in elke lêer genereer. Voordat ek die luislangskrif bespreek, sal ek praat oor die voorbereiding van die framboos -pi. Aangesien die monitering aanlyn gedoen moet word, moet 'n webbediener geïnstalleer word. Ek het al 'n paar daarvan in my tyd op die Raspberry pi probeer, maar hoewel dit 'n bietjie groot is, verkies ek Apache. Om Apache op u Raspberry pi te installeer, tik u eenvoudig: sudo apt-get install apache2 Dit sal u 'n aanwysing gee voordat dit geïnstalleer word, druk "y" vir ja en dan word Apache 'n paar minute geïnstalleer, afhangende van u framboos pi. As u klaar is, moet u twee python-inproppe installeer: python-serial en die python-gnuplot-prop. (Alhoewel ek besef het dat die onlangse Raspian-builds die standaard vir python-seriële inproppe het, maar net om dit veilig te maak.) Om diegene wat u tik, te installeer: sudo apt-get install python-serial python-gnuplot Sodra u die instruksies erken het, moet u -ins sal geïnstalleer word. En daarmee is die hardeware -opstelling voltooi.

Stap 2: sagteware -opstelling - e -posopstelling en ontvangers

skep 'n e -posadres Voordat ons nou te ver in die sagteware kom, is dit 'n goeie tyd om 'n Gmail -rekening te skep om u e -poswaarskuwings van te stuur. (Hierdie voorbeeld gebruik GMail, maar enige e -posbediener kan gebruik word sodra ons die smtp -poortinstellings ken) Die python -kode is redelik eenvoudig, maar die nodige invoer is van kritieke belang. Sonder hulle sou niks werk nie. Van tyd af invoer *invoer tyd invoer reeks invoer smtplib invoer Gnuplot invoer os invoer stelsel Uiteindelik die poslys. Natuurlik moet ons die ontvangers van die e -pos byvoeg. Elke e -posadres word gestoor in 'n variable.from_address = '[email protected]'to_address1 =' recipient1.mail.com 'to_address2 =' recipient2.mail.com'username = '[email protected]' wagwoord = 'custom_email_password'

Stap 3: sagteware -opstelling - reeksopstelling en ontleding

Vervolgens kyk ons na die reeksopstelling: dit is net 'n kwessie om parameters op te stel wat pas by die seriële uitset van die sensor. Die sensor gee 'n seriële string uit by 9600 8 N 1, wat 'n standaardformaat is. Nadat die string ontvang is, is daar verskeie maniere om hierdie string in python te ontleed en heel moontlik meer betroubaar. Die manier waarop ek dit doen, is om na die 'temp' -karakters in die reeksreeks te soek. As dit eers gevind is, is dit eenvoudig om die volgende 46 reekskarakters in 'n string te lees. Die versamelde string kan nou soos elemente in 'n skikking aangespreek word. Die gewenste data word uit die string ontleed en in die drie lêers saam met die ooreenstemmende tydstempel.tydstempel = strftime ("%d%b%Y%H:%M:%S", localtime ()) gestoor

Stap 4: Sagteware -opstelling - Gnuplot

Opstel van sagteware - Gnuplot
Opstel van sagteware - Gnuplot
Opstel van sagteware - Gnuplot
Opstel van sagteware - Gnuplot
Opstel van sagteware - Gnuplot
Opstel van sagteware - Gnuplot

Gnuplot is 'n opdragreël grafiese hulpmiddel. Sodra u die basiese beginsels uitgevind het, kan dit 'n redelik kragtige instrument wees vir die grafiese vertoning van datastelle. Gnuplot kan direk uit 'n geformateerde tekslêer plot, en ons het toevallig een van die ontledingsstappe hiervoor. Sodra ons vir gnuplot aandui waar in die lêer die data geleë is, kan ons die gewenste waardes teken. Ek gaan tyd op die X -as en ons temperatuur op die Y -as gebruik. Dit is die moeilikste om tyd uit my ervaring op te stel, aangesien u die tydformaat in gnuplot moet kry om by die formaat van die tekslêer te pas. Nadat al die grafiese opsies voltooi is en na u voorkeur, kan Gnuplot 'n beeld van hierdie grafiek skep. Dit is die prentjie wat ons later op ons webwerf sal gebruik. Ek het gekies om met 'n-p.webp

Stap 5: sagteware -opstelling - drempelinstelling en e -pos

Die drempel vir die waarskuwing moet gedoen word deur proef en fout vir u opstelling. Die kamer met die stelsels het geen vensters nie, sodra die lugversorging stop, kan dit baie vinnig warm word. Aanvanklik het ek 'n paar dae na die datastel gekyk en die temperatuurvariasies gekyk voordat ek op 'n waarskuwingswaarde van 30 grade C. besluit het. Dit lyk miskien nie baie hoog nie, maar sodra die waarskuwing geaktiveer is, wil u uself nog tyd gee om die probleem reg te stel voordat dit krities word.

Vir die eenvoud stuur ek individuele e -posse na die poslys. Aangesien die poslys kort is, het ek nooit moeite gehad om een e -pos aan verskeie ontvangers te stuur nie. Een ding om hier op te let, aangesien ek hierdie skrip elke 5 minute as 'n cron -taak uitvoer, wil u nie elke 5 minute e -pos stuur nie, sodra die drempelwaarde geaktiveer is. Om dit te vermy, skryf ek die datum en tyd van die waarskuwing na 'n lêer en kyk na hierdie lêer voordat ek e -posse stuur om te sien of die stelsel reeds in 'n waarskuwingstoestand is. Sodra die stelsel in 'n waarskuwingstoestand is, stuur dit slegs 'n e -pos elke uur na die eerste sneller, solank die stelsel in 'n waarskuwingstoestand is. Op hierdie manier blokkeer Gmail u e -pos om te veel e -posse binne 'n kort tydjie te stuur.

Stap 6: Sagteware -opstelling - HTML

Die monitering van die hele stelsel word via 'n webblad gedoen, en 'n baie basiese html -script is hiervoor nodig. Die beelde wat Gnuplot geskep het, gebruik ek net dieselfde dimensies van die beeld. Ek glo ek het ongeveer 3 groottes deurgegaan vir hierdie beelde wat die beste pas op my skerm. Voordat ons die html -script skep, moet ons 'n gids daarvoor skep. Die gids vir webhosting is standaard geleë op/var/www/. Alhoewel hierdie Raspberry pi se enigste doel is om hierdie kamer te monitor en e -poswaarskuwings uit te reik, het ek 'n aparte vouer in die/var/www/gids vir goeie huishouding geskep. Aangesien hierdie gids aan die wortelgebruiker behoort, moet u sudo gebruik om 'n gids te skep. sudo mkdir/var/www/temperature In hierdie voorbeeld het ek temperatuur as die naam van die gids gebruik, maar u kan enige naam hier gebruik, maar onthou dit moet in die adresbalk ingevoer word om hierdie bladsy te sien. Hierdie pad word gestoor in 'n veranderlike in die python -script. Selfs as die hosting -ligging verander moet word of die script vir 'n ander stelsel gewysig moet word, kan dit net van hierdie een plek verander word. wil hier uitvoer. Ek beveel aan dat u die html -script "index.html" noem, aangesien dit dit sou vereenvoudig as u hierdie bladsy probeer vind. Die belangrikste ding is om seker te maak dat die grootte van die prent dieselfde is as die beeldgrootte van Gnuplot. U moet eenvoudig die IP -adres van die Raspberry Pi invoer, gevolg deur /temperatuur (of wat u ook al u gids genoem het). Ek het dus 'n bladsy geskep met skakels na al hierdie bladsye, sodat ek my nie hoef te bekommer oor die invoer van die adres elke keer as ek toegang tot hierdie bladsye wil kry nie.

Stap 7: Ek is lewendig …

Ek het dit gebruik om die temperatuur in 'n rekenaarkamer te monitor, maar dit kon redelik veel data van enige bron wees. Sodra dit in 'n tekslêer gestoor kan word en u weet dat dit die formaat is, kan Gnuplot die res doen. Een ding wat ek onlangs by hierdie projek gevoeg het, is om 'n soortgelyke 'hartklop' -e -pos te stuur. Dit is op die eerste van die maand om 09:00. Ek het 'n skrif wat die e -poslys stuur om hulle te laat weet dat die stelsel werk soos dit moet, en alles is goed in die kamer.

Gebruik die cronjob -lys as:

Aanbeveel: