NEWS
[Linux Shell-Skript] WLAN-Wetterstation
-
@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 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;" ?
-
@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@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?
-
@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;" ?
@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 zusammenconst reducer = (accumulator, curr) => accumulator + curr; let Temp_Durchschnitt = Number((temps.reduce(reducer)/temps.length).toFixed(2));und nutze ich zur Berechnung eines Durchschnittes.
reducebildet die Summe eines Arrays. Normalerweise w
ü
rdest du bei einem Array mittels "for each" oder Schleife
ü
ber das Array iterieren und dann jeweils Summe += Einzelwertausf
ü
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 
-
@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?
@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 2021dortundefined?Und die anderen 0-Werte d
ü
rften auch nicht stimmen. -
@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 zusammenconst reducer = (accumulator, curr) => accumulator + curr; let Temp_Durchschnitt = Number((temps.reduce(reducer)/temps.length).toFixed(2));und nutze ich zur Berechnung eines Durchschnittes.
reducebildet die Summe eines Arrays. Normalerweise w
ü
rdest du bei einem Array mittels "for each" oder Schleife
ü
ber das Array iterieren und dann jeweils Summe += Einzelwertausf
ü
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 Danke f
ü
r die Erkl
ä
rung. Ich konnte damit (noch) nichts anfangen. Ich tue mich mit diesen Array-Funktionen doch etwas schwer.
Die Werte werden meistens als Number in die Influx geschrieben.
Jetzt haben wir dich umsonst aus dem Wochenende an den Rechner geholt. Oder gibt es noch Verbesserungen (=Windy) ? -
@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....und der muss jetzt einfach sein...

@sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Du bekommst keine Verbindung zur InfluxDB. Im Skript noch alles (Bucket, Instanz) korrekt eingetragen?
Aber egal, Hauptsache l
ü
ppt widda.@negalein sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Warum steht aber bei Regentage 2021 dort undefined?
In 2021 gab es die Tage noch nicht, die sind erst 2022 neu dazu gekommen. Man k
ö
nnte die zwar im JSON nachtragen, ist aber IMO nicht zielf
ü
hrend, denn so sieht man dass es daf
ü
r noch keine Daten gab. Bei einer "0" geht man dann einfach davon aus, dass es halt im Mai 2021 bspw. keine Regentage gab.Und die anderen 0-Werte d
ü
rften auch nicht stimmen.Was steht denn bspw. im JSON f
ü
r Mai 2023 drin?[ { "Tiefstwert": 2.72, "Hoechstwert": 30.72, "Temp_Durchschnitt": 16.1, "Max_Windboee": 21.88, "Max_Regenmenge": 13.995, "Regenmenge_Monat": 51.58, "warme_Tage": 21, "Sommertage": 8, "heisse_Tage": 1, "Frost_Tage": 0, "kalte_Tage": 0, "Eistage": 0, "sehr_kalte_Tage": 0, "Wuestentage": 0, "Tropennaechte": 0, "Regentage": 9 } ]Wenn da
"Regentage": 0steht kann er auch nichts anderes anzeigen. Dann hat damals irgendwas bei der Verarbeitung nicht funktioniert. "Regenmnege" etc. ist aber auch "0", da lief wohl was f
ü
r den gesamten Mai schief.
Pauschal kommt man an die Werte aber jederzeit dran, ist nur aufw
ä
ndig. Sie stehen aber wenn sie nicht gel
ö
scht wurden in der InfluxDB. -
@sborg Danke f
ü
r die Erkl
ä
rung. Ich konnte damit (noch) nichts anfangen. Ich tue mich mit diesen Array-Funktionen doch etwas schwer.
Die Werte werden meistens als Number in die Influx geschrieben.
Jetzt haben wir dich umsonst aus dem Wochenende an den Rechner geholt. Oder gibt es noch Verbesserungen (=Windy) ?@rene55
JS ist im Ganzen nicht "meins". So langsam bemerke ich auch, wenn ich mal l
ä
nger mit etwas nicht arbeite, dass ich dann schon wieder einiges vergessen habe 
"Windy" will noch nicht wie ich wohl will. Ich muss die korrekte "cool down zeit" noch finden, oder mal lesen ob es irgendwo steht, aber API-Dokus sind meist sehr, sehr sp
ä
rlich... -
...und der muss jetzt einfach sein...

@sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Du bekommst keine Verbindung zur InfluxDB. Im Skript noch alles (Bucket, Instanz) korrekt eingetragen?
Aber egal, Hauptsache l
ü
ppt widda.@negalein sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Warum steht aber bei Regentage 2021 dort undefined?
In 2021 gab es die Tage noch nicht, die sind erst 2022 neu dazu gekommen. Man k
ö
nnte die zwar im JSON nachtragen, ist aber IMO nicht zielf
ü
hrend, denn so sieht man dass es daf
ü
r noch keine Daten gab. Bei einer "0" geht man dann einfach davon aus, dass es halt im Mai 2021 bspw. keine Regentage gab.Und die anderen 0-Werte d
ü
rften auch nicht stimmen.Was steht denn bspw. im JSON f
ü
r Mai 2023 drin?[ { "Tiefstwert": 2.72, "Hoechstwert": 30.72, "Temp_Durchschnitt": 16.1, "Max_Windboee": 21.88, "Max_Regenmenge": 13.995, "Regenmenge_Monat": 51.58, "warme_Tage": 21, "Sommertage": 8, "heisse_Tage": 1, "Frost_Tage": 0, "kalte_Tage": 0, "Eistage": 0, "sehr_kalte_Tage": 0, "Wuestentage": 0, "Tropennaechte": 0, "Regentage": 9 } ]Wenn da
"Regentage": 0steht kann er auch nichts anderes anzeigen. Dann hat damals irgendwas bei der Verarbeitung nicht funktioniert. "Regenmnege" etc. ist aber auch "0", da lief wohl was f
ü
r den gesamten Mai schief.
Pauschal kommt man an die Werte aber jederzeit dran, ist nur aufw
ä
ndig. Sie stehen aber wenn sie nicht gel
ö
scht wurden in der InfluxDB.@sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Pauschal kommt man an die Werte aber jederzeit dran, ist nur aufw
ä
ndig. Sie stehen aber wenn sie nicht gel
ö
scht wurden in der InfluxDB.Danke, das muss ich mir noch
ü
berlegen.
Muss mal bei Awekas schaun, seit wann wir dort Daten haben. -
@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.@sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
@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.Hi ich das Script nochmal komplett auf eine andere VM installiert. Zus
ä
tzlich habe ich bei Wunderground eine neues Device angelegt. Aber es will trotzdem nicht 
WS_ID habe ich in der App neu eingetragen und in der Konfig.
-
@sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
@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.Hi ich das Script nochmal komplett auf eine andere VM installiert. Zus
ä
tzlich habe ich bei Wunderground eine neues Device angelegt. Aber es will trotzdem nicht 
WS_ID habe ich in der App neu eingetragen und in der Konfig.
@mymeyer sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Listening on 0.0.0.0 1080
Ist das Absicht das du den Port von Socks-Proxy benutzt?
Wenn nicht, benutz mal einen anderen, da dieser meist schon vom Betriebsystem genutzt wird und belegt ist. -
@mymeyer sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Listening on 0.0.0.0 1080
Ist das Absicht das du den Port von Socks-Proxy benutzt?
Wenn nicht, benutz mal einen anderen, da dieser meist schon vom Betriebsystem genutzt wird und belegt ist.@boronsbruder sagte in [Linux Shell-Skript] WLAN-Wetterstation:
@mymeyer sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Listening on 0.0.0.0 1080
Ist das Absicht das du den Port von Socks-Proxy benutzt?
Wenn nicht, benutz mal einen anderen, da dieser meist schon vom Betriebsystem genutzt wird und belegt ist.Den Port hatte ich im Standard gelassen. Habe jetzt einen anderen ausprobiert. Selbes verhalten.
-
@boronsbruder sagte in [Linux Shell-Skript] WLAN-Wetterstation:
@mymeyer sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Listening on 0.0.0.0 1080
Ist das Absicht das du den Port von Socks-Proxy benutzt?
Wenn nicht, benutz mal einen anderen, da dieser meist schon vom Betriebsystem genutzt wird und belegt ist.Den Port hatte ich im Standard gelassen. Habe jetzt einen anderen ausprobiert. Selbes verhalten.
Selbst wenn ich ein Ping von dem Unifi Gateway (Console) machen kommt nichts zur
ü
ck 
root@unifi-lxc:/var/log/unifi# ping weatherstation.wunderground.com PING a60f001b0bdcd4f64a49719eb2307270-ee5cf64f94dbf2ed.elb.us-east-1.amazonaws.com (52.22.134.222) 56(84) bytes of data.Da muss doch irgendwas blocken...
hmm.....
-
Selbst wenn ich ein Ping von dem Unifi Gateway (Console) machen kommt nichts zur
ü
ck 
root@unifi-lxc:/var/log/unifi# ping weatherstation.wunderground.com PING a60f001b0bdcd4f64a49719eb2307270-ee5cf64f94dbf2ed.elb.us-east-1.amazonaws.com (52.22.134.222) 56(84) bytes of data.Da muss doch irgendwas blocken...
hmm.....
@mymeyer sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Da muss doch irgendwas blocken...
Nicht zwangsl
ä
ufig, man kann einen Webserver auch so konfigurieren, dass er nicht auf einen ping antwortet.
...und der "Wunderground.com" ist so konfiguriert.Ich setze mal voraus, dass die IP und Port in der App die richtigen (und gleichen) sind wie in der "conf"?
Auf dieser IP (egal ob "echter" Rechner, VM, Docker...) l
ä
uft, oder vielmehr soll dann das Skript laufen?
Wenn du "Wunderground" als Protokoll nutzt ist es elementar wichtig, dass du in der App bei den Customized-Einstellungen bei "path"/weatherstation/updateweatherstation.php?stehen hast und ganz wichtig, kein Leerzeichen davor oder danach! -
@mymeyer sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Da muss doch irgendwas blocken...
Nicht zwangsl
ä
ufig, man kann einen Webserver auch so konfigurieren, dass er nicht auf einen ping antwortet.
...und der "Wunderground.com" ist so konfiguriert.Ich setze mal voraus, dass die IP und Port in der App die richtigen (und gleichen) sind wie in der "conf"?
Auf dieser IP (egal ob "echter" Rechner, VM, Docker...) l
ä
uft, oder vielmehr soll dann das Skript laufen?
Wenn du "Wunderground" als Protokoll nutzt ist es elementar wichtig, dass du in der App bei den Customized-Einstellungen bei "path"/weatherstation/updateweatherstation.php?stehen hast und ganz wichtig, kein Leerzeichen davor oder danach! -
sagt dir dieser Fehler etwas?
Hab ich soeben im Log entdeckt.javascript.1 2024-06-06 01:03:00.021 error at processImmediate (node:internal/timers:478:21) javascript.1 2024-06-06 01:03:00.021 error at Immediate._onImmediate (/opt/iobroker/node_modules/@iobroker/db-states-redis/src/lib/states/statesInRedisClient.ts:379:37) javascript.1 2024-06-06 01:03:00.021 error at change (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/src/lib/adapter/adapter.ts:11082:45) javascript.1 2024-06-06 01:03:00.021 error at Object.cb (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:2993:38) javascript.1 2024-06-06 01:03:00.021 error at Object.<anonymous> (script.js.Wetter.Wetterstatistik:195:43) javascript.1 2024-06-06 01:03:00.021 error at Array.reduce (<anonymous>) javascript.1 2024-06-06 01:03:00.021 error Error in callback: TypeError: Reduce of empty array with no initial value javascript.1 2024-06-06 01:03:00.019 error script.js.Wetter.Wetterstatistik: Fehler beim Lesen der InfluxDB: Invalid call -
@sborg ES L
Ä
UFT 
Hi erstmal, kleiner Fehler, gro
ß
e Wirkung ! Es war der Port in der App unter Customized Einstellung.Danke f
ü
r euere Geduld




@mymeyer
Na supi und immer gerne
@Negalein
Leider nein.Fehler beim Lesen der InfluxDB: Invalid call
ist das Problem. Der Teil vor dem ":" stammt vom Skript selbst, Invalid call ist dann was nicht funktioniert hat. "Ung
ü
ltiger Aufruf" ist sehr aussagekr
ä
ftig [/Ironie AUS].
Hast du mal gestern/vorgestern nachgeschaut, tritt er da auch auf? Pauschal leider wieder ein Problem mit InfluxDB bei dir. Die restlichen Fehler sind dann nur das Resultat aus dem fehlgeschlagenen Versuch Daten aus der Influx zu lesen. -
@mymeyer
Na supi und immer gerne
@Negalein
Leider nein.Fehler beim Lesen der InfluxDB: Invalid call
ist das Problem. Der Teil vor dem ":" stammt vom Skript selbst, Invalid call ist dann was nicht funktioniert hat. "Ung
ü
ltiger Aufruf" ist sehr aussagekr
ä
ftig [/Ironie AUS].
Hast du mal gestern/vorgestern nachgeschaut, tritt er da auch auf? Pauschal leider wieder ein Problem mit InfluxDB bei dir. Die restlichen Fehler sind dann nur das Resultat aus dem fehlgeschlagenen Versuch Daten aus der Influx zu lesen.@sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Hast du mal gestern/vorgestern nachgeschaut, tritt er da auch auf?
Tats
ä
chlich!
Der Fehler kommt t
ä
glich zur selben Zeit.
Es l
ä
uft da aber auch kein Backup, usw., was zu Aussetzern f
ü
hren k
ö
nnte. -
@sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Hast du mal gestern/vorgestern nachgeschaut, tritt er da auch auf?
Tats
ä
chlich!
Der Fehler kommt t
ä
glich zur selben Zeit.
Es l
ä
uft da aber auch kein Backup, usw., was zu Aussetzern f
ü
hren k
ö
nnte.@negalein Vllt Zwangstrennung der Internet Leitung mit dem Resultat daraus das sich diesbez
ü
glich etwas aufstaut im internen Netzwerk? -
@negalein Vllt Zwangstrennung der Internet Leitung mit dem Resultat daraus das sich diesbez
ü
glich etwas aufstaut im internen Netzwerk?@crunchip sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Vllt Zwangstrennung der Internet Leitung mit dem Resultat daraus das sich diesbez
ü
glich etwas aufstaut im internen Netzwerk?gibt es bei mir nur alle 4 Wochen

wie kommt man an das Influx Log? Weisst du das?
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden