Mini Wetterstation Standalone und FHEM

Die Mini Wetterstation ist ein Eigenbau-Produkt, welche über 5 Messfunktionen verfügt und diese auch zur Weiterverarbeitung zur Verfügung stellt.

Die Mini Wetterstation wird im heimischen Wifi-Netzwerk integriert und verfügt über eine sehr umfangreichen und einfach zu bedienendes Webinterface, in dem man sämtliche Messwerte ablesen und Konfigurieren kann.
Bei Bedarf sendet die Mini Wetterstation die erfassen Messwerte an eine Hausautomation (z.B. FHEM) was hier auch eingehend beschrieben wird.
Sie kann aber auch autark, also Standalone ohne Hausautomation verwendet werden.

Die Stromversorgung erfolgt über einen 5V Micro-USB-Anschluß. Hierzu kann ein eigenes Netzteil verwendet werden, oder auch ein in der Nähe befindlicher USB-Anschluß.
Weiterhin ist es möglich die Stromversorgung über eine Powerbank oder ein Battery-Pack zu realisieren.

Im Standalone Betrieb wird eine feste Stromversorgung empfohlen, da die Mini Wetterstation dann permanent Online ist und eine Powerbank in ca. 2-5 Tagen leer ist.
Im Sommer könnte eine Solar-Powerbank die Lebenszeit etwas erhöhen, dennoch ist ein fester Anschluß aus komfortgründen dringend zu empfehlen.

Im SleepMode Betrieb wacht die Mini Wetterstation alle 60 bis 4294 Sekunden (einstellbar), also max. alle 71 Minuten auf und sendet ihre Messwete an die Hausautomation.
Anschließend legt sie sich wieder schlafen und spart so viel Strom, sodass die Energie einer Powerbank um ein vielfaches länger reicht.




Bauanleitung (nur bei Bausatz-Kauf)

Wer einen Bausatz erworben hat, folgt zunächst dieser Bauanleitung und kommt später an die Stelle zurück für die Inbetriebnahme.
:-P Bauanleitung

WiFi-Verbindung

Wenn die Mini Wetterstation sich nicht in das konfigurierte WiFI Netzwerk einwählen kann, fällt sie in den Access-Point Modus zurück und meldet sich mit der SSID namens WS_1.
Am Besten in diesem Zustand mit dem Smartphone zu dieser SSID connecten und man wird sofort zur Konfigurationsoberfläche weitergeleitet. Falls nicht, dann bitte nachfolgende IP-Adresse im Browser eingeben.

SSID : WS_1
PASSWORT : configesp
WEBSERVER: http://192.168.4.1

Auf dem Webserver angelangt, wechselt man auf den Reiter Config und trägt die SSID des heimischen WiFi und dessen WPA Key (Kennwort) ein.
Anschließend nach unten scrollen und mittels des Buttons Submit die Konfiguration speichern. Danach muss die Mini-Wetterstation neu gestartet werden.
Im heimischen Router sollte man dann die Wetterstation mit dessen zugewiesener IP-Adresse finden.




Webinterface

An unserem Computer oder natürlich auch auf dem Smartphone oder Tablet können wir nun bequem das Webinterface der Mini Wetterstation im Browser aufrufen (dazu die zugewiesene IP-Adresse verwenden).

Gerätename und Admin Passwort

Das Webinterface ist per default nicht mit einem Kennwort geschützt, kann aber unter dem Reiter Config gesetzt werden. Auch der Name der Mini Wetterstation kann hier gesetzt werden.
Dieser Name ist aber nur für die Kommunikation mit einer Hausautomation von Bedeutung. Der Name wird dort vor den jeweiligen Sensor-Namen gesetzt. z.B. ESPEasy_WS_Regensensor.



Messwerte

Die Messwerte werden auf dem Reiter Devices angezeigt. Dort kann man mittels dem Button Edit auch den Interval angeben und den Senor ein/ausschalten, sowie die Übermittlung an die Hausautomation aktivieren.
Auch die Readings Ausgaben in FHEM werden dort vorgegeben und sind anfangs mit T, H, P, R, L benannt.
:!: Wer einen Bausatz erworben hat, kann anhand der Bilder die Einstellungen über den EDIT Button vornehmen. Die Reihenfolge der Task's sollte übernommen werden.


Version 1:
Die Version 1 hat noch einen zweiten, deaktivierten (disabled) Temperatursensor, welcher später eliminiert wurde. Auch der Luftfeuchtigkeitssensor hat einen etwas kleineren Messbereich, welcher jedoch selten über-/unterschritten wird.


Version 2:

(Task 5 ist für die Lebensverlängerung des Regensensors und kann ebenso in Version 1 verwendet werden)

Messbereiche

Um die Werte besser einschätzen zu können, hier ein kurze Erklärung:

Version 1:

  • Temperatursensor Außen (BMP280) = -40 bis +85 °C
  • Temperatursensor Innen (DHT11) = 0 bis +50 °C
  • Feuchtigkeitssensor (DHT11) = 20 bis 90%
  • Luftdrucksensor (BMP280) = 300-1100 hPa
  • Regensensor (T1592 P) = 0-1000 (0-10 ist als trocken anzusehen. 1000 = Unterwasser)
  • Helligkeitssensor (BH1750) = 0-100.000 LX (100.000 = heller Sonnentag)

Version 2:

  • Temperatursensor (BME280) = -40 bis +85 °C
  • Feuchtigkeitssensor (BME280) = 0 bis 100% RH
  • Luftdrucksensor (BME280) = 300-1100 hPa
  • Regensensor (T1592 P) = 0-1000 (0-10 ist als trocken anzusehen. 1000 = Unterwasser)
  • Helligkeitssensor (BH1750) = 0-100.000 LX (100.000 = heller Sonnentag)



Lenbensverlängerung Regensensor

Der Regensensor erkennt Regen, wenn der Stromkreis durch Regentropfen geschlossen wird. Jedoch wenn ein Strom fließt, egal, wie gering, startet die Elektrolyse.
Dabei oxidiert eine der Elektroden und die andere bekommt einen Metallüberzug. Das funktioniert aber leider nicht ewig, weil entweder die Elektrode irgendwann „aufgebraucht“ ist, oder so korrodiert ist, dass kein Strom mehr fließt. Demzufolge hält das Bauteil nicht ewig und muss leider irgendwann ausgetauscht werden. Aber um die Lebenszweit zu verlängern kann man den Strom nur zur Meßzeit einschalten und gleich wieder ausschalten. Wenn kein Strom fließt, entsteht auch keine Elektrolyse.

  • Dazu benennen wir den Namen Regensensor unter Devices Task 2 um in Regensensor_Device und deaktivieren (falls vorhaden) die Checkbox bei Send to Controller
  • Danach legen wir unter Devices ein Generic - Dummy Device als Task 5 an, nennen dieses Regensensor, aktivieren (falls vorhanden) die Checkbox bei Send to Controller und nennen das ValueR:


Danach nutzen wir die Rules in ESPEasy um den Strom zu schalten.
Falls der Reiter Rules noch nicht vorhanden ist, dann diesen unter Tools > Advanced aktivieren und mit Submit speichern.

Anschließend ist der Reiter Rules im Menü sichtbar, unter dem man einen Regelsatz mit folgendem Inhalt als Rules Set 1 ablegt und speichern:

On System#Boot do
  gpio,16,1
  timerSet,1,2
endon

On Rules#Timer=1 do
   gpio,16,1
   TaskRun,2
   TaskValueSet 5,1,[Regensensor_Device#R]
   gpio,16,0
   timerSet,1,300
endon

Erkärung:
Bei Systemstart (On System#Boot) wird der Regensensor über den Pin GPIO16 (D0) eingeschaltet und ein Timer Nr.1 wird gestartet.
Nachdem Timer Nr.1 gestartet ist, schaltet dieser den Strom auf GPIO16 ein und lässt den Task mit der ID 2 (Regensensor) seinen Wert bestimmen. Danach wird dieser Wert in den Dummy mit der Task ID 4 Value 1 geschrieben.
Anschließend wird der GPIO16 wieder ausgeschaltet und der Timer Nr.1 startet erneut in 300 Sekunden.

Also muss das Gehäuse geöffnet und der + Kontakt des Regensensors auf den Pin D0 (GPIO16) des D1 Mini umgesteckt werden.
Danach sollte der Regensensor gemäß obigem Script timerSet,1,300 alle 5 Minuten (300 Sekunden) sich kurz einschalten und seinen Meßwert senden.
:!: Es ist darauf zu achten, dass die Task ID des Sensors (in obigem Bild unter Messwerte Task 2) mit dem Kommando TaskRun,2 übereinstimmt.
:!: Es ist darauf zu achten, dass die Task ID des Dummy und der Name des Sensors (in obigem Bild unter Messwerte Task5 und Task2) mit dem Kommando TaskValueSet 5,1,[Regensensor_Device#R] übereinstimmt.
:!: Der Regensensor mit der Task ID 2 darf nicht mehr an den Controller senden, da nur der Wert des Dummy für die Übermittlung an die Hausautomation maßgeblich ist.

Da der Regensensor jetzt nur noch alle 5 Minuten für den Bruchteil einer Sekunde einschaltet, sollte kaum eine Elektrolyse stattfinden und der Sensor viel viel länger halten.

Anbindung an Hausautomation (FHEM)

FHEM vorbereiten

Damit die Mini Wetterstation mit FHEM kommunizieren kann, muss zunächst in FHEM eine Bridge eingerichtet werden.
Diese lauscht an einem Port (per default 8383) und nimmt die Messwerte der Mini Wetterstation entgegen.

In FHEM einfach folgende Befehlszeile eingeben, speichern und FERTIG!

define espBridge ESPEasy bridge 8383


Danach sollte sich die espBridge zunächst auf initialized stellen. Wenn dies so ist, ist die Konfiguration in FHEM erstmal erledigt und wir arbeiten an der Mini Wetterstation weiter.


Wetterstation mit FHEM verbinden

Auf der Weboberfläche muss nun im Menü Controllers die Verbindung zu FHEM (espBridge) angegeben werden.
Dort auf Edit klicken und ausfüllen.

Protokol = FHEM HTTP
Controller IP = IP-Adresse des FHEM Servers
Controller Port = Connection Port des FHEM Servers (default 8383)
Controller User = Benutzername für die Verbindung (optional)
Controller Password = Passwort für die Verbindung (optional)
ACHTUNG: Wenn username/password vergeben werden, müssen diese selbstverständlich auch in FHEM bei der espBridge über set hinzugefügt werden.


Jetzt fängt die Mini Wetterstation bereits an mit FHEM zu quatschen. Damit beim quatschen aber noch die Sensoren und deren Werte übergeben werden, müssen wir bei diesen noch eine Checkbox aktivieren.
Also auf dem Reiter Devices bei jedem Sensor auf Edit klicken und das Häckchen Send to Contoller aktivieren.



Anschließend werden nach kurzer Zeit sämtliche Sensoren in FHEM automatisch angelernt und sind im Raum ESPEasy zu finden (autocreate aktivieren).
Die Anzeige der Grafik unter den Werten muss allerdings erst noch konfiguriert werden.


Man kann in der Grafik sehr gut erkennen, dass Sonnenaufgang ca. 07:00 Uhr und Sonnenuntergang ca. 17:00 Uhr war.

Oben gezeigter Plot hat folgende Konfiguration (DBLOG):

define SVG_ESPEasy SVG DBLOG:SVG_ESPEasy:HISTORY
attr SVG_ESPEasy group Sensoren
attr SVG_ESPEasy label "Wetterstation - Temperatur Min $data{min2}, Max $data{max2}, Last $data{currval2}"
attr SVG_ESPEasy plotsize 800,400
attr SVG_ESPEasy room ESPEasy

SVG_ESPEasy.gplot

# Created by FHEM/98_SVG.pm, 2018-11-08 09:57:49
set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set title '<L1>'
set ytics
set y2tics
set grid y2tics
set ylabel "Helligkeit 1/100 (Lux) / Luftdruck (mbar)"
set y2label "Temperatur (°C) / Luftfeuchte (%)"
set yrange [0:400]
set y2range [0:100]

#DBLOG ESPEasy_WS_Helligkeitssensor:L:::$val=$val/100
#DBLOG ESPEasy_WS_Temperatur_Luftfeuchte_Sensor:T::
#DBLOG ESPEasy_WS_Temperatur_Luftfeuchte_Sensor:H::
#DBLOG ESPEasy_WS_Luftdrucksensor:P:::$val=$val/10
#DBLOG ESPEasy_WS_Regensensor:R:::$val=$val/5

plot "<IN>" using 1:2 axes x1y1 title 'Helligkeit ( 1/100 Lux)' ls l1 lw 0.5 with quadraticSmooth,\
     "<IN>" using 1:2 axes x1y2 title 'Temperatur (°C)' ls l0fill_gyr lw 1 with lines,\
     "<IN>" using 1:2 axes x1y2 title 'Luftfeuchtigkeit (%)' ls l2 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y1 title 'Luftdruck (1/10 mbar)' ls l4 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y1 title 'Regen' ls l2fill lw 1 with steps

Oben gezeigter Plot hat folgende Konfiguration (FileLog):

define SVG_ESPEasy SVG ESPEasy_WS_Helligkeitssensor:SVG_ESPEasy:CURRENT
attr SVG_ESPEasy label "Wetterstation - Temperatur Min $data{min2}, Max $data{max2}, Last $data{currval2}"
attr SVG_ESPEasy plotsize 800,400
attr SVG_ESPEasy room ESPEasy

SVG_ESPEasy.gplot

# Created by FHEM/98_SVG.pm, 2019-01-08 19:29:53
set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set title '<L1>'
set ytics
set y2tics
set grid
set ylabel "Helligkeit 1/50 (Lux) / Luftdruck (mbar)"
set y2label "Temperatur (°C) / Luftfeuchte (%)"
set yrange [0:400]
set y2range [-12:100]

#FileLog_Helligkeitssensor 4:ESPEasy_WS_Helligkeitssensor.*::$fld[3]/50
#FileLog_Temperatur_Luftdrucksensor 4:ESPEasy_WS_Temperatur_Luftdruck_Sensor.T\x3a::
#FileLog_Luftfeuchtesensor 4:ESPEasy_WS_Luftfeuchte_Sensor.H\x3a::
#FileLog_Temperatur_Luftdrucksensor 4:ESPEasy_WS_Temperatur_Luftdruck_Sensor.P\x3a::$fld[3]/10
#FileLog_Regensensor 4:ESPEasy_WS_Regensensor.*::$fld[3]/5

plot "<IN>" using 1:2 axes x1y1 title 'Helligkeit 1/50 Lux' ls l1fill lw 0.5 with quadratic,\
     "<IN>" using 1:2 axes x1y2 title 'Temperatur (°C)' ls l0fill_gyr lw 1 with lines,\
     "<IN>" using 1:2 axes x1y2 title 'Luftfeuchtigkeit (%)' ls l2 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y1 title 'Luftdruck (1/10 mbar)' ls l4 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y1 title 'Regen' ls l2fill lw 1 with steps

SleepMode

Die Mini Mini-Wetterstation verfügt über einen SleepMode der software- und hardwareseitig aktiviert werden muss.
In diesem Modus wacht die Mini-Wetterstation nach einer vorgegebenen Zeit auf, sendet die aktuellen Daten an den/die Controller (z.B. an FHEM) und legt sich wieder schlafen.
Somit kann ein menge Energie eingespart werden und so lässt sich die Mini-Wetterstation auch mit einer Powerbank über mehrere Wochen/Monate mit Strom versorgen.

Softwareseitige Einstellungen

Zunächst müssen unter dem Reiter Config die Vorgaben gesetzt werden.
Die Einstellung Sleep on connection failure sorgt dafür, dass die Mini-Wetterstation direkt wieder schlafen geht, wenn kein Accesspoint gefunden wird.




In nachfolgendem Beispiel würde die Wetterstation 30 Sekunden wach bleiben und sich danach für 5 Minuten schlafen legen.

Achtung: Wenn Sleep on connection failure aktiviert ist, gibt es keinen Fallback auf den AP-Modus mehr.


Hardwareseitige Einstellungen

Zunächst die Mini-Wetterstation vom Strom nehmen. Danach öffnet man das Gehäuse und es kommt eine Platine zum Vorschein auf der sich ein Jumper befindet.
Mit diesem Jumper schickt man die Wetterstation mit der folgendermaßen gesetzten Stellung in den SleepMode (Mitte-Rechts).
In Stellung (Mitte-Links) wird der Wachmodus erzwungen. Sollte die Mini Wetterstation also einmal nicht mehr aufwachen, dann den Jumper auf (Mitte-Links) setzen.




Wurden alle Maßnahmen ergriffen, kann man die Mini-Wetterstation wieder an den Strom anschließen.
Nach dem Neustart dauert es noch eine Weile bis der Intervall startet. Nach kurzer Zeit beginnen die Schlaf- und Wachpahsen wie eingestellt.

Testen kann man das z.B. indem man die IP-Adresse der Mini-Wetterstation Dauer-Pingt.

ping -t <ip-adresse>




Falls der Sleep Mode nicht funktioniert

Falls der DeepSleep Modus nicht richtig funktioniert, dann ist meistens die Powerbank daran schuld. Denn dieses schalten oftmals nach einigen Sekunden ab, wenn zu wenig Last existiert.
In diesem Fall kann es sein, dass die Wetterstation neu bootet und es zu einem unerwünschtem Loop-Boot kommt.
Ich hatte eine Powerbank, die nach 40 Sekunden abgeschaltet hat und ich verzweifelt nach dem Grund gesucht habe. Dann habe ich diesen Artikel gefunden:
https://apfelhirn.de/automatische-abschaltung-von-powerbanks-als-arduino-stromversorgung-bei-geringer-grundlast-verhindern/
Alternativ kann man ein Battery-Pack mit 3x AA Batterien verwenden. Diese halten auch ewig.


Navigation
Eigene Werkzeuge