Relais-Steuerung und Luftmessung mittels Raspberry Pico W
Diese Elektronik ist eine simple Schaltung eines Relais (Blau) mittels einem Raspberry Pico W. Das W steht für Wlan, d.h. das Ganze kann mittels WiFi mit dem Heimnetz kommunizieren und so ferngesteuert werden. Zusätzlich misst der DHT22-Sensor auf der Seite auch die Luft-Temperatur und -Feuchtigkeit. Die Stromversorgung für den Raspberry und den Sensor kommt vom 5V Wandler (Schwarz), welcher vom 230V AC Anschluss (Kabel) gespiesen wird.
Die Messwerte erhält man auf HTTP-Request in JSON als Antwort:
// http://picow/values
{
"switch": 0,
"humidity": 52.1,
"temperature": 24.5
}
So kann man die Werte z.B. ganz einfach mit OpenHAB lesen und darstellen. Natürlich kann der Schalter auch umgelegt werden. Dies geschieht indem man die URL mit dem neuen Wert aufruft:
http://picow/values?switch=on
Und schon hat die eingebaute Steckdose 230V und das daran angeschlossene Gerät wird mit Energie versorgt. Hier der MicroPython Code, der dies ermöglicht:
from phew import server, connect_to_wifi import json, dht from machine import Pin connect_to_wifi("ssid", "pwd") sensor = dht.DHT22(Pin(16)) switch = Pin(5, Pin.OUT) @server.route("/values", methods=["GET"]) def values(request): sensor.measure() if "switch" in request.query: state = request.query["switch"] if state.lower() == 'on' or state.lower() == 'true' or state == '1' : switch.value(1) if state.lower() == 'off' or state.lower() == 'false' or state == '0': switch.value(0) x = { "humidity": sensor.humidity(), "temperature": sensor.temperature(), "switch": switch.value() } return json.dumps(x) @server.catchall() def catchall(request): return "Not found", 404 server.run()
Für den Webserver verwende ich Phew – das ist eine sehr einfache Weise auf MicroPython einen Webserver zu starten. Achtung, Phew funktioniert nicht auf CircuitPython. Zum Programmieren des Pico verwende ich Thonny, musste aber um Phew zu installieren auf die Version 4.0.1 für Windows 10 (64 Bit) zurückgreifen. Mit der Version 4.1.2 gings bei mir nicht.
Die Verkabelung ist relativ simpel. Wer mit einer 230V Installation arbeitet, sollte sich den Regeln vertraut sein oder einen Fachmann befragen. Je nachdem an welchem GP-Pin am Pico man die Geräte verbindet, muss man den Programmcode entsprechend anpassen. Der Sensor (Gelb) ist auf dem Schema an GP16 und der Steuerausgang für das Relais (Violett) am Pin 5.
Verbindung mit openHAB
Nun könnte man eine komplette Logik in dem Raspberry Pico programmieren, so dass dieser entsprechend das Relais ein und ausschaltet. Diese hinterlege ich aber in meinem openHAB, so ist alles zentral in einer Einheit. Infos, wie man REST-Schnittstellen mit openHAB anbindet habe ich hier dokumentiert: Geräte mit REST API steuern. Der kniffligste Punkt hierbei ist das senden des Wertes fürs Ein- und Ausschalten. Dazu muss die Command-URL-Erweiterung verwendet werden.
Auch zum darstellen der Werte als Grafik kann man openHAB einsetzen. Das sieht dann etwa so aus:
Die Linien sind wohl selbsterklärend. Die grünen Bereiche zeigen, wann der Schalter auf Ein stand und somit der daran angehängte Luftentfeuchter aktiv war.
Und hier Links zum Shop wo ich die Komponenten gekauft habe: