Innehållsförteckning:

Raspberry Pi -kontrollerad rumstemperaturövervakning med Gnuplot -bildutmatning och e -postvarningsförmåga: 7 steg
Raspberry Pi -kontrollerad rumstemperaturövervakning med Gnuplot -bildutmatning och e -postvarningsförmåga: 7 steg

Video: Raspberry Pi -kontrollerad rumstemperaturövervakning med Gnuplot -bildutmatning och e -postvarningsförmåga: 7 steg

Video: Raspberry Pi -kontrollerad rumstemperaturövervakning med Gnuplot -bildutmatning och e -postvarningsförmåga: 7 steg
Video: Bygg en mediaspelare med Raspberry Pi (Hur funkar det?) 2024, Juni
Anonim
Raspberry Pi -kontrollerad rumstemperaturövervakning med Gnuplots bildutmatning och e -postvarningsförmåga
Raspberry Pi -kontrollerad rumstemperaturövervakning med Gnuplots bildutmatning och e -postvarningsförmåga

Där jag arbetar finns det ett mycket viktigt rum som rymmer massor av datorer. Omgivningstemperaturen i detta rum måste vara mycket sval för att optimera prestanda för dessa system. Jag blev ombedd att komma med ett övervakningssystem som har möjlighet att skicka någon form av varning till några personer som kommer att meddela dem att något är fel med luftkonditioneringen i rummet. Hårdvaran för den här byggnaden använde jag Raspberry pi och en USB -temperatur- och fuktsensor. För övervakning använde jag Gnuplot för att plotta tre temperaturgrafer och skapa en bild av dessa grafer. Jag skapade sedan en dedikerad HTML -sida som kommer att vara värd på Raspberry pi så att nuvarande villkor, dessa gnuplot -utmatningsbilder, kan övervakas från en webbsida i vårt nätverk. För varning valde jag att gå med Gmail. Jag hade hittat någon exempelkod i en Linux User -tidning. (Naturligtvis kan du använda vilken e -postserver som helst när du känner till de nödvändiga porttilldelningarna.) För det skapade jag ett dedikerat Gmail -e -postkonto för dessa varningar. Som en tilläggsfunktion, när en varning har utlösts, bifogar jag en graf till e -postmeddelandet så att personen som tar emot e -postmeddelandet kan få en uppfattning om hur drastisk en ökning det har orsakat varningen.

Steg 1: Maskinvaruinstallationen

Maskinvaruinstallationen
Maskinvaruinstallationen

Det är inte mycket att installera hårdvaran. Raspberry pi kör Raspian och USB -temperatursensorn ansluts helt enkelt direkt till en av USB -portarna. Strömförbrukningen för denna sensor är minimal och som ett resultat drev jag den direkt från Raspberry pi. Men för USB -drivna enheter med lite mer strömförbrukning rekommenderar jag att du driver dem via en USB -hubb och inte direkt från Raspberry Pi: s USB -port. fuktmätningar av de aktuella förhållandena. temperatur = 20,9 ° C luftfuktighet = 62,7% daggpunkt = 13,0 ° CA python -skript analyserar denna sträng och lagrar temperatur- och fuktighetsvärdena i tre textfiler var femte minut; en daglig, 24 timmar och 48 timmar textfiler (Skillnaderna kommer att diskuteras senare i HTML -avsnittet). Från dessa filer kommer Gnuplot att generera graferna och därefter bilderna av datamängden i varje fil. Innan jag diskuterar python -skriptet kommer jag att prata om att förbereda Raspberry pi. Eftersom övervakningen ska göras online måste en webbserver installeras. Jag har provat några av dem under min tid på Raspberry pi men även om det är lite stort föredrar jag Apache. För att installera Apache på din Raspberry pi skriver du helt enkelt: sudo apt-get install apache2 Det kommer att ge dig en prompt innan den installeras, tryck på "y" för ja och och Apache kommer att installeras några minuter beroende på din Raspberry pi. är klar måste du installera två python-plug-ins: python-serial och python-gnuplot-pluggen. (Även om jag har insett att de senaste versionerna av Raspian har python-seriell plug-in-standard men bara för att vara säker.) För att installera dem du skriver: sudo apt-get install python-serial python-gnuplotNär en gång igen efter att ha bekräftat uppmaningarna, pluggar dessa pluggar -ins kommer att installeras. Och med det är hårdvaruinstallationen klar.

Steg 2: Programvaruinstallation - E -postkonfiguration och mottagare

Skapa e -postadress Innan vi kommer för långt in i programvaran nu skulle det vara en bra tid att skapa ett Gmail -konto att skicka dina e -postvarningar från. (I det här exemplet används GMail men vilken e -postserver som helst kan användas när vi känner till smtp -portinställningarna) Pythonkoden är ganska enkel men den import som behövs är kritisk. Utan dem skulle ingenting fungera. Från tid import *import tid import seriell import smtplib import Gnuplot import os import sys Slutligen e -postlistan. Naturligtvis måste vi lägga till mottagarna av e -postmeddelandet. Varje e -postadress sparas i en variable.from_address ='[email protected]'to_address1 = 'recipient1.mail.com' to_address2 = 'recipient2.mail.com'username =' [email protected] 'password =' custom_email_password '

Steg 3: Programinstallation - Seriell installation och analys

Därefter tittar vi på serieinstallationen. Det är bara att ställa in parametrar som matchar den seriella utmatningen från sensorn. Sensorn matar ut en seriell sträng vid 9600 8 N 1 som är ett standardformat. Efter att strängen har tagits emot finns det flera sätt att analysera denna sträng i python och mycket mer pålitligt. Sättet jag gör det är att leta efter "temp" -tecknen i seriesträngen. När det väl har hittats är det helt enkelt att läsa de följande 46 serietecknen i en sträng. Den samlade strängen kan nu adresseras som element i en array. Önskad data analyseras från strängen och sparas i de tre filerna tillsammans med motsvarande tidsstämpel.timestamp = strftime ("%d%b%Y%H:%M:%S", localtime ())

Steg 4: Programvaruinstallation - Gnuplot

Programvaruinstallation - Gnuplot
Programvaruinstallation - Gnuplot
Programvaruinstallation - Gnuplot
Programvaruinstallation - Gnuplot
Programvaruinstallation - Gnuplot
Programvaruinstallation - Gnuplot

Gnuplot är ett kommandorads grafiskt verktyg. När du väl har kommit fram till grunderna kan det vara ett ganska kraftfullt verktyg för grafisk visning av datamängder. Gnuplot kan plotta direkt från en formaterad textfil och vi råkar bara ha en från analyseringssteget innan. När vi för gnuplot anger var i filen data finns kan vi plotta de önskade värdena. Jag kommer att använda tiden på X -axeln och vår temperatur på Y -axeln. Att planera tid från min erfarenhet är det svåraste eftersom du måste få tidsformatet i gnuplot att matcha textfilens format. När alla grafalternativ är klara och efter dina önskemål kan Gnuplot sedan skapa en bild av denna graf. Detta kommer att vara den bild som vi kommer att använda på vår webbsida senare. Jag valde att gå med en-p.webp

Steg 5: Programinställningar - Tröskelinställning och e -post

Tröskeln för varningen måste göras genom försök och fel för din installation. rummet som rymmer systemen har inga fönster så när luftkonditioneringen stannar kan det bli väldigt varmt väldigt snabbt. Inledningsvis tittade jag på datauppsättningen i några dagar och tittade på temperaturvariationerna innan jag bestämde mig för varningsvärdet på 30 grader C. Detta ställs in som en variabel inom python scipt. Det kanske inte verkar särskilt högt men när varningen har utlösts vill du fortfarande ge dig själv tid att åtgärda problemet innan det blir kritiskt.

För enkelhetens skull skickar jag individuella mejl till e -postlistan. Eftersom e -postlistan är kort störde jag mig aldrig på att skicka ett e -postmeddelande till flera mottagare. En sak att notera här, eftersom jag kör det här skriptet som ett cron -jobb var 5: e minut, vill du inte skicka e -post var 5: e minut när tröskeln har utlösts. För att komma runt detta skriver jag datum och tid för varningen till en fil och kontrollerar den här filen innan jag skickar e -postmeddelanden för att se om systemet redan är i ett varningsläge. När det väl är i ett varningsläge skickar det bara ett e -postmeddelande varje timme efter den första utlösaren så länge systemet är i och varningsläge. På så sätt blockerar Gmail inte din e -post från att skicka för många e -postmeddelanden på kort tid.

Steg 6: Programinställningar - HTML

Övervakningen av hela systemet sker via en webbsida och ett mycket grundläggande HTML -skript behövs för detta. Bilderna som Gnuplot skapade använder jag helt enkelt samma dimensioner av bilden. Jag tror att jag gick igenom cirka 3 storlekar för dessa bilder som gav den bästa passformen på min skärm. Innan vi skapar html -skriptet, låt oss skapa en mapp för det. Som standard finns webbhotellmappen på/var/www/. Även om detta Raspberry pi enda syfte är att övervaka detta rum och utfärda e -postvarningar, skapade jag en separat mapp i mappen/var/www/för bra hushållning. Eftersom den här mappen tillhör rotanvändaren måste du använda sudo för att skapa en mapp är denna plats. sudo mkdir/var/www/temperature I det här exemplet använde jag temperatur som namnet på mappen men du kan använda valfritt namn här men kom ihåg eftersom detta måste anges i adressfältet för att kunna se den här sidan. Denna sökväg lagras i en variabel i python -skriptet. Även om värdplatsen måste ändras eller skriptet måste ändras för ett annat system kan det bara ändras från den här platsen. Nu kan vi skapa vårt html -skript i den här mappen och komma ihåg att använda sudo framför alla kommandon du vill utföra här. Jag skulle rekommendera dig att namnge html -skriptet "index.html" eftersom detta skulle förenkla detta när du försöker hitta den här sidan. Det kritiska är att se till att bildstorleken är samma som bildstorleken från Gnuplot. För att se den här sidan, du måste helt enkelt ange IP -adressen till Raspberry Pi följt av /temperatur (eller vad du någonsin namngav din mapp) Jag har flera system på jobbet som övervakar olika saker och de ger alla en grafisk utmatning av deras resultat. Så jag skapade en sida som har länkar till alla dessa sidor så att jag inte behöver oroa mig för att ange adressen varje gång jag vill komma åt dessa sidor.

Steg 7: Jag lever …

Jag har använt detta för att övervaka temperaturen i ett datorrum men det här kunde ha varit ganska mycket data från vilken källa som helst. När det kan lagras i en textfil och du vet att det är format kan Gnuplot göra resten. En sak som jag nyligen lade till i detta projekt är att skicka ett "hjärtslag" e -post av olika slag. Det är den första i månaden klockan 9.00. Jag har ett skript som kör som skickar e -postlistan för att meddela att systemet fungerar som det ska och allt är bra i rummet.

Använda cronjob -listan som:

Rekommenderad: