NEWS
[Linux Shell-Skript] WLAN-Wetterstation
-
@diwoma sagte in [Linux Shell-Skript] WLAN-Wetterstation:
@SBorg
Eine Frage bezüglich InfluxDB2.
Ich nehme an, wenn man die Daten in der Conf eingibt, dann übernimmt das Skript das Schreiben der Werte.Aber mit welchen Measurement-Namen?
Ich finde keine Wetterdaten-Werte.Sollte das irgendwo in den über 5000 Posts geschrieben worden sein, dann entschuldige ich mich. Ich habe nicht alle Posts gelesen.
Ich erwarte von keinem, dass er hier alles durchließt. Würde ich auch nicht
Aber selbst ein neuer, dann kleinerer Post würde wieder anschwellen und nix gewonnen, außer dass man nun schon an zwei Stellen suchen muss.
Also, ich schreibe nirgends irgendwas hinein, weder in die InfluxDB, auf das System, ins Verzeichnis...
Ich lese nur. Ausnahme mit dem "schreiben" ist höchstens die Daten an den ioB schicken, aber dies ist im Grunde auch kein schreiben. Genausowenig "funke" ich irgendwas nach Außen, außer der Nutzer möchte das (die Messdaten an diverse Wetterdienste). Es findet nur eine HTTP-Abfrage auf meinen GitHub-Account statt, damit eine neue Version, sofern verfügbar, angezeigt werden kann. Nutzerstatistiken etc. pp. gibt es alles nicht. Lediglich GitHub zählt anonym die Seitenaufrufe des Projekts und die Download-Anzahl des Releases.In InfluxDB findest du die Daten die du loggst immer wie der Objektpfad auch heißt, also bspw. für die "Aussentemperatur" musst du bei der Default-Struktur nach
0_userdata.0.Wetterstation.Aussentemperatur
suchen (oder gibst einfach "Aussentemperatur" im Suchfeld ein, dann blendet er alle passenden Einträge ein). Warum ein "Alias" beim loggen nicht funktioniert steht in der WiKi. -
@diwoma sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Warum brauch aber das Shell-Skript den Infux-Zugang? Das habe ich noch nicht gelesen.
Eigentlich nicht unbedingt. Die Station liefert aber bei fast allen Werten nur einen Momentanwert. Wenn du also bspw. den Höchst- und Tiefstwert des Tages der Temperatur willst, braucht man dafür auch alle Messwerte des Tages. Dafür werden die dann in InfluxDB geloggt. Das Skript geht nun her (wenn die Influx-Daten korrekt eingetragen wurden) und macht einfach die InfluxDB-Abfrage für dich: nimm alle Werte der Temperatur von Zeitpunkt x bis y und gib mir den kleinsten/größten aus
Das war dann auch schon der ganze Voodoo. Kann man machen, muss man aber nicht. Soweit ich mich noch erinnern kann war das ein Userwunsch. -
@icebear sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Mir ist jetzt grad aufgefallen, das warum auch immer in den DP's bei Windrichtung_Text und Windrichtung_Text_10min bei mir immer die gleiche Windrichtung als Text angezeigt wird, obwohl die Gradzahl unterschiedlich ist.
Hast du seit der Installation den ioB schon mal neu gestartet? Oft verhaspelt sich der JSC wenn viele Datenpunkte (und wir haben mittlerweile viele, sehr viele
) per JS angelegt werden. Der Datenpunkt ist dann da und sieht gut aus, funktioniert aber nicht.
Auch wäre interessant ob er die Daten ("LC") auch ändert. Pauschal ein Problemchen bei dir vor Ort und kein generelles Problem. Da hätte sich bestimmt der Ein oder Andere schon gemeldet und bei mir funktioniert es auch erwartungsgemäß:
-
@sborg said in [Linux Shell-Skript] WLAN-Wetterstation:
Hast du seit der Installation den ioB schon mal neu gestartet? Oft verhaspelt sich der JSC wenn viele Datenpunkte (und wir haben mittlerweile viele, sehr viele ) per JS angelegt werden. Der Datenpunkt ist dann da und sieht gut aus, funktioniert aber nicht.
Ok. Guter Hinweis, da ich am WE eh meinen Docker Container updaten wollte , werd ich dann mal drauf achten.
-
@icebear
Die "kleine" Lösung funktioniert auch meistens. WEB-, JS- und Simple-API-Adapter anhalten, kurz warten und wieder starten.
Das passiert nur (aber auch nicht immer) wenn mittels derwetterstation.js
alle Datenpunkte (=frische Installation) neu angelegt wurden.
Ich hatte es aber auch schon bei einem Datenpunkt den ich für ein anderes Projekt per JS angelegt hatte. Ich habe damals zig Stunden nach dem Fehler gesucht "der Datenpunkt ist doch da, warum schreibt er zum f*ck da nicht drauf...". -
@sborg
Danke für die Information.@icebear und @Negalein haben mich schon auf meinen Gedanken-Fehler aufmerksam gemacht.
Wäre schön, wenn bei der Erklärung der Werte in der Conf beim InfluxDB-Eintrag dabei stehen würde, dass Daten zurückgelesen werden (wenn sie eingetragen sind) und das Shell-Skript es selbst braucht um Daten zu berechnen. Das war mir nicht klar.
Danke für die Skripte und Deinen Aufwand.
-
Hallo,
ich hatte gehofft keine Probleme zu bekommen. Aber ich bin schon stolzer Besitzer einer Ecowitt WP90 mit Gateway 2000.
Ich bekomme keine Werte angezeigt. Bei ausführen von ./wetterstation.sh --debug erscheint:
WLAN-Wetterstation V3.5.2 - (c)2019-2025 by SBorg Config-Version: V3.5.2 Sub-Version : V3.5.2 'bc' installiert: [✓] 'jq' installiert: [✓] 'dc' installiert: [✓] 'nc' in der Openbsd-Variante installiert: [✓] 'netcat' in Openbsd-Variante aktiv, alles korrekt [✓] Connection to 172.16.0.102 8081 port [tcp/*] succeeded! parse error: Invalid numeric literal at line 1, column 10 (standard_in) 1: syntax error (standard_in) 1: syntax error /home/wetter/wetterstation/wetterstation.sub: line 858: [: : integer expression expected Messwerteblock: Nicht alle Werte werden unterstützt (abhängig vom Modell der Wetterstation und dem verwendeten Protokoll)! Temperatur Innen : °C Temperatur Aussen : °C Taupunkt : °C Gefühlte Temperatur : °C Luftfeuchte Innen : % Luftfeuchte Aussen : % Windgeschwindigkeit : km/h Windgeschwindigkeit 10min : km/h Windböengeschwindigkeit : km/h Windböe max. : km/h Windrichtung : ° Windrichtung : Windrichtung 10min : ° Luftdruck absolut : hPa Luftdruck relativ : hPa Regenrate : mm/h Regenstatus : Regen seit Regenbeginn : mm Regen Stunde : mm Regen Tag : mm Regen Woche : mm Regen Monat : mm Regen Jahr : mm Regen Gesamt : mm Sättigungsdefizit : kPa Sonnenstrahlung : W/m² UV-Index : Zeitstempel : Firmware : Batteriestand: : Gateway-Modell : Zusatzsensoren: Datenstring für ioBroker: DATA von Wetterstation: Debug VAR: Installationsverzeichnis: /home/wetter/wetterstation IPP: 172.16.0.102:8081 WS_PORT: 1080 WS_POLL: 20 PRE_DP: 0_userdata.0.Wetterstation WEB: HTTP WS_PROT: Ecowitt Zusatzsensoren: DP10/35/40/50/60/70/100/200/250/300: 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 WH31: 0 || WS90: 0 Bresser: 7009999 [0] Script-Version: V3.5.2 Config-Version: V3.5.2 Sub-Version: V3.5.2 Kommunikationsfehler!
Die Conf seht ihr hier:
### Settings V3.5.2 ----------------------------------------------------------- #Debuging einschalten [true/false] / default: false / Ausgabe der Messwerte debug=false #Verhalten bei Kommunikationsfehler [true/false] / default: false / Soll der Datenpunkt automatisch resettet werden? RESET_KOMFEHLER=false #Logging einschalten [true/false] / default: false / schreibt die Datenstrings der Station in eine Datei logging=false #ioBroker-IP und Port der Simple-Restful-API [xxx.xxx.xxx.xxx:xxxxx] IPP=172.16.0.102:8081 #Protokoll, ioBroker-IP und Port der Rest-API [http(s)://xxx.xxx.xxx.xxx:xxxxx] / leer lassen falls nicht benutzt RESTAPI_URL= RESTAPI_USER= RESTAPI_PW= #Protokoll der Wetterstation [1/2/9] / 1=Wunderground ; 2=Ecowitt ; 9=DNS / default: 2 WS_PROTOKOLL=2 #Anzahl der vorhandenen Zusatzsensoren Froggit, Ecowitt und Bresser / default: 0 ANZAHL_WH31=0 ANZAHL_WS90=0 ANZAHL_DP10=0 ANZAHL_DP35=0 ANZAHL_DP40=0 ANZAHL_DP50=0 ANZAHL_DP60=0 ANZAHL_DP70=0 ANZAHL_DP100=0 ANZAHL_DP200=0 ANZAHL_DP250=0 ANZAHL_DP300=0 ANZAHL_7009999=0 #Protokoll (HTTP oder HTTPS) / default: HTTP WEB=HTTP #Ignoriere Zertifikatsfehler bei der Simple-Restful-API [true/false] / default: false / nötig bei eigenen Zertifikaten WEB_IGN_SSL_ERROR=false #User-Authentifizierung falls benutzt; sonst leer lassen AUTH_USER= AUTH_PASS= #Port der Wetterstation WS_PORT=1080 #Pollintervall der Wetterstation in Sekunden (minimal 16 Sekunden) WS_POLL=20 #Name/ID der Wetterstation WS_ID=ZuHause #wo sollen die Datenobjekte abgelegt werden PRE_DP=0_userdata.0.Wetterstation #InfluxDB-Konfiguration / ohne InfluxDB alles leer lassen #Protokoll (HTTP oder HTTPS) / default: HTTP INFLUX_WEB=HTTP #IP und Port der API [xxx.xxx.xxx.xxx:xxxxx] INFLUX_API=172.16.0.101:8086 #Bucket, Token und Organisation der InfluxDB INFLUX_BUCKET=iobroker INFLUX_TOKEN=xxx INFLUX_ORG=homelab #letztes Regenereignis als [DATUM], [UNIX]-Timestamp oder [DIFF]erenz ("vor xx Tagen") # DATUM = 28.04.2020 13:12 # UNIX = 1588074964 # DIFF = gerade eben / vor einer Stunde / vor 23 Stunden / vor einem Tag / vor 12 Tagen LAST_RAIN=DIFF #Text-Format für Datenpunkte "Sonnenschein_[Tag|Woche|Monat|Jahr]_Text" # zweistellig wird ggf. mit einer führenden "0" aufgefüllt # d = Tag(e) 0...n ein- und mehrstellig / h = Stunden 0...n ein- oder mehrstellig # hh = Stunden zweistellig (00...23) / mm = Minuten zweistellig (00...59) / ss = Sekunden zweistellig (00...59) # # Beispiel: 68 Stunden, 2 Minuten und 15 Sekunden # # Auswahl | Ausgabe im Datenpunkt # ---------------------------------------------------------------------------- # [0] = h Std. mm Min. ss Sek. | 68 Std. 02 Min. 15 Sek. # [1] = h:mm | 68:02 # [2] = d Tag/e h Std. | 2 Tage 20 Std. # [3] = d Tag/e, h Std, m Min | 2 Tage, 20 Std, 2 Min (Anzeige Tage erst bei >0) SONNENSCHEIN_TXTFORMAT=3 #Daten an Wetter.com senden (leer lassen falls nicht gewünscht)? WETTERCOM_ID= WETTERCOM_PW= #Daten an Wunderground.com senden? [true/false] / default: false #Nur nötig und sinnvoll bei WS_PROTOKOLL=9 (DNS) wenn trotzdem auch Daten weiterhin an Wunderground.com gesendet werden sollen. WUNDERGROUND_UPDATE=false #Windrichtung und -geschwindigkeit der letzten 10 Minuten anstelle aktueller Werte an #windy/OpenSenseMap/wetter.com übertragen? [true/false] / default: false USE_AVG_WIND=false #Fix aktivieren bei fehlerhafter Außentemperatur [true/false] / default: false #Bei unplausiblem Messwert wird kein Datenpaket an den ioB geschickt FIX_AUSSENTEMP=false !!REST ABGESCHNITTEN!!
Hier die Config in der App:
file:///home/daniel/Schreibtisch/Screenshot_20250927_170456_com.ost.ecowitt.jpgHier habe ich den Test einmal ohne "/" im Pfad gemacht, sowie einmal mit (/ steht da ja bereits) funktioniert hat beides leider nicht.
-
@taddy81 Auf den ersten Blick: IPP=172.16.0.102:8081; hier ist der Port falsch,! Richtig ist wahrscheinlich (standard) 8087.
-
@taddy81 sagte in [Linux Shell-Skript] WLAN-Wetterstation:
ANZAHL_WS90=0
Heisst dein Sensor WP90 oder WS90?
Wenn WS90 dann in der config eintragen.Und in deiner App steht unter SPEICHERN -> DEAKTIVIERT?
-
Habs gelöst. Danke ihr beiden!
Nun kann ich mich daran begeben, ein Dashboard zu basteln.
-
@taddy81
Mich würde interessieren, wo der Fehler war?
Nur dass wir alle dazulernen -
Neues Release des Wetterstation WLAN-Skriptes auf GitHub V3.6.0
- + Regenereignis für Piezo-Sensoren / Issue #82
- + Unterstützung für WS80 und WH40H Sensoren
Wie immer zu finden im GitHub
Update-Routine von Vorgängerversion:
- aktuellen WS-Updater nutzen
./ws_updater.sh
im Installationsverzeichnis ausführen- Menüpunkt "4" wählen und die Fragen beantworten
- wetterstation.js muss ebenfalls im JavaScript-Adapter ersetzt und einmalig ausgeführt werden (neuer Datenpunkt .Regenereignis); bei aktivierter Rest-API wird der Datenpunkt automatisch im ioB angelegt (1)
(1) es empfiehlt sich danach den Simple-API-Adapter neu zu starten (entweder per WebIF oder einfach
iob restart simple-api.0
)
Update kann durchgeführt werden, wenn man passende Sensoren hat/nutzt.
Hinweis: Bei Regensensoren die auf Piezo-Technik basieren (IMO nur ws80/90) und entsprechender Firmware wird nun der Datenpunkt "Regenereignis" als "0" bzw. "1" übergeben (0=kein Regen, 1=Regen). Im Gegensatz zu den Trichtermodellen mit Wippe werden hier schon einzelne Regentropfen detektiert. Eignet sich also nun tatsächlich als aktuelle Regenanzeige, um bspw. die Markise einzufahren.