Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • 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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Node-Red
  5. Durch enums iterieren?

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    1.0k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    698

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.0k

Durch enums iterieren?

Geplant Angeheftet Gesperrt Verschoben Node-Red
3 Beiträge 2 Kommentatoren 291 Aufrufe 2 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • M Offline
    M Offline
    m-schmidt
    schrieb am zuletzt editiert von
    #1

    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

    mickymM 1 Antwort Letzte Antwort
    0
    • M m-schmidt

      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

      mickymM Online
      mickymM Online
      mickym
      Most Active
      schrieb am zuletzt editiert von mickym
      #2

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

      Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

      M 1 Antwort Letzte Antwort
      0
      • mickymM 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 Offline
        M Offline
        m-schmidt
        schrieb am zuletzt editiert von
        #3

        @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 Antwort Letzte Antwort
        1
        Antworten
        • In einem neuen Thema antworten
        Anmelden zum Antworten
        • Älteste zuerst
        • Neuste zuerst
        • Meiste Stimmen


        Support us

        ioBroker
        Community Adapters
        Donate

        339

        Online

        32.6k

        Benutzer

        82.0k

        Themen

        1.3m

        Beiträge
        Community
        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
        ioBroker Community 2014-2025
        logo
        • Anmelden

        • Du hast noch kein Konto? Registrieren

        • Anmelden oder registrieren, um zu suchen
        • Erster Beitrag
          Letzter Beitrag
        0
        • Home
        • Aktuell
        • Tags
        • Ungelesen 0
        • Kategorien
        • Unreplied
        • Beliebt
        • GitHub
        • Docu
        • Hilfe