NEWS
[Linux Shell-Skript] WLAN-Wetterstation
-
@sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Wir können ja eine Schnitzeljagd mit Hinweisen von mir veranstalten. Wer errät zuerst worum es sich handeln könnte....
Ist aber mehr "Zinnober" als es letztendlich Wert istEs lässt sich endlich das Wetter draussen für morgen, heute im Script einstellen!!
-
@sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Da keine offensichtlichen Fehler aufgetreten sind:
Neues Release des Wetterstation WLAN-Skriptes auf GitHub V2.16.0
Frage, das Update lief durch, mußte auch dc nachinstallieren, dann ws_updater holen und nochmals ausführen.
Dann war alles ok.Die version 16 von wetterstation.js habe ich auch ausgeführt um die Datenpunkte zu bekommen.
Habe ich sonst noch was vergessen? -
@sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Das wird nur noch bei dir so sein, der ist seit 21.01.2021 schon "number"
createState(DP+"Info.Station_Batteriestatus" , 0, {name: "Batteriestatus [0=OK, 1=Alarm]", type: "number", role: "value" });(Gleiches Thema wie beim "Name" die "Bezeichnung 0 und 1...")
Stell ihn einfach von Zeichenkette auf Zahl um und Ruhe istServus
Hab ihn damals umgestellt.
Mit heutigem Update kommt er wieder.
Legt die Rest-API alle DP neu an? Eigentlich nicht. Oder?simple-api.0 2022-07-28 20:06:00.740 info State value to set for "javascript.0.Wetterstation.Info.Station_Batteriestatus" has to be type "string" but received type "number"
Edit:
sehe gerade, dass der passend "Number" hat.
Warum dann die Meldung?{ "common": { "name": "Batteriestatus [0=OK, 1=Alarm]", "type": "string", "role": "state", "custom": { "influxdb.0": { "enabled": true, "storageType": "Number", "aliasId": "", "changesOnly": false, "debounce": 0, "changesRelogInterval": "900", "changesMinDelta": 0, "retention": 604800 } } }, "native": { "name": "Batteriestatus [0=OK, 1=Alarm]", "type": "string", "role": "state" }, "type": "state", "_id": "javascript.0.Wetterstation.Info.Station_Batteriestatus", "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" }, "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1656504600034 }
-
@sborg said in [Linux Shell-Skript] WLAN-Wetterstation:
Neues Release des Wetterstation WLAN-Skriptes auf GitHub V2.16.0
Vielen Dank.
Jetzt hatte ich gedacht, mein Problem löst sich mit dem Update, war aber nicht.Ich habe eine Bresser 7 in 1 WLAN-Station deren Wunderground-Verbindung auf rtupdate.wunderground.com ich per Pihole auf meinen iobroker-raspi mit der IP 192.168.0.49 umleite.
Ein sudo nc -l -p 80 auf dem raspi bringt erwartungsgemäß
GET /weatherstation/updateweatherstation.php?ID=<meineStation>&PASSWORD=<meinPW>&action=updateraww&realtime=1&rtfreq=5&dateutc=now&baromin=30.06&tempf=77.5&dewptf=47.6&humidity=35&windspeedmph=1.5&windgustmph=1.5&winddir=0&rainin=0.0&dailyrainin=0.0&solarradiation=42.50&UV=0.0&indoortempf=74.8&indoorhumidity=55 HTTP/1.1 Host: rtupdate.wunderground.com Connection: keep-alive
Ein sudo ./wetterstation.sh --debug zeigt, dass das Script grundsätzlich funktioniert, auch die Weiterleitung an wunderground, denn dort werden die Daten aktualisiert, wunderground gibt "success" zurück.
Leider wirft es aber einige Fehlermeldungen, die ich selbst nicht nachvollziehen kann:
Connection to 127.0.0.1 8093 port [tcp/*] succeeded! parse error: Invalid numeric literal at line 1, column 10 (standard_in) 1: syntax error (standard_in) 1: syntax error /home/pi/wetterstation/wetterstation.sub: line 786: [: : integer expression expected (standard_in) 1: syntax error (standard_in) 2: syntax error (standard_in) 2: syntax error (standard_in) 1: syntax error (standard_in) 2: syntax error (standard_in) 3: syntax error (standard_in) 1: syntax error (standard_in) 2: syntax error (standard_in) 2: syntax error (standard_in) 3: syntax error (standard_in) 4: syntax error (standard_in) 5: syntax error (standard_in) 5: syntax error (standard_in) 5: syntax error (standard_in) 1: syntax error <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Error</title> </head> <body> <pre>Cannot POST /setBulk</pre> </body> </html> Messwerteblock: 23.77 25.55 9.38 25.55 55 36 0 0 324 1017.95 0 0 0 44.87 0.0 28.07.2022%2020:13:29
Auch der Datenstring für iobroker ist dabei befüllt. In iobroker kommen aber leider keine Daten an.
Datenstring für ioBroker: javascript.0.Wetterstation.Innentemperatur=23.77&javascript.0.Wetterstation.Aussentemperatur=25.55&javascript.0.Wetterstation.Taupunkt=9.38&javascript.0.Wetterstation.Gefuehlte_Temperatur=25.55&javascript.0.Wetterstation.Innenfeuchtigkeit=55&javascript.0.Wetterstation.Aussenfeuchtigkeit=36&javascript.0.Wetterstation.Wind=0&javascript.0.Wetterstation.Wind_max=0&javascript.0.Wetterstation.Windrichtung=324&javascript.0.Wetterstation.Druck_relativ=1017.95&javascript.0.Wetterstation.Regenrate=0&javascript.0.Wetterstation.Regen_Tag=0&javascript.0.Wetterstation.Regen_Jahr=0&javascript.0.Wetterstation.Sonnenstrahlung=44.87&javascript.0.Wetterstation.UV_Index=0.0&javascript.0.Wetterstation.Zeitstempel=28.07.2022%2020:13:29&javascript.0.Wetterstation.Regenstatus=&javascript.0.Wetterstation.UV_Belastung=keine&javascript.0.Wetterstation.Windrichtung_Text=NW&javascript.0.Wetterstation.Info.Hitzeindex= DATA von Wetterstation: GET /weatherstation/updateweatherstation.php?ID=xxxxxx&PASSWORD=xxxxxx&indoortempf=74.8&indoorhumidity=55 HTTP/1.1 Debug VAR: Installationsverzeichnis: /home/pi/wetterstation IPP: 127.0.0.1:8093 WS_PORT: 80 WS_POLL: 30 PRE_DP: javascript.0.Wetterstation WEB: HTTP WS_PROT: DNS DP35/40/50/60/70/100/200/250/300: 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 WH31: 0 Script-Version: V2.16.0 Config-Version: V2.16.0 Sub-Version: V2.16.0
Ohne Debug läuft die Konsole mit
(standard_in) 1: syntax error
voll. Ich vermute der gestartete Service agiert ähnlich.
Während der ganzen Zeit, wird wunderground aktualisiert, in iobroker blinken immer mal die Werte grün auf, werden aber nicht aktualisiert.
Wo könnte ich ansetzen?
Vielen Dank und viele Grüße
Björn -
Bei mir läuft das script nach dem Update nicht mehr, updater sagt Version ist aktuell V2.16.0, debug sagt das ich noch V2.14.0 nutze???
/home/chris/wetterstation.conf: Zeile 60: DATUM: Kommando nicht gefunden. 'bc' installiert: [✓] 'jq' installiert: [✓] 'dc' installiert: [✓] 'unzip' installiert: [✓] 'patch' installiert: [✓] Zugriff auf 'Rest-API' im ioBroker: [✗] (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.) Aktuelle Version (latest) auf GitHub: V2.16.0 vom 12.07.2022 Version im aktuellen Verzeichnis : V2.16.0 Version ist bereits aktuell...
chris@ioBroker:~$ systemctl status wetterstation ● wetterstation.service - Service für ioBroker Wetterstation Loaded: loaded (/etc/systemd/system/wetterstation.service; enabled; vendor> Active: failed (Result: exit-code) since Fri 2022-07-29 07:56:25 CEST; 13s> Process: 1899 ExecStart=/home/chris/wetterstation.sh (code=exited, status=1> Main PID: 1899 (code=exited, status=1/FAILURE) CPU: 9ms Jul 29 07:56:25 ioBroker wetterstation.sh[1899]: wetterstation: ERROR #000 - Co> Jul 29 07:56:25 ioBroker wetterstation.sh[1899]: benutzt: V2.14.0 benöt
chris@ioBroker:~$ ./wetterstation.sh --debug wetterstation: ERROR #000 - Config-Version mismatch! benutzt: V2.14.0 benötigt wird: V2.16.0
-
@tritor sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Es lässt sich endlich das Wetter draussen für morgen, heute im Script einstellen!!
Schön wäre es ^^
@tritor sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Habe ich sonst noch was vergessen?
Nein, alles perfekt
-
@negalein sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Legt die Rest-API alle DP neu an? Eigentlich nicht. Oder?
Nein, zumindest nicht von mir. Ich lege nur den DP Aussentemperatur_Trend an.
Er meckert jetzt aber "string" an und bekommt "number" (Zahl ist auch korrekt 0 bzw. 1)
Lt. deinem RAW steht er aber auf "string" ("number" ist nur als was es Influx speichern soll ). Soweit korrekt dass er da meckert. Warum der aber jetzt wieder als "string" da steht?
Da der Influx-Part schnell wieder konfiguriert ist würde ich den DP kpl. löschen und mal ein aktuelles wetterstation.js per Javascript laufen lassen. Dann stimmt der DP auf jeden Fall und du musst nur wieder die Influx-Einstellungen vom Datenpunkt noch nach ziehen. -
@björn-günther sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Connection to 127.0.0.1 8093 port [tcp/*] succeeded!
Stört mich da seehhrrr, passend dazu dann auch Zeile #21 - #30 (das ist eine HTML-Ausgabe). Daher rühren dann auch die ganzen Fehlermeldungen, denn er kann mit dem ioB nicht kommunizieren.
Port 8093 ist eigentlich der Standard-Port der Rest-API. Die wird aber aktuell nur zum anlegen von Datenpunkten benutzt, da sie (noch) kein Bulk-Update unterstützt.
Hast du ev. Simple-API (die _muss sein) mit Rest-API (die ist optional) verwechselt? -
@chris76e Das Skript ist auf V2.16.0 aber er hat die conf nicht auf V2.16.0 gepatcht.
Dir müssten eigentlich die Einstellungsmöglichkeiten fehlen:
Dann lade dir mittels "wget" (sie paar Posts hoch) noch mal die aktuelle Version des Updaters und führe im Installationsverzeichnis
./ws_updater.sh --patch
aus, dann sollte er sich wieder starten lassen. -
@sborg said in [Linux Shell-Skript] WLAN-Wetterstation:
Hast du ev. Simple-API (die _muss sein) mit Rest-API (die ist optional) verwechselt?
Arghhhhhhhhhh.
Ja, vielen Dank fürs Augen öffnen.
Kaum nimmt man die richtige Api, schon geht es. -
Ich habe gegen Mitternacht eine neue Version des "ws_updaters" hochgeladen, der die aktuellen Probleme beim nachinstallieren von 'dc' beseitigen sollte.
Dieser landet dann erst mit der V2.17.0 auf eurem System. Kein Problem, denn das Problem tritt nur auf wenn man etwas nachinstallieren muss/soll. Ist bei der kommenden 17er nicht der Fall und aktuell bei der 18er auch (noch) nicht nötig.
Wer dennoch sichergehen will im aktuellen Installationsverzeichnis stehend mittels
wget -O ws_updater.sh https://raw.githubusercontent.com/SBorg2014/WLAN-Wetterstation/master/ws_updater.sh
den aktuellen Updater downloaden und ersetzen. -
Danke, läuft jetzt. Muss man jedesmal beim Update die [3] Konfigurationdatei patchen auswählen oder habe ich einfach nur pech gehabt?
-
@chris76e sagte in [Linux Shell-Skript] WLAN-Wetterstation:
oder habe ich einfach nur pech gehabt?
Wie man es nimmt, es könnte aber auch einfach am Programmierer gelegen haben
Ist systembedingt beim Beta-Test nicht aufgefallen, da der eine etwas andere Routine nutzt. Normal startet man nur den Updater und wählt Punkt "4" für das Update aus, ab da funktioniert alles automatisch (zumindest bis zur V2.16.0 ) -
-
@björn-günther said in [Linux Shell-Skript] WLAN-Wetterstation:
Kaum nimmt man die richtige Api, schon geht es.
Allerdings offenbar nur im debug-Modus.
Starte ich das Script als Service läuft folgendes in /var/log/syslog:Jul 29 13:58:43 raspberrypi2 systemd[1]: Started Service für ioBroker Wetterstation. Jul 29 13:58:43 raspberrypi2 wetterstation.sh[7220]: Connection to 127.0.0.1 8087 port [tcp/*] succeeded! Jul 29 13:58:44 raspberrypi2 influxd[543]: ts=2022-07-29T11:58:44.004058Z lvl=info msg="Executing query" log_id=0bwJcch0000 service=query query="SELECT min(value) FROM iobroker.autogen.\"javascript.0.Wetterstation.Aussentemperatur\" WHERE time <= now() AND time >= '2022-07-29 00:00:00'" Jul 29 13:58:44 raspberrypi2 influxd[543]: [httpd] 192.168.0.49 - - [29/Jul/2022:13:58:44 +0200] "GET /query?db=iobroker&epoch=s&p=&pretty=true&q=SELECT+min%28value%29+FROM+%22javascript.0.Wetterstation.Aussentemperatur%22+WHERE+time+%3C%3D+now%28%29+and+time+%3E%3D+%272022-07-29+00%3A00%3A00%27&u= HTTP/1.1" 200 77 "-" "curl/7.74.0" cb7d7d39-0f35-11ed-80b1-000000000000 909 Jul 29 13:58:44 raspberrypi2 influxd[543]: ts=2022-07-29T11:58:44.033079Z lvl=info msg="Executing query" log_id=0bwJcch0000 service=query query="SELECT max(value) FROM iobroker.autogen.\"javascript.0.Wetterstation.Aussentemperatur\" WHERE time <= now() AND time >= '2022-07-29 00:00:00'" Jul 29 13:58:44 raspberrypi2 influxd[543]: [httpd] 192.168.0.49 - - [29/Jul/2022:13:58:44 +0200] "GET /query?db=iobroker&epoch=s&p=&pretty=true&q=SELECT+max%28value%29+FROM+%22javascript.0.Wetterstation.Aussentemperatur%22+WHERE+time+%3C%3D+now%28%29+and+time+%3E%3D+%272022-07-29+00%3A00%3A00%27&u= HTTP/1.1" 200 77 "-" "curl/7.74.0" cb81eb49-0f35-11ed-80b2-000000000000 940 Jul 29 13:58:44 raspberrypi2 wetterstation.sh[7277]: (standard_in) 1: syntax error Jul 29 13:58:44 raspberrypi2 wetterstation.sh[7305]: (standard_in) 1: syntax error Jul 29 13:58:45 raspberrypi2 wetterstation.sh[7331]: (standard_in) 1: syntax error Jul 29 13:58:45 raspberrypi2 systemd[1]: Stopping Service für ioBroker Wetterstation... Jul 29 13:58:45 raspberrypi2 systemd[1]: wetterstation.service: Succeeded. Jul 29 13:58:45 raspberrypi2 systemd[1]: Stopped Service für ioBroker Wetterstation. Jul 29 13:58:45 raspberrypi2 systemd[1]: wetterstation.service: Consumed 1.190s CPU time.
Starte ich es ohne debug auf der Konsole ist alles prima, das Problem scheint nur im Service-Modus aufzutreten.
@SBorg Könnte ich noch etwas anderes übersehen haben?
-
@björn-günther sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Allerdings offenbar nur im debug-Modus.
Das passt dann zur Fehlermeldung. Bei der Option "--debug" findet keine Influx-Abfrage statt. Genau die schlägt dann aber lt. Log beim normalen Start aber fehl.
Check bitte mal deine Influx-Einstellungen: IP, Port, Datenbankname, User und PW
-
@sborg said in [Linux Shell-Skript] WLAN-Wetterstation:
Check bitte mal deine Influx-Einstellungen: IP, Port, Datenbankname, User und PW
Ich hatte für die Datenbank keinen User und PW gesetzt und das in der Config deshalb frei gelassen.
Nachdem ich im Influx-Adapter User und PW eingerichtet und in der .conf eingetragen habe, geht es jetzt offenbar mit auf der Shell gestartetem Script.Als Service gestartet wird /var/log/syslog weiterhin mit Fehlern befüllt:
ul 30 12:46:06 raspberrypi2 influxd-systemd-start.sh[6789]: InfluxDB started Jul 30 12:46:06 raspberrypi2 systemd[1]: Started InfluxDB is an open-source, distributed, time series database. Jul 30 12:46:19 raspberrypi2 systemd[1]: Started Service für ioBroker Wetterstation. Jul 30 12:46:19 raspberrypi2 wetterstation.sh[6880]: Connection to 127.0.0.1 8087 port [tcp/*] succeeded! Jul 30 12:46:20 raspberrypi2 influxd-systemd-start.sh[6790]: ts=2022-07-30T10:46:20.731418Z lvl=info msg="Executing query" log_id=0b~gFMU0000 service=query query="SELECT min(value) FROM iobroker.autogen.\"javascript.0.Wetterstation.Aussentemperatur\" WHERE time <= now() AND time >= '2022-07-30 00:00:00'" Jul 30 12:46:20 raspberrypi2 influxd-systemd-start.sh[6790]: [httpd] 127.0.0.1 - pi [30/Jul/2022:12:46:20 +0200] "GET /query?db=iobroker&epoch=s&p=%5BREDACTED%5D&pretty=true&q=SELECT+min%28value%29+FROM+%22javascript.0.Wetterstation.Aussentemperatur%22+WHERE+time+%3C%3D+now%28%29+and+time+%3E%3D+%272022-07-30+00%3A00%3A00%27&u=pi HTTP/1.1" 200 525 "-" "curl/7.74.0" d90542dc-0ff4-11ed-8002-dca6327ecb3b 153937 Jul 30 12:46:20 raspberrypi2 influxd-systemd-start.sh[6790]: ts=2022-07-30T10:46:20.889196Z lvl=info msg="Executing query" log_id=0b~gFMU0000 service=query query="SELECT max(value) FROM iobroker.autogen.\"javascript.0.Wetterstation.Aussentemperatur\" WHERE time <= now() AND time >= '2022-07-30 00:00:00'" Jul 30 12:46:20 raspberrypi2 influxd-systemd-start.sh[6790]: [httpd] 127.0.0.1 - pi [30/Jul/2022:12:46:20 +0200] "GET /query?db=iobroker&epoch=s&p=%5BREDACTED%5D&pretty=true&q=SELECT+max%28value%29+FROM+%22javascript.0.Wetterstation.Aussentemperatur%22+WHERE+time+%3C%3D+now%28%29+and+time+%3E%3D+%272022-07-30+00%3A00%3A00%27&u=pi HTTP/1.1" 200 525 "-" "curl/7.74.0" d93480e8-0ff4-11ed-8003-dca6327ecb3b 1437 Jul 30 12:46:21 raspberrypi2 wetterstation.sh[6945]: (standard_in) 1: syntax error Jul 30 12:46:21 raspberrypi2 wetterstation.sh[6971]: (standard_in) 1: syntax error Jul 30 12:46:22 raspberrypi2 wetterstation.sh[6998]: (standard_in) 1: syntax error Jul 30 12:46:23 raspberrypi2 wetterstation.sh[7024]: (standard_in) 1: syntax error Jul 30 12:46:23 raspberrypi2 wetterstation.sh[7050]: (standard_in) 1: syntax error Jul 30 12:46:24 raspberrypi2 wetterstation.sh[7078]: (standard_in) 1: syntax error Jul 30 12:46:25 raspberrypi2 wetterstation.sh[7104]: (standard_in) 1: syntax error Jul 30 12:46:25 raspberrypi2 wetterstation.sh[7130]: (standard_in) 1: syntax error Jul 30 12:46:26 raspberrypi2 wetterstation.sh[7157]: (standard_in) 1: syntax error Jul 30 12:46:26 raspberrypi2 wetterstation.sh[7185]: (standard_in) 1: syntax error Jul 30 12:46:27 raspberrypi2 wetterstation.sh[7211]: (standard_in) 1: syntax error Jul 30 12:46:27 raspberrypi2 systemd[1]: Stopping Service für ioBroker Wetterstation... Jul 30 12:46:27 raspberrypi2 systemd[1]: wetterstation.service: Succeeded. Jul 30 12:46:27 raspberrypi2 systemd[1]: Stopped Service für ioBroker Wetterstation. Jul 30 12:46:27 raspberrypi2 systemd[1]: wetterstation.service: Consumed 3.240s CPU time.
Viele Grüße
Björn -
@björn-günther sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Als Service gestartet wird /var/log/syslog weiterhin mit Fehlern befüllt
Ich habe jetzt versuchsweise in /etc/systemd/system/wetterstation.service das ExecStart geändert und ein sudo davor gesetzt.
[Unit] Description=Service für ioBroker Wetterstation [Service] User=pi Group=pi ExecStart=sudo /home/pi/wetterstation/wetterstation.sh [Install] WantedBy=multi-user.target
Das scheint, zumindest bei mir die Lösung gebracht zu haben.
Nochmal vielen Dank @SBorg
Viele Grüße
Björn -
@björn-günther sagte in [Linux Shell-Skript] WLAN-Wetterstation:
sudo /home/pi/wetterstation/wetterstation.sh
Hi,
das sollte so nicht sein. Klammern wir mal alles andere aus und ich mache einfach nur einen simplen C&P oä. Fehler, hat das Skript durch die root-Rechte volle Kontrolle über das System. Ein falscher "/" und ich kann dir bestenfalls dein System zerschießen!
Ich (+ nicht nur ich )habe zwar schon Fusseln am Mund, aber never ever etwas als root/sudo laufen lassen. Zum testen, oder wenn ich mal temporär erhöhte Rechte brauche, dann natürlich sudo, sonst aber sollte da tabu sein.Vermutlich gehören die Dateien nicht dem User "pi" oder es fehlen ihm die Rechte.
Was liefert denn einls -al /home/pi/wetterstattion/
?
Oder der User "pi" darf einfach kein Influx, was ich eher vermute... -
@negalein said in [Linux Shell-Skript] WLAN-Wetterstation:
"type": "string",
Der Type des Datenpunktes des Iobroker ist string .
Der SpeicherType in der InfluxDB ist numberUiiii, da hab ich auf einen Aaaaaalten Post geanwortet