Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. (beantwortet) JS-variable mit sich selbst aktualisieren?

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.7k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.1k

(beantwortet) JS-variable mit sich selbst aktualisieren?

Geplant Angeheftet Gesperrt Verschoben JavaScript
11 Beiträge 3 Kommentatoren 3.2k Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • ruhr70R Offline
    ruhr70R Offline
    ruhr70
    schrieb am zuletzt editiert von
    #1

    Eine Anfängerfrage in die Runde (ich brauche hier einen kurzen Denkanstoss).

    Ich möchte jede 1/4h eine Javascriptvariable mit sich selbst aktualisieren.

    Die Zeile:

    setState("AnwesendMicha","javascript.0.AnwesendMicha");

    Sorgt ja dafür, dass ich den Variablennamen in die Variable schreibe und nicht den Inhalt.

    Kann mir da bitte jemand kurz helfen.

    Adapter: Fritzbox, Unify Circuit
    Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

    1 Antwort Letzte Antwort
    0
    • T Offline
      T Offline
      tschombe
      schrieb am zuletzt editiert von
      #2

      ja erst einlesen:

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

      aber was soll das eigentlich bringen???

      1 Antwort Letzte Antwort
      0
      • ruhr70R Offline
        ruhr70R Offline
        ruhr70
        schrieb am zuletzt editiert von
        #3

        .

        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.

        Adapter: Fritzbox, Unify Circuit
        Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

        1 Antwort Letzte Antwort
        0
        • T Offline
          T Offline
          tschombe
          schrieb am zuletzt editiert von
          #4

          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 Antwort Letzte Antwort
          0
          • ruhr70R Offline
            ruhr70R Offline
            ruhr70
            schrieb am zuletzt editiert von
            #5

            @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

            Adapter: Fritzbox, Unify Circuit
            Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

            1 Antwort Letzte Antwort
            0
            • T Offline
              T Offline
              tschombe
              schrieb am zuletzt editiert von
              #6

              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 Antwort Letzte Antwort
              0
              • ruhr70R Offline
                ruhr70R Offline
                ruhr70
                schrieb am zuletzt editiert von
                #7

                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.

                Adapter: Fritzbox, Unify Circuit
                Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

                1 Antwort Letzte Antwort
                0
                • ruhr70R Offline
                  ruhr70R Offline
                  ruhr70
                  schrieb am zuletzt editiert von
                  #8

                  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?

                  Adapter: Fritzbox, Unify Circuit
                  Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

                  1 Antwort Letzte Antwort
                  0
                  • BluefoxB Offline
                    BluefoxB Offline
                    Bluefox
                    schrieb am zuletzt editiert von
                    #9

                    @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 Antwort Letzte Antwort
                    0
                    • ruhr70R Offline
                      ruhr70R Offline
                      ruhr70
                      schrieb am zuletzt editiert von
                      #10

                      @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?

                      Adapter: Fritzbox, Unify Circuit
                      Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

                      1 Antwort Letzte Antwort
                      0
                      • ruhr70R Offline
                        ruhr70R Offline
                        ruhr70
                        schrieb am zuletzt editiert von
                        #11

                        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!!!

                        Adapter: Fritzbox, Unify Circuit
                        Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

                        1 Antwort Letzte Antwort
                        0
                        Antworten
                        • In einem neuen Thema antworten
                        Anmelden zum Antworten
                        • Älteste zuerst
                        • Neuste zuerst
                        • Meiste Stimmen


                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        805

                        Online

                        32.4k

                        Benutzer

                        81.5k

                        Themen

                        1.3m

                        Beiträge
                        Community
                        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                        ioBroker Community 2014-2025
                        logo
                        • Anmelden

                        • Du hast noch kein Konto? Registrieren

                        • Anmelden oder registrieren, um zu suchen
                        • Erster Beitrag
                          Letzter Beitrag
                        0
                        • Home
                        • Aktuell
                        • Tags
                        • Ungelesen 0
                        • Kategorien
                        • Unreplied
                        • Beliebt
                        • GitHub
                        • Docu
                        • Hilfe