Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. [gelöst] Letzten State wieder aktivieren

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    [gelöst] Letzten State wieder aktivieren

    This topic has been deleted. Only users with topic management privileges can see it.
    • ?
      A Former User last edited by A Former User

      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?

      UncleSam 1 Reply Last reply Reply Quote 0
      • UncleSam
        UncleSam Developer @Guest last edited by

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

        ? 1 Reply Last reply Reply Quote 0
        • ?
          A Former User @UncleSam last edited by

          @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)
              }
          })
          
          UncleSam 1 Reply Last reply Reply Quote 0
          • UncleSam
            UncleSam Developer @Guest last edited by

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

            ? 1 Reply Last reply Reply Quote 0
            • ?
              A Former User @UncleSam last edited by

              @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 Reply Last reply Reply Quote 0
              • First post
                Last post

              Support us

              ioBroker
              Community Adapters
              Donate

              421
              Online

              31.9k
              Users

              80.2k
              Topics

              1.3m
              Posts

              javascript scenes
              2
              5
              195
              Loading More Posts
              • Oldest to Newest
              • Newest to Oldest
              • Most Votes
              Reply
              • Reply as topic
              Log in to reply
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
              The ioBroker Community 2014-2023
              logo