NEWS

Hilfe, irgend ein Script verhaut mein Daten


  • Hi Leute.
    Ich logge über IoBroker meinen Stromverbrauch, Wasserverbrauch usw. in eine InfluxDB und visualisiere dann die Daten über Grafana.
    Ich habe mir einige Scripte aus Blocky gebaut um z.B. meinen Wasserverbrauch der letzte 7 Tage zu loggen, damit ich da immer nen Überblick über die Woche habe.
    Das gleiche habe ich für Stromverbrauch, PV-Erzeugung usw.

    Dafür habe ich 7 Datenpunkte, in denen jeweils die Verbrauchsdaten der letzten 7 Tage gespeichert werden.
    Das Script verschiebt um 00:00 Uhr die Daten von Datenpunkt "heute" zum Datenpunkt "gestern".
    "Gestern" wird zu "vorgestern" usw.
    Anbei ein BeispielScript:
    6e074268-235c-4fdc-b0fc-41209cb77978-image.png

    Mein Problem ist, dass es manchmal vorkommt, dass um 00:01 alle Datenpunkte nochmal verschoben werden, warum das so ist weiß ich leider nicht.
    Dann werden um 00:00 Uhr die Daten verschoben und "heute" auf 0 gesetzt.
    Um 00:01 passiert das ganze manchmal dann aber nochmal, so dass alle Werte direkt nochmal verschoben werden.
    Dann erhalte ich bei "gestern" natürlich 0 als Wert.
    Ausgelöst wird es laut Log durch javascript.0 , ich weiß aber nicht durch welches Script.
    Habe alle Scripte überprüft und kann den Fehler einfach nicht finden.
    Hat einer ne Idee ob man noch besser loggen kann um die Ursache zu finden?
    Es passiert immer genau um 00:01 Uhr.
    Danke!

    247c0999-accf-4864-82b3-00cef3e1532c-image.png

    f99842c3-42a5-4edc-8cad-5ea3afc12261-image.png

  • Starter

    Atifan bauch doch mal timeouts rein? ich vermute einfach, der Script kommt manchmal nicht hinterher, nehme pro ausführung mindestens 1-2 Sekunden zeit, das ganze muss ja hin und her geschrieben werden. Mal kann es funktionieren mal nicht, hängt vermutlich evt die Auslastung deines Servers.

    Sowie ein Timeout am unteren Script,nicht das genau an diesem Zeit Wasser läuft und der den Wert Aktuallisiert.

  • Developer

    Atifan

    Neben dem was canim geschrieben hat empfehle ich Dir noch das Lesen und Schreiben voneinander zu trennen, i.e. als erstes die Werte zu holen und in lokalen Variablen zu speichern (alle 6), und dann (nach einem Timeout) diese wieder raus zu schreiben.

    Der (aus meiner Sicht) Ideale Zeitablauf ist:

    • den aktuellen Wert holen und in eine Variable speichern
    • die anderen Werte holen und in eine Variable speichern
    • den aktuellen Wert mit 0 Belegen
    • Timeout von 10 Sekunden
    • alle anderen Werte mit den in den Variablen gespeicherten Werten sichern.

    Insbesondere wenn Du diesen Aufwand für mehrere Messwerte immer um Mitternacht machst kann es ansonsten zu verschränkungen wegen der asynchronen Abarbeitung der Objektbaumzugriffe kommen.

    A.
    p.s. Ich muss heute nachmittag noch einmal schauen, aber ich glaube es gibt in Grafana einen deutlich einfacheren Weg an diese Darstellung zu kommen - ohne das du um Mitternacht die ganzen Werte umschreiben musst.

  • Forum Testing Most Active

    Asgothian sagte in Hilfe, irgend ein Script verhaut mein Daten:

    glaube es gibt in Grafana einen deutlich einfacheren Weg

    Ja gibt es
    Atifan macht das so umständlich, weil er es mit sourceanalytics nicht hinbekommt, wenn ich mich richtig erinnere


  • Hi schonmal vielen Dank für eure Tipps, probiere das mal mit den Script Timeouts und Änderungen.
    Wenns in Grafana einfacher geht wär natürlich noch besser.
    Sourceanalytics funktioniert leider aktuell nicht was das angeht und ich wollte nicht noch länger warten bis das gefixt wird und habe daher versucht es über eigene Scripts zu realisieren. Im Prinzip funktioniert es auch wunderbar, bis auf den komischen Bug den ich irgendwo habe 😞


  • canim sagte in Hilfe, irgend ein Script verhaut mein Daten:

    Atifan bauch doch mal timeouts rein? ich vermute einfach, der Script kommt manchmal nicht hinterher, nehme pro ausführung mindestens 1-2 Sekunden zeit, das ganze muss ja hin und her geschrieben werden. Mal kann es funktionieren mal nicht, hängt vermutlich evt die Auslastung deines Servers.

    Sowie ein Timeout am unteren Script,nicht das genau an diesem Zeit Wasser läuft und der den Wert Aktuallisiert.

    Ich optimiere gerade meine Scripte, aber weiss nicht wie ich im unteren Script ein Timeout einstellen kann zwischen 23:59 und 00:02. Geht das überhaupt? Also das das Script nur von 00:02 bis 23:59 ausgeführt wird und dann 3 Minuten im Timeout ist und nicht ausgeführt wird.

  • Developer

    Atifan Das geht zwar, löst aber Dein Problem nicht. Ich gehe nicht davon aus das das script doppelt läuft, sondern das das lesen und schreiben der Datenpunkte auf Grund der asynchronen Abarbeitung überlappt.

    A.


  • Asgothian Hm ok, Ja muss halt testen woran es hängt, mehr bleibt mir nicht übrig.
    Das komische ist ja, wenn es passiert dann immer genau zur selben Zeit um 00:01, da müsste das Script eigentlich schon lang abgearbeitet sein.
    Naja werde das Problem schon irgendwie in den Griff bekommen (hoffentlich).

  • Developer

    Wenn du in jedem deiner "umkopierblöcke" den haken bei "mit Verzögerung" setzt, und jeweils die Verzögerung um 1 Sekunde höher als beim vorherigen machst solltest du schon sehen was passiert.

    Kleine Anpassung - wenn der Fehler dann weg ist war es das async problem.

    A.

  • Starter

    Asgothian das ist es was ich meine. bzw auf dem Punkt bringen wollte


  • Hi, wollte nur mal Zwischenstand geben.
    Es läuft jetzt seit 1 Woche fehlerfrei, d. h. sehr wahrscheinlich war es wirklich das async Problem.
    Nochmal Danke an alle 🙂
    Sollte der Fehler doch nochmal auftreten melde ich mich wieder.

    b181bbf2-0a43-42da-aaba-40380ab0136f-image.png


  • Hi.
    Das Problem ist heute Nacht um 00:01:02.002 leider wieder vorgekommen.
    Immer gleiche Uhrzeit aber der Tag ist anscheinend Zufall.
    Hat einer noch ne Idee wie ich die Ursache finden könnte?
    Geloggt wurde um die Zeit nichts.
    Hab keine Ahnung woran das liegen soll.

  • Developer

    Atifan Was hast du an log ausgaben im Skript ?

    A.


  • Asgothian Also im Script selbst ist garnix geloggt.
    Im Log vom Iobroker ist auch nix geloggt um die Uhrzeit.
    Habe den javascript Adapter Log jetzt aber mal auf "debug" umgestellt, dass man falls es wieder vorkommt evtl. mehr sieht.

  • Developer

    Atifan Stell den mal zurück, und füge in das Skript eine Debug-Ausgabe als erstes im Zeitplan ein. Wenn der Fehler dann nocheinmal auftaucht sehen wir was da ist.

    A.


  • Asgothian Meinst du die Einstellung für Logging im Javascript Adapter wieder zurückstellen auf Info?

    Bei den Scripten weiß ich ja garnicht genau welches das Problem verursacht. Ich bin nicht mal sicher ob ein Script überhaupt die Ursache ist oder doch was anderes.

    Soll ich vor jedes Script so eine Debugausgabe machen?

    f815af0c-66ac-44be-a813-28830787bc74-image.png


  • Hi.
    Mein Problem tritt immer noch auf.
    Was ich mittlerweile aber herausgefunden habe ist, dass es immer am gleichen Tag in der Woche passiert.
    Es passiert immer in jeder Woche in der Nacht von Donnerstag auf Freitag um 00:00 Uhr!

    Ich komme aber leider nicht dahinter warum das gerade an diesen Tagen immer passiert.
    Ich hab keinen Cronjob dafür laufen.
    Hat jemand ne Idee was das sein könnte?

  • Developer

    Atifan
    Hast du dir Debug Ausgaben eingebaut ? Nicht vor dem Zeitplan sondern IM Zeitplan ?

    A.

  • Starter

    Atifan Ersetze mal probeweise den Zeitplan gegen das CRON-Equivalent. Der Zeitplan ist etwas buggy, ich habe dafür (allerdings zu einem ganz anderen Problem) schon ein Issue geöffnet.

Suggested Topics

2.0k
Online

34.7k
Users

40.8k
Topics

558.8k
Posts