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.8k

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

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

(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.
  • 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

                      823

                      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