Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Raspberry Pi gesteuerte Raumtemperaturüberwachung mit Gnuplot-Bildausgabe und E-Mail-Benachrichtigungsfunktion

Wo ich arbeite, gibt es einen sehr wichtigen Raum, in dem viele Computer untergebracht sind. Die Umgebungstemperatur in diesem Raum muss sehr kühl sein, um die Leistung dieser Systeme zu optimieren.
Ich wurde gebeten, ein Überwachungssystem zu entwickeln, das in der Lage ist, eine Art Alarm an einige Personen zu senden, die sie benachrichtigen dass etwas mit der Klimaanlage in diesem Raum nicht stimmt.
Die Hardware für diesen Build habe ich Raspberry Pi und einen USB-Temperatur- und Feuchtigkeitssensor verwendet.

Zur Überwachung habe ich Gnuplot verwendet, um drei Temperaturdiagramme zu zeichnen und ein Bild dieser Diagramme zu erstellen. Ich habe dann eine dedizierte HTML-Seite erstellt, die auf dem Raspberry Pi gehostet wird, damit die aktuellen Bedingungen, diese gnuplot-Ausgabebilder, von einer Webseite in unserem Netzwerk aus überwacht werden können.

Für Benachrichtigungen habe ich mich für Gmail entschieden. Ich hatte in einer Linux-Benutzerzeitschrift einige Beispielcodes gefunden. (Natürlich können Sie jeden Mailserver verwenden, wenn Sie die erforderlichen Portzuweisungen kennen.)
Dafür habe ich ein eigenes Gmail-E-Mail-Konto für diese Benachrichtigungen erstellt. Als zusätzliches Feature füge ich, wenn eine Warnung ausgelöst wurde, eine Grafik an die E-Mail an, damit die Person, die die E-Mail erhält, eine Vorstellung davon bekommt, wie drastisch die Zunahme war, die die Warnung verursacht hat.

Schritt 1:Das Hardware-Setup

Es gibt nicht viel, um die Hardware einzurichten. Auf dem Raspberry Pi läuft Raspian und der USB-Temperatursensor wird einfach direkt in einen der USB-Ports gesteckt.

Der Stromverbrauch dieses Sensors ist minimal und daher habe ich ihn direkt vom Raspberry Pi mit Strom versorgt. Für USB-betriebene Geräte mit etwas mehr Stromverbrauch würde ich jedoch empfehlen, sie über einen mit Strom versorgten USB-Hub und nicht direkt über den USB-Port des Raspberry Pi mit Strom zu versorgen.

Sobald der Temperatursensor mit Strom versorgt wird, liefert er einen seriellen String, der die Temperatur- und Feuchtigkeitsmesswerte der aktuellen Bedingungen enthält.

Temperatur=20,9°C Luftfeuchtigkeit=62,7% Taupunkt=13,0°C

Ein Python-Skript analysiert diese Zeichenfolge und speichert die Temperatur- und Feuchtigkeitswerte alle fünf Minuten in drei Textdateien; eine tägliche, 24-Stunden- und 48-Stunden-Textdatei (Die Unterschiede werden später im HTML-Abschnitt besprochen). Aus diesen Dateien generiert Gnuplot die Grafiken und anschließend die Bilder des Datensatzes in jeder Datei.

Bevor ich das Python-Skript bespreche, werde ich über die Vorbereitung des Raspberry Pi sprechen.

Da die Überwachung online erfolgen soll, muss ein Webserver installiert werden. Ich habe einige davon in meiner Zeit auf dem Raspberry Pi ausprobiert, aber obwohl er etwas groß ist, bevorzuge ich Apache. Um Apache auf Ihrem Raspberry Pi zu installieren, geben Sie einfach Folgendes ein:

sudo apt-get install apache2

Es wird Ihnen vor der Installation eine Eingabeaufforderung geben, drücken Sie "y" für Ja und
und Apache wird je nach Ihrem Raspberry Pi einige Minuten lang installiert.

Danach müssen Sie zwei Python-Plug-Ins installieren:python-serial und den python-gnuplot-Plug. (Obwohl ich festgestellt habe, dass neuere Raspian-Builds den Python-Serial-Plug-In-Standard haben, aber nur um sicher zu gehen.)

Um die zu installieren, geben Sie Folgendes ein:

sudo apt-get install python-serial python-gnuplot

Nach dem Bestätigen der Eingabeaufforderungen werden diese Plug-Ins erneut installiert.

Und damit ist das Hardware-Setup abgeschlossen.

Schritt 2:Software-Setup – E-Mail-Setup und Empfänger

E-mail Adresse anlegen

Bevor wir zu weit in die Software einsteigen, wäre jetzt ein guter Zeitpunkt, um ein Gmail-Konto zu erstellen, von dem aus Sie Ihre E-Mail-Benachrichtigungen senden können. (Dieses Beispiel verwendet GMail, aber jeder Mailserver kann verwendet werden, sobald wir die SMTP-Porteinstellungen kennen)

Der Python-Code ist ziemlich einfach, aber die erforderlichen Importe sind kritisch. Ohne sie würde nichts funktionieren.

ab Zeit importieren *
Zeit importieren

Seriennummer importieren

smtplib importieren

Gnuplot importieren

Betriebssystem importieren

System importieren

Schließlich die Mailingliste. Natürlich müssen wir die Empfänger der E-Mail hinzufügen. Jede E-Mail-Adresse wird in einer Variablen gespeichert.

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

to_address2 =‘recipient2.mail.com’

username =‘[email protected]@gmail.com’

Passwort =‘custom_email_password’

Schritt 3:Software-Setup – Serielles Setup und Parsing

Als nächstes schauen wir uns das serielle Setup an.

Es müssen nur Parameter eingestellt werden, die dem seriellen Ausgang des Sensors entsprechen. Der Sensor gibt einen seriellen String mit 9600 8 N 1 aus, was ein Standardformat ist.

Nachdem die Zeichenfolge empfangen wurde, gibt es mehrere Möglichkeiten, diese Zeichenfolge in Python und möglicherweise zuverlässiger zu analysieren. Ich suche nach den "temp" -Zeichen in der seriellen Zeichenfolge. Einmal gefunden, müssen Sie nur noch die nächsten 46 seriellen Zeichen in eine Zeichenfolge einlesen.

Der gesammelte String kann nun wie Elemente in einem Array angesprochen werden. Die gewünschten Daten werden aus dem String herausgeparst und zusammen mit dem entsprechenden Zeitstempel in den drei Dateien gespeichert.

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

Schritt 4:Software-Setup – Gnuplot

Gnuplot ist ein grafisches Befehlszeilentool. Sobald Sie die Grundlagen herausgefunden haben, kann es ein ziemlich mächtiges Werkzeug für die grafische Darstellung von Datensätzen sein.

Gnuplot kann direkt aus einer formatierten Textdatei plotten und wir haben zufällig eine aus dem Parsing-Schritt zuvor.

Sobald wir gnuplot angeben, wo sich die Daten in der Datei befinden, können wir die gewünschten Werte plotten. Ich werde die Zeit auf der X-Achse und unsere Temperatur auf der Y-Achse verwenden.

Das Zeichnen der Zeit ist meiner Erfahrung nach am schwierigsten, da Sie das Zeitformat in gnuplot so einstellen müssen, dass es dem Format der Textdatei entspricht.

Nachdem alle Grafikoptionen abgeschlossen sind, kann Gnuplot nach Belieben ein Bild dieses Diagramms erstellen. Dies wird das Bild sein, das wir später auf unserer Webseite verwenden werden. Ich habe mich für ein PNG-Bild entschieden und da ich das alte Bild auf der Webseite ersetzen möchte, hat jedes Bild den gleichen Namen, sodass diese Codezeile nicht geändert werden muss.

Die Einstellung der Bildgröße ist mit der Optimierung der HTML-Seite verknüpft. Ich spielte zuerst mit Standardgrößen herum und experimentierte dann, um das Bild an meinen Bildschirm anzupassen. Für dieses Projekt speichere ich keine alten Bilder, daher ist die physische Größe der Datei im Speicher kein wichtiger Faktor für den kostbaren Raspberry Pi-Speicher.

Hier ist ein Code-Snippet zum Erstellen und Speichern des daily.png-Grafikbilds.

g =Gnuplot.Gnuplot(debug=debug)

g(‘cd „‘ + Pfad + ‚“‘ )
g(‘xdata time setzen‘)

g(‘set timefmt „%d%b%Y %H:%M:%S“‘)

g(‘Format setzen x „%H:%M\\n%d%b“‘)

g(‘Titel setzen ” Tagesaktuelle Temperaturanzeige”‘)

g(‘Schlüssel ausschalten’)

g(‘Gitter setzen‘) g(‘xlabel „Zeit\\nDatum“ setzen‘)

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

g(‘set ylabel ” Temperatur “‘)

g(‘set datafile fehlt „NaN“‘)

g(‘set terminal png size 800,400’)

g(‘Ausgabe setzen „daily.png“‘)

g(‘daily.dat zeichnen mit 1:($3) mit Linien’)

HINWEIS:Die Zeile mit der Aufschrift g(‘set datafile fehlt „NaN“‘), der Zweck dieser Zeile besteht darin, eine Leerstelle im Diagramm zu zeichnen. Die Variable „NaN“ wird in die Datei geschrieben, wenn das Python-Skript bei einem bestimmten Messwert oder einer seriellen Übertragung etwas Seltsames erkennt.

Wie Sie in den drei obigen Grafiken sehen können, bietet daily.png eine aktuelle Zeitanzeige der Daten, während 24_hour.png die gleichen Informationen auf einer 24-Stunden-Skala anzeigt. Das Diagramm 48_hour.png zeigt die Daten der letzten 48 Stunden vom Sensor an.

Für weitere Details:Raspberry Pi-gesteuerte Raumtemperaturüberwachung mit Gnuplot-Bildausgabe und E-Mail-Benachrichtigungsfunktion


Herstellungsprozess

  1. Zutrittskontrolle mit QR, RFID und Temperaturüberprüfung
  2. Messen Sie Temperaturen mit einem 1-Draht-DS18B20-Sensor und Raspberry Pi
  3. Überwachen der Raumtemperaturen mit einem Raspberry Pi und Nagios
  4. Temperatur lesen mit DS18B20 | Raspberry Pi 2
  5. Heim-(Raum-)Temperatur- und Feuchtigkeitsmonitor mit webbasiertem Diagramm – Raspberry Pi
  6. Temperaturüberwachung auf dem Raspberry Pi
  7. Temperaturmessung mit RASPBERRY PI
  8. Python- und Raspberry Pi-Temperatursensor
  9. Überwachen der Raumtemperaturen mit Moteinos und Raspberry Pi
  10. Einfache Temperatur und Luftfeuchtigkeit auf Raspberry Pi