NEWS
[Linux Shell-Skript] WLAN-Wetterstation
-
@da_woody sagte in [Linux Shell-Skript] WLAN-Wetterstation:
abgesehn, daß du ja so deppen wie mich brauchst...
Ich weiß zwar wie du das meinst, aber so ganz unkommentiert mag ich den "deppen" nicht stehen lassen...
Eben mal mit der Rest-API im Updater angefangen:
Aber keine Angst, ist kein muss:
...aber ich muss halt auch mal irgendwann damit anfangen. So können dann im 1. Schritt aber bspw. neue Datenpunkte automatisch angelegt werden
-
@sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Ich weiß zwar wie du das meinst, aber so ganz unkommentiert mag ich den "deppen" nicht stehen lassen...
na wenigstens verstehst du meinen ösi humor...
ich werd mir das im laufe der woche beguxxen. formel1 ist heute wichtiger... -
ich habe mal den service gestoppt:
iobroker@ioBroker-prox:~$ systemctl status wetterstation ● wetterstation.service - Service für ioBroker Wetterstation Loaded: loaded (/etc/systemd/system/wetterstation.service; enabled; vendor preset: enabled) Active: inactive (dead) since Mon 2022-07-11 10:32:03 CEST; 3min 15s ago Process: 401 ExecStart=/home/iobroker/wetterstation.sh (code=killed, signal=TERM) Main PID: 401 (code=killed, signal=TERM) iobroker@ioBroker-prox:~$ ps aux | grep wetterstation iobroker 8708 0.0 0.0 6084 880 pts/0 R+ 10:35 0:00 grep wetterstation
Dann hier das log vom simple adapter:
simple-api.0 2022-07-11 11:00:26.297 debug Add to Response: {"id":"javascript.0.Wetterstation.tempData.Wetterdaten","val":""} simple-api.0 2022-07-11 11:00:26.297 debug Add to Response: {"id":"javascript.0.Wetterstation.Wetter_aktuell","val":""} simple-api.0 2022-07-11 11:00:26.297 debug Add to Response: {"id":"javascript.0.Wetterstation.Druck_Tendenz","val":""} simple-api.0 2022-07-11 11:00:26.297 debug Add to Response: {"id":"javascript.0.Wetterstation.Wetter_Trend","val":"dauert noch Minuten"} simple-api.0 2022-07-11 11:00:26.292 debug POST-setBulk for id=javascript.0.Wetterstation.tempData.Wetterdaten, oid=temporär gespeicherte Wetterdaten, used=javascript.0.Wetterstation.tempData.Wetterdaten, value= simple-api.0 2022-07-11 11:00:26.292 debug POST-setBulk for id=javascript.0.Wetterstation.Wetter_aktuell, oid=aktuelles Wetter, used=javascript.0.Wetterstation.Wetter_aktuell, value= simple-api.0 2022-07-11 11:00:26.292 debug POST-setBulk for id=javascript.0.Wetterstation.Druck_Tendenz, oid=Luftdrucktendenz, used=javascript.0.Wetterstation.Druck_Tendenz, value= simple-api.0 2022-07-11 11:00:26.292 debug POST-setBulk for id=javascript.0.Wetterstation.Wetter_Trend, oid=Wettertrend, used=javascript.0.Wetterstation.Wetter_Trend, value=dauert noch Minuten simple-api.0 2022-07-11 11:00:26.292 debug 3: "javascript.0.Wetterstation.tempData.Wetterdaten" simple-api.0 2022-07-11 11:00:26.292 debug 2: "javascript.0.Wetterstation.Wetter_aktuell" simple-api.0 2022-07-11 11:00:26.292 debug 1: "javascript.0.Wetterstation.Druck_Tendenz" simple-api.0 2022-07-11 11:00:26.292 debug 0: "javascript.0.Wetterstation.Wetter_Trend" simple-api.0 2022-07-11 11:00:26.292 debug POST-setBulk: values = {"user":"","javascript.0.Wetterstation.Wetter_Trend":"dauert noch Minuten","javascript.0.Wetterstation.Druck_Tendenz":"","javascript.0.Wetterstation.Wetter_aktuell":"","javascript.0.Wetterstation.tempData.Wetterdaten":"","pass":""} simple-api.0 2022-07-11 11:00:26.292 debug POST-setBulk: body = javascript.0.Wetterstation.Wetter_Trend=dauert noch Minuten&javascript.0.Wetterstation.Druck_Tendenz=&javascript.0.Wetterstation.Wetter_aktuell=&javascript.0.Wetterstation.tempData.Wetterdaten=&user=&pass=
Da läuft noch irgendwo ein Code, irgendeine Ahnung, wie ich das identifiziere?
-
@tritor Jepp, und dass ist dein Fehler. Diese 2. Instanz bekommt keine Daten und schreibt dann natürlich auch "nix" in den Datenpunkt.
Den Container (ev. heißt das Skript ja auch nicht "wetterstation") kannst du prüfen, da hier nichts auf dem Port (Beispiel mit dem Default-Port 1080) des Displays/wetterstation.service laufen darf wenn du ihn gestoppt hast:netstat -tulpen|grep 1080
Da darf so etwas nicht kommen, sonst läuft es auf diesem Rechner:
(hier läuft das Skript; sieht man am "nc")Bei proxmox gehe ich davon aus, dass du zumindest wohl noch einen (oder mehrere) Linux-Container hast. Ev. läuft auf dem noch ein (vergessenes) wetterstation-Skript. Die musst du halt alle mittels ps + netstat prüfen wo es noch läuft.
Ansonsten könntest du auch auf einem Windows-Rechner zB. Wireshark nutzen und den gesamten Netzwerktraffic nach der IP+Port sniffen. Dann siehst du das IP a.b.c.d ebenfalls auf den Port zugreift. -
@sborg
Hallo,
ich erhalte in der Statusübersicht ständig parse errors:● wetterstation.service - Service für ioBroker Wetterstation Loaded: loaded (/etc/systemd/system/wetterstation.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2022-07-11 13:44:26 CEST; 7min ago Main PID: 10991 (wetterstation.s) Tasks: 5 (limit: 4915) Memory: 3.4M CGroup: /system.slice/wetterstation.service ├─10991 /bin/bash /home/iobroker/wetterstation.sh ├─14666 /bin/bash /home/iobroker/wetterstation.sh ├─14667 timeout 66 nc -nlvw 1 -p 1080 ├─14668 tail -1 └─14669 nc -nlvw 1 -p 1080 Jul 11 13:44:26 ioBroker-Pi4 systemd[1]: Started Service für ioBroker Wetterstation. Jul 11 13:44:27 ioBroker-Pi4 wetterstation.sh[10991]: Connection to 192.168.178.43 8087 port [tcp/*] succeeded! Jul 11 13:44:30 ioBroker-Pi4 wetterstation.sh[10991]: parse error: Invalid numeric literal at line 1, column 10 Jul 11 13:44:30 ioBroker-Pi4 wetterstation.sh[10991]: parse error: Invalid numeric literal at line 1, column 10
Worauf bezieht sich hier die Zeile 1 / Spalte 10 - auf den Dateninhalt von der Station, oder auf was Anderes?
Viele Grüße
-
Testrunde...
für die Rest-API, also nur für Leutz die sie eh schon haben oder jetzt damit mal anfangen wollen...
Aktuellews_updater.beta
herunterladen (https://github.com/SBorg2014/WLAN-Wetterstation/blob/master/ws_updater.beta) und "ausführbar" machen mittelschmod +x ./ws_updater.beta
Im Installationsverzeichnis (ist nur für den Test) eine neue Datei wetterstation.conf.temp (zB.nano wetterstation.conf.temp
mit folgendem Inhalt anlegen:RESTAPI_URL=https://192.168.1.3:8093 RESTAPI_USER=apiknecht RESTAPI_PW=geheim PRE_DP=0_userdata.0.Test_RestAPI
- URL dürfte klar sein (ioB + Port der Rest-API
- User und Passwort kann man auch den "admin" nehmen, ich empfehle allerdings eher sich einen neuen User mit entsprechenden Rechten im ioB dafür anzulegen. Zum Test kann man ausnahmsweise auch mal den "admin" nutzen
- PRE_DP könnt ihr so lassen, ist ein reiner Testdatenpunkt der nachher sowieso wieder gelöscht werden kann/muss
Test #1:
./ws_updater.beta --test
dann sollte hoffentlich im IoB unter "0_userdata.0." auftauchen:
Test #2:
do_it_again...
./ws_updater.beta --test
Dann hat alles funktioniert und kann in die zukünftigen Updater-Versionen
Kpl. Objectbaum und "wetterstation.conf.temp" können gelöscht werden.
-
@omnedon sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Worauf bezieht sich hier die Zeile 1 / Spalte 10
Zumindest auf das Skript, aber das ist leider nonsens von der bash (mit Zeile 1 / Spalte 10)....
Wenn du den Status jetzt noch mal prüfst, wirst du feststellen, dass es bei den beiden Fehlermeldungen geblieben ist (+ auch bleiben wird, außer es kommen neue, andere hinzu).
Du hast mit dem Start einen "ungünstigen" Augenblick erwischt. Das kann gelegentlich passieren, dann sind einfach (noch) nicht alle Daten vorhanden und er versucht mit 0-Werten zu rechnen. Daraus resultiert der Fehler. Mit dem nächsten Datenpaket ist dann alles wieder in Ordnung.
Mir ist leider dazu noch keine Lösung eingefallen dies abzufangen. Ist so ein bisschen wie ich steh unter einem Eimer mit Wasser und will wissen ob der voll ist. Also dreh ich den um. Jetzt weiß ich es... -
@sborg said in [Linux Shell-Skript] WLAN-Wetterstation:
@viper4iob Ich habe jetzt mal die beiden 10min-Werte eingebaut, in der Simulation funktioniert es auch.
Wenn ich es schaffe lade ich es noch heute zum testen auf GitHub hoch
...spätestens (hoffentlich) dann morgen...Vielen Dank für die schnelle Umsetzung.
Dann hätte ich doch noch mal eine Idee. Ich habe mir mal die 10 min Durchschnittswerte angeschaut.
Und gerade bei der Windrichtung bügelt das das extreme Schwanken der Fahne durch verwirbelte Luft oder vielleicht schlechtes Design ganz gut aus. In einem Graphen sieht es auf jeden Fall deutlich besser aus.
Die Frage wäre jetzt, ob man eine Option in die config einbauen könnte, dass zu den externen Diensten wie wetter.com oder OpensenseMap ... statt dem normalen Wert der 10 min Wert übertragen wird. Für die Windrichtung würde das Sinn machen, denke ich. Bei der Wind-Geschwindigkeit bin ich mir nicht so sicher. Eventuell macht es Sinn für beide Werte eine getrennte Option zu haben. Dann kann das jeder selbst entscheiden.
Ich sammle jetzt mal bis morgen die Daten, dann kann ich vielleicht mal Screenshots von Graphen aus iobroker im Vergleich zeigen. -
Wie so oft im Leben sitzt das Problem vor dem Computer!
Hab den Fehler gefunden - soweit alles gut.Nachdem ich den Service in meiner Proxmox7 VM gestoppt habe und im simple adapter immer noch alle 15 Minuten die "Leereinträge" der Wetterdaten und Drucktendenz kamen mußten die auf jeden Fall von einem anderen System kommen.
Ja ich hätte im Testsystem (hab ich vor kurzem wieder angeworfen und alle nicht relevanten Adapter gestoppt) auch das Wetterscript ändern sollen. Aus diesem kamen die Daten. Nachdem ich dort in Proxmox6 Testsystem Service und Files/Folders
der Wetterstation gelöscht, und dann wieder im Livesystem das Script aktiviert habe, kommen die Wetterdaten alle 15 Minuten nur 1x und alles geht soweit ich das im Log gesehen habe seinen gewohnten Gang.Also sollte so ein Fehler nochmals vorkommen, dann ist wahrscheinlich ein altes oder ein Testsystem noch aktiv.
-
@sborg
Hallo,
die Erklärung kling einleuchtend, aber der Fehler kommt regelmäßig:Jul 11 16:45:01 ioBroker-Pi4 wetterstation.sh[19672]: parse error: Invalid numeric literal at line 1, column 10 Jul 11 17:00:18 ioBroker-Pi4 wetterstation.sh[19672]: parse error: Invalid numeric literal at line 1, column 10 Jul 11 17:00:18 ioBroker-Pi4 wetterstation.sh[19672]: parse error: Invalid numeric literal at line 1, column 10 Jul 11 17:00:19 ioBroker-Pi4 wetterstation.sh[19672]: parse error: Invalid numeric literal at line 1, column 10 Jul 11 17:00:19 ioBroker-Pi4 wetterstation.sh[19672]: parse error: Invalid numeric literal at line 1, column 10 Jul 11 17:15:30 ioBroker-Pi4 wetterstation.sh[19672]: parse error: Invalid numeric literal at line 1, column 10 Jul 11 17:15:30 ioBroker-Pi4 wetterstation.sh[19672]: parse error: Invalid numeric literal at line 1, column 10 Jul 11 17:15:30 ioBroker-Pi4 wetterstation.sh[19672]: parse error: Invalid numeric literal at line 1, column 10 Jul 11 17:15:30 ioBroker-Pi4 wetterstation.sh[19672]: (23) Failed writing body Jul 11 17:15:30 ioBroker-Pi4 wetterstation.sh[19672]: parse error: Invalid numeric literal at line 1, column 10
-
@omnedon Ist genau im 15 Minuten-Raster, dürfte also Influx sein...
- Influx V2.x? Aktuell geht nur V1.x
- bei V1.x: User, Passwort, Datenbankname etc. stimmen für Influx alle? Entsprechende Datenpunkte werden geloggt?
-
@sborg
Danke für den Hinweis!
Ich werde prüfen. -
@sborg
Ja, das war Influx.
Danke nochmal! -
@sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
oder jetzt damit mal anfangen wollen...
irgendwas passt bei mir noch nicht
kannst du mal drübetschaun?dietpi@DietPi:/$ ./ws_updater.beta --test -bash: ./ws_updater.beta: Datei oder Verzeichnis nicht gefunden dietpi@DietPi:/$
-
@negalein leider wieder was vergessen, oben schon geändert.
...und "ausführbar" machen mittels
chmod +x ./ws_updater.beta
Beim http(s) der Rest-API URL bin ich mir gerade nicht sicher. Müsste eigentlich mittels "https" laufen.
-
@tritor sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Wie so oft im Leben sitzt das Problem vor dem Computer!
Hauptdache läuft
Da lag ich (steht irgendwo weiter oben) sogar richtig, dass irgend was anderes noch laufen muss, denn zu den Zeitpunkten kann das Skript selbst nichts machen. Das 2. hat dann munter auf das folgende Paket reagiertTrotzdem kommt man immer selbst ins grübeln...
-
@viper4iob Ich überlege jetzt schon einige Zeit. Parameter in der conf wäre zwar am flexibelsten, aber es sind eigentlich auch schon genügend vorhanden (für die Rest-API kommen ja auch wieder neue hinzu).
Ich denke weiter, was meint denn der Rest?
Ich könnte die letzten 10 Minuten (bzw. zB 20 Werte) im RAM halten (paar kB und der Adapter kommt eh mit <10MB RAM aus) und daraus immer einen Mittelwert bilden für die Stationen die es nicht selbst ermitteln.
Ich sehe mein Windfähnchen immer "propellern", da ist alle 30 Sekunden ein Momentanwert auch eher nichtssagend. -
@sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Beim http(s) der Rest-API URL bin ich mir gerade nicht sicher. Müsste eigentlich mittels "https" laufen.
mit
http
ist die Meldung gekommen, dass es angelegt wurde.
In0.userdata
war es aber nicht da.mit
https
funktioniert es perfekt.Lege neues Object im ioBroker an: 0_userdata.0.Test_RestAPI.Info.Meldungen dietpi@DietPi:/home/iobroker$ ./ws_updater.beta --test ┌────────────────────────┐ │ │ │ WS-Updater V2.15.0 │ │ │ └────────────────────────┘ Lege neues Object im ioBroker an: 0_userdata.0.Test_RestAPI.Info.Meldungen Fehlermeldung beim Anlegen des Datenpunktes: {"error":"Object already exists","id":"0_userdata.0.Test_RestAPI.Info.Meldungen"} dietpi@DietPi:/home/iobroker$
-
Hallo,
Zur Info:
ich konnte heute meine Froggit WH6000Pro erfolgreich einbinden.Gruß
Mugel80 -
@negalein Supi, danke für das testen. Dann können sich zukünftig Rest-API Nutzer freuen (für die kommende V2.15.0 ist es dafür leider schon zu spät)
Bei falschem Protokoll kommt leider keinerlei Fehlermeldung zurück, dafür aber überhaupt nix. Auf "nix" kann ich aber reagieren: