NEWS
Wetterstation Ventus W830 parsing mit ESP8266
-
@FatBob sagte in Wetterstation Ventus W830 parsing mit ESP8266:
@SBorg
Du scheinst hier das Leerzeichen rauszuschneiden und dann dem Adapter mitzuteilen, dass jetzt eine UTC im danach eingegebenen Format kommt.Nicht ganz
Von der Station kommt:dateutc=2020-01-30%2023:58:28
#1 schneidet nicht das Leerzeichen heraus, sondern ersetzt %20 (Maskierung des Leerzeichens in HTTP-Strings) durch ein [space]:2020-01-30 23:58:28
#2 funktioniert auch etwas anders als du gerade denkst. Ich sage damit, formatiere2020-01-30 23:58:28
welches in UTC vorliegt nach DD.MM.YYYY HH:MM:SS :30.01.2020 23:58:28
Praktischerweise konvertiert der "date"-Befehl dabei gleich auf die passende Zeitzone. Damit erreiche ich, dass zB. auch CET/CEST völlig egal ist. Er rechnet immer korrekt solange der Host auf die korrekte Zeitzone/Sommer-/Winterzeit eingestellt ist. Praktisch, falls, oder wenn überhaupt, und wann, wir ev. permanente Winter- oder Sommerzeit haben, oder ggf. doch weiter umstellen ^^
Und genau diesen String schicke ich dann an den ioB:31.01.2020 00:58:28
(jetzt als aktuell CET umgesetzt)...und genau diese UTC --> CET/CEST Konvertierung müsste die Library des NTP hergeben.
-
Ahh, alles klar,mal sehen ob ich das mit NTP umsetzten werde, scheint mir ein wenig aufwändig, für eine Zeitangabe, die man eigentlich nicht nutzt...
br
Bob
-
@FatBob Ob das Teil noch "lebt" kann man auch notfalls über die ts/lc der Datenpunkte erkennen. Allerdings brauche ich den genauen Zeitpunkt, da ich in der neusten Version die Jahresregenmenge noch berechne. Die Tagesmenge wird 0:00 UTC genullt.
...zumnindest die Lib TimeZone kann es, die wurde extra dafür geschrieben
-
Habe mein WLAN versteckt ( Sinn und Zweck sei dahingestellt ),
das Problem ist ,das er mit deinem Script nicht dann mein WLAN findet bzw. ein Verbindung aufbaut.Wie und was muss an deinem Code angepasst werden , damit mein verstecktes SSID (hidden) mit deinem Code funktioniert.
-
Eigentlich sollte es für das Sketch keine Rolle spielen, ob das Netzwerk versteckt ist, schließlich wird direkt über SSID angebunden.
Ich werde das nächste Woche mal simulieren, am WE bin ich in den Bergen und habe keine Zeit dafür
Br
FB
-
Also ich habe jetzt in meinem Ubiquiti netzwerk eines mit hidden SSID aufgesetzt.
Das Board meldet sich problemlos an...Ich hab dann ein wenig herumgeforscht..
Offensichtlich gibts ein Problem mit manchen ESP8266/Routerkonfigurationen, eine richtige Lösung hab ich nicht gefunden, leider zu wenig Zeit.
Es gibt hier als Ausgangspunkt einen Thread auf Github.
Es kommt wohl auf den mode des accesspoints an..
BR
FB
-
Danke ... das du dir die Zeit genommen hast .
Habe eine Fritzbox 6490 (bald eine 6591 )
Dann wird es das gleiche sein wie bei Tasmota .. da kann ich auch nicht mehr die neusten Versionen nehmen , wegen hidden SSID.
Aber das Thema ist hier OT , deshalb schließe ich hier ab .
DANKE !! -
Hallo nochmal.
Ich hab das jetzt ein wenig erweitert, es wird jetzt die TimeZone Lib verwendet, also wird
die korrekte Zeit (Standard und Sommerzeit geht automatisch) eruiert.@SBorg
Die NTP-Funktionalität ist mE problematisch weil:Die Wetterstation hat selbst keine NTP-Funktion und auch keine Funkuhr, zumindest musste ich bei meiner Datum/Uhrzeit händisch einstellen.
Wenn man sich nun beim Loggen auf eine NTP-Zeit verlässt, kann man, wenn man zu spät dran ist (weil die Wetterstation "vorgeht") die Nullung der Regenmenge verpassen und die Daten verlieren.
Also ist es mE besser nur mittels Timezone die UTC der Wetterstation auf lokale Zeit umzusetzen.
Man muss sich dann beim Loggen auf jeden Fall auf die so errechnete Zeit stützen und nicht auf die Zeit des IO-Brokers.
Wie ich allerdings punktgenau ein Logging ausserhalb des sql-Adapters auslöse, weiß ich noch nicht .Hier der Code:
Zusätzlich zu den Netzwerksettings müssen nun die Konvertierungsregeln eingegeben werden, hier in der EU:
-
Last: letzte Woche // Hier wurde editiert, da zunächst falscher Eintrag
-
Sun: Sonntag
-
Mar/Oct: März/Oktober
-
2: 02:00 Uhr
-
+120/+60: CET/CEST in Minuten zur UTC. (Hier im deutschsprachigen Raum).
Wiederum einfach die Werte anpassen, kompillieren, runterladen, fertig.
Ach ja, bei mir kommt beim kompilieren immer eine Warnung, dass die Lib Time-Master möglicherweise nicht kompatibel zum neuen ESP8266 Board ist,
ich hab aber keine Probleme hier...BR
FatBob
-
-
Hallo Zusammen,
Hier nochmal eine Erweiterung:
Nachdem ich mir über das Loggen in der Datenbank Gedanken gemacht habe, bin ich für mich
zu folgender Lösung gekommen:Anlegen von 4 neuen Datenpunkten (alle Boolean), das ESP-board setzt diese Datenpunkte je nach Message von der Wetterstation auf true.
-
ddlw - wird täglich um 23:58:xx für 2 min "true" (do daily work)
-
dwlw - wird jeden Samstag um 23:58:xx für 2 min "true" (do weekly work) - (Wetterstation nullt um 00:00 Samstag/Sonntag)
-
dmlw - wird am letzten Tag jeden Monats (Schaltjahre sind berücksichtigt) um 23:58:xx für 2 min "true" (do monthly work)
-
dylw - wird am 31.12.xxxx um 23:58:xx für 2 min "true" (do yearly work)
Diese Datenpunkte können dann mittels Script zum Loggen der gewünschten Werte oder zum Kumulieren verwendet werden.
Warum gerade so ?
Nun, die Systemzeit der Wetterstation ist händisch eingestellt, da könnten Daten verloren gehen, wenn die Zeitquelle zum loggen von wo anders kommt.Diese 4 Datenpunkte heissen also " jetzt kommen meine letzten Werte, in 1-2 Minuten sind sie weg".
Ich habs dann für mich im Script dann so gelöst, dass ich mir eigene Datenpunkte fürs loggen angelegt habe, diese im sql-Adapter auf "nur bei Änderung loggen" gesetzt habe und zur Logzeit diese mit den frischen Werten überschreibe, so kriege ich möglichst wenige Logs (ich will nicht bei jeder Bewegung der Regenwippe einen Log) und verliere auch nichts.
Die neuen Datenpunkte:
Der neue Code:
Wer den Code liest, wird feststellen, dass die Datenpunkte zur lokalen Zeit ausgelöst werden.
Ich habe bei meiner Wetterstation festgestellt, dass sie zur lokalen Zeit um 00:00 nullt.
Im Thread zum ShellScript habe ich gesehen, dass bei anderen zur UTC genullt wird, warum das verschieden sein sollte, weiss ich nicht.
Wer sich sicher ist, dass seine Wetterstation bei UTC nullt, kann die Auskommentierung in Zeile 99 entfernen, dann wird nach dem Ausgeben der lokalen
Zeit (für den Datenpunkt "Zeitstempel") die Systemzeit wieder auf UTC gestellt.Ich werde das jetzt mal so lassen, keine weiteren Ideen...
Falls wer noch Anregungen hat, immer her damit...
BR
Bob
-
-
So als kleine Zusatzinfo, ich baue gerade einen Adapter für die WS980Wifi, ist wohl die gleiche Software drauf wie hier Von daher sollte mein Adapter dann auch hier funktionieren. Hier das Thema dazu:
https://forum.iobroker.net/topic/32599/wetterstation-ws980wifi-von-elv-neuer-adapter