Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. (beantwortet) JS-variable mit sich selbst aktualisieren?

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    (beantwortet) JS-variable mit sich selbst aktualisieren?

    This topic has been deleted. Only users with topic management privileges can see it.
    • T
      tschombe last edited by

      ja erst einlesen:

      var result = getState("javascript.0.AnwesendMicha");
      setState("javascript.0.AnwesendMicha", result);
      
      

      aber was soll das eigentlich bringen???

      1 Reply Last reply Reply Quote 0
      • ruhr70
        ruhr70 last edited by

        .

        Ich danke Dir für die Antwort und Hilfe!

        Werde das gleich ausprobieren 🙂

        @tschombe:

        aber was soll das eigentlich bringen??? `

        Ich visualisiere mit Rickshaw ein paar Zustände (Interpolation: step-after) um Progammlogiken, die mit Node-red erstellt wurden, zu überprüfen und zu verfeinern.

        Rickshaw zieht bei mir den Strich vom letzten Zustand bis zum aktuellen Zeitpunkt nicht durch (was ja bei der eingestellten Interpolation logisch kein Problem sein sollte).

        Von drei Zuständen brauche ich den Strich bis rechts durchgezogen. Dies wollte ich nun realisieren, in dem ich den Zustand einfach von Zeit zu Zeit aktualisiere.

        327_rickshaw_logik.jpg

        Es geht mir um die markierten Zustände.

        Der Strich erscheint sonst erst, wenn sich der Zustand wieder ändert und ich denke an Rickshaw selbst kann niemand was ändern.

        1 Reply Last reply Reply Quote 0
        • T
          tschombe last edited by

          hatte ich vermutet, das es etwas mit datenlogging zu tun hat.

          man sollte versuchen das logging an der Stelle zu ändern

          Ich hab mich mit logging nicht beschäftigt, da wäre meiner Meinung nach entweder

          ein fix in der Rickshaw darstellung notwendig, oder man erlaubt so etwas wie ein

          "zyklisches" loggen.

          Ich weis nicht wie setValue() implementiert ist, aber da setValue() ja eine Kommunikation

          zu CCU triggert würde ich als entwickler die setValue() Funktion so implementieren, das ich

          den wert nur dann setze, wenn er sich auch tatsächlich verändert hat um unnötige kommunikation

          zu vermeiden.

          Dann würde dein "Workaround" überhaupt nichts bringen…

          1 Reply Last reply Reply Quote 0
          • ruhr70
            ruhr70 last edited by

            @tschombe:

            Ich weis nicht wie setValue() implementiert ist, aber da setValue() ja eine Kommunikation

            zu CCU triggert würde ich als entwickler die setValue() Funktion so implementieren, das ich

            den wert nur dann setze, wenn er sich auch tatsächlich verändert hat um unnötige kommunikation

            zu vermeiden.

            Dann würde dein "Workaround" überhaupt nichts bringen… `

            Ja, mir wäre auch lieber, wenn Rickshaw das anders darstellen würde.

            Die CCU dürfte doch gar nicht beteiligt sein oder?

            Es handelt sich doch um Javascript-Variablen aus ioBroker und nicht um Variablen aus der CCU.

            Ich werde berichten… danke noch einmal

            1 Reply Last reply Reply Quote 0
            • T
              tschombe last edited by

              ja richtig, ist ja eine reine script-variable.

              da ist die ccu natürlich nicht involviert.

              ich wollte nur andeuten, wie setValue vermutlich implementiert ist.

              Musst du einfach mal ausprobieren, aber daran denken das dieser Workaround

              dann in zukunft evtl nicht mehr funktioniert, wenn jemand an setValue z.B. optimiert.

              1 Reply Last reply Reply Quote 0
              • ruhr70
                ruhr70 last edited by

                Schade…

                Ich habe zum Test die Variable jede Minute aktualisiert:

                schedule("*/1 * * * *", function () {
                    var result = getState("javascript.0.AnwesendMicha");
                    setState("javascript.0.AnwesendMicha", result);
                });
                

                Es läuft auch durch und History trägt auch jede Minute den neuen Wert ein.

                Allerdings mit der alten Zeit 😞

                D.h. "Zeit" und "geändert" beim Ereignis und im Objekt sind immer noch die alten, dafür x-mal.

                Im Rickshawdiagramm hat sich daher auch nichts geändert.

                1 Reply Last reply Reply Quote 0
                • ruhr70
                  ruhr70 last edited by

                  Große Anfängerfrage als kleine Ergänzung zu meinem Problem.

                  Ist das denn eine "normale" Variable oder ist das ein Objekt?

                  Ich frage mich vorher denn die alten Zeiten herkommen.

                  Wenn die in dem "Objekt" stehen, müsste ich die beim neu Schreiben doch auch irgendwie aktualisieren können oder?

                  1 Reply Last reply Reply Quote 0
                  • Bluefox
                    Bluefox last edited by

                    @ruhr70:

                    Große Anfängerfrage als kleine Ergänzung zu meinem Problem.

                    Ist das denn eine "normale" Variable oder ist das ein Objekt?

                    Ich frage mich vorher denn die alten Zeiten herkommen.

                    Wenn die in dem "Objekt" stehen, müsste ich die beim neu Schreiben doch auch irgendwie aktualisieren können oder? `
                    probiere mal:

                    var result = getState("javascript.0.AnwesendMicha");
                    setState("javascript.0.AnwesendMicha", result ? result.val : false, true);
                    
                    

                    result ist {val: value, ts: timestamp, ack: true, lc: lastchange}

                    Damit gibst du alte Zeit immer mit und deswegen gibt es keine neue Zeit.

                    1 Reply Last reply Reply Quote 0
                    • ruhr70
                      ruhr70 last edited by

                      @Bluefox:

                      probiere mal:

                      var result = getState("javascript.0.AnwesendMicha");
                      setState("javascript.0.AnwesendMicha", result ? result.val : false, true);
                      
                      

                      result ist {val: value, ts: timestamp, ack: true, lc: lastchange}

                      Damit gibst du alte Zeit immer mit und deswegen gibt es keine neue Zeit. `

                      Schon einen Schritt weiter.

                      Die Erklärung für result habe ich verstanden. Danke! Das SetState noch nicht. Aber ich habe es direkt versucht.

                      Nun steht bei Zeit: die aktuelle Zeit des Eintrags

                      bei geändert die alte lastchange Zeit.

                      Unter Ereignisse sehe ich das auch so.

                      In History taucht kein Eintrag mit der neuen Zeit auf.

                      Kann ich noch Lastchange ändern?

                      1 Reply Last reply Reply Quote 0
                      • ruhr70
                        ruhr70 last edited by

                        Nachtrag 🙂

                        In History sehe ich den Eintrag nicht.

                        Im Rickshaw wird die Linie aber gezeichnet und wenn ich mit der Maus auf den letzten Datenpunkt gehe steht dort auch die letzte Zeit 🙂

                        Danke!!!

                        1 Reply Last reply Reply Quote 0
                        • First post
                          Last post

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        968
                        Online

                        31.8k
                        Users

                        80.0k
                        Topics

                        1.3m
                        Posts

                        3
                        11
                        3070
                        Loading More Posts
                        • Oldest to Newest
                        • Newest to Oldest
                        • Most Votes
                        Reply
                        • Reply as topic
                        Log in to reply
                        Community
                        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                        The ioBroker Community 2014-2023
                        logo