Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Szenen DP manipulieren mit extendObject

    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

    Szenen DP manipulieren mit extendObject

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

      Hallo zusammen,

      ich möchte gerne in einer Szene (iobroker Scenes Adapter) einzelne Zustände inaktiv machen:
      29cc9caf-8f39-43c6-93fc-173577729d2c-image.png

      Dies würde ich gern über Blockly oder JavaScript lösen.

      Dazu habe ich den Ansatz über extendObject genutzt:

      extendObject('scene.0.TEST', {native: {members: [{disabled: true}]}});
      

      So lange die Szene nur aus einem Zustand besteht, funktioniert das so. Ich habe aber mehrere Zustände und weiß nicht, wie ich nur das "disabled" einer bestimmten ID manipulieren kann, da sie ja hintereinander in members stehen. Wie bekomme ich Zugriff auf das "disabled" der jeweiligen ID?

      {
        "common": {
          "name": "TEST",
          "type": "mixed",
          "role": "scene.state",
          "desc": "",
          "enabled": true,
          "read": true,
          "write": true,
          "def": false,
          "engine": "system.adapter.scenes.0"
        },
        "native": {
          "onTrue": {
            "trigger": {},
            "cron": null,
            "astro": null
          },
          "onFalse": {
            "enabled": true,
            "trigger": {},
            "cron": null,
            "astro": null
          },
          "easy": true,
          "burstInterval": 0,
          "members": [
            {
              "id": "alias.0.Buttons.Button-WZ-St-Weinregal",
              "setIfTrue": true,
              "setIfFalse": false,
              "stopAllDelays": true,
              "desc": null,
              "disabled": true,
              "delay": 0
            },
            {
              "id": "alias.0.Buttons.Button-WZ-Bilderrahmen",
              "setIfTrue": true,
              "setIfFalse": false,
              "stopAllDelays": true,
              "desc": null,
              "disabled": false,
              "delay": 0
            }
          ]
        },
        "type": "state",
        "_id": "scene.0.TEST",
        "from": "system.adapter.admin.0",
        "user": "system.user.admin",
        "ts": 1715248145422,
        "acl": {
          "object": 1636,
          "state": 1636,
          "owner": "system.user.admin",
          "ownerGroup": "system.group.administrator"
        }
      }
      

      Danke euch,
      viele Grüße

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

        @sts85 sagte: Wie bekomme ich Zugriff auf das "disabled" der jeweiligen ID?

        Verwende getObject(id). In einer for-Schleife über obj.native.members prüfe die ID und setze obj.native.members[i].disabled auf true oder false. Anschließend mit setObject(id, obj) schreiben.

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

          @paul53 Mega, danke für den Ansatz. Eigentlich logisch. Das ist dabei rausgekommen:

          var SceneName = 'scene.0.TEST'
          
          var SceneObject = getObject('scene.0.TEST')
          var SceneID = "alias.0.Buttons.Button-WZ-Bilderrahmen";
          
          var SceneData = SceneObject.native.members
          
          var index = SceneData.findIndex(obj => obj.id==SceneID);
          //console.log(index);
          
          SceneObject.native.members[index].disabled = true;
          //console.log(SceneObject.native.members);
          
          setObject(SceneName, SceneObject)
          
          paul53 1 Reply Last reply Reply Quote 0
          • paul53
            paul53 @sts85 last edited by

            @sts85 sagte: Das ist dabei rausgekommen:

            Die letzten beiden Befehle sollten nur bedingt ausgeführt werden:

            if(index > -1) {
            
            sts85 1 Reply Last reply Reply Quote 0
            • sts85
              sts85 @paul53 last edited by

              @paul53 said in Szenen DP manipulieren mit extendObject:

              @sts85 sagte: Das ist dabei rausgekommen:

              Die letzten beiden Befehle sollten nur bedingt ausgeführt werden:

              if(index > -1) {
              

              Japp, das war mein Minimalbeispiel. Bedingung ist schon umgesetzt.

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

              Support us

              ioBroker
              Community Adapters
              Donate

              659
              Online

              31.8k
              Users

              80.0k
              Topics

              1.3m
              Posts

              2
              5
              183
              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