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. [gelöst] Letzten State wieder aktivieren

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

[gelöst] Letzten State wieder aktivieren

Geplant Angeheftet Gesperrt Verschoben JavaScript
javascriptscenes
5 Beiträge 2 Kommentatoren 236 Aufrufe 2 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.
  • ? Offline
    ? Offline
    Ein ehemaliger Benutzer
    schrieb am zuletzt editiert von Ein ehemaliger Benutzer
    #1

    Hallo,
    habe folgendes Script:

    var scene = "javascript.0.Szenen.Wohnzimmer_Szene";
    var thermostatCouch = "javascript.0.Thermostat.Couch";
    var steckdoseTV = "hue.0.Steckdose.on";
    var lightTV = "hue.0.Hue_ambiance_spot_1.level";
    
    on(scene, function (obj) {
        if (obj.state.val) {
            setStateDelayed(thermostatCouch, 23, 2000)
            setStateDelayed(lightTV, 30, 3000)
            setState(steckdoseTV, true)
        } else {
            setStateDelayed(thermostatCouch, 19, 2000)
            setStateDelayed(lightTV, 0, 3000)
            setState(steckdoseTV, false)
        }
    })
    

    Sobald ich die Szene auf true Stelle, ändern sich die states der einzelnen Nodes in das, was ich denen dort angebe.
    Nun möchte ich jedoch in dem else Statement nicht feste Werte zurückgeben, wenn die Szene wieder deaktiviert wird, sondern die Werte, die zuvor bei den einzelnen Nodes eingetragen waren.

    Ich denke mal, das geht relativ einfach, wenn ich die vorigen states mit createState Zwischenspeicher.
    Gibt es jedoch noch eine bessere Variante?

    UncleSamU 1 Antwort Letzte Antwort
    0
    • ? Ein ehemaliger Benutzer

      Hallo,
      habe folgendes Script:

      var scene = "javascript.0.Szenen.Wohnzimmer_Szene";
      var thermostatCouch = "javascript.0.Thermostat.Couch";
      var steckdoseTV = "hue.0.Steckdose.on";
      var lightTV = "hue.0.Hue_ambiance_spot_1.level";
      
      on(scene, function (obj) {
          if (obj.state.val) {
              setStateDelayed(thermostatCouch, 23, 2000)
              setStateDelayed(lightTV, 30, 3000)
              setState(steckdoseTV, true)
          } else {
              setStateDelayed(thermostatCouch, 19, 2000)
              setStateDelayed(lightTV, 0, 3000)
              setState(steckdoseTV, false)
          }
      })
      

      Sobald ich die Szene auf true Stelle, ändern sich die states der einzelnen Nodes in das, was ich denen dort angebe.
      Nun möchte ich jedoch in dem else Statement nicht feste Werte zurückgeben, wenn die Szene wieder deaktiviert wird, sondern die Werte, die zuvor bei den einzelnen Nodes eingetragen waren.

      Ich denke mal, das geht relativ einfach, wenn ich die vorigen states mit createState Zwischenspeicher.
      Gibt es jedoch noch eine bessere Variante?

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

      @tmartin sagte in Letzten State wieder aktivieren:

      Ich denke mal, das geht relativ einfach, wenn ich die vorigen states mit createState Zwischenspeicher.

      Wenn, dann wäre das getState(). Ich denke, das ist die beste Lösung.

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

      ? 1 Antwort Letzte Antwort
      0
      • UncleSamU UncleSam

        @tmartin sagte in Letzten State wieder aktivieren:

        Ich denke mal, das geht relativ einfach, wenn ich die vorigen states mit createState Zwischenspeicher.

        Wenn, dann wäre das getState(). Ich denke, das ist die beste Lösung.

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

        @UncleSam

        Super Danke für den Tipp, so sieht es nun aus und funktioniert auch:

        var scene = "javascript.0.Szenen.Wohnzimmer_Szene";
        var thermostatCouch = "javascript.0.Thermostat.Couch";
        var steckdoseTV = "hue.0.Steckdose.on";
        var lightTV = "hue.0.Hue_ambiance_spot_1.level";
        const oldThermostatCouch = getState(thermostatCouch).val;
        const oldLightTV = getState(lightTV).val;
        
        
        on(scene, function (obj) {
            if (obj.state.val) {
                setStateDelayed(thermostatCouch, 23, 2000)
                setStateDelayed(lightTV, 30, 3000)
                setState(steckdoseTV, true)
            } else {
                setStateDelayed(thermostatCouch, oldThermostatCouch, 2000)
                setStateDelayed(lightTV, oldLightTV, 3000)
                setState(steckdoseTV, false)
            }
        })
        
        UncleSamU 1 Antwort Letzte Antwort
        0
        • ? Ein ehemaliger Benutzer

          @UncleSam

          Super Danke für den Tipp, so sieht es nun aus und funktioniert auch:

          var scene = "javascript.0.Szenen.Wohnzimmer_Szene";
          var thermostatCouch = "javascript.0.Thermostat.Couch";
          var steckdoseTV = "hue.0.Steckdose.on";
          var lightTV = "hue.0.Hue_ambiance_spot_1.level";
          const oldThermostatCouch = getState(thermostatCouch).val;
          const oldLightTV = getState(lightTV).val;
          
          
          on(scene, function (obj) {
              if (obj.state.val) {
                  setStateDelayed(thermostatCouch, 23, 2000)
                  setStateDelayed(lightTV, 30, 3000)
                  setState(steckdoseTV, true)
              } else {
                  setStateDelayed(thermostatCouch, oldThermostatCouch, 2000)
                  setStateDelayed(lightTV, oldLightTV, 3000)
                  setState(steckdoseTV, false)
              }
          })
          
          UncleSamU Offline
          UncleSamU Offline
          UncleSam
          Developer
          schrieb am zuletzt editiert von
          #4

          @tmartin ... ist aber wohl nicht ganz das, was du willst: nun speichert er sich die alten Werte, wenn du das Skript startest; du möchtest wohl eher vor dem setState...() im if() die alten Werte speichern, oder?

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

          ? 1 Antwort Letzte Antwort
          0
          • UncleSamU UncleSam

            @tmartin ... ist aber wohl nicht ganz das, was du willst: nun speichert er sich die alten Werte, wenn du das Skript startest; du möchtest wohl eher vor dem setState...() im if() die alten Werte speichern, oder?

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

            @UncleSam
            Ne das Speichern der vorigen Werte war mir wichtig, da wenn die Szene wieder deaktiviert wird, die alten Standwartwerte in den Objekten stehen sollen, welche bevor die Szene aktiviert wurde, eingetragen worden waren.

            Die festen Werte in den oberen if-statement sind ja "feste" Werte, die zu dieser Szene gehören (23° C, 30% Lichtlevel und die Steckdose aktivieren)

            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

            789

            Online

            32.6k

            Benutzer

            82.2k

            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