NEWS
[Linux Shell-Skript] WLAN-Wetterstation
-
@rushmed
Danke läuft. -
Moin zusammen,
ich habe zwei Wetterstationen an unterschiedlichen Standorten laufen. Ich hatte lange Zeit die Statistik laufen, um hier die verläufe der letzten Tage besser sichtbar zu machen.
Seit graumer Zeit läuft die Statistik aber nicht mehr. Die aktuellen Werte werden aber nach wie vor geschrieben.
Ich habe jetzt schon alles mehrfach kontrolliert und bin alles nochmal Schritt für Schritt durchgegangen, kann aber den Fehler nicht beheben.
Das Wetterstation_Statistik Skript läuft auf dem IoBroker und was ich feststellen kann ist, dass jeden Tag um 01:03 Uhr das Skript einen Fehler wirft:Die Werte für die Organisation, Bucket und die Instanz habe ich schon ettliche Male kontrolliert und auch mit verschiedenen Einstellungen getestet.
Laut Fehlermeldung scheint der Zugriff auf die Datenbank auch nicht das Problem zu sein, sondern dass er einen Wert nicht richtig initialisieren kann.
Ich bin jetzt auch kein ausgewiesener Script-Experte und bräuchte wahrscheinlich Monate, um den Fehler zu finden.
Ich habe das Script Wetterstation_Statistik unverändert, bis auf die Werte der InfluxDB in der Version 2.0.3 laufen.
Die Statistik läuft jetzt seit September nicht mehr richtig, aber Kind und Kegel haben mich bisher davon angehalten, mit intensiver mit diesem Thema zu beschäftigen.
Ich habe eben auch nochmal alle Objekte des Knotens "Statistik" gelöscht, das Skript neu ausgeführt und die Objekte wurden neu angelegt. Dennoch kommt der Fehler bei der Ausführung.
P.S.: Die Aktuelle Zeit stammt aus dem Testen, regulär läuft das Skript um 01:03 Uhr.
Hat jemand eine Idee oder Hinweis, was bei mir schief läuft?
Ich bedanke mich schon mal im Voraus!
-
@sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
bei installierter Rest-API
hab das mal vor einigen Tagen einrichten wollen, bekomme das aber nicht zum laufen, muss man da etwas spezielles beachten/nachinstallieren?
der docker wirft dann Fehler und script läuft diesbezüglich nicht, irgendwas mit nc..hab das log gerade nicht parat0 upgraded, 0 newly installed, 0 to remove and 15 not upgraded. Hit:1 http://archive.ubuntu.com/ubuntu jammy InRelease Get:2 http://security.ubuntu.com/ubuntu jammy-security InRelease [110 kB] Get:3 http://archive.ubuntu.com/ubuntu jammy-updates InRelease [119 kB] Hit:4 http://archive.ubuntu.com/ubuntu jammy-backports InRelease Get:5 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages [2019 kB] Get:6 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 Packages [1369 kB] Fetched 3617 kB in 2s (2168 kB/s) Reading package lists... Reading package lists... Building dependency tree... Reading state information... bc is already the newest version (1.07.1-3build1). dc is already the newest version (1.07.1-3build1). jq is already the newest version (1.6-2.1ubuntu3). nano is already the newest version (6.2-1). netcat-openbsd is already the newest version (1.218-4ubuntu1). ca-certificates is already the newest version (20230311ubuntu0.22.04.1). curl is already the newest version (7.81.0-1ubuntu1.16). gnupg is already the newest version (2.2.27-3ubuntu2.1). sudo is already the newest version (1.9.9-1ubuntu2.4). apt-transport-https is already the newest version (2.4.12). 0 upgraded, 0 newly installed, 0 to remove and 15 not upgraded. usage: nc [-46CDdFhklNnrStUxxxx] [-I length] [-i interval] [-M ttl] [-m minttl] [-O length] [-P proxy_username] [-p source_port] [-q seconds] [-s sourceaddr] [-T keyword] [-V rtable] [-W recvlimit] [-w timeout] [-X proxy_protocol] [-x proxy_address[:port]] [destination] [port] usage: nc [-46CDdFhklNnrStUxxxx] [-I length] [-i interval] [-M ttl] [-m minttl] [-O length] [-P proxy_username] [-p source_port] [-q seconds] [-s sourceaddr] [-T keyword] [-V rtable] [-W recvlimit] [-w timeout] [-X proxy_protocol] [-x proxy_address[:port]] [destination] [port]
Einstellung im Adapter
in der .conf ist aktuell
für Rest-api hatte ich die IPP bei simple-api rausgenommen und bei RESTAPI_URL http://10.1.1.10:8093 eingetragen#ioBroker-IP und Port der Simple-Restful-API [xxx.xxx.xxx.xxx:xxxxx] IPP=10.1.1.10:8087 #Protokoll, ioBroker-IP und Port der Rest-API [http(s)://xxx.xxx.xxx.xxx:xxxxx] / leer lassen falls nicht benutzt RESTAPI_URL= RESTAPI_USER= RESTAPI_PW= #Protokoll der Wetterstation [1/2/9] / 1=Wunderground ; 2=Ecowitt ; 9=DNS / default: 2 WS_PROTOKOLL=2 #Anzahl der vorhandenen Zusatzsensoren Froggit, Ecowitt und Bresser / default: 0 ... #Protokoll (HTTP oder HTTPS) / default: HTTP WEB=HTTP #Ignoriere Zertifikatsfehler bei der Simple-Restful-API [true/false] / default: false / nötig bei eigenen Zertifikaten WEB_IGN_SSL_ERROR=false #User-Authentifizierung falls benutzt; sonst leer lassen AUTH_USER= AUTH_PASS=
-
@chillmaster
Influx 1.x oder 2.x?Es sieht so aus, dass er die Daten nicht aus der DB holen kann und deswegen ein leeres Array bearbeiten muss, was zu dem Fehler führt.
Hast due irgendwelche Aliase vergeben? -
@boronsbruder
Vielen Dank für die Rückmeldung.
Also im Hintergrund läuft eine InfluxDB 2.7.6, im IOBroker ist DB Version 2.x eingestellt und bei Grafana wird Flux als Language verwendet. Habe ich ggf. eine Einstellung übersehen?
Gesonderte Aliase habe ich nicht verwendet. Im Grunde Standard -
@chillmaster
Teste mal ob das WLAN-Skript die InfluxDB überhaupt erreicht. Im Installationsverzeichnis einfach aufrufen./wetterstaion.sh --influx_test
Dann ließt er mal was aus der InfluxDB:
Dann wären die Daten aus der ".conf" die richtigen und auch für das Statistik-Skript gültig.
-
@crunchip
Außer dem Rest-API Adapter im ioB ist dafür nichts weiter nötig.Zum Verständnis:
- der Simple-API ist immer nötig. Der nimmt die Daten des WLAN-Skriptes entgegen
- der Rest-API (der zukünftige Nachfolger der Simple-API) macht aktuell nichts weiter wie Datenpunkte im ioB anlegen bei einem Update des WLAN-Skriptes sofern dies nötig ist bzw. es neue gibt.
Ich habe einen extra User für die API im ioB angelegt und diesen in der "conf" eingetragen:
-
@sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Zum Verständnis:
der Simple-API ist immer nötig
Das habe ich dann wohl falsch verstanden, dachte, der Rest-API sei der Nachfolger. Und kann den Simple-Abi abschalten.
Hab mich ehrlich gesagt auch noch nicht weiter mit dem Adapter auseinander gesetzt, da ich den anderweitig nicht benötige.Dieses Meldung *usage: NC... * kommt dann woher?
-
@sborg
Vielen Dank für die Rückmeldung.
Ist habe die Konfiguration getestet und tatsächlich damit einen IP Fehler in der wetterstation.conf aufdecken und korrigieren können. Hier hatte ich die falsche Endnummer eingetragen. Korrigiert und bei erneuter Ausführung bekomme ich nun mit./wetterstation.sh --influx_test
folgenden Wert ausgegeben:
Testing InfluxDB... min/max Aussentemperatur 24h: 3°C 10°C
Ich habe danach das Skript auf dem IOBroker nochmal aktuell ausführen lassen, aber das sorgt noch nicht dafür, dass die Tagesstatistiken (Temperatur) wieder mit Daten gefüllt werden.
Muss ich da jetzt mindestens 24 Stunden warten? So wie ich das verstanden habe, zieht er sich ja die Daten aus den normalen Wetterdaten und die werden ja regelmäßig befüllt, demzufolge hätte ich jetzt gedacht, wären die sofort da.
Sprich ich müsste sonst zwei Tage warten oder? Weil heute noch unvollständiger Tag, morgen volle 24 Stunden und dann wüsste ich erst, ob es geht?Sorry, dass ich so spät antworte. ich war die letzten zwei Tage im Außendienst und konnte nicht testen.
-
@chillmaster sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Muss ich da jetzt mindestens 24 Stunden warten? So wie ich das verstanden habe, zieht er sich ja die Daten aus den normalen Wetterdaten und die werden ja regelmäßig befüllt,
Bitte daran denken: Es handelt sich hierbei um eine Statistik, d.h. die Daten können immer erst mit einem Tag Verspätung angezeigt werden! Ich kann erst bspw. eine Durchschnittstemperatur des Tages berechnen, wenn ich auch alle Messwerte von 0:00 Uhr bis 23:59 Uhr des entsprechenden Tages habe, was erst am Folgetag um 0:00 Uhr der Fall ist.
-
@crunchip
Ja richtig, ich habe ja aber alle Messwerte von Gestern und auch von Heute - deswegen dachte ich, dass er die Statistik gleich berechnen kann. Aber gut ich warte erstmal ab.
Vielen Dank schon mal bis hierin für die schnelle Unterstützung -
@chillmaster sagte in [Linux Shell-Skript] WLAN-Wetterstation:
habe ja aber alle Messwerte von Gestern
Die vollen 24Stunden?
Ansonsten einfach den Tag noch abwarten -
@crunchip sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Dieses Meldung *usage: NC... * kommt dann woher?
Kommt das nur einmalig (beim Start), öfters, bzw. wann genau?
Die Meldung an sich besagt, dass er eine aufgerufene Option einfach nicht kennt und zeigt deswegen die Syntax von nc an. Ich habe lediglich einen Container mit InfluxDB und kann schlecht testen. -
@chillmaster
Ich bin aktuell auch recht unregelmäßig hier online, also alles gut
Die Statistik kann man nicht laufen lassen wie man möchte, selbst wenn Daten vorhanden sind. Das habe ich schlichtweg einfach nicht vorgesehen. Es wird automatisch immer eine Statistik vom "aktuellen Tag -1" erstellt (also heute im Laufe des Tages starten geht schon, es wird aber immer nur "gestern" erstellt). Ist aber eigentlich auch nicht dein Problem, denn dein Eingangsproblem ist "...empty array...", dass heißt er kann überhaupt nicht die InfluxDB erreichen per Javascript. Mal korrektes Bucket und Instanz unterstellt, sind ioB und InfluxDB auf der selben Maschine? -
@sborg das kommt ab start kontinuierlich, allerdings wie oben erwähnt, als ich umgestellt hatte auf Rest-API.
wenn ich zurück auf Simple-API stelle, kommt die Meldung nicht. -
@crunchip
Ich habe mir das nochmal angeschaut und weiß mittlerweile was da passiert.Beim Starten des Skriptes prüfe ich ob der ioB auch läuft. Gerade die Simple-API startet beim Neustart des ioB recht spät, deswegen prüfe ich ob diese läuft (und dann läuft natürlich auch der ioB ).
Dies geschieht mittels nc -nvz [IP-Adresse] [Port]Sehe ich mir deine nc-Fehlermeldung an, steht da: usage: nc [-46CDdFhklNnrStUxxxx]...
Genau die letzten vier "x" sind dann da das Problem. Ich nutze genau dieselbe Version wie du, erhalte aber:
In deinem Docker fehlen die Optionen "v" + "z". Schlimm ist das nicht, eine Fehleranzeige ist per se durchaus nützlich, irgend etwas funktioniert da ja nicht. Ich könnte dies zwar abfangen, ersetze aber im Grunde dann nur eine Fehlermeldung durch eine Andere. Warum dir allerdings im Container die vier Optionen überhaupt fehlen...
-
@sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Genau die letzten vier "x" sind dann da das Problem
das hatte ich nur gexxxt, weil ich nicht wusste was das für eine Bezeichnung ist, bzw hier im Forum nicht komplett zeigen wollte
kann nochmal bei Gelegenheit umstellen und die genaue Bezeichnung zeigen, glaube allerdings ist genau die selbe wie bei dir, somit dürfte also nichts fehlen im docker.Ich gehe eher davon aus, daß die Meldung erscheint wenn Simple-API nicht läuft, da ich die Instanz ja gestoppt hatte
erstmal DANKE fürs nachforschen
-
@sborg
Die Zeit rasst...
Ich habe es wieder zum laufen bekommen. Bei mir war die Lösung, dass ich mir nochmal die Variablen angesehen habe. Ich meine, dass die Konfiguration vorher auch schon genauso lief, aber ich musste einmal die InfluxDB neu aufsetzen. Und ich befürchte, ich habe mich dabei mit den Tokens etwas vertan, da ich für die verschiedenen Bereiche eigene Buckets und Tokens erstellt hatte.
Lösung konkret, die Variablen für longtherm angepasst und schon lief es. Sprich, im Nachgang betrachtet hätte ich nur die korrekte Datasource n Grafana zusätzlich einrichten müssen und dann wäre es das eigentlich schon gewesen.Danke auf jeden Fall für die schnelle Rückmeldung, die hat mich der Lösung ein Stück näher gebracht.
-
@chillmaster
Danke für das Feedback und schön dass es wieder läuftDeswegen hatte ich unter anderem die Bucketnamen etc. in Grafana in Variablen gepackt. Ich habe schon mal bei mehr als 50 Panels die geändert... Dank der zentralen Variablen ist dies nun ratz-fatz erledigt.
Ich kann auch nur zu Aliasen im ioB raten. Macht zwar einmalig etwas mehr Arbeit, aber wenn ein Gerät ausfällt dann alle Skripte/Blockys/Flows/VIS/Bindings usw. ändern zu müssen... -
@sborg
Hi, meine Wetterstation läuft seit ein paar Tagen nicht. Also es werden keine Daten in Iob geschrieben.
Zum System: UnifiPro-4 , Iob läuft unter Proxmox, DNS AdGuard auch Proxmox.Hier mal ein Auszug aus dem Log:
Und so langsam bin ich genervt weil es nicht laufen will !
Habt Ihr eine Idee ? Was ich noch prüfen kann ?
LG
M.M.