NEWS
[Linux Shell-Skript] WLAN-Wetterstation
-
@sborg Ok danke für die schnelle Antwort. Aber in iobroker kommen keine Werte an. Mit Version V2.1.0 funktioniert es.
-
@schittl Das sollte dann natürlich nicht sein. Hat du von der 2.1.0 zur 2.14.0 die Konfiguration 1:1 übernommen oder ggf. einen der neu dazugekommenen Parameter aktiviert?
GeradeFIX_AUSSENTEMP=true
schmeißt auch mal gerne recht großzügig Datenpakete einfach weg. Falls true --> stell ihn mal versuchsweise auf false (ist nur ein Fix für Stationen die gerne mal -5000 °C melden). -
@sborg Ich habe die conf gemergt und keine weiteren Punkte aktiviert. FIX_AUSSENTEMP steht schon auf false. Ich benutze docker, kann es damit zusammenhängen und netcat?
Mit falschen Datenpunkte (Format o.ä.) oder aber der falschen Zeitzone, was ich hier gelesen habe kann es nix zu tun haben im Docker oder? Ich habe alle Datenpunkte bzw. dein Skript habe ich ausgeführt um DP zu erstellen in iobroker. -
@schittl Ich kann dazu leider nur wieder sagen: nutze kein Docker und bin da kein Spezi...
...aber wenn es mit der 2.1.0 noch funktioniert, kann es grundsätzlich mal nicht am Container liegen. Bei falschem "netcat" bekommst du keine Daten von der Station (funktioniert ja), bei der Zeitzone hättest du jetzt halt für die Werte eine Zeit um +/- x-Stunden verschoben (nicht schön, aber du hättest zumindest Daten).
Wenn der Service läuft, was meldet dann denn ein
systemctl status wetterstation
? -
@sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
systemctl status wetterstation
Achso netcat ist verantwortlich für Daten holen und nicht senden. Das Skript läuft im Container nicht als Dienst ich lasse das nur ausführen "./wetterstation.sh" wie laut Docker.yaml
-
@schittl Da waren dann wieder meine Docker-Problemchen
...und ja, netcat nimmt nur die Daten vom Display/Gateway entgegen. Mittels HTTP-Request werden die Daten dann an den ioB (Simple-Restful-Adapter) geschickt.
Um das Ganze nochmal korrekt "aufzudröseln" (denn irgendwas passt da nicht zusammen):
- du nutzt die Datenübertragung an wetter.com ?
- du hast wirklich von V2.1.0 geupdatet (keine Zahl vergessen) ?
Wenn das Skript nicht läuft, schmeißt dann ein
./wetterstation.sh
im Terminal irgendwelche Fehler? -
@sborg wetter.com will ich nicht nutzen. Alle Parameter sind leer.
#Daten an Wetter.com senden (leer lassen falls nicht gewünscht)? WETTERCOM_ID= WETTERCOM_PW=
Ich nutze derzeit noch 2.1.0 und wollte auf 2.14.0 updaten. Fehler kann ich nicht erkennen bis auf "File not found" wie oben schon gezeigt. Ich vermute ja das Problem beim Zeitversatz von den 2 Stunden. Eventuell wird der Zeitstempel ausgewertet ehe was aktualisiert wird. Ich übergebe schon die korrekte Zeitzone beim Erstellen des Containers. Ich muss mich da nochmal näher schauen, wer für den Zeitversatz verantwortlich ist.
-
@sborg
Wenn der Statistik-DP0_userdata.0.Statistik.Wetter.Control.AutoDelete_Data
und0_userdata.0.Statistik.Wetter.Control.AutoReset_Jahresstatistik
auf 0 stehen, wird nie zurückgesetzt, richtig? -
@schittl sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Fehler kann ich nicht erkennen bis auf "File not found" wie oben schon gezeigt.
Ok, dann stimmt da definitiv etwas nicht. Das "File not found" bei Option "--debug" kommt von einem misslungenen Versuch Daten an wetter.com, windy oder OpenSenseMap zu schicken. Ich hatte es so interpretiert, dass du an wetter.com schicken willst was aber aktuell wg. eines Fehlers/Server down bei denen nicht funktioniert.
Wenn du keinen der drei Dienste aktuell nutzt, dann darf auch der Upload-Versuch gar nicht stattfinden.Deine Daten sehen zwar leer aus, aber oftmals wurde die ".conf" am Windows-PC bearbeitet oder mit falschen Einstellungen von bspw. WinSCP auf den Linux Rechner übertragen. Dann sind ggf. "CRs" als unsichtbare Steuerzeichen enthalten was Linux aus dem Tritt bringt.
OpenSenseMap und Windy müsste also bei dir beides auf false stehen und wetter.com (bzw. Steuerzeichen) kannst du mit einem einfachendos2unix wetterstation.conf
(falls nicht installiert:sudo apt install dos2unix
) im Installationsverzeichnis eliminieren. Passiert nix dramatisches, außer geht, oder geht nach wie vor nicht... -
@latzi sagte in [Linux Shell-Skript] WLAN-Wetterstation:
@sborg
Wenn der Statistik-DP0_userdata.0.Statistik.Wetter.Control.AutoDelete_Data
und0_userdata.0.Statistik.Wetter.Control.AutoReset_Jahresstatistik
auf 0 stehen, wird nie zurückgesetzt, richtig?Jepp. Ersteres löscht dann am 1. des Monats alles was älter ist als aktueller Monat minus eingegebener Monatsanzahl. Letzteres setzt dann die Jahreswerte am 01.01. nicht mehr zurück und es wird kein Backup der Jahreswerte unter .Jahreswerte.VorJahre.20xx angelegt.
-
@sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
dos2unix
Zur Info. Ein dos2unix brachte keine Verbesserung "File not found" kommt immer noch.
-
@schittl Da ich es leider nicht nachstellen kann hilft dann nur noch die Komplettausgabe.
Skript darf nicht laufen, dann einbash -x ./wetterstation.sh --debug
Da rattern dann ein "paar" Zeilen durch. 95% davon sind uninteressant, spannend wird es dann gegen Ende wo dann irgendwo das "File not found" auftritt. Davor sollte dann der verursachende Befehl (am Zeilenanfang mit einem "+" gekennzeichnet, danach folgt dann ggf. die Ausgabe wie im Terminal normalerweise sichtbar) stehen:
zB.
Debug VAR: + echo -e 'Installationsverzeichnis: \e[1;33m/home/sborg/script/test\e[1;37m' Installationsverzeichnis: /home/sborg/script/test + echo -e 'IPP: \e[1;33m192.168.1.3:8087\e[1;37m\tWS_PORT: \e[1;33m1080\e[1;37m\t\tWS_POLL: \e[1;33m30\e[1;37m\t\tPRE_DP: \e[1;33mjavascript.0.Wetterstation\e[1;37m' IPP: 192.168.1.3:8087 WS_PORT: 1080 WS_POLL: 30 PRE_DP: javascript.0.Wetterstation + echo -en 'WEB: \e[1;33mHTTP\t\t\e[1;37mWS_PROT: \e[1;33m' WEB: HTTP WS_PROT: + case $WS_PROTOKOLL in + echo -en Ecowitt Ecowitt+ echo -e '\e[1;37m\tDP35/40/50/60/70/100/200/250/300: \e[1;33m0 \e[1;37m| \e[1;33m0 \e[1;37m| \e[1;33m0 \e[1;37m| \e[1;33m0 \e[1;37m| \e[1;33m0 \e[1;37m| \e[1;33m0 \e[1;37m| \e[1;33m0 \e[1;37m| \e[1;33m0 \e[1;37m| \e[1;33m0 \e[1;37m' DP35/40/50/60/70/100/200/250/300: 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 + echo -e '\e[1;37mWH31: \e[1;33m0 \e[1;37m' WH31: 0 + echo -e 'Script-Version: \e[1;33mV2.14.0\e[1;37m\tConfig-Version: \e[1;33mV2.14.0\e[1;37m\tSub-Version: \e[1;33mV2.14.0\e[1;37m' Script-Version: V2.14.0 Config-Version: V2.14.0 Sub-Version: V2.14.0
-
@sborg Danke für deine Hilfe. Per Docker bekomme ich nicht zu der gewünschten Ausgabe. Wenn ich den Befehl starte, passiert nicht viel. Ich bleibe jetzt erstmal auf der alten Version und werde demnächst nochmal einen Versuch starten. Vielen Dank auf jeden Fall. Top!!
-
@schittl Ich würde aktuell auch von einem "spezielleren" Problem ausgehen und nicht von einem allgemeinen unter Docker. Auf GitHub kann ich leider nicht die Anzahl der yaml-Downloads feststellen, würde aber meinen, dass sind sicherlich doch einige und da hätte bestimmt mal jemand ein Issue eröffnet.
Da ich im Normalfall (ggf. aktivierte Logdatei mal außen vor) nichts im System/Container schreibe, kann er bzgl. "File not found" auch nichts lesen wollen (bzw. ich will nichts lesen). Gerade an der Stelle wo es auftritt kann es eigentlich nur windy, wetter.com und OSeM sein.
Falls du noch mal testen willst, kannst du den Part mal hardcoded deaktivieren. Einfach in der wetterstation.sub so um Zeile #165#API-Check if [ ! -z ${WETTERCOM_ID} ]; then wettercom_update; fi if [ ${use_windy} == "true" ]; then windy_update; fi if [ ${openSenseMap} == "true" ]; then opensensemap; fi
die Datenübertragung durch auskommentieren disablen
#API-Check #if [ ! -z ${WETTERCOM_ID} ]; then wettercom_update; fi #if [ ${use_windy} == "true" ]; then windy_update; fi #if [ ${openSenseMap} == "true" ]; then opensensemap; fi
-
@sborg Ich habe die 3 Zeilen auskommentiert wie geschrieben. Trotzdem erscheint der Fehler immer noch bzw. habe weitere. Ich habe auch mal einen komplett neuen Objektbaum in iobroker erstellt um zu schauen das es eventuell daran liegen kann. Leider kommt immer noch nix an in iobroker.
Messwerteblock: 6.10 24.00 8.80 24.00 42 38 1.43 3.60 115 950.49 950.49 0 0 2.2 11.9 360.7 671.01 6 15.06.2022%2009:45:07 GW1000A_V1.7.3 0 9.36 0 0 GW1000A_Pro temp1f 18.50 humidity1 58 soilmoisture1 46 soilmoisture2 36 soilmoisture3 63 soilmoisture4 24 soilmoisture5 42 lightning_num 0 lightning 20 lightning_time 1655119349000 batt1 0 soilbatt1 1.4 soilbatt2 1.4 soilbatt3 1.3 soilbatt4 1.4 soilbatt5 1.4 wh57batt 5 Nicht alle Werte werden unterstützt (abhängig vom Modell der Wetterstation und dem verwendeten Protokoll)! Temperatur Innen : 6.10 °C Temperatur Aussen : 24.00 °C Taupunkt : 8.80 °C Gefühlte Temperatur : 24.00 °C Luftfeuchte Innen : 42 % Luftfeuchte Aussen : 38 % Windgeschwindkeit : 1.43 km/h Windböengeschwindigkeit : 3.60 km/h max. Windböe : 9.36 km/h Windrichtung : 115 ° Windrichtung : OSO Luftdruck absolut : 950.49 hPa Luftdruck relativ : 950.49 hPa Regenrate : 0 mm/h Regenstatus : kein Regen Regen seit Regenbeginn : 0 mm Regen Stunde : 0 mm Regen Tag : 0 mm Regen Woche : 2.2 mm Regen Monat : 11.9 mm Regen Jahr : 360.7 mm Regen Gesamt : mm Sonnenstrahlung : 671.01 W/m² UV-Index : 6 Zeitstempel : 15.06.2022 09:45:07 Firmware : GW1000A_V1.7.3 Batteriestand: : 0 Gateway-Modell : GW1000A_Pro Zusatzsensoren: temp1f : 18.50 humidity1 : 58 soilmoisture1 : 46 soilmoisture2 : 36 soilmoisture3 : 63 soilmoisture4 : 24 soilmoisture5 : 42 lightning_num : 0 lightning : 20 lightning_time : 1655119349000 batt1 : 0 soilbatt1 : 1.4 soilbatt2 : 1.4 soilbatt3 : 1.3 soilbatt4 : 1.4 soilbatt5 : 1.4 wh57batt : 5 Datenstring für ioBroker: 0_userdata.0.DP1500v214.Innentemperatur=6.10&0_userdata.0.DP1500v214.Aussentemperatur=23.90&0_userdata.0.DP1500v214.Taupunkt=8.71&0_userdata.0.DP1500v214.Gefuehlte_Temperatur=23.90&0_userdata.0.DP1500v214.Innenfeuchtigkeit=42&0_userdata.0.DP1500v214.Aussenfeuchtigkeit=38&0_userdata.0.DP1500v214.Wind=1.07&0_userdata.0.DP1500v214.Wind_max=3.60&0_userdata.0.DP1500v214.Windrichtung=53&0_userdata.0.DP1500v214.Druck_absolut=950.69&0_userdata.0.DP1500v214.Druck_relativ=950.69&0_userdata.0.DP1500v214.Regenrate=0&0_userdata.0.DP1500v214.Regen_Tag=0&0_userdata.0.DP1500v214.Regen_Woche=2.2&0_userdata.0.DP1500v214.Regen_Monat=11.9&0_userdata.0.DP1500v214.Regen_Jahr=360.7&0_userdata.0.DP1500v214.Sonnenstrahlung=672.85&0_userdata.0.DP1500v214.UV_Index=6&0_userdata.0.DP1500v214.Zeitstempel=15.06.2022%2009:44:36&0_userdata.0.DP1500v214.Info.FW_Version=GW1000A_V1.7.3&0_userdata.0.DP1500v214.Info.Station_Batteriestatus=0&0_userdata.0.DP1500v214.Windboeen_max=9.36&0_userdata.0.DP1500v214.Regen_Event=0&0_userdata.0.DP1500v214.Regen_Stunde=0&0_userdata.0.DP1500v214.Info.Wetterstation_Gateway=GW1000A_Pro&0_userdata.0.DP1500v214.DP50.1.Temperatur=18.50&0_userdata.0.DP1500v214.DP50.1.Feuchtigkeit=58&0_userdata.0.DP1500v214.DP100.1.Bodenfeuchtigkeit=46&0_userdata.0.DP1500v214.DP100.2.Bodenfeuchtigkeit=36&0_userdata.0.DP1500v214.DP100.3.Bodenfeuchtigkeit=63&0_userdata.0.DP1500v214.DP100.4.Bodenfeuchtigkeit=24&0_userdata.0.DP1500v214.DP100.5.Bodenfeuchtigkeit=42&0_userdata.0.DP1500v214.DP60.1.Anzahl=0&0_userdata.0.DP1500v214.DP60.1.Entfernung=20&0_userdata.0.DP1500v214.DP60.1.Zeitpunkt=1655119349000&0_userdata.0.DP1500v214.DP50.1.Batterie=0&0_userdata.0.DP1500v214.DP100.1.Batterie=1.4&0_userdata.0.DP1500v214.DP100.2.Batterie=1.4&0_userdata.0.DP1500v214.DP100.3.Batterie=1.3&0_userdata.0.DP1500v214.DP100.4.Batterie=1.4&0_userdata.0.DP1500v214.DP100.5.Batterie=1.4&0_userdata.0.DP1500v214.DP60.1.Batterie=5&0_userdata.0.DP1500v214.Regenstatus=kein Regen&0_userdata.0.DP1500v214.UV_Belastung=hoch&0_userdata.0.DP1500v214.Windrichtung_Text=NO&0_userdata.0.DP1500v214.Info.Hitzeindex= DATA von Wetterstation: PASSKEY=xxxxxx&stationtype=GW1000A_V1.7.3&runtime=1262463&dateutc=2022-06-15+09:44:36&tempinf=42.98&humidityin=42&baromrelin=28.074&baromabsin=28.074&tempf=75.02&humidity=38&winddir=53&windspeedmph=0.67&windgustmph=2.24&maxdailygust=5.82&solarradiation=672.85&uv=6&rainratein=0.000&eventrainin=0.000&hourlyrainin=0.000&dailyrainin=0.000&weeklyrainin=0.087&monthlyrainin=0.469&yearlyrainin=14.201&temp1f=65.30&humidity1=58&soilmoisture1=46&soilmoisture2=36&soilmoisture3=63&soilmoisture4=24&soilmoisture5=42&lightning_num=0&lightning=20&lightning_time=1655119349&wh65batt=0&batt1=0&soilbatt1=1.4&soilbatt2=1.4&soilbatt3=1.3&soilbatt4=1.4&soilbatt5=1.4&wh57batt=5&freq=868M&model=GW1000A_Pro Debug VAR: Installationsverzeichnis: /home/dp1500 IPP: 192.168.xx.xx:8082 WS_PORT: 1081 WS_POLL: 30 PRE_DP: 0_userdata.0.DP1500v214 WEB: HTTP WS_PROT: Ecowitt DP35/40/50/60/70/100/200/250/300: 0 | 0 | 1 | 1 | 0 | 5 | 0 | 0 | 0 WH31: 0 Script-Version: V2.14.0 Config-Version: V2.14.0 Sub-Version: V2.14.0 Connection to 192.168.xx.xx 8082 port [tcp/*] succeeded! /home/dp1500/wetterstation.sub: line 586: printf: `%d Std, %d Min': not a valid identifier /home/dp1500/wetterstation.sub: line 586: printf: `%d Std, %d Min': not a valid identifier /home/dp1500/wetterstation.sub: line 586: printf: `%d Std, %d Min': not a valid identifier /home/dp1500/wetterstation.sub: line 586: printf: `%d Std, %d Min': not a valid identifier % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 2104 100 19 100 2085 2792 299k --:--:-- --:--:-- --:--:-- 339k File not found: {}
dos2unix habe ich schon ausprobiert für die Dateien.
-
@schittl sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Connection to 192.168.xx.xx 8082 port [tcp/*] succeeded!
/home/dp1500/wetterstation.sub: line 586: printf:%d Std, %d Min': not a valid identifier /home/dp1500/wetterstation.sub: line 586: printf:
%d Std, %d Min': not a valid identifier
/home/dp1500/wetterstation.sub: line 586: printf:%d Std, %d Min': not a valid identifier /home/dp1500/wetterstation.sub: line 586: printf:
%d Std, %d Min': not a valid identifier
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 2104 100 19 100 2085 2792 299k --:--:-- --:--:-- --:--:-- 339k
File not found: {}Das kann/darf eigentlich nicht mehr kommen, denn direkt nach der Ausgabe von "Script-Version: V2.14.0 Config-Version: V2.14.0 Sub-Version: V2.14.0" wird das Skript nun beendet.
Kann es sein, dass du während des Debuglaufs noch das Skript laufen hast?
Im String der Station steht zB. ein anderer Timestamp (15.06.2022 09:45:07 vs. 15.06.2022 09:44:36), eine andere Windrichtung/Text als in der Ausgabe (53°|NO vs. 115°|OSO)
Das wären bzgl. des Timestamps die üblichen ~ 30 Sekundensendeintervalle...Bevor du mittels
--debug
testest darf einps -auxww|grep wetter
kein(e) Ergebnis(se) alasborg 2138807 0.0 0.0 8188 2944 ? S 16:35 0:00 /bin/bash /home/sborg/script/wetterstation.sh
liefern. Wenn zwei sich streiten...
...ist hier auch so. Laufen zwei Instanzen parallel, streiten die sich um den gleichen Port und besten Falls bekommt keiner etwas -
@sborg Es laufen keine 2 Instanzen. Ich habe die Ausgabe nur für Dich zum besseren Lesen Ablauf zusammenkopiert. Es ist geht eher minder schlecht aus der Konsole das Debug zu kopieren
-
@schittl Ah ok, dann sind die unterschiedlichen Messwerte klar
Aber hast du auch das "File not found" aus einer "anderen" Stelle kopiert oder kommt das wirklich nach den Skript-Versionsinfos?
Du kannst auch mit dieser etwas kryptischen Befehlszeile einfach alle Ausgaben in eine Datei debug.txt (falls im Verzeichnis vorhanden wird diese ohne Nachfrage überschrieben) schreiben lassen:./wetterstation.sh --debug > debug.txt 2>&1
Wenn der Prompt dann nach bis zu 30 Sekunden wieder erscheint ist es fertig. Sieht dann wg. der (Farb-)Formatierung nur etwas schwerer lesbar aus. -
Hallo @Sborg,
ich hab heute ein ganz komisches Phänomen. Abgesehen, dass mein Außensensor keine Temperatur überträgt, den Rest schon, folgendes Problem:
das Wetterstationskript überträgt nicht an Iobroker. Den wetterstation-service gestoppt, skript im Debug laufen lassen, folgender output:
'bc' installiert: [✓] 'jq' installiert: [✓] 'nc' in der Openbsd-Variante installiert: [✓] 'netcat' in Openbsd-Variante aktiv, alles korrekt [✓] Connection to 192.168.178.92 8087 port [tcp/*] succeeded! Messwerteblock: 25.61 -5572.77 -5572.77 -5572.77 52 -9999 1.12 1.77 282 999.42 1013.61 0 0 2.3 18.1 0 605.93 5 17.06.2022%2015:59:51 EasyWeatherV1.6.4 Nicht alle Werte werden unterstützt (abhängig vom Modell der Wetterstation und dem verwendeten Protokoll)! Temperatur Innen : 25.61 °C Temperatur Aussen : -5572.77 °C Taupunkt : -5572.77 °C Gefühlte Temperatur : -5572.77 °C Luftfeuchte Innen : 52 % Luftfeuchte Aussen : -9999 % Windgeschwindkeit : 1.12 km/h Windböengeschwindigkeit : 1.77 km/h max. Windböe : km/h Windrichtung : 282 ° Windrichtung : WNW Luftdruck absolut : 999.42 hPa Luftdruck relativ : 1013.61 hPa Regenrate : 0 mm/h Regenstatus : kein Regen Regen seit Regenbeginn : mm Regen Stunde : mm Regen Tag : 0 mm Regen Woche : 2.3 mm Regen Monat : 18.1 mm Regen Jahr : 0 mm Regen Gesamt : mm Sonnenstrahlung : 605.93 W/m² UV-Index : 5 Zeitstempel : 17.06.2022 15:59:51 Firmware : EasyWeatherV1.6.4 Batteriestand: : Gateway-Modell : Zusatzsensoren: keine Datenstring für ioBroker: DATA von Wetterstation: GET /weatherstation/updateweatherstation.php?ID=xxxxxx&PASSWORD=xxxxxx&indoortempf=78.1&tempf=-9999&dewptf=-9999&windchillf=-9999&indoorhumidity=52&humidity=-9999&windspeedmph=0.7&windgustmph=1.1&winddir=282&absbaromin=29.513&baromin=29.932&rainin=0.000&dailyrainin=0.000&weeklyrainin=0.091&monthlyrainin=0.713&yearlyrainin=0&solarradiation=605.93&UV=5&dateutc=2022-06-17%2013:59:51&softwaretype=EasyWeatherV1.6.4&action=updateraw&realtime=1&rtfreq=5 HTTP/1.1 Debug VAR: Installationsverzeichnis: /home/iobroker/wetter IPP: 192.168.178.92:8087 WS_PORT: 8050 WS_POLL: 30 PRE_DP: javascript.0.Wetterstation WEB: HTTP WS_PROT: Wunderground DP35/40/50/60/70/100/200/250/300: 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 WH31: 0
Ich glaub, der String für den IoB fehlt. Hab V2.14.0 am Laufen.
Danke,
Kay -
@kaybau Keine Daten an den ioB ist da "Ok". Alles was eine Aussentemperatur unter dem absoluten Nullpunkt hat ist seitens der Wetterstation fehlerhaft und wird deswegen nicht an den ioB geschickt. Deine -9999°F sind da nur "geringfügig" drunter
Du hast ein Problem mit deiner Station:
- Display mal vom Strom nehmen (ggf. Batterien raus falls welche drin sind) und 10-20 Sek. warten, dann wieder alles rein/anstecken
- Batterien von der Außeneinheit sind OK? ggf. auch hier mal einen Reset durch entfernen der Batterie (kann aber fehlschlagen wenn der GoldCap der Solarzelle gut geladen ist )