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. batterieliste werte vergleichen und mit telegram ausgeben

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    batterieliste werte vergleichen und mit telegram ausgeben

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

      Hi,
      ich komme mit blockly nicht zurecht und eher noch mit node red (Generation die noch Maschinensprache programmiert hat)

      Ich habe eine Liste erstellt und wuerde gerne nach schedule die werte der Liste durchlaufen und falls kleiner als wert x in Telegram das Geraet (die id) mir zuschicken.

      Habt ihr hier ein paar Tipps fuer mich , ein Tutorial oder ein Video?
      Vielen Dank.

      mickym 1 Reply Last reply Reply Quote 0
      • mickym
        mickym Most Active @Fred Freund last edited by mickym

        @fred-freund Na wenn Liste ist Array oder Objekt - dann einfach split Node nutzen? NodeRed ist auch intuitiver, da man nicht soviel Zeit mit Puzzeln verdaddelt - auch wenn ich die Generation gleich nach der Maschinensprache bin. 😉

        Fred Freund 1 Reply Last reply Reply Quote 0
        • Fred Freund
          Fred Freund @mickym last edited by Fred Freund

          @mickym @mickym Hallo und Danke, ja muss erst mit dem iobroker listobject zurechtkommen.
          also so einfach loopen durch das array tut das nicht 🙂

          cba3ea45-5de1-4ae1-8e49-197f8e307a5a-image.png

          49814283-1045-49e9-af19-c0dce6df1f29-image.png
          4d8f419a-608c-4687-bf63-0cc91e4249d0-image.png

          ich denke ich haette sollen irgendwie Aliases anlegen, muesste wenn ich weiss Batterie von xxx ist leer nach der ID suchen was das ist.

          waere cool wenn man den ganzen IBROKER durchsuchen koennte und diese dann ausgeben..aber way over my knowledge🤕
          Scheint es wird ein groesseres Projekt fuer mich!

          mickym 1 Reply Last reply Reply Quote 0
          • mickym
            mickym Most Active @Fred Freund last edited by

            @fred-freund vergiss das. Mit den enum Geschichten kannst unter NodeRed eh nichts anfangen und sowas liest man in meinen Augen nicht aus dem System, sondern läßt die Geräte triggern. Zudem bieten auch nicht alle Geräte das gleiche Format in Form von Prozentwerten, manche gibts auch nur mit true oder falls. Also vergiß enum und Werte auslesen, sondern lass die Geräte triggern.

            Falls es sich um die Zigbee und Z-Wave Geräte handelt, langen dann doch 2 iobroker in nodes und eine Switch Node und die Sache ist gelöst. Wenn wirklich dann kannst auch über die list nodes aktiv auslesen, aber ich finde das überflüssig, weil Batterien wenn die Warnschwelle überschritten ist, ja nicht gleich den Geist aufgeben. Zumindest wenn die Warnschwelle richtig gesetzt ist..

            Enum kannst du aber unter node Red vergessen.

            Fred Freund 1 Reply Last reply Reply Quote 0
            • Fred Freund
              Fred Freund @mickym last edited by Fred Freund

              @mickym ok Danke!! dh. ich werde eine schedule triggern und dann die einzeln abfragen , so viele sind es ja nicht.
              ich nehme an das meinst du mit

              2 iobroker in nodes und eine Switch Node und die Sache ist gelöst
              

              ja einfacher so....genial und gleichzeitig kann man true false auch checken

              8d8fd763-bf23-426f-80dd-62f299e3cd86-image.png

              welches plugin fuer Telegram soll man verwenden?

              Das trifft sich gut , moechte auch meine security cameras die manchmal die Verbindung verlieren checken denke da gibt es einen active status irgendwo.

              Hoffe der telgram adapter laesst sich je nachdem die message uebergeben.

              Danke nochmal ...viel viel einfacher

              mickym 2 Replies Last reply Reply Quote 0
              • mickym
                mickym Most Active @Fred Freund last edited by mickym

                @fred-freund Nein - wie gesagt ich würde die Geräte selbst triggern lassen - Du musst doch nichts aktiv abfragen - auch wenn es zum Testen erstmal schwerer fällt.

                Wenn es exakt diese Geräte sind, würde ich nur iobrokerIN Nodes verwenden.

                Größer 10% interessiert Dich ja nicht. Das topic musst halt mit einer ChangeNode in lesbare Geräte übersetzen -

                f0686443-eaeb-4506-8360-e77d8c944871-image.png

                alternativ kannst auch jetzt ein list Node verwenden und dann das Objekt mit dem Namen auslesen.

                1167f3ee-2e09-4be6-ba35-a02a17c9ffec-image.png

                [
                   {
                       "id": "4f9ee4d86719aba7",
                       "type": "ioBroker in",
                       "z": "289f539dcc33814e",
                       "name": "",
                       "topic": "zigbee.0.*.battery",
                       "payloadType": "value",
                       "onlyack": "",
                       "func": "all",
                       "gap": "",
                       "fireOnStart": "false",
                       "outFormat": "MQTT",
                       "x": 2360,
                       "y": 520,
                       "wires": [
                           [
                               "8b52adea92508366"
                           ]
                       ]
                   },
                   {
                       "id": "ea0019f02235141d",
                       "type": "ioBroker in",
                       "z": "289f539dcc33814e",
                       "name": "",
                       "topic": "zwave2.0.*.Battery.level",
                       "payloadType": "value",
                       "onlyack": "",
                       "func": "all",
                       "gap": "",
                       "fireOnStart": "false",
                       "outFormat": "MQTT",
                       "x": 2340,
                       "y": 580,
                       "wires": [
                           [
                               "8b52adea92508366"
                           ]
                       ]
                   },
                   {
                       "id": "8b52adea92508366",
                       "type": "switch",
                       "z": "289f539dcc33814e",
                       "name": "< 10",
                       "property": "payload",
                       "propertyType": "msg",
                       "rules": [
                           {
                               "t": "lt",
                               "v": "10",
                               "vt": "num"
                           }
                       ],
                       "checkall": "true",
                       "repair": false,
                       "outputs": 1,
                       "x": 2590,
                       "y": 560,
                       "wires": [
                           [
                               "00fa2fd59397152f"
                           ]
                       ]
                   },
                   {
                       "id": "4f330de5f6f1d6d7",
                       "type": "debug",
                       "z": "289f539dcc33814e",
                       "name": "to telegram",
                       "active": true,
                       "tosidebar": true,
                       "console": false,
                       "tostatus": false,
                       "complete": "payload",
                       "targetType": "msg",
                       "statusVal": "",
                       "statusType": "auto",
                       "x": 3170,
                       "y": 560,
                       "wires": []
                   },
                   {
                       "id": "00fa2fd59397152f",
                       "type": "change",
                       "z": "289f539dcc33814e",
                       "name": "translate msg.topic",
                       "rules": [
                           {
                               "t": "change",
                               "p": "topic",
                               "pt": "msg",
                               "from": ".*00124b00246e8485.*",
                               "fromt": "re",
                               "to": "Thermometer Schlafzimmer",
                               "tot": "str"
                           },
                           {
                               "t": "change",
                               "p": "topic",
                               "pt": "msg",
                               "from": ".*00158d00073a795c.*",
                               "fromt": "re",
                               "to": "Thermometer Wohnzimmer",
                               "tot": "str"
                           }
                       ],
                       "action": "",
                       "property": "",
                       "from": "",
                       "to": "",
                       "reg": false,
                       "x": 2970,
                       "y": 560,
                       "wires": [
                           [
                               "4f330de5f6f1d6d7"
                           ]
                       ]
                   },
                   {
                       "id": "d4972d9318fb08c5",
                       "type": "comment",
                       "z": "289f539dcc33814e",
                       "name": "manuelles Übersetzen des topics",
                       "info": "",
                       "x": 2270,
                       "y": 420,
                       "wires": []
                   },
                   {
                       "id": "998d609bcd0e31f2",
                       "type": "inject",
                       "z": "289f539dcc33814e",
                       "name": "Beispiel Thermometer Schlafzimmer",
                       "props": [
                           {
                               "p": "payload"
                           },
                           {
                               "p": "topic",
                               "vt": "str"
                           }
                       ],
                       "repeat": "",
                       "crontab": "",
                       "once": false,
                       "onceDelay": 0.1,
                       "topic": "zigbee/0/00124b00246e8485/battery",
                       "payload": "8",
                       "payloadType": "num",
                       "x": 2680,
                       "y": 440,
                       "wires": [
                           [
                               "00fa2fd59397152f"
                           ]
                       ]
                   },
                   {
                       "id": "f7f43c122410750b",
                       "type": "inject",
                       "z": "289f539dcc33814e",
                       "name": "Beispiel Thermometer Wohnzimmer",
                       "props": [
                           {
                               "p": "payload"
                           },
                           {
                               "p": "topic",
                               "vt": "str"
                           }
                       ],
                       "repeat": "",
                       "crontab": "",
                       "once": false,
                       "onceDelay": 0.1,
                       "topic": "zigbee/0/00158d00073a795c/battery",
                       "payload": "5",
                       "payloadType": "num",
                       "x": 2680,
                       "y": 480,
                       "wires": [
                           [
                               "00fa2fd59397152f"
                           ]
                       ]
                   },
                   {
                       "id": "a02296abaf457cc6",
                       "type": "ioBroker list",
                       "z": "289f539dcc33814e",
                       "name": "",
                       "topic": "",
                       "objType": "",
                       "regex": "",
                       "asArray": "false",
                       "onlyIDs": "false",
                       "withValues": "true",
                       "x": 2670,
                       "y": 760,
                       "wires": [
                           [
                               "d2f99c4840ab05d1"
                           ]
                       ]
                   },
                   {
                       "id": "d2f99c4840ab05d1",
                       "type": "change",
                       "z": "289f539dcc33814e",
                       "name": "Name und Wert aus Objekt",
                       "rules": [
                           {
                               "t": "set",
                               "p": "topic",
                               "pt": "msg",
                               "to": "payload.common.name",
                               "tot": "msg"
                           },
                           {
                               "t": "set",
                               "p": "payload",
                               "pt": "msg",
                               "to": "payload.val",
                               "tot": "msg"
                           }
                       ],
                       "action": "",
                       "property": "",
                       "from": "",
                       "to": "",
                       "reg": false,
                       "x": 2880,
                       "y": 760,
                       "wires": [
                           [
                               "78787941e244298e"
                           ]
                       ]
                   },
                   {
                       "id": "de0024c05e0ecf3a",
                       "type": "comment",
                       "z": "289f539dcc33814e",
                       "name": "automatisches Übersetzen des topics auf Name",
                       "info": "",
                       "x": 2320,
                       "y": 660,
                       "wires": []
                   },
                   {
                       "id": "78787941e244298e",
                       "type": "debug",
                       "z": "289f539dcc33814e",
                       "name": "to telegram",
                       "active": true,
                       "tosidebar": true,
                       "console": false,
                       "tostatus": false,
                       "complete": "payload",
                       "targetType": "msg",
                       "statusVal": "",
                       "statusType": "auto",
                       "x": 3110,
                       "y": 760,
                       "wires": []
                   },
                   {
                       "id": "f9b370444d5ecc53",
                       "type": "ioBroker in",
                       "z": "289f539dcc33814e",
                       "name": "",
                       "topic": "zigbee.0.*.battery",
                       "payloadType": "value",
                       "onlyack": "",
                       "func": "all",
                       "gap": "",
                       "fireOnStart": "false",
                       "outFormat": "MQTT",
                       "x": 2280,
                       "y": 720,
                       "wires": [
                           [
                               "551e3cfee71a1277"
                           ]
                       ]
                   },
                   {
                       "id": "f55fa7e5cfe89d7d",
                       "type": "ioBroker in",
                       "z": "289f539dcc33814e",
                       "name": "",
                       "topic": "zwave2.0.*.Battery.level",
                       "payloadType": "value",
                       "onlyack": "",
                       "func": "all",
                       "gap": "",
                       "fireOnStart": "false",
                       "outFormat": "MQTT",
                       "x": 2260,
                       "y": 780,
                       "wires": [
                           [
                               "551e3cfee71a1277"
                           ]
                       ]
                   },
                   {
                       "id": "551e3cfee71a1277",
                       "type": "switch",
                       "z": "289f539dcc33814e",
                       "name": "< 10",
                       "property": "payload",
                       "propertyType": "msg",
                       "rules": [
                           {
                               "t": "lt",
                               "v": "10",
                               "vt": "num"
                           }
                       ],
                       "checkall": "true",
                       "repair": false,
                       "outputs": 1,
                       "x": 2510,
                       "y": 760,
                       "wires": [
                           [
                               "a02296abaf457cc6"
                           ]
                       ]
                   }
                ]
                

                ... nächsten Post für die Ausgabeseite.

                1 Reply Last reply Reply Quote 0
                • mickym
                  mickym Most Active last edited by

                  Kommen wir nun zur Ausgabenseite - der Wert interessiert - des batterylevels würde mich ggf. nur am Rande interessieren - aber musst Du wissen - wichtig ist jedoch, dass nun in der msg.topic das Gerät mehr oder weniger im Klartext steht.

                  Muss aber vorausschicken, dass ich selbst kein telegram benutze.

                  Für die Telegram Ausgabe stehen Dir nun folgende Optionen zur Verfügung:

                  1. Wenn Du den telegram Adapter nicht bereits im Einsatz hast, würde ich mir überlegen, ob ich die telegram Ausgabe nicht weiter NodeRed überlassen würde.
                    https://flows.nodered.org/node/node-red-contrib-telegrambot

                  2. Wenn Du den Telegram Adapter im iobroker bereits im Einsatz hast und ggf. auch anderweitig in Blocklies verwendest, dann hast nach Dokumentation des Adapters folgende Möglichkeit:

                  114835f7-4f9e-4e31-81a0-e4890013ec34-image.png

                  Um den Flow also für einfache Nachrichten weiterzuführen, würde ich mal bei dem Beispiel mit dem manuellen Übersetzen der Topic so verfahren:

                  65847829-595c-4419-9aa1-0f5e02c52e9e-image.png

                  [
                      {
                          "id": "4f330de5f6f1d6d7",
                          "type": "debug",
                          "z": "289f539dcc33814e",
                          "name": "to telegram",
                          "active": true,
                          "tosidebar": true,
                          "console": false,
                          "tostatus": false,
                          "complete": "payload",
                          "targetType": "msg",
                          "statusVal": "",
                          "statusType": "auto",
                          "x": 3370,
                          "y": 520,
                          "wires": []
                      },
                      {
                          "id": "2fdc851420391a2c",
                          "type": "ioBroker out",
                          "z": "289f539dcc33814e",
                          "d": true,
                          "name": "",
                          "topic": "telegram.0.communicate.response",
                          "ack": "false",
                          "autoCreate": "false",
                          "stateName": "",
                          "role": "",
                          "payloadType": "",
                          "readonly": "",
                          "stateUnit": "",
                          "stateMin": "",
                          "stateMax": "",
                          "x": 3440,
                          "y": 560,
                          "wires": []
                      },
                      {
                          "id": "3c3717b5a0dc2b5c",
                          "type": "template",
                          "z": "289f539dcc33814e",
                          "name": "",
                          "field": "payload",
                          "fieldType": "msg",
                          "format": "handlebars",
                          "syntax": "mustache",
                          "template": "Achtung das {{topic}} hat nur noch eine Batteriekapazität\nvon {{payload}} %.",
                          "output": "str",
                          "x": 3180,
                          "y": 560,
                          "wires": [
                              [
                                  "2fdc851420391a2c",
                                  "4f330de5f6f1d6d7"
                              ]
                          ]
                      }
                  ]
                  

                  Kompliziertere Optionen kann man über Node-Red wohl über ein JSON Objekt an an

                  telegram.0.communicate.responseJson
                  

                  übergeben. Da kann man dann wohl auch formatieren etc. Vor dem Senden dann halt noch eine JSON Node machen.

                  1. Option wenn man den iobroker Adapter nutzen will und die Möglichkeiten unter Punkt 2 nicht ausreichen. NodeRed kann nicht mit SendTo was an einen anderen Adapter schicken. Ich habe aber so eine kleines JS als Proxy geschrieben.

                  Dieser Thread enthält ein kleines JS Script, so dass man über Node-Red über einen Selbsterstellten Datenpunkt quasi als Proxy die SendTo Funktion nutzen kann.

                  Standardmässig hört das Script auf den Datenpunkt "0_userdata.0.NodeRed.sendTo" kann aber im Script natürlich geändert werden.

                  var exchangeWithNodeRed = "0_userdata.0.NodeRed.sendTo";
                  

                  In diesem Datenpunkt - kannst Du ein Objekt aus NodeRed mit anschließender JSON Node reinschreiben, wo Du die Parameter mitgeben kannst und ggf. einen eigenen Datenpunkt für eine Antwort - ansonsten wird der Datenpunkt mit dem Objekt auch als Rückgabe verwendet.

                  b56e35fe-c51a-47c9-87e0-e1dd8637d68f-image.png

                  Wenn Du also via NodeRed - sowas über SendTo an den Adapter schicken wolltest:

                  8586f45e-f7c4-4e9a-b18a-c8d33998693f-image.png

                  Dann könntest Du zum Beispiel so ein Objekt konstruieren:

                  ffd03b77-fae5-432c-9cd4-a485789f3d2e-image.png

                  über JSONATA in der Change Node natürlich auch mit variablen aus dem Nachrichtenobjekt füttern. Das habe ich allerdings noch nie gemacht - da ich wie gesagt kein telegram Adapter bzw. telegram überhaupt benutze,

                  1 Reply Last reply Reply Quote 0
                  • mickym
                    mickym Most Active @Fred Freund last edited by mickym

                    @fred-freund sagte in batterieliste werte vergleichen und mit telegram ausgeben:

                    @mickym ok Danke!! dh. ich werde eine schedule triggern und dann die einzeln abfragen , so viele sind es ja nicht.
                    ich nehme an das meinst du mit

                    Wie gesagt - pollen finde ich in der iot Welt - das Schlechteste was man tun kann. Auch wenn Du nicht immer sofort Ergebnisse hast dann warte halt bis sich die Geräte melden.
                    Es belastet die Systeme mit unnützen Abfragen. Wenn eine Batterie nach 2 Jahren einen zu niedrigen Level hat und dass vielleicht noch im Minutentakt - weil man die Batterie dann auch sofort innerhalb einer Minute auswechselt 🙄 🤔 , hat man 2 Jahre diesen Datenpunkt umsonst abgefragt - denkt einfach mal bissi "wirtschaftlich" wie man mit Systemressourcen umgeht. Die Geräte melden sich wie gesagt selbst und wenn ich dauernd einen Datenpunkt abfrage, der von einem Gerät gar nicht aktiv gemeldet wird - dann ist das eh sinnlos. Sprich wenn der Datenpunkt im Zigbee- Adapter für das Batterielevel auf 80% steht und das Gerät die Verbindung zum iobroker verloren hat, dann steht da nach 10 Jahren immer noch 80% - da das Gerät diesen Wert nie aktualisiert hat. 10 Jahre unnütze Abfragen mit sinnlosen Ergebnissen. Hört auf zu pollen und wartet bis die Geräte sich melden!!!! 🙄 🙄 😵

                    Was ich mache - ist, dass ich mit den letzten Status einfach in einem Datenpunkt in JSON abspeichere - so dass ich die immer parat habe.

                    7f404ce3-7c7a-4083-934c-79c5ea973ae6-image.png

                    {
                      "Präsenz Wohnzimmer": true,
                      "Thermometer Gefrierfach": true,
                      "Thermometer Küche": true,
                      "Präsenz Schlafzimmer2": true,
                      "Schlafzimmer Schrank Links": true,
                      "Schlafzimmer Schrank Mitte": true,
                      "Würfel Wohnzimmer": true,
                      "Präsenz Küche": true,
                      "Präsenz Büro": true,
                      "Präsenz Diele": true,
                      "Präsenz Flur": true,
                      "Präsenz Schlafzimmer": true,
                      "Würfel Büro": true,
                      "Präsenz Bad": true,
                      "Thermometer Kühlschrank": true,
                      "Schlafzimmer Schrank Rechts": true,
                      "Thermometer Bad": true,
                      "Würfel Schlafzimmer": true,
                      "Präsenz Wohnzimmer Essbereich": true
                    }
                    

                    Das kann ich dann leicht bei Adapterstart einmal abfragen - so dass ich nicht warten muss und wird dann von den Geräten einzeln bei Bedarf aktualisisert.

                    Fred Freund 1 Reply Last reply Reply Quote 0
                    • mickym
                      mickym Most Active last edited by mickym

                      Bei der Gelegenheit noch ein Wort zu den enums - im iobroker. Das wird von Node-Red Adapter des iobrokers nicht unterstützt - da sind Blockly Fans im Vorteil . Insbesondere ist es bedauerlich, da man sie nicht als subscriptions nutzen kann - also generell dynamische subscriptions.

                      Man kann dann entweder über mqtt ausweichen - oder Leute dann fragt das halt besser nach.

                      Ich habe hierzu seit Oktober 2021 ein enhancement request aufgemacht: https://github.com/ioBroker/ioBroker.node-red/issues/224

                      Da gibts hier von der iobroker- community 0 response - keinen Daumen hoch oder sonst was. 😞 Als Entwickler würde ich mir auch denken, warum soll ich da Aufwand reinstecken, wenn es eh keiner will.

                      Die enum Datenpunkte sind leider für NodeRed nicht zugänglich. Insofern kann man auch nichts mit der list Node machen.

                      mickym2 created this issue in ioBroker/ioBroker.node-red

                      open Enable enum filters for iobroker in Nodes #224

                      R 1 Reply Last reply Reply Quote 0
                      • R
                        rewenode @mickym last edited by

                        @mickym sagte in batterieliste werte vergleichen und mit telegram ausgeben:

                        Bei der Gelegenheit noch ein Wort zu den enums - im iobroker. Das wird von Node-Red Adapter des iobrokers nicht unterstützt - da sind Blockly Fans im Vorteil . Insbesondere ist es bedauerlich, da man sie nicht als subscriptions nutzen kann - also generell dynamische subscriptions.

                        Du kannst die enum mit der ioB-List-node auslesen.
                        Hier mal 2 meiner Listen, die davon Gebrauch machen:

                        2022-09-17_01-14-27.png

                        Hier das Prinzip

                        2022-09-17_01-17-53.png

                        Das enum wird dann mit einem simplen JSONata - Ausdruck gelesen. Hier mal für die Etage:

                        $lookup(payload.enums, payload.enums.$sift(function($v, $k) {$k ~> /^enum.ort./}).$keys()[0])
                        

                        Eigentlich sollte einem Device ja nur ein Ort zugewiesen sein, aber zur Sicherheit nehme ich hier immer den ersten hinterlegten [0].

                        Gruß
                        Reiner

                        mickym 1 Reply Last reply Reply Quote 0
                        • mickym
                          mickym Most Active @rewenode last edited by mickym

                          @rewenode Na ich hab in den state objekten keine enums gefunden, sondern nur im common objekt der enums.

                          Nehmen wir dieses Folder Objekt:

                          899d40a6-be5a-45a9-913c-c76d3223c6e6-image.png

                          In dem Objekt gibts absolut NICHTS - und somit auch nichts für die List Node zum Auslesen. Gilt auch für alle Objekte unter dem Folder.

                          {
                            "type": "folder",
                            "common": {
                              "name": "shelly1-C4328A"
                            },
                            "from": "system.adapter.javascript.0",
                            "user": "system.user.admin",
                            "ts": 1628370786300,
                            "_id": "mqtt.1.shellies.shelly1-C4328A",
                            "acl": {
                              "object": 1636,
                              "owner": "system.user.admin",
                              "ownerGroup": "system.group.administrator"
                            }
                          }
                          

                          Das Einzige wo die Räume sind ist in den Enums-Objekten:

                          b9251b80-0c11-406d-af46-9847a85da8ca-image.png

                          Damit könnte ich zwar aus dem Objekt die members auslesen - aber das geht mit der list Node nicht.

                          {
                            "_id": "enum.rooms.bedroom",
                            "common": {
                              "name": "Schlafzimmer",
                              "members": [
                                "alias.0.schalter.sz_bettlampe_links",
                                "alias.0.schalter.sz_bettlampe_rechts",
                                "alias.0.schalter.sz_lichtschalter_schrankbeleuchtung",
                                "alias.0.schalter.sz_schrankbeleuchtung",
                                "alias.0.schalter.sz_steckdosendreifach",
                                "alias.0.schalter.sz_tischlampe",
                                "alias.0.schalter.sz_usb4fach"
                              ],
                              "icon": "",
                              "color": "#37e46b"
                            },
                            "type": "enum",
                            "acl": {
                              "object": 1636,
                              "owner": "system.user.admin",
                              "ownerGroup": "system.group.administrator"
                            },
                            "from": "system.adapter.admin.0",
                            "user": "system.user.admin",
                            "ts": 1638823013488
                          }
                          

                          Ich bekomm da nichts raus:

                          622c7135-f910-498e-88f4-06779b79ad90-image.png

                          Mag sein, dass du den Devices Adapter nutzt - dann mag das anders sein, da dieser ja Aliases anlegt - aber bei den native Objekten scheint das nicht zu gehen.

                          R 2 Replies Last reply Reply Quote 0
                          • R
                            rewenode @mickym last edited by

                            @mickym Hier mal ein simpler Versuchsflow :

                            [
                                {
                                    "id": "517d85fc5aaf024e",
                                    "type": "tab",
                                    "label": "Flow 1",
                                    "disabled": false,
                                    "info": "",
                                    "env": []
                                },
                                {
                                    "id": "2e8d03e488999418",
                                    "type": "ioBroker in",
                                    "z": "517d85fc5aaf024e",
                                    "name": "alias.0.Verschluss.Büro_WGn.opened",
                                    "topic": "alias.0.Verschluss.Büro_WGn.opened",
                                    "payloadType": "object",
                                    "onlyack": "",
                                    "func": "rbe",
                                    "gap": "",
                                    "fireOnStart": "false",
                                    "x": 810,
                                    "y": 60,
                                    "wires": [
                                        [
                                            "e363d78423d60f62"
                                        ]
                                    ]
                                },
                                {
                                    "id": "3d77413c217ddcbd",
                                    "type": "ioBroker list",
                                    "z": "517d85fc5aaf024e",
                                    "name": "",
                                    "topic": "alias.0.Verschluss.Büro_WGn.opened",
                                    "objType": "state",
                                    "regex": "",
                                    "asArray": "true",
                                    "onlyIDs": "false",
                                    "withValues": "true",
                                    "x": 830,
                                    "y": 200,
                                    "wires": [
                                        [
                                            "b7c6a270d81aaab9"
                                        ]
                                    ]
                                },
                                {
                                    "id": "b7c6a270d81aaab9",
                                    "type": "change",
                                    "z": "517d85fc5aaf024e",
                                    "name": "",
                                    "rules": [
                                        {
                                            "t": "set",
                                            "p": "ort",
                                            "pt": "msg",
                                            "to": "$lookup(payload.enums, payload.enums.$sift(function($v, $k) {$k ~> /^enum.ort./}).$keys()[0])\t\t",
                                            "tot": "jsonata"
                                        }
                                    ],
                                    "action": "",
                                    "property": "",
                                    "from": "",
                                    "to": "",
                                    "reg": false,
                                    "x": 780,
                                    "y": 260,
                                    "wires": [
                                        [
                                            "b5e5d4321feb90c0"
                                        ]
                                    ]
                                },
                                {
                                    "id": "e363d78423d60f62",
                                    "type": "change",
                                    "z": "517d85fc5aaf024e",
                                    "name": "topic -> windowsTopic",
                                    "rules": [
                                        {
                                            "t": "set",
                                            "p": "windowsTopic",
                                            "pt": "msg",
                                            "to": "topic",
                                            "tot": "msg"
                                        }
                                    ],
                                    "action": "",
                                    "property": "",
                                    "from": "",
                                    "to": "",
                                    "reg": false,
                                    "x": 790,
                                    "y": 140,
                                    "wires": [
                                        [
                                            "3d77413c217ddcbd"
                                        ]
                                    ]
                                },
                                {
                                    "id": "b5e5d4321feb90c0",
                                    "type": "debug",
                                    "z": "517d85fc5aaf024e",
                                    "name": "debug 13",
                                    "active": true,
                                    "tosidebar": true,
                                    "console": false,
                                    "tostatus": false,
                                    "complete": "true",
                                    "targetType": "full",
                                    "statusVal": "",
                                    "statusType": "auto",
                                    "x": 1060,
                                    "y": 260,
                                    "wires": []
                                }
                            ]
                            

                            2022-09-17_01-52-18.png

                            Das abonnierte Object ist ein Alias, kannst du also leicht nachbauen.
                            Es ist hier dem enum.ort.eg zugeornet.

                            nr (1).png

                            Gruß
                            Reiner

                            mickym 1 Reply Last reply Reply Quote 0
                            • R
                              rewenode @mickym last edited by

                              @mickym sagte in batterieliste werte vergleichen und mit telegram ausgeben:

                              Mag sein, dass du den Devices Adapter nutzt - dann mag das anders sein, da dieser ja Aliases anlegt - aber bei den native Objekten scheint das nicht zu gehen.

                              Keinen Device Adapter. Im Falle der Fensterliste sind das Aliase, die auf HM-Adapter verweisen.

                              Im Falle der Batterieliste sind das native Zigbee-Devices ohne Alias. Da macht ein Alias ja auch nicht unbedingt Sinn. Die Batterie hängt ha nicht an einem virtuellen device.

                              Gruß
                              Reiner

                              1 Reply Last reply Reply Quote 0
                              • mickym
                                mickym Most Active @rewenode last edited by mickym

                                @rewenode OK - Du hast Recht -

                                ad0562dd-48b8-494c-9b29-59d4af5a499f-image.png

                                ... aber wie gesagt ich halte das für sehr umständlich ausser man macht sich damit eigene Listen - wie gesagt die "Pollerei" finde ich aus Prinzip nicht gut.

                                Also es funktioniert - aber alle Objekte durchsuchen ist einfach in diesem Fall ungeeignet.

                                In anderen Fällen, so wie Du es beschreibst, dass Du schon über die In-Node triggerst und dann über das Objekt die Funktion ermittelst ist OK.

                                Aber wichtig wäre ja - wenn man mit den Enums triggern kann und das geht halt nicht. Sondern man triggert nur über die normalen Pfade auf states.

                                Ist schon klar, dass Du mit der Methode dann alle Objekte durchsuchen kannst und die Enum Listen wieder rekonstruierst - was in meinen Augen aber sehr umständlich ist. Wenn Du dann alle Objekte, die mit der gefragten Funktion matchen in ein Array gespeichert hast, dann kannst Du alles wieder auslesen - aber ist halt wieder Pollerei.

                                Was ich mit dem github Enhancement erreichen wollte ist, das man quasi mit

                                enum.function.battery - automatisch subscription listen erstellt. - Das können die neunen mqtt-Nodes unter mqtt v5 - wo du immer mehr subscriptions addieren kannst.

                                R 1 Reply Last reply Reply Quote 0
                                • R
                                  rewenode @mickym last edited by

                                  @mickym sagte in batterieliste werte vergleichen und mit telegram ausgeben:

                                  "Pollerei" finde ich aus Prinzip nicht gut.

                                  Also, ich habe genau einen State abboniert und lese auch nur das eine Objekt.
                                  Ich bin mir auch nicht sicher, ob es viel schnelle wäre, state+object+enum im ioB zu lesen, zu kombinieren und an NR zu schicken. Sicher wäre es einfacher, wenn state und object wenigstens auf Wunsch als Einheit zu abbonieren wären.
                                  Aber sonderlich kompliziert ist das nicht. Die Listen müssen ja ohnehin (i.d.R. per JSONata) aufbereitet werden.

                                  Gruß
                                  Reiner

                                  mickym 1 Reply Last reply Reply Quote 0
                                  • mickym
                                    mickym Most Active @rewenode last edited by

                                    @rewenode Nee - was ich meine - und das wäre das optimale wenn man in den iobroker-In Nodes enums angeben könnte.

                                    In JS geht das auch: https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md#on---subscribe-on-changes-or-updates-of-some-state

                                    dd5e020d-91cf-46fe-941c-8233c796edde-image.png

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

                                      Also, ich habe genau einen State abonniert und lese auch nur das eine Objekt.

                                      Das ist aber das Problem - gerade wenn man nicht pollen will - dann sollen ja theoretisch nicht ein bestimmter State triggern. Das kann ich das wieder mit Wildcards machen - aber dann brauch ich das Enum entweder nicht analysieren oder ist einfach dummer Aufwand. Ich verstehe einfach nicht, warum man die ENUM Objekte nicht direkt mit der List Node auslesen kann.

                                      R 1 Reply Last reply Reply Quote 0
                                      • R
                                        rewenode @mickym last edited by

                                        @mickym sagte in batterieliste werte vergleichen und mit telegram ausgeben:

                                        dann sollen ja theoretisch nicht ein bestimmter State triggern. Das kann ich das wieder mit Wildcards machen - aber dann brauch ich das Enum entweder nicht analysieren oder ist einfach dummer Aufwand.

                                        Hast ja recht. Aber ich bin schonmal froh, dass ich mit vertretbarem Aufwand improvisieren kann.

                                        mickym 1 Reply Last reply Reply Quote 0
                                        • mickym
                                          mickym Most Active @rewenode last edited by mickym

                                          @rewenode Und Du hast ja auch Recht 😉 - ich hab es wieder vergessen, dass bei den List-Node Abfragen die Enums mit dabei sind. 😉 - Hatte ich zwar schon mal in anderem Zusammenhang festgestellt - aber war mir wieder entfallen.

                                          Ich hab das ja hier selbst in einem Flow angewendet: https://forum.iobroker.net/topic/50161/verfügbarkeit-von-sensoren-über-node-red-überwachen/45?_=1663374414159

                                          Für die batteriebetrieben Devices ist in meinen Augen neben des Batterielevels die Überprüfung der Verfügbarkeit bzw. über das Pollen der Adapter den online Status zu überwachen unentbehrlich.

                                          1 Reply Last reply Reply Quote 0
                                          • Fred Freund
                                            Fred Freund @mickym last edited by Fred Freund

                                            @mickym said in batterieliste werte vergleichen und mit telegram ausgeben:

                                            Die Geräte melden sich wie gesagt selbst und wenn ich dauernd einen Datenpunkt abfrage, der von einem Gerät gar nicht aktiv gemeldet wird - dann ist das eh sinnlos. Sprich wenn der Datenpunkt im Zigbee- Adapter für das Batterielevel auf 80% steht und das Gerät die Verbindung zum iobroker verloren hat, dann steht da nach 10 Jahren immer noch 80% - da das Gerät diesen Wert nie aktualisiert hat. 10 Jahre unnütze Abfragen mit sinnlosen Ergebnissen. Hört auf zu pollen und wartet bis die Geräte sich melden!!!!

                                            Hello,
                                            ok, jetzt verstehe ich auch warum alle immer nur auf change gehen...klar wenn man es so sieht.

                                            im Prinzip gibt es fertige Blockly zum nachbauen die genau auf change state beruhen.

                                            Da ich einige Sensoren verwende auf esp32 basis ist fuer mich wie du beschreibst mqtt der gemeinsame NENNER, dh. ich koennte auch diesen als letzten Status speicher verwenden.

                                            Danke fuer Eure vielen Antworten, ich muss sagen die komplizierten Dinge lohnen sich fuer meinen Zweck nicht(lernen dauert ), ich benutzte eine vis Seite wo ich die Zustaende sowieso sehe 🙂
                                            Eigentlich wollte ich mich nur mit Telegram beschaeftigen 🤡
                                            8098a9fe-bfb3-486c-a4a2-e107a10e56ba-image.png

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            715
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            3
                                            20
                                            757
                                            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