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. Zeit für ein setState? [gelöst]

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    4.0k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.2k

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.5k

Zeit für ein setState? [gelöst]

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
javascript
10 Beiträge 2 Kommentatoren 348 Aufrufe 1 Watching
  • Ä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.
  • SKBS Offline
    SKBS Offline
    SKB
    Developer Most Active
    schrieb am zuletzt editiert von SKB
    #1

    Hi Zusammen,
    ich habe mal eine Verständnisfrage. Wenn ich einen Datenpunkt auslese, diesen abändere und danach nochmals auslese, müsste ich ja einen anderen Wert bekommen, oder?

    Wieso erscheint bei diesem Mini-Skript denn immer derselbe Wert?
    Der Datenpunkt ist vom Typ "number"

    var dp = "javascript.0.Test.Test";
    var value = getState(dp).val;
    log(value);
    setState(dp,parseFloat(getState(dp).val) + 10,true);
    var newvalue = getState(dp).val;
    log(newvalue);
    

    ... wer nicht mit der Zeit geht, geht mit der Zeit ...

    Aktuelle Entwicklung: Energiefluss - erweitert (https://forum.iobroker.net/topic/64734)

    paul53P 1 Antwort Letzte Antwort
    0
    • SKBS SKB

      Hi Zusammen,
      ich habe mal eine Verständnisfrage. Wenn ich einen Datenpunkt auslese, diesen abändere und danach nochmals auslese, müsste ich ja einen anderen Wert bekommen, oder?

      Wieso erscheint bei diesem Mini-Skript denn immer derselbe Wert?
      Der Datenpunkt ist vom Typ "number"

      var dp = "javascript.0.Test.Test";
      var value = getState(dp).val;
      log(value);
      setState(dp,parseFloat(getState(dp).val) + 10,true);
      var newvalue = getState(dp).val;
      log(newvalue);
      
      paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von
      #2

      @SKB sagte:

      setState(dp,parseFloat(getState(dp).val) + 10,true);
      var newvalue = getState(dp).val;

      Das funktioniert deshalb nicht, weil setState() asynchron ausgeführt wird. Bei Einlesen des gleichen Datenpunktes ist setState() noch nicht fertig, man erhält also den alten Wert.

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

      SKBS 1 Antwort Letzte Antwort
      1
      • paul53P paul53

        @SKB sagte:

        setState(dp,parseFloat(getState(dp).val) + 10,true);
        var newvalue = getState(dp).val;

        Das funktioniert deshalb nicht, weil setState() asynchron ausgeführt wird. Bei Einlesen des gleichen Datenpunktes ist setState() noch nicht fertig, man erhält also den alten Wert.

        SKBS Offline
        SKBS Offline
        SKB
        Developer Most Active
        schrieb am zuletzt editiert von
        #3

        @paul53
        Danke für die Ausführung. Das hatte ich fast vermutet. Kann man eine Kontrolle erstellen, in der man dann prüft, wann setState fertig ist bzw. den aktuellen Wert liefern kann?

        ... wer nicht mit der Zeit geht, geht mit der Zeit ...

        Aktuelle Entwicklung: Energiefluss - erweitert (https://forum.iobroker.net/topic/64734)

        paul53P 1 Antwort Letzte Antwort
        0
        • SKBS SKB

          @paul53
          Danke für die Ausführung. Das hatte ich fast vermutet. Kann man eine Kontrolle erstellen, in der man dann prüft, wann setState fertig ist bzw. den aktuellen Wert liefern kann?

          paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von paul53
          #4

          @SKB sagte:

          Kann man eine Kontrolle erstellen, in der man dann prüft, wann setState fertig ist bzw. den aktuellen Wert liefern kann?

          Wozu soll das gut sein ? Innerhalb eines Scripts kann man Scriptvariablen verwenden.

          EDIT: Man kann setState() auch eine Callback-Funktion mitgeben, die ausgeführt wird, wenn setState() fertig ist.

          setState(dp,parseFloat(getState(dp).val) + 10,true, function() {
             var newvalue = getState(dp).val;
             log(newvalue);
          });
          

          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

          SKBS 1 Antwort Letzte Antwort
          0
          • paul53P paul53

            @SKB sagte:

            Kann man eine Kontrolle erstellen, in der man dann prüft, wann setState fertig ist bzw. den aktuellen Wert liefern kann?

            Wozu soll das gut sein ? Innerhalb eines Scripts kann man Scriptvariablen verwenden.

            EDIT: Man kann setState() auch eine Callback-Funktion mitgeben, die ausgeführt wird, wenn setState() fertig ist.

            setState(dp,parseFloat(getState(dp).val) + 10,true, function() {
               var newvalue = getState(dp).val;
               log(newvalue);
            });
            
            SKBS Offline
            SKBS Offline
            SKB
            Developer Most Active
            schrieb am zuletzt editiert von
            #5

            @paul53
            Das wäre z.B. sinnvoll, wenn man mehrere setState's ausführt und dann eine Addition der neuen Werte vollziehen möchte.
            Klar, das geht auch in einem Skript - aber es könnten ja auch andere Skripte den Datenpunkt lesen wollen und dann z.B. mit einem on-listening auf dem Datenpunkt neue Werte irgendwo hin schreiben.

            ... wer nicht mit der Zeit geht, geht mit der Zeit ...

            Aktuelle Entwicklung: Energiefluss - erweitert (https://forum.iobroker.net/topic/64734)

            paul53P 1 Antwort Letzte Antwort
            0
            • SKBS SKB

              @paul53
              Das wäre z.B. sinnvoll, wenn man mehrere setState's ausführt und dann eine Addition der neuen Werte vollziehen möchte.
              Klar, das geht auch in einem Skript - aber es könnten ja auch andere Skripte den Datenpunkt lesen wollen und dann z.B. mit einem on-listening auf dem Datenpunkt neue Werte irgendwo hin schreiben.

              paul53P Offline
              paul53P Offline
              paul53
              schrieb am zuletzt editiert von
              #6

              @SKB sagte:

              andere Skripte den Datenpunkt lesen wollen

              Dort triggert man auf den Datenpunkt und bekommt so die Änderung mit.

              @SKB sagte in Zeit für ein setState?:

              wenn man mehrere setState's ausführt und dann eine Addition der neuen Werte vollziehen möchte.

              Addition von Scriptvariablen, die die neuen Werte enthalten.

              Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
              Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

              SKBS 1 Antwort Letzte Antwort
              0
              • paul53P paul53

                @SKB sagte:

                andere Skripte den Datenpunkt lesen wollen

                Dort triggert man auf den Datenpunkt und bekommt so die Änderung mit.

                @SKB sagte in Zeit für ein setState?:

                wenn man mehrere setState's ausführt und dann eine Addition der neuen Werte vollziehen möchte.

                Addition von Scriptvariablen, die die neuen Werte enthalten.

                SKBS Offline
                SKBS Offline
                SKB
                Developer Most Active
                schrieb am zuletzt editiert von
                #7

                @paul53
                Richtig. Aber sagen wir mal, man hört auf einem Datenpunkt mit on und erwartet, dass auch die anderen Datenpunkte die neuen Werte enthalten, die soeben geschrieben (hätten) werden sollen. Dann kann es ja passieren, das man eben nicht alle aktellen Werte bekommt, da asynchron geschrieben wird.

                ... wer nicht mit der Zeit geht, geht mit der Zeit ...

                Aktuelle Entwicklung: Energiefluss - erweitert (https://forum.iobroker.net/topic/64734)

                paul53P 1 Antwort Letzte Antwort
                0
                • SKBS SKB

                  @paul53
                  Richtig. Aber sagen wir mal, man hört auf einem Datenpunkt mit on und erwartet, dass auch die anderen Datenpunkte die neuen Werte enthalten, die soeben geschrieben (hätten) werden sollen. Dann kann es ja passieren, das man eben nicht alle aktellen Werte bekommt, da asynchron geschrieben wird.

                  paul53P Offline
                  paul53P Offline
                  paul53
                  schrieb am zuletzt editiert von
                  #8

                  @SKB sagte:

                  Dann kann es ja passieren, das man eben nicht alle aktellen Werte bekommt, da asynchron geschrieben wird.

                  Der Fall ist mir noch nicht untergekommen. Notfalls verzögert man die Abfrage der anderen Datenpunkte etwas (50 ms).

                  Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                  Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                  SKBS 1 Antwort Letzte Antwort
                  1
                  • paul53P paul53

                    @SKB sagte:

                    Dann kann es ja passieren, das man eben nicht alle aktellen Werte bekommt, da asynchron geschrieben wird.

                    Der Fall ist mir noch nicht untergekommen. Notfalls verzögert man die Abfrage der anderen Datenpunkte etwas (50 ms).

                    SKBS Offline
                    SKBS Offline
                    SKB
                    Developer Most Active
                    schrieb am zuletzt editiert von
                    #9

                    @paul53
                    Das wäre jetzt auch meine einzige Idee. Danke für die Ausführung!

                    ... wer nicht mit der Zeit geht, geht mit der Zeit ...

                    Aktuelle Entwicklung: Energiefluss - erweitert (https://forum.iobroker.net/topic/64734)

                    paul53P 1 Antwort Letzte Antwort
                    0
                    • SKBS SKB

                      @paul53
                      Das wäre jetzt auch meine einzige Idee. Danke für die Ausführung!

                      paul53P Offline
                      paul53P Offline
                      paul53
                      schrieb am zuletzt editiert von
                      #10

                      @SKB
                      Habe meine Antwort oben noch um die Callback-Funktion von setState() ergänzt.

                      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                      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

                      483

                      Online

                      32.7k

                      Benutzer

                      82.4k

                      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