MQTT mit Rasberry Pi: Klimaüberwachung

Die Idee

Für viele Produktions- und Messaufgaben ist es essentiell, dass die Umgebungstemperatur möglichst minimal schwankt. Häufig wird das über eine Klimaanlage erreicht, die auch in gewissen Bereichen Schwankungen ausgleichen kann. Bei einem Ausfall oder bei sehr kalten oder heißen Tagen kann das nicht immer erreicht werden. Die Folge kann sein, dass sich Strahlengänge von Messgeräten etc. verstellen, was wiederum einen längeren Ausfall verursachen kann.

Ziel ist es, eine einfache Überwachungseinrichtung zu bauen, die einem auch nach Feierabend über den Zustand informieren kann und insb. ein frühes Eingreifen ermöglicht.

Das Projekt

Es soll innerhalb von wenigen Tagen mittels Rasberry Pi 3 und einem Temperatursensor ein Überwachungs-Client erstellt werden, der die Messwerte an einem Server für weitere Verarbeitungen schickt.

Hierzu soll das MQTT Protokoll genutzt werden, was sehr geringe Datenraten erlaubt.

Die Überwachungslogik wird auf dem Server realisiert.

Resourcen

Lokaler MQTT-Broker (optional)

Zunächst wurde auf Rasberry nach dieser Anleitung ein Broker aufgesetzt. Dies ermöglicht das schnelle Testen der Applikation:

Funkkommunikation zwischen Raspberry Pi’s mittels MQTT Broker/Client

Temperatur und Luftdruck messen

Der Sensor wurde nach diesem Beispiel angeschlossen und ausgelesen:

http://sensorkit.joy-it.net/index.php?title=KY-052_Drucksensor_/_Temperatursensor_-_BMP280_-

Es wird sowohl die Temperatur als auch der Luftdruck gemessen.

Neben Temperatur ist für das Projekt auch die Luftdruckmessung sehr nützlich: Bestimmte Umgebungen müssen leichten Über- bzw. Unterdruck haben, so dass sich Kontaminationen gezielt nur in eine Richtung ausbreiten können. In einem Reinraum wir so verhindert, dass Dreck durch Öffnungen hinein wehen kann.

Messwerte senden

Mit Hilfe der obigen Tutorials wurde folgendes Script Client.py erstellt:

import paho.mqtt.publish as publish 
import sys 
import time 
sys.path.insert(0, '/home/pi/Downloads/KY-052-RPi/Adafruit_BMP') 
import Adafruit_BMP.BMP280 as BMP280 
sensor = BMP280.BMP280() 

MQTT_SERVER = "mqtt.thingspeak.com" 
API =""  # EDIT - enter Thingspeak Write API Key 
CHAN = "" # EDIT - enter Thingspeak Channel ID 

MQTT_PATH = "channels/"+CHAN +"/publish/"+API 

while 1: 

    temp='{0:0.2f}'.format(sensor.read_temperature()); 
    press='{0:0.2f}'.format(sensor.read_pressure()); 
    publish.single(MQTT_PATH, "field1={};field2={}".format(temp, press), hostname=MQTT_SERVER) 
    time.sleep(30)

Wenn man einen eigenen MQTT-Broker nutzt, braucht man natürlich kein Api-Key und Channel, wie es Thingspeak erfordert: Der MQTT-Path kann dann „test_channel“ sein, oder um die Vorteile des Protokolls voll auszunutzen, kann man die Messwerte auch in „test_channel/temperatur“ und „test_channel/pressure“ aufteilen.

Das Script sendet alle 30 Sekunden die Messwerte an den Broker.

Thingspeak Channel Setup

Es wurde ein neuer Chanel erstellt, der zwei Felder enthält: temp und pressure. Achtung: Thingspeak nutzt weiterhin die Bezeichnung field1, field2 etc.! Genau diese Namen sind beim Senden der Daten zu nutzen.

Beim Erstellen wird auch der API-Key (Write) sowie die Channelnummer generiert. Das ist oben in den Script einzutragen.

Wenn die Messung läuft, erhält man in der Channel-Übersicht direkt eine nette Auswertung:

Wenn man das auf  „public“ setzt, kann man sich die Live-Daten auch der eigene Webseite direkt anzeigen lassen.

Messwerte Auswerten

Via (web-) Mathlab kann man die Messwerte direkt auswerten bzw. zusammenfassen:

Auch lassen sich diverse Trigger auf bestimmte Messwerte oder Messintervalle setzten.

Ein Alarm via Twitter oder ausgefeilteres lässt sich so schnell zusammen klicken.

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.