Node-Red - Homkit - Garagentor steuern

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • Xenobiologist
    Lox Guru
    • 15.01.2016
    • 1099

    #16
    Hmmh, schwierig.
    Hänge mal jeden einzelnen Node aus dem anderen Flow (mit dem Webservice) an den Debug-Node und stell dort auf complete Object um.
    Dann sollte man sehen, wir weißt du kommst.
    Ansonsten könnten wir morgen auch mal per Teamviewer draufgucken.
    Node-RED mit influxDB und Grafana - z.B. Statistiken auslagern:
    https://www.loxforum.com/forum/germa...d-grafana-visu
    Mit Loxone einen Windows-PC steuern:
    https://www.loxforum.com/forum/faqs-...indows-steuern

    Kommentar

    • maxw
      Lox Guru
      • 25.08.2015
      • 1336

      #17
      Das liegt am Visualisierungskennwort.
      Wenn beim Garagentorbaustein ein Visualisierungskennwort hinterlegt ist (was ja sinnvoll ist) dann kann man das leider nicht mehr über Node Red bzw. WebServices verwenden.
      Da müsste man mal bei Loxone Anfragen, wie das trotzdem geht.

      Workaround: Leg dir VIs an für öffnen und schließen, die du nur einem speziellen User zugänglich machst über die Berechtigung und verwende diesen User in Node Red.
      Zuletzt geändert von maxw; 05.03.2021, 13:58.

      Kommentar

      • maxw
        Lox Guru
        • 25.08.2015
        • 1336

        #18
        Achtung veraltet ⚠️

        hier die aktuelle Lösung https://loxwiki.atlassian.net/l/cp/VA8kJrh8






        Um noch mal zum Thema Garage mit HomeKit und Node Red zurück zu kommen.

        Was ich nicht ganz verstehe, warum du dich da mit einem WebService Node herumplagst, satt einfach den Garagenbaustein in Node Red einzubinden.
        Dem brauchst du dann als Command nur "open" oder "close" in der Payload zu übergeben.

        Bei mir ist aber der Garagentor Baustein mit einem Visualisierungs Keyword versehen, deshalb geht das so nicht. Ich habe mir also 2 VirtualIn gemacht, die nur dem User NodeRed gehören und über die ich das Tor mit HomeKit öffnen kann. HomeKit verlangt für ein Garagentor, dass das handy entsperrt ist ODER mit CarPlay verbunden (und damit ja auch entsperrt).

        Damit ist der Zugriff auf das Garagentor immer noch abgesichert aber im Auto ganz einfach (wenn mit CarPlay verbunden) über "Hey Siri" möglich.

        Und so schaut die NodeRed Programmierung bei mir aus

        Klicke auf die Grafik für eine vergrößerte Ansicht  Name: HK-NodeRed-Garagentor.png Ansichten: 344 Größe: 83,6 KB ID: 295052


        Und das ist der Code dazu

        PHP-Code:
        
        [{"id":"793638e5.b507c8","type":"tab","label":"HK Garagentor","disabled":false,"info":""},{"id":"ebe49b96.4b976","type":"loxone-control-in","z":"793638e5.b507c8","name":"Garagentor Position","miniserver":"bda880d5.2d4e98","control":"13aa88f4-0383-9bdf-ffffd7795102f6f8","state":"13aa88f4-0383-9bdd-ffff1d107481ddac","x":130,"y":260,"wires":[["86a05ed9.be9ea8"]]},{"id":"541f3a8c.f66964","type":"loxone-control-in","z":"793638e5.b507c8","name":"Garagentor aktiv","miniserver":"bda880d5.2d4e98","control":"13aa88f4-0383-9bdf-ffffd7795102f6f8","state":"13aa88f4-0383-9bdc-ffff1d107481ddac","x":120,"y":140,"wires":[["2f802a89.264736"]]},{"id":"9870952f.6843c","type":"loxone-control-out","z":"793638e5.b507c8","name":"Tor auf","miniserver":"bda880d5.2d4e98","control":"15797853-0146-0b86-ffffd7795102f6f8","x":1010,"y":220,"wires":[]},{"id":"69226b8c.22ab04","type":"homekit-service","z":"793638e5.b507c8","isParent":true,"bridge":"46224d5f.ea4aec","parentService":"","name":"Garagentor","serviceName":"GarageDoorOpener","topic":"","filter":false,"manufacturer":"Default Manufacturer","model":"Default Model","serialNo":"Default Serial Number","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,"cameraConfigSnapshotOutput":"disabled","cameraConfigInterfaceName":"","characteristicProperties":"{"CurrentDoorState":0}","waitForSetupMsg":false,"outputs":2,"x":590,"y":260,"wires":[["523ce22f.e21be4"],[]]},{"id":"86a05ed9.be9ea8","type":"function","z":"793638e5.b507c8","name":"HomekitHandler","func":"// Use the change and value in position to calculate HomeKit commands\n\nvar GarageDoor = global.get("GarageDoor") || {};\n\n\nvar position = msg.payload\nvar output = null\n\n\n\nif (position == 1) {\n    GarageDoor.state = "OPEN"\n    GarageDoor.target = 0\n    output = {\n        "payload": {\n            "TargetDoorState": 0,\n            "CurrentDoorState": 0\n        }\n    }\n}\nelse if (position == 0) {\n    GarageDoor.state = "CLOSED"\n    GarageDoor.target = 1\n    output = {\n        "payload": {\n            "TargetDoorState": 1,\n            "CurrentDoorState": 1\n        }\n    }\n}\nelse if (position < GarageDoor.position) {\n    GarageDoor.state = "CLOSING"\n    GarageDoor.target = 1\n    output = {\n        "payload": {\n            "TargetDoorState": 1,\n            "CurrentDoorState": 3\n        }\n    }\n}\nelse if (position > GarageDoor.position) {\n    GarageDoor.state = "OPENING"\n    GarageDoor.target = 0\n    output = {\n        "payload": {\n            "TargetDoorState": 0,\n            "CurrentDoorState": 2\n        }\n    }\n}\nelse {\n    GarageDoor.state = "STOPPED"\n    // in HK STOPPED is displayed as OPEN\n    GarageDoor.target = 0\n    output = {\n        "payload": {\n            "TargetDoorState": 0,\n            "CurrentDoorState": 4\n        }\n    }\n}\n\nGarageDoor.position = position\nglobal.set("GarageDoor", GarageDoor);\n\nreturn [output, {"payload": GarageDoor}]\n\n\n\n\n","outputs":2,"noerr":0,"initialize":"","finalize":"","x":380,"y":260,"wires":[["69226b8c.22ab04"],[]]},{"id":"f1e9d7fe.0e3fd8","type":"function","z":"793638e5.b507c8","name":"ActionHandler","func":"// Resend last position on stop of movement so we can detect \n// if door has stopped but is not in end position\n\nvar GarageDoor = global.get("GarageDoor") || {};\n\nGarageDoor.action = msg.payload\nif (msg.payload == 0) {\n    // send last positon once more so we can detect STOP\n    msg.payload = GarageDoor.position\n    return msg;\n}\n\nreturn null\n","outputs":1,"noerr":0,"initialize":"","finalize":"","x":500,"y":140,"wires":[["86a05ed9.be9ea8"]]},{"id":"2f802a89.264736","type":"delay","z":"793638e5.b507c8","name":"","pauseType":"delay","timeout":"100","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":310,"y":140,"wires":[["f1e9d7fe.0e3fd8"]]},{"id":"523ce22f.e21be4","type":"function","z":"793638e5.b507c8","name":"HK2Loxone","func":"// HomeKit Values to Loxone Commands\n\nvar GarageDoor = global.get("GarageDoor") || {};\ntarget = GarageDoor.target\n\n// do not resend target else door will stop\n\nif (msg.payload.TargetDoorState == 0 && target != 0) {\n    return [{"payload": "pulse"}, null]\n} \nelse if (msg.payload.TargetDoorState == 1 && target != 1) {\n    return [null, {"payload": "pulse"}]\n}\n\nreturn [null, null]\n\n","outputs":2,"noerr":0,"initialize":"","finalize":"","x":790,"y":260,"wires":[["9870952f.6843c"],["96bca212.94e338"]]},{"id":"96bca212.94e338","type":"loxone-control-out","z":"793638e5.b507c8","name":"Tor zu","miniserver":"bda880d5.2d4e98","control":"16e6382b-0161-1384-ffffd7795102f6f8","x":1010,"y":280,"wires":[]},{"id":"9575cac9.86fac8","type":"comment","z":"793638e5.b507c8","name":"Eigene VIs zum öffnen und schließen","info":"Weil der Tor Baustein mit einem Visualisierungskennwort gesdhützt ist, werden eigen VI verwendet, die nur dem User NodeRed gehöhren.","x":980,"y":160,"wires":[]},{"id":"5f627d99.ca5764","type":"comment","z":"793638e5.b507c8","name":"Dieser Teil wird nur gebraucht um STOPPED korrekt anzuzeigen","info":"","x":310,"y":100,"wires":[]},{"id":"bda880d5.2d4e98","type":"loxone-miniserver","host":"192.168.178.230","port":"80","enctype":"0","active":true,"keepalive":"30000"},{"id":"46224d5f.ea4aec","type":"homekit-bridge","bridgeName":"Fasangasse","pinCode":"111-11-111","port":"","allowInsecureRequest":false,"manufacturer":"Node Red","model":"1.2.0","serialNo":"Default Serial Number","firmwareRev":"1.2.0","hardwareRev":"1.2.0","softwareRev":"1.2.0","customMdnsConfig":false,"mdnsMulticast":true,"mdnsInterface":"","mdnsPort":"","mdnsIp":"","mdnsTtl":"","mdnsLoopback":true,"mdnsReuseAddr":true,"allowMessagePassthrough":true}] 
        
        Angehängte Dateien
        Zuletzt geändert von maxw; 04.01.2023, 10:18.

        Kommentar


        • GünWün
          GünWün kommentierte
          Kommentar bearbeiten
          Hi maxw, leider funktioniert dein Export nicht.
          Habe Node-Red gerade auf die Version 1.2.9: Maintenance Release upgedatet,da ich noch auf einer Asbach-Version war. :-D
          Kannst du nochmal bitte schauen? Danke
      • maxw
        Lox Guru
        • 25.08.2015
        • 1336

        #19
        Hier noch mal der Flow direkt als Export Datei
        flows-hk-garage.json.txt

        Kommentar

        • maxw
          Lox Guru
          • 25.08.2015
          • 1336

          #20
          GünWün geht das jetzt bei dir?

          Kommentar

          • Tom001
            LoxBus Spammer
            • 20.05.2016
            • 300

            #21
            Ich habe das jetzt mit deiner Vorlage soweit am Laufen, dass es mir den Status korrekt in Homekit anzeigt, ich bekomme auch eine Pushmeldung wenn sich das Garagentor öffnet oder schliesst. Aber ich kann es immer noch nicht selbst öffnen und schließen über Homekit.
            Ich habe nun ein einfaches Beispiel gemacht mit einer Lichtsteuerung. Hier funktioniert der Switch, aber über die HomekitAktion passiert nichts, obwohl man in nodered sieht wenn ich in der Homekit App schalte. Beim Homekit kann ich ja nur festlegen wie es in der App aufscheinen soll, und der Eingang beim Loxone Control Out müsste auch passen, weil es über den Switch ja geht..

            Klicke auf die Grafik für eine vergrößerte Ansicht

Name: Bildschirmfoto 2021-03-30 um 09.58.28.png
Ansichten: 819
Größe: 14,5 KB
ID: 298436

            Kommentar

            • maxw
              Lox Guru
              • 25.08.2015
              • 1336

              #22
              Tom001 das kann so auch nicht funktionieren. Den output von Homekit kannst du nicht direkt an den Loxone Node schicken, den musst du zuerst von Homekit Format auf Loxone Format umwandeln. Deshalb gibt es ja auch den Node HK2Loxone bei mir im posting.

              Kommentar


              • Tom001
                Tom001 kommentierte
                Kommentar bearbeiten
                hm ich blick da nicht durch bei diesen Variablen. Kannst du mir weiterhelfen?

              • maxw
                maxw kommentierte
                Kommentar bearbeiten
                Nimm einfach den Flow und passe deine Loxone Nodes an. Dann funktioniert alles.

              • maxw
                maxw kommentierte
                Kommentar bearbeiten
                Wofür und wie die Variablen sind ist alles in der Node Red Doku beschrieben, das werde ich hier nicht wiederholen. Lies dir einfach die Node Red Doku durch.
            • Doyanole
              Smart Home'r
              • 13.04.2017
              • 58

              #23
              maxw

              Ich habe dein Nodered flow probiert, kriege aber beim HK2Loxone immer ein Javascript error , egal wie ich das dreh und tue ich krieg immer ein Error . Im Homekit zeigt er an wenn ich per Loxone auf und zumache , das heisst die Verbindung da funktioniert, jedoch schaltet er Loxone selber nicht.

              Ich habe mal die HK2Loxone wegenommen und ein Switch dazwischen gebaut, damit kriege ich es provisorisch mal ans laufen , jedoch nicht stabil.

              Wo könnte bei HK2Loxone der fehler liegen ?

              Danke dir für die Hilfe.


              P.S. Fehler gefunden. Ich hatte Node-Red zusammen mit Loxberry installiert. da bekam ich diese Fehlermeldung von Java. Nochmal neu als Standalone installiert , nun funktioniert es einwandfrei.

              Danke

              Zuletzt geändert von Doyanole; 26.09.2022, 19:36.

              Kommentar

              • cko
                Smart Home'r
                • 25.08.2015
                • 75

                #24
                läuft perfekt, danke!

                Kommentar

                • Cinki
                  Dumb Home'r
                  • 30.11.2017
                  • 18

                  #25
                  Habe das selbe Problem mit dem Java Script bei Loxberry und Node-Red. Gibt es keine andere Lösung, damit ich Loxberry und Node-Red laufen lassen kann?

                  Kommentar

                  • Cinki
                    Dumb Home'r
                    • 30.11.2017
                    • 18

                    #26
                    Gibt es dafür keine Lösung?

                    Kommentar

                    Lädt...