NEWS
[Linux Shell-Skript] WLAN-Wetterstation
-
@rene55 Fangen wir mit dem einfachen an:
@rene55 sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Datenstring für ioBroker: 0_userdata.0.Wetterstation.Innentemperatur=19.11&0_userdata.0.Wetterstation.Aussen...<gekürzt>.....Wetterstation.Windrichtung_Text=SSW&0_userdata.0.Wetterstation.Info.Hitzeindex=
Ist normal und Ok. Aktuell gibt es keinen Wert für den Hitzeindex, deswegen endet der direkt mit einem "=". So wird ein ggf. vorher existierender Index gelöscht/resettet und gleichzeitig kein Wert geschrieben (hilfreich zB. beim Influx-Logging).
Kleiner Exkurs / Rechnung: 86400 sek. (pro Tag) / 30 sek. (Standardintervall der Datenübertragung) = 2.880 Daten-/Messwerte
Rechnen wir mal grob (IMHO noch viel mehr als die gleich angenommen 250 Tage) die Nächte, Winter, teils Herbst und Frühjahr und teilweise den Sommer ab, wären das 250 Tage x 2.880 = 720.000 Messwerte in denen nur drin steht "es liegt kein Hitzeindex vor".
Ähnliches gilt für den Regen. Es ergibt ja keinen Sinn dauernd zu melden "kein Regen".
Da ist es doch einfacher (weil es auch nicht andauernd regnet) keine Meldung = kein Regen und nur was melden wenn es dann auch tatsächlich regnet
Docker bin ich leider außen vor, aber um zB. die netcat-Alternative korrekt einzustellen werden "sudo" - Rechte benötigt. Das meckert er auch an:
/opt/weather/wetterstation.sub: line 752: sudo: command not found /opt/weather/wetterstation.sub: line 756: sudo: command not found
Er findet "sudo" nicht, wahrscheinlich für/im Container nicht aktiviert/verfügbar. Das ist aber nur die Überprüfung ob netcat korrekt ist. Wenn es das sowieso schon war bzw. installiert ist, macht es auch nichts wenn die Prüfung fehlschlägt, solange es die "openbsd"-Variante ist.
-
@SBorg Danke für die ausführlichen Erklärungen - das hilft mir weiter. Tatsächlich gibt es in dem Container kein sudo. Ich könnte ja mal spaßeshalber einen Container mit Sudo bauen und nochmal testen.
Beim Hitzeindex war ich mir nicht so sicher, da ich immer noch Probleme habe, den Simple-API mit User/Kennwort zu betreiben. Ich dachte, der Datenstring wäre unvollständig und deswegen kämen User und Passwort nicht mit rüber. Auch das werde ich dieser Tage nochmals testen. Auf jeden Fall, nochmals Danke für Script und Erklärung. -
@rene55 immer gerne
@rene55 sagte in [Linux Shell-Skript] WLAN-Wetterstation:
...da ich immer noch Probleme habe, den Simple-API mit User/Kennwort zu betreiben
Habe ich auch offen gestanden nie probiert und der Aufruf ist nur lt. Doku umgesetzt. Muss ich mal Zeit dafür finden (ggf. ein Issue auf GitHub, dann vergesse ich es auch nicht )
-
Neue Version des JavaScriptes Wetterstation-Statistik auf GitHub V1.0.1
- ~Bugfixing "error: TypeError: Cannot read property '0' of null"
- ~Wechsel zu axios
Wie immer zu finden im GitHub
Der Wechsel zu axios ist lediglich ein "unter der Haube". Der Support der benötigten "request"-Routine wird bzw. ist seitens NPM eingestellt.
-
Ich habe in letzter Zeit immer mal wieder das Problem, dass ich folgenden Eintragungen im Log des Wetterstation.service bekomme:
Dec 25 11:57:45 ZEROSERVER wetterstation.sh[26522]: Connection to 192.168.116.249 8087 port [tcp/*] succeeded! Dec 26 00:41:49 ZEROSERVER wetterstation.sh[26522]: (standard_in) 1: syntax error Dec 26 00:42:08 ZEROSERVER wetterstation.sh[26522]: (standard_in) 1: syntax error Dec 26 00:42:27 ZEROSERVER wetterstation.sh[26522]: (standard_in) 1: syntax error Dec 26 00:42:46 ZEROSERVER wetterstation.sh[26522]: (standard_in) 1: syntax error
Dec 18 13:05:06 ZEROSERVER wetterstation.sh[14524]: Connection to 192.168.116.249 8087 port [tcp/*] succeeded! Dec 18 14:14:53 ZEROSERVER wetterstation.sh[14524]: (standard_in) 1: syntax error Dec 18 14:15:11 ZEROSERVER wetterstation.sh[14524]: (standard_in) 1: syntax error Dec 19 03:03:46 ZEROSERVER wetterstation.sh[14524]: (standard_in) 1: syntax error
Zu verschiedenen Zeitpunkten
Irgendwann aber nicht gleichzeit treten dann im Iobroker-Log
2021-12-27 08:38:05.097 - info: simple-api.0 (15129) State value to set for "0_userdata.0.Wetterstation.Info.Solarenergie_Tag" has to be type "number" but received type "string" 2021-12-27 08:38:05.099 - info: simple-api.0 (15129) State value to set for "0_userdata.0.Wetterstation.Info.Solarenergie_Woche" has to be type "number" but received type "string" 2021-12-27 08:38:05.141 - info: simple-api.0 (15129) State value to set for "0_userdata.0.Wetterstation.Info.Solarenergie_Monat" has to be type "number" but received type "string" 2021-12-27 08:38:05.141 - info: simple-api.0 (15129) State value to set for "0_userdata.0.Wetterstation.Info.Solarenergie_Jahr" has to be type "number" but received type "string"
auf
Dec 27 08:38:05 ZEROSERVER wetterstation.sh[26522]: (standard_in) 1: syntax error Dec 27 08:38:05 ZEROSERVER wetterstation.sh[26522]: (standard_in) 1: syntax error Dec 27 08:38:05 ZEROSERVER wetterstation.sh[26522]: (standard_in) 1: syntax error Dec 27 08:38:05 ZEROSERVER wetterstation.sh[26522]: (standard_in) 1: syntax error Dec 27 08:38:05 ZEROSERVER wetterstation.sh[26522]: (standard_in) 1: syntax error Dec 27 08:38:05 ZEROSERVER wetterstation.sh[26522]: (standard_in) 1: syntax error Dec 27 08:38:05 ZEROSERVER wetterstation.sh[26522]: (standard_in) 1: syntax error Dec 27 08:38:05 ZEROSERVER wetterstation.sh[26522]: (standard_in) 1: syntax error Dec 27 08:38:05 ZEROSERVER wetterstation.sh[26522]: (standard_in) 1: syntax error
die syntax error setzen sich dann fort bis zum Service-Restart...
Wo kann ich da suchen bzw. wie?
-
Ich glaube ich habe eine Spur...
Mir ist aufgefallen, dass gerade auf der WSView-App keine Daten mehr vom Sensor kamen.
Das Fehlen der Daten scheint die syntax-Error auszulösen...Hab jetzt mal das in der .conf das logging aktiviert.
Dabei trat bei mir mal wieder ein Fehler auf...
/home/wetter/wetterstation.sub: Zeile 1141: 20211227_station.log: Keine Berechtigung
Erst als ich die Zeile 1141 in der .sub mit "/home/wetter" erweitert habe, durfte er schreiben. Wo wollte er zuvor hin schreiben?
-
@boronsbruder Anscheinend bekommt er da keine Daten vom "Sonnensensor", deswegen die Meldungen im Log. Darauf deutet dann auch
"0_userdata.0.Wetterstation.Info.Solarenergie_Tag" has to be type "number" but received type "string" usw.
Der Wert ist eigentlich eine Zahl, er bekommt aber wg. der vermutlich fehlgeschlagenen Rechnung (weil er keine Daten zum rechnen hatte) nun einen String ("rechne mit nix" = NULL [also kein Wert; dies wird dann als String interpretiert]) zurück.
Trotzdem merkwürdig, denn eigentlich sollte der ganze Solarenergie-Part (der wird ja nur kpl. berechnet und basiert auf keinem Wert den die Station so liefert) nur ausgeführt werden wenn auch ein Wert vorliegt:
if [ "$SONNEN_STRAHLUNG" -gt "0" ]...
Ev. liefert das Log was schlüssigeres. Aktuell fehlt mir da leider der Ansatzpunkt...
Das Log wird (oder sollte) im aktuellen Verzeichnis angelegt (werden). Wenn er aber als Service gestartet wird (IMO waren meine Tests nur per Shell-Aufruf?) will er sie wohl im "systemd"-Verzeichnis anlegen, was ohne root-Rechte nicht erlaubt ist. Fix kommt dann in die V2.11.0 mit rein:
logging() { local DATUM=$(date '+%Y%m%d') echo -e "\n${DATA}" >> "${DIR}/${DATUM}_station.log" }
Damit landet es auch wirklich im Installationsverzeichnis
-
@sborg mannmann, wieder typisch... nachdem vor einigen tagen der strom für 5 std abgedreht war, hatte ich probleme mit der station beim wieder einbinden. hat schon gut angefangen, weil sich das kabelmodem nicht mehr mit dem provider verbunden hat. nach einer stunde dann anruf beim provider, der das modem neu gestartet, auf einmal gings...
so bin ich jetzt nach und nach am fehler suchen und zu reparieren.
dann in ws_view nachgeschaut, bei wunderground keine werte! ich schau auf der webpage, meine station ist offline.
das ganze mit aktuellem stand komplett neu gemacht, alles eingetragen, keine änderung.
gestern sogar versucht eine neue station bei WU zu machen, genauso offline.
jetzt seh ich den beitrag, will nachfragen, schau nochmal in ws-view, daten! wunderground.com, die station ist online!
manchmal ist es echt zum aus der haut fahren...
so, genug gekotzt, danke fürs lesen... -
Hallo zusammen,
Ich hänge mich hier mal rein.
Habe auch eine Eurochron EFWS2900 mir gekauft.
Habe sie eingerichtet und die Daten werden schon bei Ecowitt.net angezeigt.
Leider Kommen die Daten bei Weather Underground nicht an.
Dort ist die Station immer offline.
Was muss ich da noch einstellen? -
@sborg
Also, das Problem entsteht z.B. wenn aus unerklärlichen Gründen (sprich ohne Änderungen an der Funkstrecke) der Sensor keine Daten mehr sendet...dann kommen vom Gateway nur noch
PASSKEY=*****&stationtype=GW1000A_V1.6.8&dateutc=2021-12-28+06:09:35&tempinf=80.2&humidityin=29&baromrelin=29.574&baromabsin=27.929&freq=868M&model=GW1000_Pro
Das löst den Syntaxerror aus (denke ich)
-
@andre105 sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Was muss ich da noch einstellen?
Nur die korrekte Station-ID und -Key. Diese sollte keine Sonderzeichen, Umlaute und Leerzeichen enthalten (sollte so schon seitens WU so sein).
Aber @da_Woody hatte ein Post über deinem temporär das gleiche Problem. Ev. hat WU auch aktuell Probleme. -
@boronsbruder sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Das löst den Syntaxerror aus (denke ich)
Jupp, kein Wert der Sonnenstrahlung. Damit kann man arbeiten. Wir erweitern einfach die Definition (es muss auch eine Außentemperatur geben) wann ein Datenpaket valide ist. Damit führt er dann keine Berechnung aus (setzt aber den Komfehlerzähler hoch, deswegen wäre hier dann der Reset per conf empfehlenswert. "Dauerfehler" lösen ihn dann trotzdem permanent aus).
In der sub so um Zeile #265 von
if [ "$STRLEN" -gt "150" ] && [[ "$DATA" =~ "PASSKEY=" ]]; then return 0; else return 1; fi
in
if [ "$STRLEN" -gt "150" ] && [[ "$DATA" =~ "PASSKEY=" ]] && [[ "$DATA" =~ "tempf=" ]]; then return 0; else return 1; fi
-
@sborg wieso meine station auf einmal wieder online ist? k.A.
in deinem script hatte ich anscheinend wiedermal sauhaufen drinnen, bei irgendeinem update was falsch gemacht.
beim neu machen noch ein kleine blindheitsproblem:#InfluxDB-Konfiguration / ohne InfluxDB alles leer lassen #IP und Port der API [192.168.0.252:8086] INFLUX_API=192.168.0.252:8086
die adresse nicht bei INFLUX_API eingetragen, sondern oberhalb.
-
@da_woody sagte in [Linux Shell-Skript] WLAN-Wetterstation:
die adresse nicht bei INFLUX_API eingetragen, sondern oberhalb.
Entschuldige
...der ist aber mal richtig gut...Aber mit WU habe ich nix am Hut. Das macht die Station von alleine wenn man per WS View dort seine Daten einträgt. Ich mache "nur" OpenSenseMap, Windy und wetter.com
-
@sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
...der ist aber mal richtig gut...
i know, i know...
grafana tut eigentlich auch wieder was soll. allerdings:
0_userdata.0.WoodyWetter.Druck_Tendenz das steht im objekt -1 und in grafana
raw sieht so aus:{ "common": { "name": "Luftdrucktendenz", "type": "number", "role": "state", "custom": { "influxdb.0": { "enabled": true, "storageType": "String", "aliasId": "", "changesOnly": true, "debounce": "1000", "changesRelogInterval": 3600, "changesMinDelta": "0" } } }, "native": { "name": "Luftdrucktendenz", "type": "number", "role": "state" }, "type": "state", "_id": "0_userdata.0.WoodyWetter.Druck_Tendenz", "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" }, "from": "system.adapter.influxdb.0", "user": "system.user.admin", "ts": 1640440814575 }
stimmt da was nicht?
-
@da_woody Nö, das ist Ok. Die Tendenz kann +/- 9 sein (idR. allerdings nur -3 bis +3)
Du brauchst aber in Grafana das "farski-blendstat-panel" dafür und ein passendes "value range mapping":
Hier mal das JSON mit obigem Doppelpfeil:
-
@sborg alter falter...
langsam hauts mir echt den vogel raus.
ich schau nach, blendstat ist installiert, zurück aufs dash,
es lebt... -
@sborg said in [Linux Shell-Skript] WLAN-Wetterstation:
deswegen wäre hier dann der Reset per conf empfehlenswert.
Was meinste damit?
-
@boronsbruder In der kommenden 11er: https://github.com/SBorg2014/WLAN-Wetterstation/wiki/FAQ---Troubleshooting/#was-ist-der-datenpunkt-_kommunikationsfehler-
Mit obiger Änderung wird dann jedes Fehlerpaket von dir zu keinem validen Datenpaket. Dann wäre bei dir "Kommunikationsfehler" true Dauerzustand.
Ich habe mal bei mir geschaut, da waren es im Dezember bisher einmalig 4 Pakete direkt hintereinander.
Anscheinend funkt bei dir einer/etwas auf den 868MHz was so (eigentlich) nicht sein darf. -
@sborg
jetzt im Moment ist wieder alles i.O.
Keine Aussetzer...
Ich versteh es nicht...
Wahrscheinlich gab's bei den Nachbarn China-Spielzeug zu WeihnachtenDas wäre aber zu verkraften, dann kann ich wenigstens was dagegen machen, bevor die Logs überlaufen