NEWS
[gelöst]: Regensensor an ESP8266
-
Hardware:
Regensensor:
https://www.amazon.de/gp/product/B01MRIBI2M/ref=ppx_yo_dt_b_asin_title_o03_s00?ie=UTF8&psc=1
Nodemcu:
https://www.amazon.de/gp/product/B0754HWZSQ/ref=ppx_yo_dt_b_asin_title_o04_s02?ie=UTF8&psc=1Software:
Firmware:
Devices:
Digitaler Input:
Analoger Input:
-
So, bin dabei es nachzubauen.
Holla. Ist ja mal nix für Amateure
3 Trillionen Einstellmöglichleiten.
Mag einer von euch mal seine ESP Easy MQTT Einstellungen zeigen und wie es dann in den Objekten in Iobroker aussieht? Ich denke, dass interessiert auch andere , weil das echt nen cooles Projekt ist. -
Controllereinstellung ESPEasy:
Detaillierte Settings:
Objectstruktur in ioBroker:
Script für die Auswertung der Messergebnisse:
on({id:'mqtt.0.Wettersensor.in'/*Wettersensor/in*/, change: 'any'}, function (obj) { var objects = JSON.parse(obj.state.val); switch (objects.idx) { case 30: var erg = objects.svalue.split(';'); setState('javascript.1.VIS.Jalosien.esp_Luftdruck', parseInt(erg[3]));//Luftdruck setState('javascript.1.VIS.Jalosien.esp_Luftfeuchte', parseInt(erg[1]));//Luftfeuchte setState('javascript.1.VIS.Jalosien.esp_Temperatur', parseInt(erg[0]));//Temperatur break; case 31: if (objects.switchcmd == 'On') { setState('javascript.1.VIS.Gardena.RegenStatus'/*RegenStatus*/, true); log('ON: ' + objects.switchcmd); } if (objects.switchcmd == 'Off') { setState('javascript.1.VIS.Gardena.RegenStatus'/*RegenStatus*/, false); log('OFF: ' + objects.switchcmd); } break; case 32: setState('javascript.1.VIS.Gardena.Regenintensitaet'/*Regenintensitaet*/, parseInt(objects.svalue)); break; } });
-
@JohGre
Dafür schon mal nen riesen Dank.
Natürlich habe ich dazu noch Fragen
Kann man gleich true oder false per MQTT in den Datenpunkt schreiben lassen für Regenerkennung?
Und was sagt die 1024 aus bei Regenintensität? -
bzgl. True, False ghab ich mich nicht weiter beschäftigt. Die Konfiguration ist für eine Schalter, deshalb nehm ich an kommt On und Off.
1024: nehm ich an ist der Widerstandswert, da wenn die Messfläche feucht wird sich der Wert verringert.
-
@JohGre
Schreibst du deine Auswertung in andere Datenpunkte? -
@haselchen sagte in [gelöst]: Regensensor an ESP8266:
Schreibst du deine Auswertung in andere Datenpunkte?
Ja, die Datenpunkte sind im Script ersichtlich.
-
@JohGre
Habe ich gesehen. Da ich nicht so firm bin in Javascript und Du in deinem Skript noch andere Geräte integriert hast , dachte ich Du hättest noch eine Art clean Datenpunkt wo Du was reinschreibst.
Es regnet stark oder einfach nur Regen...... -
@haselchen
Derzeit historisiere ich die Informationen nur und erstelle mir Charts um ein Gefühl für die Daten zu bekommen.
btw. Es hat hier bei uns am Sonntag das letzte mal geregnet und da war der Sensor noch nicht im Freien. -
Was wird in den Datenpunkt Wettersensor out geschrieben?
In deinem Screenshot ist der Wert leer. -
@haselchen
der ist eigentlich immer leer -
Soooo, alles baulich verstaut.
Aber eine Sache möchte ich noch verstehen.
Nehme ich nur das Device Switch in ESP Easy, dann aktualisiert sich der Datenpunkt alle 30sek im IoBroker.
Kommt dann noch der Analoge Input dazu , dann gibt es keine Aktualisierung.Gibt es dann, wenn man beide Devices im ESP anlegt, nur ein Update wenn der Sensor Regen registriert oder läuft da was falsch?
Ich gebe zu, ich habe es noch nicht ausprobiert und wollte erst auf Deine Antwort warten. -
@haselchen
Hast du den 4. Pin des Sensors eh mit A0 verbunden?
Der digitale Ausgang sendet nur wenn Regen detektiert wird. -
Habe es quasi komplett nach deiner/eurer Anleitung gemacht.
Und da waren es nur 3 Kabel , die mit den Pins verbunden werden mussten.
Mir soll der digitale Ausgang eigentlich auch reichen. Ich möchte ja nur benachrichtigt werden , wenn es regnet.
Ein kleines Ärgernis habe ich.
Es gibt eine Client Timeout connection closed Nachricht im Log.
Und der Adapter startet wieder neu. Habe viel dazu im Netz lesen können, aber eine Lösung nicht gefunden.
Die Einstellmöglichkeiten sind schier unbegrenzt.
Hast du das in Deinem Log genauso? (wir haben eigentlich die gleichen Einstellungen) -
@haselchen
Für die Regenintensität (analoger Pin) brauchst du aber den A0, sonst kriegst du da keine Werte rein. Habe ich erst angeschlossen als der andere funktioniert hat.
Der digitale Pin schaltet nur bei, "Regen erkannt" bzw. Hat aufgehört. Hab das mit einem nassen Finger getestet.bzgl. Clienttimeout ist der NodeMcu etwas empfindlich was das WLAN betrifft. Habe eine Repeater in die Nähe gebracht seither ruhig.
Was sagt das Log von ESPEasy?
-
Ok, dann lösch ich den analogen Input wieder. Danke für die Erklärung.
Ein AVM600 Repeater ist quasi direkt neben dem Gerät.2020-08-29 00:31:04.547 - debug: mqtt.0 (513) Client [Wetterstation] pingreq 2020-08-29 00:31:05.497 - info: mqtt.0 (513) Client [Wetterstation] connection closed: disconnected 2020-08-29 00:31:23.425 - info: mqtt.0 (513) Client [Wetterstation] connected with secret 2020-08-29 00:31:23.426 - debug: mqtt.0 (513) Client [Wetterstation] with keepalive 10 set timeout to 15 seconds 2020-08-29 00:33:41.868 - info: mqtt.0 (32326) Client [Wetterstation] connection closed: timeout
-
@haselchen und das Disconnect siehst du im log am ESPEasy auch?
Das sind meine mqtt Settings. Port habe ich einen anderen genommen.
-
Hab deine Einstellungen mal übernommen und beobachte das.
Vielen Dank, dass Du ein offenes Ohr für mich hast. -
Der closed timeout kommt trotzdem unregelmässig.
Habe alle Einstellungen durch. Wie kriege ich den Keep Alive Wert höher.
Der liegt bei 15sek, laut Debug. -
Hallo, @haselchen ,
ich habe bei meinen NodeMcu's eine Rolle hinterlegt, damit verbindet er sich wieder selber mit dem WLAN. Habe aber alle 8266 mit Netzteilen versorgt, keine Batterien. Daher kann ich den 8266 auch das "Schlafen" verbieten. Vielleicht nützt es was, stelle die Rule mal hier rein.
on System#Boot do Let,1,0 // set user variable to initial state of 0 EndOn on Wifi#Disconnected do // if no wifi, wait 3 minutes if [VAR#1]=0 timerSet,1,180 Let,1,1 // set user variable 1 to 1 to prevent re-set of var1 on each event. endif endon on Wifi#Connected do // if wifi returns, cancel reboot timerSet,1,0 // cancel timer Let,1,0 // set user variable 1 to 0 endon On Rules#Timer=1 do // if still no Wifi, reboot reboot endon
Ich habe an den 8266 zusätzlich eine externe Antenne angelötet nach dieser Anleitung:
Klick mich