NEWS
[Linux Shell-Skript] WLAN-Wetterstation
-
@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. -
Ich habe heute diesen Error im Log entdeckt.
javascript.1 2024-06-01 01:03:00.084 error at processImmediate (node:internal/timers:478:21) javascript.1 2024-06-01 01:03:00.084 error at Immediate._onImmediate (/opt/iobroker/node_modules/@iobroker/db-states-redis/src/lib/states/statesInRedisClient.ts:379:37) javascript.1 2024-06-01 01:03:00.084 error at change (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/src/lib/adapter/adapter.ts:11082:45) javascript.1 2024-06-01 01:03:00.084 error at Object.cb (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:2993:38) javascript.1 2024-06-01 01:03:00.084 error at Object.<anonymous> (script.js.Wetter.Wetterstatistik:192:43) javascript.1 2024-06-01 01:03:00.084 error at Array.reduce (<anonymous>) javascript.1 2024-06-01 01:03:00.083 error Error in callback: TypeError: Reduce of empty array with no initial value
Was muss ich da machen?
-
@mymeyer sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Habt Ihr eine Idee ? Was ich noch prüfen kann ?
Pauschal bekommst du keine Verbindung vom Display/Gateway zum Rechner auf dem das Skript läuft.
Welche Station nutzt du denn (weil du als Protokoll "DNS" nutzt)?
Falls "DNS" (zB. bei einer Station von Bresser) Absicht ist, funktioniert die DNS-Umleitung der Wunderground-URL zum Skript-Rechner nicht korrekt. -
-
@negalein sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Was muss ich da machen?
"Error in callback: TypeError: Reduce of empty array with no initial value"
Du bekommst keine Verbindung zur InfluxDB. Im Skript noch alles (Bucket, Instanz) korrekt eingetragen?
Ok, jetzt kam gerade @Rene55 dazwischen
Testet ihr ev. den neuen Alpha 6.0? Mit dem aktuellen läuft alles. -
Aktuell gibt es bei Windy ein kleineres Problem. Die haben an der API rum geschraubt und zusätzlich das Mindest-Sendeintervall geändert. Fix ist in Arbeit, allerdings funktioniert die Übertragung (zumindest jede zweite) trotzdem, nur der DP für eine korrekte Übertragung an Windy verbleibt immer auf false.
-
@sborg Nee, ist ja Produktivsystem mit 5.0.19, javascript v8.3.1
-
@rene55
Ok, dann ist es dies zumindest nicht. Ich nutze zwar 5.0.19 und 8.4.2, da wäre mir aber weiter nichts bekannt warum er plötzlich die InfluxDB nicht mehr lesen kann...? -
@sborg Müsste nicht, wenn die Influx nicht gelesen werden kann, der "Fehler beim Lesen der InfluxDB" im Log erscheinen?
-
@rene55
IMO nicht wenn überhaupt keine Verbindung zustande kommt, sondern nur wenn bei der Abfrage selbst ein Problem auftritt. Das Problem hatte genau in der Art ein anderer User vor einiger Zeit, da kam auch keine andere Fehlermeldung (damals war die Bezeichnung des Buckets falsch).Ist nur komisch warum bei euch beiden (ev. melden sich ja auch noch weitere) und bspw. bei mir läuft es.
-
@sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Testet ihr ev. den neuen Alpha 6.0?
Nö, bin noch auf 5.0.19
Javascript: 8.4.2Du bekommst keine Verbindung zur InfluxDB. Im Skript noch alles (Bucket, Instanz) korrekt eingetragen?
Ja, da hat sich nichts geändert.
// *** User-Einstellungen ********************************************************************************************************************************** const WET_DP='0_userdata.0.Wetterstation'; // wo liegen die Datenpunkte mit den Daten der Wetterstation [default: 0_userdata.0.Wetterstation] const INFLUXDB_INSTANZ='1'; // unter welcher Instanz läuft die InfluxDB [default: 0] const INFLUXDB_BUCKET='iobroker'; // Name des zu benutzenden Buckets
-
@sborg Tatsächlich sind die Results von 'Temp, Wind und Rain'
leer
. -
@rene55 sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Tatsächlich sind die Results von 'Temp, Wind und Rain
die in
0_userdata.0.Wetterstation
? -
@negalein Ich zieh mich mal eben zurück. Ich hab den Fehler wahrscheinlich schon länger drin. Asche über mein Haupt.
@SBorg erinnert sich sicher noch daran, dass ich damals versucht habe, die Measurement-Namen zu kürzen. Da hab ich wohl nicht alles konsequent durchgezogen.
Daten kommen aktuell wieder aus der Influx. -
@sborg Trotz der eingelesenen Daten habe ich (im Debugmodus) eine Ausgabe
"Erster Messwert: 2024-05-30T22:00:28.347Z ***undefined",
die ich mir nicht erklären kann.Was genau macht eigentlich "const reducer = (accumulator, curr) => accumulator + curr;" ?
-
@negalein sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Ja, da hat sich nichts geändert.
Dann müsste es auch gehen
Wenn also da alles korrekt ist, stehen denn überhaupt Daten in der InfluxDB für den Zeitraum? -
@rene55 sagte in [Linux Shell-Skript] WLAN-Wetterstation:
"Erster Messwert: 2024-05-30T22:00:28.347Z ***undefined",
die ich mir nicht erklären kann.Immerhin hat er einen Zeitstempel aus dem Array lesen können, nur keinerlei Wert. Loggst du die DPs in Influx beim "Typ" als "Automatik" oder explizit als Zahl (letzteres würde ich bevorzugen)?
Was genau macht eigentlich "const reducer = (accumulator, curr) => accumulator + curr;" ?
Das gehört zusammen
const reducer = (accumulator, curr) => accumulator + curr; let Temp_Durchschnitt = Number((temps.reduce(reducer)/temps.length).toFixed(2));
und nutze ich zur Berechnung eines Durchschnittes.
reduce
bildet die Summe eines Arrays. Normalerweise würdest du bei einem Array mittels "for each" oder Schleife über das Array iterieren und dann jeweilsSumme += Einzelwert
ausführen, um dann den Durchschnitt mittels "Summe / Anzahl der Elemente im Array" bilden. Das ist hier bei drei Arrays mit rund 100k Datensätzen auf einem Raspi eine Aktion von mehreren Minuten, mittels "reduce" wenige Sekunden -
@sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
stehen denn überhaupt Daten in der InfluxDB für den Zeitraum?
Ja, im Explorer, sowie in Grafana
Edit: ich denke, Fehler gefunden.
Ich hatte
const INFLUXDB_BUCKET='iobroker'; // Name des zu benutzenden Buckets
Richtig ist aberconst INFLUXDB_BUCKET='iobroker-1w
.
schaut jetzt so aus.
2024 ist natürlich jetzt versaut ((könnt mich selber schlagen)
Warum steht aber bei
Regentage 2021
dortundefined
?Und die anderen 0-Werte dürften auch nicht stimmen.