Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. Szenen DP manipulieren mit extendObject

NEWS

  • Wartung am 15.11. – Forum ab 22:00 Uhr nicht erreichbar
    BluefoxB
    Bluefox
    12
    2
    234

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.0k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.7k

Szenen DP manipulieren mit extendObject

Szenen DP manipulieren mit extendObject

Scheduled Pinned Locked Moved JavaScript
5 Posts 2 Posters 307 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • sts85S Offline
    sts85S Offline
    sts85
    wrote on last edited by
    #1

    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

    paul53P 1 Reply Last reply
    0
    • sts85S sts85

      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

      paul53P Offline
      paul53P Offline
      paul53
      wrote on last edited by
      #2

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

      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

      sts85S 1 Reply Last reply
      0
      • paul53P paul53

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

        sts85S Offline
        sts85S Offline
        sts85
        wrote on last edited by sts85
        #3

        @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)
        
        paul53P 1 Reply Last reply
        0
        • sts85S 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)
          
          paul53P Offline
          paul53P Offline
          paul53
          wrote on last edited by
          #4

          @sts85 sagte: Das ist dabei rausgekommen:

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

          if(index > -1) {
          

          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

          sts85S 1 Reply Last reply
          0
          • paul53P paul53

            @sts85 sagte: Das ist dabei rausgekommen:

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

            if(index > -1) {
            
            sts85S Offline
            sts85S Offline
            sts85
            wrote on last edited by
            #5

            @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
            0
            Reply
            • Reply as topic
            Log in to reply
            • Oldest to Newest
            • Newest to Oldest
            • Most Votes


            Support us

            ioBroker
            Community Adapters
            Donate

            73

            Online

            32.4k

            Users

            81.3k

            Topics

            1.3m

            Posts
            Community
            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
            ioBroker Community 2014-2025
            logo
            • Login

            • Don't have an account? Register

            • Login or register to search.
            • First post
              Last post
            0
            • Recent
            • Tags
            • Unread 0
            • Categories
            • Unreplied
            • Popular
            • GitHub
            • Docu
            • Hilfe