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. setState nur wenn Wert noch nicht gesetzt ist?

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.1k

setState nur wenn Wert noch nicht gesetzt ist?

Geplant Angeheftet Gesperrt Verschoben JavaScript
12 Beiträge 6 Kommentatoren 858 Aufrufe 6 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.
  • SchmakusS Offline
    SchmakusS Offline
    Schmakus
    Developer
    schrieb am zuletzt editiert von
    #1

    Hi,
    gibt es einen Befehl für setState, welchen den Wert nur dann setzt, wenn er nicht schon vorhanden ist?
    Aktuell mache ich es über getState und vergleiche den Wert mit dem zu setzenden Wert.

            let oldval = getState(path).val;
            if(oldval != value){
    

    Grüße
    Schmakus

    Dev of LightControl Adapter, Contributor of HUE and DoorBird Adapter

    OliverIOO paul53P UncleSamU ? 4 Antworten Letzte Antwort
    0
    • SchmakusS Schmakus

      Hi,
      gibt es einen Befehl für setState, welchen den Wert nur dann setzt, wenn er nicht schon vorhanden ist?
      Aktuell mache ich es über getState und vergleiche den Wert mit dem zu setzenden Wert.

              let oldval = getState(path).val;
              if(oldval != value){
      

      Grüße
      Schmakus

      OliverIOO Offline
      OliverIOO Offline
      OliverIO
      schrieb am zuletzt editiert von
      #2

      @schmakus sagte in setState nur wenn Wert noch nicht gesetzt ist?:

      Hi,
      gibt es einen Befehl für setState, welchen den Wert nur dann setzt, wenn er nicht schon vorhanden ist?
      Aktuell mache ich es über getState und vergleiche den Wert mit dem zu setzenden Wert.

              let oldval = getState(path).val;
              if(oldval != value){
      

      Grüße
      Schmakus

      willst du setstate nur schreiben, wenn noch nie etwas geschrieben wurde?
      dann machst du die Abfrage bei der Objekterstellung und schreibst einen initialwert.

      wenn du nochmal den gleichen wert drüberschreibst ist das ja nicht so schlimm.
      wenn du den datenpunkt mit dem history-adapter aufzeichnest und dort keine gleichen werte haben möchtest, dann kann man da eine Option anklicken "nur Änderungen aufzeichnen"

      Meine Adapter und Widgets
      TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
      Links im Profil

      1 Antwort Letzte Antwort
      0
      • SchmakusS Schmakus

        Hi,
        gibt es einen Befehl für setState, welchen den Wert nur dann setzt, wenn er nicht schon vorhanden ist?
        Aktuell mache ich es über getState und vergleiche den Wert mit dem zu setzenden Wert.

                let oldval = getState(path).val;
                if(oldval != value){
        

        Grüße
        Schmakus

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

        @schmakus sagte: gibt es einen Befehl für setState, welchen den Wert nur dann setzt, wenn er nicht schon vorhanden ist?

        Du meinst, wenn der neue Wert ungleich dem vorhanden Wert ist?
        Das muss man mit getState(id).val zum Vergleich machen, es sei denn, man hat den Wert aus einem Trigger auf den zu schreibenden Datenpunkt in einer Variablen.

        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
        • SchmakusS Schmakus

          Hi,
          gibt es einen Befehl für setState, welchen den Wert nur dann setzt, wenn er nicht schon vorhanden ist?
          Aktuell mache ich es über getState und vergleiche den Wert mit dem zu setzenden Wert.

                  let oldval = getState(path).val;
                  if(oldval != value){
          

          Grüße
          Schmakus

          UncleSamU Offline
          UncleSamU Offline
          UncleSam
          Developer
          schrieb am zuletzt editiert von
          #4

          @schmakus Es gibt eigentlich keinen Grund, nur "veränderte" Werte zu schreiben. Alles in ioBroker ist so ausgelegt, dass es mit gleichen Werten umgehen kann. In Skripten kann man auch auf "change" triggern. Und History kann auch filtern. Zudem ist das ja der aktuelle Wert und den mit dem Zeitstempel zu schreiben entspricht der "echten Welt".

          Bitte bei Problemen mit meinen Adaptern, Issue auf GitHub erfassen: Loxone | I2C | Luxtronik2
          ♡-lichen Dank an meine Sponsoren

          paul53P 1 Antwort Letzte Antwort
          0
          • UncleSamU UncleSam

            @schmakus Es gibt eigentlich keinen Grund, nur "veränderte" Werte zu schreiben. Alles in ioBroker ist so ausgelegt, dass es mit gleichen Werten umgehen kann. In Skripten kann man auch auf "change" triggern. Und History kann auch filtern. Zudem ist das ja der aktuelle Wert und den mit dem Zeitstempel zu schreiben entspricht der "echten Welt".

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

            @unclesam sagte: Es gibt eigentlich keinen Grund, nur "veränderte" Werte zu schreiben.

            Doch, wenn der Wert gesendet wird: Duty cycle, Störpegel.

            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

            SchmakusS 1 Antwort Letzte Antwort
            0
            • paul53P paul53

              @unclesam sagte: Es gibt eigentlich keinen Grund, nur "veränderte" Werte zu schreiben.

              Doch, wenn der Wert gesendet wird: Duty cycle, Störpegel.

              SchmakusS Offline
              SchmakusS Offline
              Schmakus
              Developer
              schrieb am zuletzt editiert von
              #6

              Mir geht es hauptsächlich wie @paul53 geschrieben hat, um die Auslastung diverser Protokolle.
              In meinem Fall geht es um Zigbee. Wenn ich z.B. 8 Lampen gleichzeitig ansteuere (über eine Gruppe), dann macht es ja wenig sinn, 8x die TransitionTime, 8x die Farbtemperatur, 8x.... zu senden.

              Oder fängt dies z.b. der Zigbee Adapter ab?

              Bei Homematic z.B. wird dadurch nur unnötiger DutyCicle erzeugt.

              Dev of LightControl Adapter, Contributor of HUE and DoorBird Adapter

              arteckA 1 Antwort Letzte Antwort
              0
              • SchmakusS Schmakus

                Mir geht es hauptsächlich wie @paul53 geschrieben hat, um die Auslastung diverser Protokolle.
                In meinem Fall geht es um Zigbee. Wenn ich z.B. 8 Lampen gleichzeitig ansteuere (über eine Gruppe), dann macht es ja wenig sinn, 8x die TransitionTime, 8x die Farbtemperatur, 8x.... zu senden.

                Oder fängt dies z.b. der Zigbee Adapter ab?

                Bei Homematic z.B. wird dadurch nur unnötiger DutyCicle erzeugt.

                arteckA Offline
                arteckA Offline
                arteck
                Developer Most Active
                schrieb am zuletzt editiert von
                #7

                @schmakus hä.. wie jetzt.. verstehe nicht ?? was wird per zigbee behandelt?

                zigbee hab ich, zwave auch, nuc's genauso und HA auch

                1 Antwort Letzte Antwort
                0
                • SchmakusS Schmakus

                  Hi,
                  gibt es einen Befehl für setState, welchen den Wert nur dann setzt, wenn er nicht schon vorhanden ist?
                  Aktuell mache ich es über getState und vergleiche den Wert mit dem zu setzenden Wert.

                          let oldval = getState(path).val;
                          if(oldval != value){
                  

                  Grüße
                  Schmakus

                  ? Offline
                  ? Offline
                  Ein ehemaliger Benutzer
                  schrieb am zuletzt editiert von
                  #8

                  @schmakus die Frage interessiert mich auch. Hab es auch mit if (!getState().Val) gelöst.
                  Bei mir ist der Hauptgrund dieser Abfrage das die BWM Melder immer bei Bewegung die hue Lampen neu auf True gesetzt haben obwohl diese schon an waren. Diese unnötige Senderei wollte ich mir auch sparen.

                  OliverIOO 1 Antwort Letzte Antwort
                  0
                  • ? Ein ehemaliger Benutzer

                    @schmakus die Frage interessiert mich auch. Hab es auch mit if (!getState().Val) gelöst.
                    Bei mir ist der Hauptgrund dieser Abfrage das die BWM Melder immer bei Bewegung die hue Lampen neu auf True gesetzt haben obwohl diese schon an waren. Diese unnötige Senderei wollte ich mir auch sparen.

                    OliverIOO Offline
                    OliverIOO Offline
                    OliverIO
                    schrieb am zuletzt editiert von
                    #9

                    @ciddi89 sagte in setState nur wenn Wert noch nicht gesetzt ist?:

                    @schmakus die Frage interessiert mich auch. Hab es auch mit if (!getState().Val) gelöst.
                    Bei mir ist der Hauptgrund dieser Abfrage das die BWM Melder immer bei Bewegung die hue Lampen neu auf True gesetzt haben obwohl diese schon an waren. Diese unnötige Senderei wollte ich mir auch sparen.

                    Wie es bei zigbee genau ist, weiß ich nicht.
                    Es kommt auch auf die Situation an, wer an den zigbee geräten noch mit steuert.
                    in meinen adaptern führe ich im speicher meist ein abbild der states mit um da nochmal gegen zu checken und mehrfach beschreiben des gleichen wertes zu verhindern.

                    sobald aber der iobroker adapter nicht der einzige controller ist, der steuert musst du entweder immer neu schreiben oder vorher den status immer nochmal checken.
                    bei einem schalter kann ich mir folgendes vorstellen
                    über einen adapter schaltet man den an, jemand anders schaltet den schalter an der wand wieder aus. dann bekommst du den status nur mit wenn du vorher den status abfragst oder wenn der schalter von sich aus informiert, das er sich geändert hat (was meist nicht so passiert).

                    du kannst das ja mal testen, in dem du einen datenpunkt mehrfach mit dem gleichen wert beschreibst und vorher die history aktivierst und "nur Änderung aufzeichnen" ausschaltest.
                    Wenn dann der Wert mehrfach in der Tabelle auftaucht, dann schreibt der Adapter hier auch mehrfach.

                    Meine Adapter und Widgets
                    TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                    Links im Profil

                    ? 1 Antwort Letzte Antwort
                    0
                    • OliverIOO OliverIO

                      @ciddi89 sagte in setState nur wenn Wert noch nicht gesetzt ist?:

                      @schmakus die Frage interessiert mich auch. Hab es auch mit if (!getState().Val) gelöst.
                      Bei mir ist der Hauptgrund dieser Abfrage das die BWM Melder immer bei Bewegung die hue Lampen neu auf True gesetzt haben obwohl diese schon an waren. Diese unnötige Senderei wollte ich mir auch sparen.

                      Wie es bei zigbee genau ist, weiß ich nicht.
                      Es kommt auch auf die Situation an, wer an den zigbee geräten noch mit steuert.
                      in meinen adaptern führe ich im speicher meist ein abbild der states mit um da nochmal gegen zu checken und mehrfach beschreiben des gleichen wertes zu verhindern.

                      sobald aber der iobroker adapter nicht der einzige controller ist, der steuert musst du entweder immer neu schreiben oder vorher den status immer nochmal checken.
                      bei einem schalter kann ich mir folgendes vorstellen
                      über einen adapter schaltet man den an, jemand anders schaltet den schalter an der wand wieder aus. dann bekommst du den status nur mit wenn du vorher den status abfragst oder wenn der schalter von sich aus informiert, das er sich geändert hat (was meist nicht so passiert).

                      du kannst das ja mal testen, in dem du einen datenpunkt mehrfach mit dem gleichen wert beschreibst und vorher die history aktivierst und "nur Änderung aufzeichnen" ausschaltest.
                      Wenn dann der Wert mehrfach in der Tabelle auftaucht, dann schreibt der Adapter hier auch mehrfach.

                      ? Offline
                      ? Offline
                      Ein ehemaliger Benutzer
                      schrieb am zuletzt editiert von
                      #10

                      @oliverio danke for die ausführliche Antwort. Ich mein, wenn es nichts macht dann ist auch gut. Hab nur in letzter Zeit im log gesehen das zb. Wenn ein BWM auslöst, mein Script bei jeder Bewegung den Wert für setState() neu gesetzt hat obwohl das Objekt diesen Wert schon hatte. Daher passte die Frage von @Schmakus perfekt. Möchte halt das meine Skripte so Ressourcen schonend arbeiten wie es geht und vielleicht hätte man da ja was optimieren können. Aber wenn es egal ist ob er die Werte nochmal setzt oder nicht, dann kann ich ja die getState() Abfrage vorab, die ich deswegen mit eingefügt habe, auch weg lassen.

                      LG

                      1 Antwort Letzte Antwort
                      0
                      • OliverIOO Offline
                        OliverIOO Offline
                        OliverIO
                        schrieb am zuletzt editiert von
                        #11

                        @ciddi89 sagte in setState nur wenn Wert noch nicht gesetzt ist?:

                        @oliverio danke for die ausführliche Antwort. Ich mein, wenn es nichts macht dann ist auch gut. Hab nur in letzter Zeit im log gesehen das zb. Wenn ein BWM auslöst, mein Script bei jeder Bewegung den Wert für setState() neu gesetzt hat obwohl das Objekt diesen Wert schon hatte. Daher passte die Frage von @Schmakus perfekt. Möchte halt das meine Skripte so Ressourcen schonend arbeiten wie es geht und vielleicht hätte man da ja was optimieren können. Aber wenn es egal ist ob er die Werte nochmal setzt oder nicht, dann kann ich ja die getState() Abfrage vorab, die ich deswegen mit eingefügt habe, auch weg lassen.

                        LG

                        da die autoren hier nicht reagiert haben,
                        kannst du ja mal bei github einen issue einstellen
                        und die frage nochmal dort stellen
                        https://github.com/ioBroker/ioBroker.zigbee/issues
                        ich habe gesehen, das da ganz fleißig dran gearbeitet wird und fast täglich Änderungen in den adapter eingearbeitet werden.

                        Meine Adapter und Widgets
                        TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                        Links im Profil

                        ? 1 Antwort Letzte Antwort
                        0
                        • OliverIOO OliverIO

                          @ciddi89 sagte in setState nur wenn Wert noch nicht gesetzt ist?:

                          @oliverio danke for die ausführliche Antwort. Ich mein, wenn es nichts macht dann ist auch gut. Hab nur in letzter Zeit im log gesehen das zb. Wenn ein BWM auslöst, mein Script bei jeder Bewegung den Wert für setState() neu gesetzt hat obwohl das Objekt diesen Wert schon hatte. Daher passte die Frage von @Schmakus perfekt. Möchte halt das meine Skripte so Ressourcen schonend arbeiten wie es geht und vielleicht hätte man da ja was optimieren können. Aber wenn es egal ist ob er die Werte nochmal setzt oder nicht, dann kann ich ja die getState() Abfrage vorab, die ich deswegen mit eingefügt habe, auch weg lassen.

                          LG

                          da die autoren hier nicht reagiert haben,
                          kannst du ja mal bei github einen issue einstellen
                          und die frage nochmal dort stellen
                          https://github.com/ioBroker/ioBroker.zigbee/issues
                          ich habe gesehen, das da ganz fleißig dran gearbeitet wird und fast täglich Änderungen in den adapter eingearbeitet werden.

                          ? Offline
                          ? Offline
                          Ein ehemaliger Benutzer
                          schrieb am zuletzt editiert von
                          #12

                          @oliverio said in setState nur wenn Wert noch nicht gesetzt ist?:

                          da die autoren hier nicht reagiert haben,
                          kannst du ja mal bei github einen issue einstellen
                          und die frage nochmal dort stellen
                          https://github.com/ioBroker/ioBroker.zigbee/issues
                          ich habe gesehen, das da ganz fleißig dran gearbeitet wird und fast täglich Änderungen in den adapter eingearbeitet werden.

                          Ja, nur das ich kein Zigbee verwende sondern Hue und HM. Aber werde es nochmal beobachten. Und wenn es nicht nötig ist, nehme ich die vorherige Abfrage, ob schon true oder false gesetzt ist, einfach raus.

                          Lg

                          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

                          648

                          Online

                          32.6k

                          Benutzer

                          82.1k

                          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