NEWS
[Linux Shell-Skript] WLAN-Wetterstation
-
@martybr Danke, geht aber auch nicht in allen Fällen
Die Version funktioniert nun:
RESTAPI_URL=https://192.168.1.3:8093 if [ "$(nc -vz $(echo "${RESTAPI_URL}" | grep -o '[\.0-9]*') &> /dev/null; echo $?)" -eq "0" ]; then echo Heureka; fi
-
@sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
if [ "$(nc -vz $(echo "${RESTAPI_URL}" | grep -o '[.0-9]*') &> /dev/null; echo $?)" -eq "0" ]; then echo Heureka; fi
Ich habe die Befehle auf dem Script-Server gestartet und kann Heureka zurückmelden:
martin@tinkerboard:~$ RESTAPI_URL=http://192.168.178.100:8093 martin@tinkerboard:~$ if [ "$(nc -vz $(echo "${RESTAPI_URL}" | grep -o '[\.0-9]*') &> /dev/null; echo $?)" -eq "0" ]; then echo Heureka; fi Heureka martin@tinkerboard:~$
-
@viper4iob sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Die Roadmap klingt gut
...und wie das so mit Plänen ist...
Eigentlich wollte ich die 16er schon in den öffentlichen Beta-Test schicken, dann habe ich den ganzen Morgen bis eben damit verbracht~ Bugfix gelegentlicher "jq parse"-Fehler ~ Bugfix Regenmenge des meteorologischen Sommers aktualisiert sich nicht
Gerade #2 war "extrem lustig". Von Hand per
./wetterstation.sh --metsommer
funktioniert es, und obwohl er als Service genau das Gleiche macht geht es dann nicht ?!?Ich habe schon für mein Büro eine Trendanzeige. IMO mehr als 1h ist eher Weissagung per Glaskugel als denn ein halbwegs fundierter Trend.
"Außentemperatur" hat jeder, aber wie sieht es mit der "Innentemperatur" aus? Nicht jeder hat wieder ein Display, dann gibt es wieder verschiedene Zusatzsensoren, verschiedene Anzahl an Sensoren. Will man das überhaupt für alle Sensoren... Macht es nicht gerade leichter.
Ich würde es dann wohl auf den reinen Innentemperatursensor begrenzen. -
@martybr sagte in [Linux Shell-Skript] WLAN-Wetterstation:
und kann Heureka zurückmelden
Ich fand immer "API läuft" langweilig
...aber es geht zumindest -
-
Tests heute Nacht erfolgreich abgeschlossen
Neue Beta-Version des Wetterstation WLAN-Skriptes auf GitHub V2.16.0
(Beta-Releases lassen sich nicht! über den ws_updater.sh installieren, nur die *.conf lässt sich mit dem ws_updater.beta ggf. patchen [s.u.])
- + Windrichtung der letzten 10 Minuten für alle Stationen (benötigt wird dafür nun noch 'dc')
- + durchschnittliche Windgeschwindigkeit der letzten 10 Minuten für alle Stationen
- ~ Bugfix gelegentlicher "jq parse"-Fehler
- ~ Bugfix Regenmenge des meteorologischen Sommers aktualisiert sich nicht
Wie immer zu finden im GitHub
Update-Routine:
- wetterstation.sh, wetterstation.sub und ws_updater.beta (muss "ausführbar" sein
chmod +x ws_updater.beta
) ersetzen bzw. kopieren ./ws_updater.beta --patch
im Installationsverzeichnis ausführen und ev. Hinweise beachten- nun mittels
[sudo] systemctl restart wetterstation
den Service neu starten
Liefert die Station bereits die beiden 10 Minuten-Werte werden diese benutzt, ansonsten berechnet sie das Skript. Um Ausreißer durch Windböen zu minimieren, wird die Windgeschwindigkeit Median berechnet.
Die "10 Minuten" sind dabei nicht ganz richtig und sind eher "10 Minuten +/- xx Sekunden", da hier der Einfachheit halber die letzten 20 Messwerte heran gezogen werden. -
@sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Update-Routine:
läuft
dietpi@DietPi:/home/iobroker$ ./ws_updater.beta --patch ┌────────────────────────┐ │ │ │ WS-Updater V2.16.0 │ │ │ └────────────────────────┘ Soll die wetterstation.conf nun auf eine neue Version gepatcht werden? [J/N]: J Lege Sicherungskopie der wetterstation.conf an... Patche wetterstation.conf auf V2.16.0 ... Fertig... Die Rest-API kann nun durch Eingabe der URL und den Zugangsdaten aktiviert werden! dietpi@DietPi:/home/iobroker$
aber haben diese Errors was zu bedeuten?
dietpi@DietPi:/home/iobroker$ sudo systemctl status wetterstation ● wetterstation.service - Service für ioBroker Wetterstation Loaded: loaded (/etc/systemd/system/wetterstation.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2022-07-21 12:36:22 CEST; 12s ago Main PID: 27308 (wetterstation.s) Tasks: 5 (limit: 264) Memory: 2.7M CGroup: /system.slice/wetterstation.service ├─27308 /bin/bash /home/iobroker/wetterstation.sh ├─27626 /bin/bash /home/iobroker/wetterstation.sh ├─27627 timeout 38 nc -nlvw 1 -p 1080 ├─27628 tail -1 └─27629 nc -nlvw 1 -p 1080 Jul 21 12:36:32 DietPi wetterstation.sh[27308]: /home/iobroker/wetterstation.sub: line 433: dc: command not found Jul 21 12:36:32 DietPi wetterstation.sh[27308]: (standard_in) 1: syntax error Jul 21 12:36:32 DietPi wetterstation.sh[27308]: (standard_in) 1: syntax error Jul 21 12:36:32 DietPi wetterstation.sh[27308]: (standard_in) 1: syntax error Jul 21 12:36:32 DietPi wetterstation.sh[27308]: Runtime error (func=(main), adr=3): Parameter number mismatch Jul 21 12:36:32 DietPi wetterstation.sh[27308]: (standard_in) 12: syntax error Jul 21 12:36:32 DietPi wetterstation.sh[27308]: (standard_in) 1: syntax error Jul 21 12:36:32 DietPi wetterstation.sh[27308]: (standard_in) 1: syntax error Jul 21 12:36:32 DietPi wetterstation.sh[27308]: (standard_in) 1: syntax error Jul 21 12:36:32 DietPi wetterstation.sh[27308]: (standard_in) 1: syntax error
-
@negalein Ja, dass es nicht geht und ich was vergessen habe (beim patchen zu prüfen ob auch alle benötigten Programme auf der Maschine installiert sind). Dir fehlt "dc".
- lade bitte noch mal den ws.updater.beta von GitHub herunter
- dann (sofern du das Backup noch nicht gelöscht hast)
cp ./wetterstation.conf.backup ./wetterstation.conf
- noch mal patchen
./ws_updater.beta --patch
(er sollte jetzt das fehlende "dc" anmeckern + es installieren) - (Rest-API Einträge sind, falls du sie eingetragen hast, nun leider weg und müssen nochmal eingegeben werden)
- Service wieder restarten
-
@sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
./ws_updater.beta --patch
dc
wurde angemeckert, abernicht
selbst installiert.Und
influxd
meckert er nun rum.dietpi@DietPi:/home/iobroker$ ./ws_updater.beta --patch ┌────────────────────────┐ │ │ │ WS-Updater V2.16.0 │ │ │ └────────────────────────┘ ./ws_updater.beta: Zeile 64: influxd: Kommando nicht gefunden. Offizieller Support nur für Influx V1.x! 'bc' installiert: [✓] 'jq' installiert: [✓] 'dc' installiert: [✗] Bitte zuerst 'dc' installieren [sudo apt install dc] dietpi@DietPi:/home/iobroker$ sudo apt install dc Paketlisten werden gelesen... Fertig Abhängigkeitsbaum wird aufgebaut. Statusinformationen werden eingelesen.... Fertig Die folgenden NEUEN Pakete werden installiert: dc 0 aktualisiert, 1 neu installiert, 0 zu entfernen und 0 nicht aktualisiert. Es müssen 72,3 kB an Archiven heruntergeladen werden. Nach dieser Operation werden 151 kB Plattenplatz zusätzlich benutzt. Holen:1 https://deb.debian.org/debian buster/main amd64 dc amd64 1.07.1-2+b1 [72,3 kB] Es wurden 72,3 kB in 0 s geholt (334 kB/s). Vormals nicht ausgewähltes Paket dc wird gewählt. (Lese Datenbank ... 17225 Dateien und Verzeichnisse sind derzeit installiert.) Vorbereitung zum Entpacken von .../dc_1.07.1-2+b1_amd64.deb ... Entpacken von dc (1.07.1-2+b1) ... dc (1.07.1-2+b1) wird eingerichtet ... dietpi@DietPi:/home/iobroker$ ./ws_updater.beta --patch ┌────────────────────────┐ │ │ │ WS-Updater V2.16.0 │ │ │ └────────────────────────┘ ./ws_updater.beta: Zeile 64: influxd: Kommando nicht gefunden. Offizieller Support nur für Influx V1.x! 'bc' installiert: [✓] 'jq' installiert: [✓] 'dc' installiert: [✓] 'unzip' installiert: [✓] 'patch' installiert: [✓] 'Rest-API' im ioBroker installiert: [✗] (Dies ist kein Problem, es können nur keine neuen Datenpunkte bei Bedarf automatisch angelegt werden. Dies muss im Fall neuer Datenpunkte per 'wetterstation.js' von Hand im ioBroker erfolgen.) Soll die wetterstation.conf nun auf eine neue Version gepatcht werden? [J/N]: J Lege Sicherungskopie der wetterstation.conf an... Patche wetterstation.conf auf V2.16.0 ... Fertig... Die Rest-API kann nun durch Eingabe der URL und den Zugangsdaten aktiviert werden! dietpi@DietPi:/home/iobroker$
-
@negalein "dc" war nun mal korrekt (mein Fehler, die Programme mussten bzw. sollten auch schon immer von Hand installiert werden). Influx ist da nicht auf deinem DietPi installiert --> Prüfung angepasst (kann dann nicht statt finden)
Text noch angepasst, da der "Fehler" 'Rest-API' im ioBroker installiert: [✗] ev. an der Stelle irreführend ist. Man muss ja zuerst patchen, dann in der conf eintragen und erst dann kann die Prüfung auch erfolgreich sein...
Falls du noch mal testen willst genügt nun die "einfache" Variante:
- ws_updater.beta noch mal laden
./ws_updater.beta --patch
ausführen
Influx sollte weg sein + so aussehen wie mein Pic (außer ev. der API-Zugriff ).
J/N bei patchen ist dann egal, selbst bei J wird er dann melden "ist bereits aktuell" + nix machen -
@sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Falls du noch mal testen willst genügt nun die "einfache" Variante:
perfekt
dietpi@DietPi:/home/iobroker$ ./ws_updater.beta --patch ┌────────────────────────┐ │ │ │ WS-Updater V2.16.0 │ │ │ └────────────────────────┘ 'bc' installiert: [✓] 'jq' installiert: [✓] 'dc' installiert: [✓] 'unzip' installiert: [✓] 'patch' installiert: [✓] Zugriff auf 'Rest-API' im ioBroker: [✓] Soll die wetterstation.conf nun auf eine neue Version gepatcht werden? [J/N]: J Version ist bereits aktuell... dietpi@DietPi:/home/iobroker$
-
Hallo zusammen,
Habe (noch) die vielleicht etwas komische Konstellation einer GW1100A und nur eines weiteren WH31 (aber das dnt derivat DNT000005) am laufen. GW1100A meldet auch alles inkl. dem WH31.
Script ist installiert, läuft mit WU auch wunderbar, aber eben ohne den WH31 (ich glaube das liegt am WU Format).
Mit Ecowitt bekomme ich einen Kommunikationsfehler, aber leider keine Infos warum. Schickt der GW1100A irgendwie Daten, die das Script nicht versteht?
Hier der Debug Log:
WLAN-Wetterstation V2.15.0 - (c)2019-2022 by SBorg Config-Version: V2.15.0 Sub-Version : V2.15.0 'bc' installiert: [✓] 'jq' installiert: [✓] 'nc' in der Openbsd-Variante installiert: [✓] 'netcat' in Openbsd-Variante aktiv, alles korrekt [✓] Connection to 192.168.1.77 8087 port [tcp/*] succeeded! 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 : % Windgeschwindkeit : km/h Windgeschwindkeit 10min : km/h Windböengeschwindigkeit : km/h max. Windböe : 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 Sonnenstrahlung : W/m² UV-Index : Zeitstempel : Firmware : Batteriestand: : Gateway-Modell : Zusatzsensoren: Datenstring für ioBroker: DATA von Wetterstation: PASSKEY=xxxxxx&stationtype=GW1100A_V2.1.5&runtime=164656&dateutc=2022-07-21+17:18:09&tempinf=80.24&humidityin=51&baromrelin=29.007&baromabsin=29.007&temp1f=77.54&humidity1=48&batt1=0&freq=868M&model=GW1100A Debug VAR: Installationsverzeichnis: /home/pi/wetterstation IPP: 192.168.1.77:8087 WS_PORT: 9999 WS_POLL: 30 PRE_DP: javascript.0.Wetterstation WEB: HTTP WS_PROT: Ecowitt DP35/40/50/60/70/100/200/250/300: 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 WH31: 1 Script-Version: V2.15.0 Config-Version: V2.15.0 Sub-Version: V2.15.0 Kommunikationsfehler!
Vielleicht kann mir ja jemand helfen
Danke schon mal!
-
@mi28havoc sagte in [Linux Shell-Skript] WLAN-Wetterstation:
die vielleicht etwas komische Konstellation
Da ist auch dein Problem. Eigentlich ist es für Wetterstationen gedacht und da gibt es eine Außentemperatur.
Beim Ecowitt-Protokoll wird nun das empfangene Datenpaket geprüft:- Länge > 150 Zeichen
- enthält einen Part PASSKEY
- enthält die Außentemperatur ( )
Fehlt etwas ist das Paket nicht valide + die Kommunikation ist gestört.
Bei "(noch)" gehe ich mal davon aus es kommt mal noch was dazu. Aktuell kannst du nur die Version selbst patchen.
Öffne die wetterstation.sub mittels zB. "nano" --> STRG+W --> tempf= eingebenDa landest du bei der Zeile:
if [ "$STRLEN" -gt "150" ] && [[ "$DATA" =~ "PASSKEY=" ]] && [[ "$DATA" =~ "tempf=" ]]; then return 0; else return 1; fi
Die ändern wir auf einen kürzeren String und auf die Innentemperatur (einfach ersetzen):
if [ "$STRLEN" -gt "100" ] && [[ "$DATA" =~ "PASSKEY=" ]] && [[ "$DATA" =~ "tempinf=" ]]; then return 0; else return 1; fi
Speichern, dann sollte es eigentlich auch mit dieser Konfiguration laufen
-
@sborg ja nice, vielen Dank! Das funktioniert. Leider kommen die Daten des zweiten Sensors noch nicht mit.
WLAN-Wetterstation V2.15.0 - (c)2019-2022 by SBorg Config-Version: V2.15.0 Sub-Version : V2.15.0 'bc' installiert: [✓] 'jq' installiert: [✓] 'nc' in der Openbsd-Variante installiert: [✓] 'netcat' in Openbsd-Variante aktiv, alles korrekt [✓] Connection to 192.168.1.77 8087 port [tcp/*] succeeded! [ { "id": "javascript.0.Wetterstation.Innentemperatur", "val": 26.3 }, { "id": "javascript.0.Wetterstation.Innenfeuchtigkeit", "val": 50 }, { "id": "javascript.0.Wetterstation.Druck_absolut", "val": 982.08 }, { "id": "javascript.0.Wetterstation.Druck_relativ", "val": 1020.11 }, { "id": "javascript.0.Wetterstation.Zeitstempel", "val": "21.07.2022 20:37:16" }, { "id": "javascript.0.Wetterstation.Info.FW_Version", "val": "GW1100A_V2.1.5" }, { "id": "javascript.0.Wetterstation.Info.Wetterstation_Gateway", "val": "GW1100A" }, { "id": "javascript.0.Wetterstation.Regenstatus", "val": "" }, { "id": "javascript.0.Wetterstation.UV_Belastung", "val": "" }, { "id": "javascript.0.Wetterstation.Windrichtung_Text", "val": "" }, { "id": "javascript.0.Wetterstation.Info.Hitzeindex", "val": "" } ] Messwerteblock: 26.30 50 982.08 1020.11 21.07.2022%2020:37:16 GW1100A_V2.1.5 GW1100A Nicht alle Werte werden unterstützt (abhängig vom Modell der Wetterstation und dem verwendeten Protokoll)! Temperatur Innen : 26.30 °C Temperatur Aussen : °C Taupunkt : °C Gefühlte Temperatur : °C Luftfeuchte Innen : 50 % Luftfeuchte Aussen : % Windgeschwindkeit : km/h Windgeschwindkeit 10min : km/h Windböengeschwindigkeit : km/h max. Windböe : km/h Windrichtung : ° Windrichtung : Windrichtung 10min : ° Luftdruck absolut : 982.08 hPa Luftdruck relativ : 1020.11 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 Sonnenstrahlung : W/m² UV-Index : Zeitstempel : 21.07.2022 20:37:16 Firmware : GW1100A_V2.1.5 Batteriestand: : Gateway-Modell : GW1100A Zusatzsensoren: Datenstring für ioBroker: javascript.0.Wetterstation.Innentemperatur=26.30&javascript.0.Wetterstation.Innenfeuchtigkeit=50&javascript.0.Wetterstation.Druck_absolut=982.08&javascript .0.Wetterstation.Druck_relativ=1020.11&javascript.0.Wetterstation.Zeitstempel=21.07.2022%2020:37:16&javascript.0.Wetterstation.Info.FW_Version=GW1100A_V2.1 .5&javascript.0.Wetterstation.Info.Wetterstation_Gateway=GW1100A&javascript.0.Wetterstation.Regenstatus=&javascript.0.Wetterstation.UV_Belastung=&javascrip t.0.Wetterstation.Windrichtung_Text=&javascript.0.Wetterstation.Info.Hitzeindex= DATA von Wetterstation: PASSKEY=xxxxxx&stationtype=GW1100A_V2.1.5&runtime=1372&dateutc=2022-07-21+18:37:16&tempinf=79.34&humidityin=50&baromrelin=30.124&baromabsin=29.001&temp1f=7 0.70&humidity1=66&batt1=0&freq=868M&model=GW1100A Debug VAR: Installationsverzeichnis: /home/pi/wetterstation IPP: 192.168.1.77:8087 WS_PORT: 9999 WS_POLL: 30 PRE_DP: javascript.0.Wetterstation WEB: HTTP WS_PROT: Ecowitt DP35/40/50/60/70/100/200/250/300: 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 WH31: 1 Script-Version: V2.15.0 Config-Version: V2.15.0 Sub-Version: V2.15.0
Sensor ist in Config eingetragen, hast du da auch noch einen Tipp?
P.S. Ja, Außensensoren kommen definitiv noch Bin nur nicht sicher ob WS69 oder lieber WH80 + WH40 - tendiere zu Letzterem, auch wenn es teurer ist.
-
@mi28havoc sagte in [Linux Shell-Skript] WLAN-Wetterstation:
hast du da auch noch einen Tipp?
Jupp, lt dem Datenstring des Gateways meldet er sich wie ein DP50. WH31 und DP50 sind eigentlich identisch, nur hat da Froggit/Ecowitt ein wenig Kuddelmuddel...
Also trag ihn mal beim WH31 aus und als DP50 ein. Wenn er sich dann bei der Debug-Ausgabe meldet, noch im JS-Adapter auf DP50 umstellen und ausführen, sonst hast du keine DPs/Daten im ioB -
@sborg und auch das hat wunderbar funktioniert, vielen Dank für deine Hilfe
-
@mi28havoc Immer gerne
Solange du halt nicht wenigstens die Außentemperatur als Sensorwert hast, musst du bei einem Update des Skriptes nur daran denken die Zeile nach dem Update wieder zu ändern.
-
Hi,
ich versuche schon seit Stunden das Script zum laufen zu bekommen, bekomme aber immer einen Kommunikationsfehler. Kann mir jemand helfen?WLAN-Wetterstation V2.15.0 - (c)2019-2022 by SBorg Config-Version: V2.15.0 Sub-Version : V2.15.0 'bc' installiert: [✓] 'jq' installiert: [✓] 'nc' in der Openbsd-Variante installiert: [✓] 'netcat' in Openbsd-Variante aktiv, alles korrekt [✓] Connection to 10.20.12.21 31087 port [tcp/*] succeeded! 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 : % Windgeschwindkeit : km/h Windgeschwindkeit 10min : km/h Windböengeschwindigkeit : km/h max. Windböe : 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 Sonnenstrahlung : W/m² UV-Index : Zeitstempel : Firmware : Batteriestand: : Gateway-Modell : Zusatzsensoren: Datenstring für ioBroker: DATA von Wetterstation: Debug VAR: Installationsverzeichnis: /opt/wetterstation IPP: 10.20.12.21:31087 WS_PORT: 2080 WS_POLL: 30 PRE_DP: 0_userdata.0.Wetterstation WEB: HTTP WS_PROT: Ecowitt DP35/40/50/60/70/100/200/250/300: 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 WH31: 0 Script-Version: V2.15.0 Config-Version: V2.15.0 Sub-Version: V2.15.0 Kommunikationsfehler!
Edit: läuft im Docker mit dem Image raspbian/stretch:latest
-
@meerkat
versuch mal den WS Port in der App der Wetterstation zu ändern z.b. 9080 und dann auch im config file des Scriptsbei der IPP hast du den Port des Simple-adapters geändert? Der ist default denke ich auf 8087 eingestellt.
Die 31087 ist hoffentlich richtig.Hier meine Einstellung im ioB:
-
@tritor sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Die 31087 ist hoffentlich richtig.
Jepp, ist sie. Sieht man in Zeile #12 :
Connection to 10.20.12.21 31087 port [tcp/*] succeeded!
Besagt es wurde eine Verbindung zum ioB und der API hergestellt. Was allerdings nicht funktioniert ist die Verbindung vom Display/Gateway zum Auswerte-Rechner (=der auf dem das Skript läuft).
@meerkat Als bekennender "Docker-Spezialist" (Ok, [/Ironie AUS]) den Port 2080 hast du durch gereicht? Dieser ist auch von außerhalb wirklich erreichbar (von einem anderen Rechner aus
nc -vz 10.20.12.xxx 2080
[xxx natürlich durch die korrekte IP ersetzen ])
IP des Auswerte-Rechners, Port und Pfad stimmen in der WS View[+] App ?