Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Toggle/Increment/Decrement

    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

    Toggle/Increment/Decrement

    This topic has been deleted. Only users with topic management privileges can see it.
    • T
      TyrionWarMage Developer last edited by TyrionWarMage

      Hallo Zusammen,

      ich versuche gerade ein script zu schreiben welches generell toggle/increment/decrement einbaut, also:

      command = toggle => switch state true/false bzw
      command = +10 => increment mit 10

      Ich habe bisher (für scene.0 virtual groups):

      $("scene.0.*").on(function (obj) {
          if (obj.state.val == 'toggle') {
              setStateDelayed(obj.id,!(obj.oldState.val), 10, true)        
          } else if (obj.state.val.startsWith("+")) {
              setStateDelayed(obj.id,obj.oldState.val + parseFloat(obj.state.val.substring(1)), 100, true)
          } else if (obj.state.val.startsWith("-")) {
              setStateDelayed(obj.id,obj.oldState.val - parseFloat(obj.state.val.substring(1)), 100, true)
          }
      });
      

      Das Problem ist, dass setState ohne Delayed nicht funktioniert, da anscheinend der orginal "on" setState command erst nach dem eingenem setState ausgeführt wird. Also der Effekt ohne delayed ist, dass der toggle zwar ausgeführt wird, aber direkt wieder überschrieben. Mit Delayed geht es zwar, ist aber nicht zuverlässig da es auch timing Probleme gibt (gerade mit virtual groups).

      Daher meine Frage: Kann ich das verhindern dass das "orginal" on/setState ausgeführt wird oder den zu setzen den Wert manipulieren? Also so dass nurnoch mein "überschriebener" state geschrieben wird?

      paul53 1 Reply Last reply Reply Quote 0
      • paul53
        paul53 @TyrionWarMage last edited by paul53

        @tyrionwarmage
        Du kannst nicht einen Datenpunkt, der ein Kommando als String enthält mit einem booleschen Wert oder einer Zahl überschreiben. Das müssen 3 verschiedene Datenpunkte sein.

        1 Reply Last reply Reply Quote 0
        • First post
          Last post

        Support us

        ioBroker
        Community Adapters
        Donate

        975
        Online

        31.8k
        Users

        80.0k
        Topics

        1.3m
        Posts

        2
        2
        136
        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