Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Node Red HomeKit - Garagentor

    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

    Node Red HomeKit - Garagentor

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

      Hallo zusammen,

      ich versuche verzweifelt mein Garagentor von Meross über Node Red in HomeKit einzubinden. Ich nutze: node-red-contrib-homekit-bridged - GarageDoorOpener
      Mein Meross Garagentor hat die folgenden Optionen:
      Bildschirmfoto 2022-08-28 um 10.46.31.png
      Ich weiß nicht an welcher Stelle ich was "Mappen" muss, damit es zusammenpasst.
      Habe schon vergeblich nach Beispielen gesucht.
      Kann mir jemand helfen?

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

        @minta79

        Nutze einfach das Wiki - das sind sogar Beispiele mit dabei, die Du importieren kannst.

        Hier einfach das einfache Beispiel zum Öffnen und schließen verwenden: https://nrchkb.github.io/wiki/service/garage-door-opener/

        Mit dem Beispiel kannst Du über die Inject Nodes die Steuerung simulieren und dann mit den iobroker Nodes ersezten.

        Die Initialisierung würde ich gleich wegschmeissen. Im Prinzip steuerst Du über TargetDoorState und sobald CurrentDoorState = TargetDoorState hört die Animation auf. Da musst halt dann mit dem ACK Flag arbeiten. Das Speichern der States brauchst alles nicht, dafür kannst auch bei der Initialisierung ja die Datenpunkte auslesen.

        In Deinem Fall brauchst also nur mit dem 0-garageDoor Datenpunkt arbeiten und einmal mit der iobroker-IN Node nur nach bestätigten ACK=False Zuständen filtern für den CurrentState, während Du bei setzen natürlich die iobroker-OUT Node als command nutzt.

        Du musst halt nur noch sagen ob false zu oder auf bedeutet.

        Im Prinzip sollte dieser Flow schon ausreichen mit der entsprechenden Filterung der iobroker-In Nodes:

        77db0cd2-315e-4b5d-88ab-7bceae9ae92f-image.png

        M 1 Reply Last reply Reply Quote 0
        • M
          Minta79 @mickym last edited by

          @mickym vielen Dank für deine Infos. Bei den Beispielen im Wiki sind viele Nodes die er beim Import bei mir nicht erkennt. Kannst du mit evtl deinen Flow exportieren so dass ich ihn importieren kann? Die nodes an sich sind schlüssig für mich, aber mit dem Inhalt bin ich mir immer nicht sicher.

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

            @minta79 Ich versteh es zwar nicht - Du musst halt die Inject Nodes in den Gruppen durch iobroker Nodes ersetzen

            [
                {
                    "id": "5534366a.7ef91",
                    "type": "homekit-service",
                    "z": "0a748caf4d6f8142",
                    "isParent": true,
                    "hostType": "0",
                    "bridge": "1f4da0a9.4023c7",
                    "accessoryId": "",
                    "parentService": "",
                    "name": "Garage Door",
                    "serviceName": "GarageDoorOpener",
                    "topic": "",
                    "filter": false,
                    "manufacturer": "ptath",
                    "model": "Default Model",
                    "serialNo": "0001",
                    "firmwareRev": "",
                    "hardwareRev": "",
                    "softwareRev": "",
                    "cameraConfigVideoProcessor": "",
                    "cameraConfigSource": "",
                    "cameraConfigStillImageSource": "",
                    "cameraConfigMaxStreams": "",
                    "cameraConfigMaxWidth": "",
                    "cameraConfigMaxHeight": "",
                    "cameraConfigMaxFPS": "",
                    "cameraConfigMaxBitrate": "",
                    "cameraConfigVideoCodec": "",
                    "cameraConfigAudioCodec": "",
                    "cameraConfigAudio": false,
                    "cameraConfigPacketSize": "",
                    "cameraConfigVerticalFlip": false,
                    "cameraConfigHorizontalFlip": false,
                    "cameraConfigMapVideo": "",
                    "cameraConfigMapAudio": "",
                    "cameraConfigVideoFilter": "",
                    "cameraConfigAdditionalCommandLine": "",
                    "cameraConfigDebug": false,
                    "cameraConfigInterfaceName": "",
                    "characteristicProperties": "{    \"CurrentDoorState\":1}",
                    "waitForSetupMsg": false,
                    "outputs": 2,
                    "x": 730,
                    "y": 440,
                    "wires": [
                        [],
                        [
                            "ac35abe5f92f2e72"
                        ]
                    ]
                },
                {
                    "id": "14d4bf27.4db229",
                    "type": "debug",
                    "z": "0a748caf4d6f8142",
                    "name": "on set",
                    "active": true,
                    "tosidebar": true,
                    "console": false,
                    "tostatus": false,
                    "complete": "payload",
                    "targetType": "msg",
                    "statusVal": "",
                    "statusType": "auto",
                    "x": 1150,
                    "y": 460,
                    "wires": []
                },
                {
                    "id": "ac35abe5f92f2e72",
                    "type": "switch",
                    "z": "0a748caf4d6f8142",
                    "name": "nur TargetDoorState",
                    "property": "payload.TargetDoorState",
                    "propertyType": "msg",
                    "rules": [
                        {
                            "t": "nnull"
                        }
                    ],
                    "checkall": "true",
                    "repair": false,
                    "outputs": 1,
                    "x": 960,
                    "y": 460,
                    "wires": [
                        [
                            "14d4bf27.4db229"
                        ]
                    ]
                },
                {
                    "id": "1f93f344606a50ee",
                    "type": "group",
                    "z": "0a748caf4d6f8142",
                    "name": "ACK = False",
                    "style": {
                        "label": true
                    },
                    "nodes": [
                        "f0a87280.f66ea",
                        "2f0bb109.cee4ee"
                    ],
                    "x": 214,
                    "y": 299,
                    "w": 312,
                    "h": 122
                },
                {
                    "id": "f0a87280.f66ea",
                    "type": "inject",
                    "z": "0a748caf4d6f8142",
                    "g": "1f93f344606a50ee",
                    "name": "TargetDoorState 0 To Open",
                    "repeat": "",
                    "crontab": "",
                    "once": false,
                    "onceDelay": 0.1,
                    "topic": "",
                    "payload": "{\"TargetDoorState\": 0}",
                    "payloadType": "json",
                    "x": 370,
                    "y": 340,
                    "wires": [
                        [
                            "5534366a.7ef91"
                        ]
                    ]
                },
                {
                    "id": "2f0bb109.cee4ee",
                    "type": "inject",
                    "z": "0a748caf4d6f8142",
                    "g": "1f93f344606a50ee",
                    "name": "TargetDoorState 1 To Close",
                    "props": [
                        {
                            "p": "payload",
                            "v": "{\"TargetDoorState\":1}",
                            "vt": "json"
                        },
                        {
                            "p": "topic",
                            "v": "",
                            "vt": "str"
                        }
                    ],
                    "repeat": "",
                    "crontab": "",
                    "once": false,
                    "onceDelay": 0.1,
                    "topic": "",
                    "payload": "{\"TargetDoorState\":1}",
                    "payloadType": "json",
                    "x": 380,
                    "y": 380,
                    "wires": [
                        [
                            "5534366a.7ef91"
                        ]
                    ]
                },
                {
                    "id": "0d9bf51cd82c26ad",
                    "type": "group",
                    "z": "0a748caf4d6f8142",
                    "name": "ACK = True",
                    "style": {
                        "label": true
                    },
                    "nodes": [
                        "26ef612d.04cd86",
                        "1dcedc5c.cc1004"
                    ],
                    "x": 214,
                    "y": 439,
                    "w": 312,
                    "h": 122
                },
                {
                    "id": "26ef612d.04cd86",
                    "type": "inject",
                    "z": "0a748caf4d6f8142",
                    "g": "0d9bf51cd82c26ad",
                    "name": "CurrentDoorState 0 opened",
                    "props": [
                        {
                            "p": "payload"
                        },
                        {
                            "p": "topic",
                            "vt": "str"
                        }
                    ],
                    "repeat": "",
                    "crontab": "",
                    "once": false,
                    "onceDelay": 0.1,
                    "topic": "",
                    "payload": "{\"CurrentDoorState\":0}",
                    "payloadType": "json",
                    "x": 380,
                    "y": 480,
                    "wires": [
                        [
                            "5534366a.7ef91"
                        ]
                    ]
                },
                {
                    "id": "1dcedc5c.cc1004",
                    "type": "inject",
                    "z": "0a748caf4d6f8142",
                    "g": "0d9bf51cd82c26ad",
                    "name": "CurrentDoorState 1 closed",
                    "repeat": "",
                    "crontab": "",
                    "once": false,
                    "onceDelay": 0.1,
                    "topic": "",
                    "payload": "{\"CurrentDoorState\":1}",
                    "payloadType": "json",
                    "x": 370,
                    "y": 520,
                    "wires": [
                        [
                            "5534366a.7ef91"
                        ]
                    ]
                },
                {
                    "id": "1f4da0a9.4023c7",
                    "type": "homekit-bridge",
                    "bridgeName": "villa-test",
                    "pinCode": "111-11-111",
                    "port": "",
                    "advertiser": "ciao",
                    "allowInsecureRequest": false,
                    "manufacturer": "ptath",
                    "model": "raspberry pi zeroW",
                    "serialNo": "12345678",
                    "firmwareRev": "",
                    "hardwareRev": "",
                    "softwareRev": "",
                    "customMdnsConfig": false,
                    "mdnsMulticast": true,
                    "mdnsInterface": "",
                    "mdnsPort": "",
                    "mdnsIp": "",
                    "mdnsTtl": "",
                    "mdnsLoopback": true,
                    "mdnsReuseAddr": true,
                    "allowMessagePassthrough": true
                }
            ]
            

            1 Reply Last reply Reply Quote 0
            • M
              Minta79 last edited by

              @mickym said in Node Red HomeKit - Garagentor:

              Du musst halt die Inject Nodes in den Gruppen durch iobroker Nodes ersetzen

              Das verstehe ich. Sorry, dass ich mich so blöd anstelle. Aber ein ersetzen reicht ja nicht, denn aus der iobroker Node kommt ein False oder True und keine 0 oder 1, die erwartet wird. Diese muss ich doch ersetzen/ändern oder nicht? Das habe ich mit einer Change Node versucht und es zumindest geschafft dass das Tor sich öffnet, nur beim Schließen kringelt sich der Kreis im HomeKit und hört nicht auf und das Tor schließt sich auch nicht. Befürchte auch dass ich es nicht richtig gemacht habe.
              Zum Schluss muss ich doch auch wieder in die iobroker Node zurück oder nicht, zumindest kenne ich das so von meinen anderen Flows, um auch Änderungen mitzubekommen, wenn das Tor z.B. manuell geöffnet wird.
              Und was ist mit CurrentDoorState? Kann ich den außen vor lassen? In deinem Beispiel steht der nicht drin.
              Würde mich sehr freuen, wenn du mir noch helfen könntest.

              L mickym 2 Replies Last reply Reply Quote 0
              • L
                lessthanmore @Minta79 last edited by lessthanmore

                @minta79 said in Node Red HomeKit - Garagentor:

                Und was ist mit CurrentDoorState? Kann ich den außen vor lassen?

                Leider nein. Genau deswegen dreht sich der "Kringel".
                TargetDoorState bekommt bei mir bspw. immer eine 1 (Impuls), allerdings kommt Homekit damit nicht klar. Über den CurrentDoorState weiß Homekit dann was die nächste Aktion ist bzw. wo das Tor sich gerade befindet (auf/ zu).
                Dafür nutze ich einen Aqara Fensterkontakt, damit ich weiß, ob das Tor geschlossen ist und steuere dann Current wie auch Target; allerdings nutze ich dafür blockly.
                2022-09-08_08-58-23.png

                Hier war das Thema auch schon:
                https://213.136.68.177/topic/15996/garagentor-mit-sonoff-und-reedkontakte-in-yahka-homekit/18

                Hier mit node-red:
                https://github.com/NRCHKB/node-red-contrib-homekit-bridged/issues/33 (nur als Beispiel!)

                DaPeace created this issue in NRCHKB/node-red-contrib-homekit-bridged

                closed Feedback of Garagedoor not working #33

                M 1 Reply Last reply Reply Quote 0
                • M
                  Minta79 @lessthanmore last edited by

                  @lessthanmore

                  Ok. Danke für die Infos. Schaue es mir an

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

                    @minta79 sagte in Node Red HomeKit - Garagentor:

                    Das verstehe ich. Sorry, dass ich mich so blöd anstelle. Aber ein ersetzen reicht ja nicht, denn aus der iobroker Node kommt ein False oder True und keine 0 oder 1, die erwartet wird. Diese muss ich doch ersetzen/ändern oder nicht? Das habe ich mit einer Change Node versucht und es zumindest geschafft dass das Tor sich öffnet, nur beim Schließen kringelt sich der Kreis im HomeKit und hört nicht auf und das Tor schließt sich auch nicht. Befürchte auch dass ich es nicht richtig gemacht habe.

                    Ja da bin ich von ausgegangen, dass Du das mit der Change Node hinbekommst und Du musst es natürlich in beide Richtungen übersetzen. - Ich kanns aber nochmal ändern.

                    Zum Schluss muss ich doch auch wieder in die iobroker Node zurück oder nicht, zumindest kenne ich das so von meinen anderen Flows, um auch Änderungen mitzubekommen, wenn das Tor z.B. manuell geöffnet wird.

                    Ja ich habe noch was verkehrt gemacht - Ja klar Du setzt den Datenpunkt Garage Door via Command. Ich ändere den Flow nochmal

                    Und was ist mit CurrentDoorState? Kann ich den außen vor lassen? In deinem Beispiel steht der nicht drin.
                    Würde mich sehr freuen, wenn du mir noch helfen könntest.

                    Doch der wird berücksichtigt - das ist der Eingang. Was nicht geht - ist, dass das Steuern doppelt setzt - das hatte ich nicht durchdacht. Also falls Du das Tor nicht über Homekit steuerst bekommst Du nur den Current Door state mitgeteilt.

                    So ich habe Dir nun den ganzen Flow nochmal neu gemacht und auch getestet mit true und false - wobei Du das halt ggf. noch tauschen musst:

                    Hier mal der Import an den Du noch die iobroker Nodes hängen musst:

                    [
                       {
                           "id": "5534366a.7ef91",
                           "type": "homekit-service",
                           "z": "0a748caf4d6f8142",
                           "isParent": true,
                           "hostType": "0",
                           "bridge": "1f4da0a9.4023c7",
                           "accessoryId": "",
                           "parentService": "",
                           "name": "Garage Door",
                           "serviceName": "GarageDoorOpener",
                           "topic": "",
                           "filter": false,
                           "manufacturer": "ptath",
                           "model": "Default Model",
                           "serialNo": "0001",
                           "firmwareRev": "",
                           "hardwareRev": "",
                           "softwareRev": "",
                           "cameraConfigVideoProcessor": "",
                           "cameraConfigSource": "",
                           "cameraConfigStillImageSource": "",
                           "cameraConfigMaxStreams": "",
                           "cameraConfigMaxWidth": "",
                           "cameraConfigMaxHeight": "",
                           "cameraConfigMaxFPS": "",
                           "cameraConfigMaxBitrate": "",
                           "cameraConfigVideoCodec": "",
                           "cameraConfigAudioCodec": "",
                           "cameraConfigAudio": false,
                           "cameraConfigPacketSize": "",
                           "cameraConfigVerticalFlip": false,
                           "cameraConfigHorizontalFlip": false,
                           "cameraConfigMapVideo": "",
                           "cameraConfigMapAudio": "",
                           "cameraConfigVideoFilter": "",
                           "cameraConfigAdditionalCommandLine": "",
                           "cameraConfigDebug": false,
                           "cameraConfigInterfaceName": "",
                           "characteristicProperties": "{    \"CurrentDoorState\":1}",
                           "waitForSetupMsg": false,
                           "outputs": 2,
                           "x": 770,
                           "y": 400,
                           "wires": [
                               [],
                               [
                                   "ac35abe5f92f2e72"
                               ]
                           ]
                       },
                       {
                           "id": "ac35abe5f92f2e72",
                           "type": "switch",
                           "z": "0a748caf4d6f8142",
                           "name": "nur TargetDoorState",
                           "property": "payload.TargetDoorState",
                           "propertyType": "msg",
                           "rules": [
                               {
                                   "t": "nnull"
                               }
                           ],
                           "checkall": "true",
                           "repair": false,
                           "outputs": 1,
                           "x": 1000,
                           "y": 420,
                           "wires": [
                               [
                                   "e07e0b4e21acd839"
                               ]
                           ]
                       },
                       {
                           "id": "eee16c2bbbf02c68",
                           "type": "change",
                           "z": "0a748caf4d6f8142",
                           "name": "setze CurrentDoorState",
                           "rules": [
                               {
                                   "t": "move",
                                   "p": "payload",
                                   "pt": "msg",
                                   "to": "payload.CurrentDoorState",
                                   "tot": "msg"
                               },
                               {
                                   "t": "change",
                                   "p": "payload.CurrentDoorState",
                                   "pt": "msg",
                                   "from": "true",
                                   "fromt": "bool",
                                   "to": "0",
                                   "tot": "num"
                               },
                               {
                                   "t": "change",
                                   "p": "payload.CurrentDoorState",
                                   "pt": "msg",
                                   "from": "false",
                                   "fromt": "bool",
                                   "to": "1",
                                   "tot": "num"
                               }
                           ],
                           "action": "",
                           "property": "",
                           "from": "",
                           "to": "",
                           "reg": false,
                           "x": 550,
                           "y": 400,
                           "wires": [
                               [
                                   "5534366a.7ef91"
                               ]
                           ]
                       },
                       {
                           "id": "e07e0b4e21acd839",
                           "type": "change",
                           "z": "0a748caf4d6f8142",
                           "name": "setze payload für iobroker",
                           "rules": [
                               {
                                   "t": "set",
                                   "p": "payload",
                                   "pt": "msg",
                                   "to": "payload.TargetDoorState",
                                   "tot": "msg"
                               },
                               {
                                   "t": "change",
                                   "p": "payload",
                                   "pt": "msg",
                                   "from": "0",
                                   "fromt": "num",
                                   "to": "true",
                                   "tot": "bool"
                               },
                               {
                                   "t": "change",
                                   "p": "payload",
                                   "pt": "msg",
                                   "from": "1",
                                   "fromt": "num",
                                   "to": "false",
                                   "tot": "bool"
                               }
                           ],
                           "action": "",
                           "property": "",
                           "from": "",
                           "to": "",
                           "reg": false,
                           "x": 1250,
                           "y": 420,
                           "wires": [
                               [
                                   "14d4bf27.4db229"
                               ]
                           ]
                       },
                       {
                           "id": "1f4da0a9.4023c7",
                           "type": "homekit-bridge",
                           "bridgeName": "villa-test",
                           "pinCode": "111-11-111",
                           "port": "",
                           "advertiser": "ciao",
                           "allowInsecureRequest": false,
                           "manufacturer": "ptath",
                           "model": "raspberry pi zeroW",
                           "serialNo": "12345678",
                           "firmwareRev": "",
                           "hardwareRev": "",
                           "softwareRev": "",
                           "customMdnsConfig": false,
                           "mdnsMulticast": true,
                           "mdnsInterface": "",
                           "mdnsPort": "",
                           "mdnsIp": "",
                           "mdnsTtl": "",
                           "mdnsLoopback": true,
                           "mdnsReuseAddr": true,
                           "allowMessagePassthrough": true
                       }
                    ]
                    

                    Flow.png

                    Ich hab die Home-Kit Nodes nicht auf der Instanz mit dem iobroker aber bei Fragen nochmal melden.

                    Als Beweis, dass es so funktioniert - hier mal ein kleines Video - wenn man den Flow benutzt und über die HomeApp steuert.

                    HomeKit-Garage Opener - klein.mp4

                    Achte auf jeden Fall darauf, dass Du das mit den ACK Flags sauber machst - sonst hast Du bei einem Datenpunkt ganz schnell eine Endlosschleife drin.

                    M 1 Reply Last reply Reply Quote 0
                    • M
                      Minta79 @mickym last edited by

                      @mickym

                      Vielen vielen Dank!
                      Der HomeKit Schalter funktioniert jetzt super. Wenn ich das Tor allerdings manuell öffne steht im HomeKit immer "schließen" und bleibt in dem Status hängen, bis ich es wieder schließe, dann springt es im HomeKit auf geschlossen.

                      Mein Flow sieht jetzt so aus:
                      Bildschirmfoto 2022-09-26 um 14.34.55.png
                      Bildschirmfoto 2022-09-26 um 14.35.41.png

                      True und False bzw. 0 und 1 habe ich schon versucht zu tauschen, daran liegt es nicht, das passt. Noch einen Tipp?

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

                        @minta79 Nicht irgendwas tauschen. Du kannst mal versuchen ober noch den TargetDoorState mit zu setzen - allerdings musst halt wirklich aufpassen, dass in der iobroker-IN Node nur ACK=true gefiltert wird, sonst hast Du eine Endlosschleife.

                        M 1 Reply Last reply Reply Quote 0
                        • M
                          Minta79 @mickym last edited by

                          @mickym said in Node Red HomeKit - Garagentor:

                          ober noch den TargetDoorState mit zu setzen

                          Das war des Rätsels Lösung! Noch mal vielen vielen Dank!!!!!

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

                          Support us

                          ioBroker
                          Community Adapters
                          Donate
                          FAQ Cloud / IOT
                          HowTo: Node.js-Update
                          HowTo: Backup/Restore
                          Downloads
                          BLOG

                          838
                          Online

                          31.9k
                          Users

                          80.2k
                          Topics

                          1.3m
                          Posts

                          3
                          11
                          803
                          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