Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Raspberry Pi gecontroleerde kamertemperatuurbewaking met Gnuplot-beelduitvoer en e-mailwaarschuwingsmogelijkheid

Waar ik werk, is er een zeer belangrijke kamer met veel computers. De omgevingstemperatuur van deze kamer moet erg koel zijn om de prestaties van deze systemen te optimaliseren.
Ik werd gevraagd om een ​​monitoringsysteem te bedenken dat de mogelijkheid heeft om een ​​of andere vorm van waarschuwing te sturen naar een paar mensen die hen op de hoogte zullen stellen dat er iets mis is met de airconditioning in die kamer.
De hardware voor deze build, ik gebruikte Raspberry pi en een USB-temperatuur- en vochtigheidssensor.

Voor monitoring heb ik Gnuplot gebruikt om drie temperatuurgrafieken te plotten en een afbeelding van die grafieken te maken. Ik heb toen een speciale HTML-pagina gemaakt die op de Raspberry pi wordt gehost, zodat de huidige omstandigheden, die gnuplot-uitvoerafbeeldingen, kunnen worden gecontroleerd vanaf een webpagina binnen ons netwerk.

Voor waarschuwingen heb ik ervoor gekozen om met Gmail te gaan. Ik had een voorbeeldcode gevonden in een Linux User-magazine. (Natuurlijk kun je elke mailserver gebruiken als je eenmaal de benodigde poorttoewijzingen kent. )
Daarvoor heb ik een speciaal Gmail-e-mailaccount gemaakt voor deze waarschuwingen. Ook als een toegevoegde functie, wanneer een waarschuwing is geactiveerd, voeg ik een grafiek toe aan de e-mail, zodat de persoon die de e-mail ontvangt een idee kan krijgen van hoe drastisch de toename was die de waarschuwing heeft veroorzaakt.

Stap 1:De hardware-installatie

Er is niet veel om de hardware in te stellen. De Raspberry pi draait op Raspian en de USB-temperatuursensor kan eenvoudig rechtstreeks op een van de USB-poorten worden aangesloten.

Het stroomverbruik van deze sensor is minimaal en daarom heb ik hem rechtstreeks vanuit de Raspberry pi gevoed. Voor apparaten met USB-voeding die iets meer stroom verbruiken, raad ik echter aan ze via een USB-hub met voeding te voeden en niet rechtstreeks via de USB-poort van de Raspberry pi.

Zodra de temperatuursensor is ingeschakeld, levert deze een seriële reeks die de temperatuur- en vochtigheidsmetingen van de huidige omstandigheden bevat.

temperatuur=20,9°C vochtigheid=62,7% dauwpunt=13,0°C

Een python-script ontleedt deze string en slaat elke vijf minuten de temperatuur- en vochtigheidswaarden op in drie tekstbestanden; een dagelijkse, 24 uur en 48 uur tekstbestanden (de verschillen zullen later in de HTML-sectie worden besproken). Uit deze bestanden genereert Gnuplot de grafieken en vervolgens de afbeeldingen van de dataset in elk bestand.

Voordat ik het python-script bespreek, zal ik het hebben over het voorbereiden van de Raspberry pi.

Omdat de monitoring online gebeurt, moet er een webserver worden geïnstalleerd. Ik heb er een paar geprobeerd in mijn tijd op de Raspberry pi, maar hoewel het een beetje groot is, geef ik de voorkeur aan Apache. Om Apache op je Raspberry pi te installeren typ je gewoon:

sudo apt-get install apache2

Het zal je een prompt geven voordat het wordt geïnstalleerd, druk op "y" voor ja en
en Apache zal een paar minuten worden geïnstalleerd, afhankelijk van je Raspberry pi.

Zodra dat is gebeurd, moet u twee python-plug-ins installeren:python-serial en de python-gnuplot-plug. (Hoewel ik me realiseerde dat recente Raspian-builds de python-seriële plug-in-standaard hebben, maar voor de zekerheid.)

Om deze te installeren die u typt:

sudo apt-get install python-serial python-gnuplot

Nogmaals, na het bevestigen van de prompts, zullen deze plug-ins worden geïnstalleerd.

En daarmee is de hardware-installatie voltooid.

Stap 2:Software-installatie – E-mailconfiguratie en ontvangers

Maak een emailadres aan

Voordat we te ver ingaan op de software, is het nu een goed moment om een ​​Gmail-account aan te maken om uw e-mailwaarschuwingen vanaf te verzenden. (Dit voorbeeld gebruikt GMail, maar elke mailserver kan worden gebruikt zodra we de smtp-poortinstellingen kennen)

De python-code is vrij eenvoudig, maar de benodigde invoer is van cruciaal belang. Zonder hen zou niets werken.

van tijd import *
import tijd

serienummer importeren

smtplib importeren

importeer Gnuplot

importeer os

sys importeren

Tot slot de mailinglijst. Natuurlijk moeten we de ontvangers van de e-mail toevoegen. Elk e-mailadres wordt opgeslagen in een variabele.

from_address =‘[email protected]’
to_address1 =‘recipient1.mail.com’

to_address2 =‘ontvanger2.mail.com’

gebruikersnaam ='[e-mail beveiligd]@gmail.com'

wachtwoord ='custom_email_password'

Stap 3:Software-installatie – Seriële installatie en parsing

Vervolgens kijken we naar de seriële setup.

Het is gewoon een kwestie van parameters instellen die overeenkomen met de seriële output van de sensor. De sensor voert een seriële string uit op 9600 8 N 1, wat een standaardformaat is.

Nadat de string is ontvangen, zijn er verschillende manieren om deze string in python te ontleden en mogelijk betrouwbaarder. De manier waarop ik het doe, is door te zoeken naar de "tijdelijke" tekens in de seriële reeks. Eenmaal gevonden is het gewoon een kwestie van de volgende 46 seriële karakters in een string lezen.

De verzamelde string kan nu worden geadresseerd als elementen in een array. De gewenste gegevens worden uit de string gehaald en samen met de bijbehorende tijdstempel in de drie bestanden opgeslagen.

timestamp =strftime(“%d%b%Y %H:%M:%S “,localtime())

Stap 4:Software-installatie – Gnuplot

Gnuplot is een grafisch hulpmiddel voor de opdrachtregel. Als je eenmaal de basis hebt doorgrond, kan het een behoorlijk krachtig hulpmiddel zijn voor de grafische weergave van datasets.

Gnuplot kan rechtstreeks plotten vanuit een geformatteerd tekstbestand en we hebben er toevallig een van de parseerstap ervoor.

Zodra we aan gnuplot hebben aangegeven waar in het bestand de gegevens zich bevinden, kunnen we de gewenste waarden plotten. Ik ga de tijd op de X-as gebruiken en onze temperatuur op de Y-as.

Mijn ervaring is dat het plotten van de tijd het moeilijkst is, omdat je het tijdformaat in gnuplot moet krijgen om overeen te komen met het formaat van het tekstbestand.

Nadat alle grafische opties zijn voltooid en naar uw voorkeur, kan Gnuplot een afbeelding van deze grafiek maken. Dit is de afbeelding die we later op onze webpagina zullen gebruiken. Ik heb gekozen voor een .png-afbeelding en aangezien ik de oude afbeelding op de webpagina wil vervangen, heeft elke afbeelding dezelfde naam, zodat deze coderegel niet hoeft te veranderen.

De instelling van de afbeeldingsgrootte is gekoppeld aan html-pagina-optimalisatie. Ik speelde eerst met standaardformaten en experimenteerde vervolgens om het beeld op mijn scherm te laten passen. Voor dit project sla ik geen oude afbeeldingen op, dus de fysieke grootte van het bestand in de opslag is geen belangrijke factor voor kostbare Raspberry pi-opslag.

Hier is een codefragment om de daily.png-grafiekafbeelding te maken en op te slaan.

g =Gnuplot.Gnuplot(debug=debug)

g(‘cd “‘ + pad + ‘”‘ )
g(‘set xdata-tijd’)

g(‘stel tijdfmt “%d%b%Y %H:%M:%S”‘)

g(‘stel formaat x “%H:%M\\n%d%b”‘)

g(‘set titel “Dagelijkse huidige temperatuurweergave”‘)

g(‘zet sleutel uit’)

g(‘set grid’) g(‘set xlabel “Tijd\\nDatum”‘)

g(‘zet yrange [15.0:35.0]’)

g(‘set ylabel ” Temperatuur “‘)

g(‘set datafile missing “NaN”‘)

g(‘stel terminal png-grootte 800.400 in’)

g(‘uitvoer instellen “daily.png”‘)

g(‘plot “daily.dat” met 1:($3) met regels’)

OPMERKING:De regel met de tekst g ("set datafile missing "NaN"'), het doel van deze regel is om een ​​lege ruimte in de plot te plotten. De variabele "NaN" wordt naar het bestand geschreven als het python-script iets vreemds detecteert voor een bepaalde meting of een seriële verzending.

Zoals u kunt zien aan de hand van de drie grafieken hierboven, geeft de daily.png u een actuele tijdweergave van de gegevens, terwijl de 24_hour.png dezelfde informatie op een 24-uursschaal heeft. De 48_hour.png-grafiek toont de gegevens van de sensor van de afgelopen 48 uur.

Voor meer details:Raspberry Pi-gestuurde bewaking van de kamertemperatuur met Gnuplot-beelduitvoer en e-mailwaarschuwingsmogelijkheid


Productieproces

  1. Toegangscontrole met QR, RFID en temperatuurverificatie
  2. Meet temperaturen met een 1-draads DS18B20-sensor en Raspberry Pi
  3. Kamertemperaturen bewaken met een Raspberry Pi en Nagios
  4. Temperatuur aflezen met DS18B20 | Raspberry Pi 2
  5. Thuis (kamer) temperatuur- en vochtigheidsmonitor met webgebaseerde grafiek - Raspberry Pi
  6. Temperatuurbewaking op de Raspberry Pi
  7. Temperatuur meten met RASPBERRY PI
  8. Python- en Raspberry Pi-temperatuursensor
  9. Kamertemperaturen bewaken met Moteino's en Raspberry Pi
  10. Eenvoudige temperatuur en vochtigheid op Raspberry Pi
  11. Temperatuur bewaken met Raspberry Pi