NEWS
[Linux Shell-Skript] WLAN-Wetterstation
-
@boronsbruder
Zeit von Zeile 2 - Zeile 3Edit: geht auch so:
let Startzeit = new Date(); sendTo('influxdb.0', 'query', 'from(bucket: "iobroker") |> range(start: -24h) |> filter(fn: (r) => r._measurement == "0_userdata.0.Wetterstation.Aussentemperatur")', function (result) { if (result.error) { console.error(result.error); } else { let Endezeit = new Date(); // show result console.log('Fertig! Rows: ' + JSON.stringify(result.result[0].length) +' Dauer: ' + (Endezeit.getTime()-Startzeit.getTime()) + ' ms'); } });
Liefert dann:
10:16:04.177 info javascript.0 (2815519) script.js.common.1_1_Test: Fertig! Rows: 2924 Dauer: 149 ms
-
@viper4iob
@latzi
Na dann:
12:38:16.606 info javascript.0 (3146202) script.js.common.test_influx: Fertig! Rows: 137548 Dauer: 3061 ms
-
@latzi sagte in [Linux Shell-Skript] WLAN-Wetterstation:
let Startzeit = new Date(); sendTo('influxdb.0', 'query', 'from(bucket: "iobroker") |> range(start: -24h) |> filter(fn: (r) => r._measurement == "0_userdata.0.Wetterstation.Aussentemperatur")', function (result) { if (result.error) { console.error(result.error); } else { let Endezeit = new Date(); // show result console.log('Fertig! Rows: ' + JSON.stringify(result.result[0].length) +' Dauer: ' + (Endezeit.getTime()-Startzeit.getTime()) + ' ms'); } });
Ich habe den Test nun auch gestartet. Influxdb läuft als Docker auf der Sinologie DS920+
2023-03-04 13:18:44.732 info Stop script script.js.TEST.Test_Performance_Influxdb javascript.0 2023-03-04 13:18:40.244 info script.js.TEST.Test_Performance_Influxdb: Fertig! Rows: 7228 Dauer: 200 ms javascript.0 2023-03-04 13:18:40.044 info script.js.TEST.Test_Performance_Influxdb: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions javascript.0 2023-03-04 13:18:40.035 info Start javascript script.js.TEST.Test_Performance_Influxdb
-
Hier sieht das so aus:
javascript.0 (3488667) script.js.common.Test.Influxtestv2: Fertig! Rows: 52 Dauer: 16 ms
-
wo holst du dir die Daten von
0_userdata.0.VIS.Wetter.Regenvorschau
her?
wie sehen bei dir die Alias aus (
true
wird1
,false
wird0
), bzw. wie wandle ich mit einem Alias true in 0, usw.?
-
@ilovegym sagte in [Linux Shell-Skript] WLAN-Wetterstation:
javascript.0 (3488667) script.js.common.Test.Influxtestv2: Fertig! Rows: 52 Dauer: 16 ms
@viper4iob wie sieht´s bei dir mit dieser Abfrage aus?
-
@g-hawk Da funktioniert die Verbindung "Display/Gateway" zum "Rechner auf dem das Skript läuft" nicht korrekt.
Die IP in der WS-View[+]-App ist korrekt?
Du nutzt "Wunderground" als Format, da ist auch der Stationsname wichtig (APP wie auch in der *.conf. Müssen beide identisch sein [case sensitiv]): -
@negalein sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Beim Import des Dashboard beim Konfig Dialog hab ich dann die passenden DS ausgewählt.
Allerdings holt er sich keine Daten, da das Bucket nicht übernommen wird.Das war/ist auch soweit alles korrekt. Mit der ganz neuen Grafana-Version habe ich es noch nicht probiert (es kamen die Tage drei Updates), aber ich glaube da hat sich diesbzgl. ein Bug eingeschlichen. Als ich es exportiert habe ging es noch. Dann hatte ich plötzlich ein ähnliches Problem. Nach einer Änderung im Widget konnte ich partout keine Werte auswählen.
Erst nach einem Klick auf "Apply" und erneutem laden des Widget war dies möglich. -
@negalein sagte in [Linux Shell-Skript] WLAN-Wetterstation:
wie sehen bei dir die Alias aus (true wird 1, false wird 0), bzw. wie wandle ich mit einem Alias true in 0, usw.?
Ganz, ganz schwerer Voodoo
val ? 1 : 0
wo holst du dir die Daten von 0_userdata.0.VIS.Wetter.Regenvorschauher?
Aus dem Weatherunderground-Adapter mittels Skript:
/* Wunderground Regen Abfrage des Weatherunderground Adapters im Bereich Vorhersage, wann der nächste Regen erwartet wird. Findet in den forecastHourly-Datenpunkt den ersten Regen-Eintrag Ausgabe in Text ("kein Regen", "X Stunden (X% [Wahrscheinlichkeit])") http://forum.iobroker.net/viewtopic.php?f=21&t=3447#p31858 01.08.2016 erstellt von Pix unter Nutzung des obigen Skriptes 28.06.2017 Korrekturen 12.07.2017 Fehler abfangen und Typ Variable auf String geändert 06.03.2019 Code optimiert berücksichtigt Niederschlag in der aktuellen Stunde (Stunde 0) 11.06.2019 auf neue Datenpunkte angepasst für weatherground-Adapter (getestet V3.0.11) 04.08.2019 geändert für Wunderground Adapter 3.1.1 08.03.2021 Codeoptimierungen @SBorg */ const vorstd = 36; // Vorschau in Stunden (Weatherunderground bietet neuerdings bis 36h Vorschau), kann hier auch kleiner sein const idRegen = "0_userdata.0.VIS.Wetter.Regenvorschau"; // Ziel-Datenpunkt const wunder_inst = "weatherunderground.0."; // Weatherground-Adapter Instanz const logging = false; createState(idRegen, "kein Regen", { name: "Regenvorschau", type: "string", role: "text" }); function berechneZeit() { if (logging) log("Berechne Dauer in Stunden bis zum nächsten Regen"); let data=0, pop=0; for (let i=0; i<vorstd; i++) { data = getState(wunder_inst + "forecastHourly." + i + "h.precipitation").val; if (data > 0) { pop = getState(wunder_inst + "forecastHourly." + i + "h.precipitationChance").val; if (logging) log("Regeneintrag gefunden bei " + i + "h " + data + "mm"); if (i == 0) { // wenn jetzt Regen if (logging) log("In dieser Stunde werden " + data + "mm Regen erwartet (Wahrscheinlichkeit " + pop + "%)"); setState(idRegen, "jetzt (" + pop + "%)", true); } else { if (logging) log("In " + i + " Stunden werden " + data + "mm Regen erwartet (Wahrscheinlichkeit " + pop + "%)"); if (i==1) { setState(idRegen, "1 Stunde (" + pop + "%)", true); } else { setState(idRegen, i + " Stunden (" + pop + "%)", true); } } i=vorstd-1; // beim ersten Auftreten der Regenwahrscheinlichkeit über 0 abbrechen } if ((i == vorstd-1) && (pop == 0)) { setState(idRegen, "Kein Regen erwartet (" + pop + "%)", true); if (logging) log("Kein Regen erwartet (" + pop + "%)"); } } } // bei jeglicher Aktualisierung von Weatherunderground Berechnung starten on({ id: /^weatherunderground\.[0-9]+\.forecast.*\.[0-9]+h\.precipitation$/, // forecastHourly, forecastDaily, forecast change: "any" }, berechneZeit); // bei Skriptstart berechneZeit();
-
@sborg
Hallo Danke für deine Antwort.
Ich habe alles geprüft und es ist alles richtig.
Interessant war dass nach einem Reboot einmal die Daten geholt wurden und dann nicht mehr.
Dann habe ich probiert ein update vom Rasberry zu machen und habe Fehler bezüglich der Schlüssel von Influx und Grafana bekommen.
Den Influx update Fehler konnte ich beseitigen. Grafana noch nicht.
Aber nach der Update Aktion läuft alles wieder.
Ich weiß nur nicht woran es nun lag.Gruß
-
@boronsbruder said in [Linux Shell-Skript] WLAN-Wetterstation:
@viper4iob
@latzi
Na dann:
12:38:16.606 info javascript.0 (3146202) script.js.common.test_influx: Fertig! Rows: 137548 Dauer: 3061 ms
Waren das alle measurements über 24h?
EDIT:
Bei mir sah es über alle Measurements der letzten 24h so aus:
script.js.Test.Test3: Fertig! Rows: 130968 Dauer: 11482 ms
Nur Außentemperatur so:
script.js.Test.Test3: Fertig! Rows: 1972 Dauer: 102 msEin Wert geht eigentlich noch recht schnell.
Wenn man im iobroker in den Objekten bei der Außentemperatur auf die benutzerdefinierten Einstellungen geht (das Zahnrad) und die Verlaufsdaten der letzten 24h anschauen will, dann warte ich da etwa 10 sek bis die da sind.
Wenn der Influx Adapter auf V1.x läuft, dauert das nicht mal eine Sekunde.
Und auch wenn man den EChart Adapter benutzt, dauert der Aufbau eines Graphen im V2.x Modus mehrere Sekunden.
Irgendwo ist da also noch der Wurm drin mit dem Influx Adapter. -
@viper4iob
jalet Startzeit = new Date(); sendTo('influxdb.1', 'query', 'from(bucket: "wetter") |> range(start: -24h)', function (result) { if (result.error) { console.error(result.error); } else { let Endezeit = new Date(); // show result console.log('Fertig! Rows: ' + JSON.stringify(result.result[0].length) +' Dauer: ' + (Endezeit.getTime()-Startzeit.getTime()) + ' ms'); } });
Und bei mir laufen gerade 4 Influx-Instanzen 1x v1 und 3x v2 parallel
Edit:
Hab das mit den Verlaufsdaten AUSSENTEMPERATUR mal getestet und für die Daten vom 01.01.2021 - 05.02.2023 --> 9 sek -- letzte 24h 4 sek... -
@boronsbruder
Hab meine Werte oben eingefügt.
Über alle Werte dauert es bei mir zwar deutlich länger, aber ein einzelner Wert geht generell gesehen noch recht schnell und erklärt nicht, warum der Abruf der Verlaufsdaten so lange dauert (Erklärung siehe oben) .
Vielleicht kannst du mal checken, wie lange das bei dir dauert. -
@viper4iob
siehe oben -
@boronsbruder
Wenn du den Zeitraum umstellst, geht der Aufruf schneller.
Stell ihn mal auf 24h, geh aus den Einstellungen raus und wieder rein, dann dauert es wahrscheinlich auch die 9 sek.
Der erste Aufruf dauert irgendwie gefühlt immer gleich lang, als würden die erst mal alles abfragen und dann nochmal die Zeitspanne auf die Einstellung eingrenzen.
Aber im Prinzip ist es mir an der Stelle wurscht, soll nur zeigen, dass da im Vergleich zu v1.x ein Performance Problem zu sein scheint.
Mein Problem ist eigentlich, das im v2.x Modus auch Graphen vom ECharts Adapter pro Graph jetzt mehrere Sekunden Ladezeit haben und das nervt gewaltig.
Bin deshalb aktuell dabei, diese Graphen in Grafana nachzubauen und die dann als iFrame in jarvis statt den ECharts zu embedden.
Solange muss ich noch auf v1.x bleiben. -
@viper4iob
Bei Neu-Aufruf dauert es schon ewig, bis die 2 Felder von 1.1.1970 auf die richtigen Daten umspringen.
Aber das gehört dann nicht hier in den Wetterstation-Thread -
@boronsbruder said in [Linux Shell-Skript] WLAN-Wetterstation:
@viper4iob
Bei Neu-Aufruf dauert es schon ewig, bis die 2 Felder von 1.1.1970 auf die richtigen Daten umspringen.
Aber das gehört dann nicht hier in den Wetterstation-ThreadDa stimme ich zu, der Kreis schließt sich, da ich dadurch aktuell auch nicht auf das neue Wetterstatistik-Skript gehen kann.
Mir ging es eigentlich nur mal darum, ob das ein allgemeines Problem mit dem Influx-Adapter ist, oder nur ich ein selbst verursachtes Problem habe. Da ich nicht der Einzige bin, scheint es ersteres zu sein. -
Mal ne Frage:
Kann es sein, dass Awekas mittlerweile den Upload der Luftdruck-Werte korrekt annimmt und ich das verpennt habe?Es gab ja das Problem, dass die nur den absoluten Luftdruck angenommen hatten und man musste dann dort einen Korrektur-Wert angeben, um auf den relativen Luftdruck zu kommen. Bei mir ist dieser 37,5.
Nun wurde mir am 01.03. von Awekas der Upload für den Luftdrucksensor deaktiviert, weil ein Wert von 1057 hPa übertragen wurde, der natürlich überhaupt nicht hinhaut.
Ich habe gerade die Historie gecheckt, an dem Tag lag der relative Luftdruck um die 1020 hPa am Nachmittag.
Der Korrektur-Wert wurde also statt auf den absoluten jetzt auf den relativen Luftdruck aufaddiert.
Das würde im Umkehrschluß bedeuten, dass jetzt der relative Luftdruck korrekt übertragen wird und man den Korrektur-Wert entfernen kann.UPDATE:
Ich habe den Korrektur-Wert entfernt, so dass er quasi 0 ist, dann von Awekas die Deaktivierung aufheben lassen und jetzt passt der Wert, auch ohne Korrektur. -
Moin @SBorg , nachdem ich vor 2 Tagen alles umgestellt habe auf die V3 ist mir heute
in der VIS aufgefallen das der Wert für min.Temperatur nicht stimmt bzw.
nicht richtig angezeigt wird.
Der Datenpunkt von 0_userdata.0.Wetterstation.Info.Temp_Aussen_Heute_min
Sieht so aus das die Daten von 0_userdata.0.Wetterstation.Info.Temp_Aussen_Heute_max
auch in 0_userdata.0.Wetterstation.Info.Temp_Aussen_Heute_min geschrieben werden.
In beiden sind die selben Uhrzeiten und die gleichen Werten vorhanden. -
@nashra
in diesen Fehler bin ich auch gerannt. Schau mal in der wetterstation.conf ober dort dieser Eintrag#Protokoll (HTTP oder HTTPS) / default: HTTP INFLUX_WEB=HTTP
vorhanden ist. Der hat bei mir gefehlt. Warum? - konnte ich nicht verifizieren. Dann kamen die Werte korrekt.