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

                        979
                        Online

                        31.9k
                        Users

                        80.2k
                        Topics

                        1.3m
                        Posts

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