Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Node-Red
    5. Durch enums iterieren?

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Durch enums iterieren?

    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      m-schmidt last edited by

      Hallo zusammen,

      ich versuche in einem flow über enums zu iterieren, bzw. suche gerade nach einer Möglichkeit dafür. Dachte eigentlich dass ich den ioBroker list node dafür verwenden kann, aber dieser liefert mir immer nur eine leere Liste, egal wie ich den node konfiguriere.

      Habe ich den falschen Ansatz gewählt oder wie sollte man mit dem Node-Red Adapter die ioBroker enums nutzen?

      Danke für eure Hilfe!
      Micha

      Bildschirmfoto 2025-01-28 um 17.30.31.png

      mickym 1 Reply Last reply Reply Quote 0
      • mickym
        mickym Most Active @m-schmidt last edited by mickym

        @m-schmidt Ja leider ist der NodeRed Adapter hier in der Funktionalität dem Javascript bzw. Blockly unterlegen.

        Was Du machen kannst ist über die States der einzelnen Adapter suchen.

        f7bf57d2-6f8e-4274-a22a-03b77cb6b8da-image.png

        In den Objekten der List Node siehst Du dann die enums, die Du dann halt rausfilterst.

        {
          "_id": "0_userdata.0.homekit.devices.BaDeckenlampen.On",
          "type": "state",
          "common": {
            "name": "On",
            "role": "switch",
            "type": "boolean",
            "desc": "Manuell erzeugt",
            "read": true,
            "write": true
          },
          "native": {},
          "acl": {
            "object": 1636,
            "owner": "system.user.admin",
            "ownerGroup": "system.group.administrator",
            "state": 1636
          },
          "from": "system.adapter.admin.0",
          "user": "system.user.admin",
          "ts": 1636298968573,
          "enums": {
            "enum.functions.light": "Licht",
            "enum.rooms.bath": "Bad"
          }
        }
        

        Also zum Beispiel:

            "enum.functions.light": "Licht",
        

        [
           {
               "id": "2c1d6b5ab9e8b3e2",
               "type": "ioBroker list",
               "z": "7e6af0015415146d",
               "name": "",
               "topic": "alias.0.*",
               "objType": "state",
               "regex": "",
               "asArray": "true",
               "onlyIDs": "false",
               "withValues": "false",
               "x": 400,
               "y": 6580,
               "wires": [
                   [
                       "e61bef46d27e04a2"
                   ]
               ]
           },
           {
               "id": "7d34bc936e3f2938",
               "type": "inject",
               "z": "7e6af0015415146d",
               "name": "",
               "props": [
                   {
                       "p": "payload"
                   }
               ],
               "repeat": "",
               "crontab": "",
               "once": false,
               "onceDelay": 0.1,
               "topic": "",
               "payload": "true",
               "payloadType": "bool",
               "x": 190,
               "y": 6580,
               "wires": [
                   [
                       "2c1d6b5ab9e8b3e2"
                   ]
               ]
           },
           {
               "id": "67d1a39ebccbdb7b",
               "type": "debug",
               "z": "7e6af0015415146d",
               "name": "Objekte",
               "active": true,
               "tosidebar": true,
               "console": false,
               "tostatus": false,
               "complete": "payload",
               "targetType": "msg",
               "statusVal": "",
               "statusType": "auto",
               "x": 780,
               "y": 6620,
               "wires": []
           },
           {
               "id": "e61bef46d27e04a2",
               "type": "change",
               "z": "7e6af0015415146d",
               "name": "functions Licht",
               "rules": [
                   {
                       "t": "set",
                       "p": "payload",
                       "pt": "msg",
                       "to": "payload[enums.'enum.functions.light'=\"Licht\"]",
                       "tot": "jsonata"
                   }
               ],
               "action": "",
               "property": "",
               "from": "",
               "to": "",
               "reg": false,
               "x": 600,
               "y": 6620,
               "wires": [
                   [
                       "67d1a39ebccbdb7b"
                   ]
               ]
           },
           {
               "id": "164c160778beafe1",
               "type": "ioBroker list",
               "z": "7e6af0015415146d",
               "name": "",
               "topic": "0_userdata.0.*",
               "objType": "state",
               "regex": "",
               "asArray": "true",
               "onlyIDs": "false",
               "withValues": "false",
               "x": 380,
               "y": 6660,
               "wires": [
                   [
                       "e61bef46d27e04a2"
                   ]
               ]
           },
           {
               "id": "be9f12cdbbef48bd",
               "type": "inject",
               "z": "7e6af0015415146d",
               "name": "",
               "props": [
                   {
                       "p": "payload"
                   }
               ],
               "repeat": "",
               "crontab": "",
               "once": false,
               "onceDelay": 0.1,
               "topic": "",
               "payload": "true",
               "payloadType": "bool",
               "x": 190,
               "y": 6660,
               "wires": [
                   [
                       "164c160778beafe1"
                   ]
               ]
           }
        ]
        

        Die Arrays aus den einzelnen Adaptern kannst, ja dann ggf. wieder mergen.

        M 1 Reply Last reply Reply Quote 0
        • M
          m-schmidt @mickym last edited by

          @mickym

          Super, danke für die Hilfe. Ja ist etwas schade, dass es nicht out of the box einen einfachen Weg gibt um mit den Enums zu arbeiten.

          Habe mir mit deinen Informationen jetzt einen kleinen Subflow gebastelt, an den ich ein Such-Topic und den gewünschten Enum-Namen übergeben kann. Der Subflow findet dann alle states welche zum gewünschten enum gehören und gibt mir jede ID mit einer eigenen message zurück. Damit kann ich dann sehr einfach in meinen Flows über die entsprechenden messages weiterarbeiten.

          Weiterhin kann ich mit dem Subflow auch gleich unerwünschte enums herausfiltern (habe ein enum mit automatisierten states, welche ich ggf. ignorieren möchte) und der Subflow hat auch noch die Möglichkeit nur aktive states zu berücksichtigen. Damit hab ich eine eierlegende Wollmichsau die ich überall in meinen Flows einsetzen kann. 🙂

          MfG Micha

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

          Support us

          ioBroker
          Community Adapters
          Donate

          989
          Online

          31.7k
          Users

          79.7k
          Topics

          1.3m
          Posts

          2
          3
          126
          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