Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. bshb - Rollladensteuerung mit yhka Homekit

    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

    bshb - Rollladensteuerung mit yhka Homekit

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

      @mickym

      Der Flow für den Reboot des KLF200 Steuergeräts hat super geklappt! Jetzt wäre noch die Frage, ob man die KLF200 Instanz mit einem Delay gleich mit Rebooten kann. Dann würde ich mir ein CRON Pattern sparen:


      [
      {
      "id": "82ca0ab4.a55f68",
      "type": "tab",
      "label": "Velux_Reboot",
      "disabled": false,
      "info": ""
      },
      {
      "id": "984211f3.c0ec",
      "type": "inject",
      "z": "82ca0ab4.a55f68",
      "name": "Velux_Reboot",
      "props": [
      {
      "p": "payload"
      },
      {
      "p": "topic",
      "vt": "str"
      }
      ],
      "repeat": "86400",
      "crontab": "",
      "once": false,
      "onceDelay": 0.1,
      "topic": "",
      "payload": "true",
      "payloadType": "bool",
      "x": 350,
      "y": 140,
      "wires": [
      [
      "5b75e740.57fd68",
      "f88d0df7.40fa2"
      ]
      ]
      },
      {
      "id": "5b75e740.57fd68",
      "type": "ioBroker out",
      "z": "82ca0ab4.a55f68",
      "name": "KLF200_Stgt_Reboot",
      "topic": "klf200.0.gateway.RebootGateway",
      "ack": "false",
      "autoCreate": "false",
      "stateName": "",
      "role": "",
      "payloadType": "",
      "readonly": "",
      "stateUnit": "",
      "stateMin": "",
      "stateMax": "",
      "x": 630,
      "y": 140,
      "wires": []
      },
      {
      "id": "f88d0df7.40fa2",
      "type": "delay",
      "z": "82ca0ab4.a55f68",
      "name": "Delay 60 Sekunden",
      "pauseType": "delay",
      "timeout": "60",
      "timeoutUnits": "seconds",
      "rate": "1",
      "nbRateUnits": "1",
      "rateUnits": "second",
      "randomFirst": "1",
      "randomLast": "5",
      "randomUnits": "seconds",
      "drop": false,
      "x": 610,
      "y": 260,
      "wires": [
      [
      "d1df10f6.56b6b"
      ]
      ]
      },
      {
      "id": "d1df10f6.56b6b",
      "type": "ioBroker out",
      "z": "82ca0ab4.a55f68",
      "d": true,
      "name": "KLF200_Adapter_Reboot",
      "topic": "",
      "ack": "false",
      "autoCreate": "false",
      "stateName": "",
      "role": "",
      "payloadType": "",
      "readonly": "",
      "stateUnit": "",
      "stateMin": "",
      "stateMax": "",
      "x": 870,
      "y": 260,
      "wires": []
      }
      ]

      b5213f35-56c2-4095-b75e-6d9f55507a3b-image.png

      Bzgl. des bedingten Schließung der Dachfensterrollladen habe ich noch mal eine Grafik gemalt. Es ist etwas komplizierter:
      47bb1ec2-02f9-4ab8-ad76-43371be3455d-image.png
      Ich habe den Flow mal gebaut. Aktuell sehe ich noch das Problem, dass bei der 7% Prüfung des Dachfensters, der Dachfensterwert weitergegeben wird, nicht der Dachfensterrollladenwert - siehe zweiter Switch. Kann dieser Switch den einen Wert prüfen, aber einen anderen ausgeben?


      [
      {
      "id": "a65f570c.ebb128",
      "type": "tab",
      "label": "DF-RL_Test",
      "disabled": false,
      "info": ""
      },
      {
      "id": "dec4374.9f7f8c8",
      "type": "ioBroker get",
      "z": "a65f570c.ebb128",
      "name": "DF-RL_Current",
      "topic": "klf200.0.products.9.currentPosition",
      "attrname": "current",
      "payloadType": "value",
      "x": 180,
      "y": 120,
      "wires": [
      [
      "3af45de8.b4f5d2"
      ]
      ]
      },
      {
      "id": "3af45de8.b4f5d2",
      "type": "switch",
      "z": "a65f570c.ebb128",
      "name": "DF-RL_Target ? DF-RL_Current",
      "property": "DF-RL_Target",
      "propertyType": "msg",
      "rules": [
      {
      "t": "lt",
      "v": "DF-RL_Current",
      "vt": "msg"
      },
      {
      "t": "gt",
      "v": "DF-RL_Current",
      "vt": "msg"
      }
      ],
      "checkall": "true",
      "repair": false,
      "outputs": 2,
      "x": 450,
      "y": 180,
      "wires": [
      [
      "6f82cd49.51f214"
      ],
      [
      "787e06c1.468d58"
      ]
      ]
      },
      {
      "id": "6a3a7def.160224",
      "type": "ioBroker in",
      "z": "a65f570c.ebb128",
      "name": "klf200.0.products.9.currentPosition",
      "topic": "klf200.0.products.8.currentPosition",
      "payloadType": "value",
      "onlyack": false,
      "func": "rbe",
      "gap": "",
      "fireOnStart": "true",
      "x": 230,
      "y": 360,
      "wires": [
      [
      "1666ec7c.670934"
      ]
      ]
      },
      {
      "id": "1666ec7c.670934",
      "type": "ioBroker out",
      "z": "a65f570c.ebb128",
      "name": "0_userdata.0.Ankleide_Dachfensterrollladen",
      "topic": "0_userdata.0.Ankleide_Dachfensterrollladen",
      "ack": "true",
      "autoCreate": "false",
      "stateName": "",
      "role": "",
      "payloadType": "",
      "readonly": "",
      "stateUnit": "",
      "stateMin": "",
      "stateMax": "",
      "x": 790,
      "y": 360,
      "wires": []
      },
      {
      "id": "23dda429.aa8b1c",
      "type": "ioBroker in",
      "z": "a65f570c.ebb128",
      "name": "DF-RL_Target",
      "topic": "0_userdata.0.Ankleide_Dachfensterrollladen",
      "payloadType": "value",
      "onlyack": "",
      "func": "rbe",
      "gap": "",
      "fireOnStart": "false",
      "x": 170,
      "y": 180,
      "wires": [
      [
      "3af45de8.b4f5d2"
      ]
      ]
      },
      {
      "id": "6f82cd49.51f214",
      "type": "ioBroker out",
      "z": "a65f570c.ebb128",
      "name": "DF-RL_Target",
      "topic": "klf200.0.products.9.targetPosition",
      "ack": "false",
      "autoCreate": "false",
      "stateName": "",
      "role": "",
      "payloadType": "",
      "readonly": "",
      "stateUnit": "",
      "stateMin": "",
      "stateMax": "",
      "x": 730,
      "y": 100,
      "wires": []
      },
      {
      "id": "787e06c1.468d58",
      "type": "switch",
      "z": "a65f570c.ebb128",
      "name": "DF Current Pos. ? 7",
      "property": "DF_Current",
      "propertyType": "msg",
      "rules": [
      {
      "t": "gt",
      "v": "7",
      "vt": "num"
      },
      {
      "t": "lte",
      "v": "7",
      "vt": "num"
      }
      ],
      "checkall": "true",
      "repair": false,
      "outputs": 2,
      "x": 750,
      "y": 180,
      "wires": [
      [],
      [
      "3a21b42e.6db8ac"
      ]
      ]
      },
      {
      "id": "3a21b42e.6db8ac",
      "type": "ioBroker out",
      "z": "a65f570c.ebb128",
      "name": "klf200.0.products.9.targetPosition",
      "topic": "klf200.0.products.9.targetPosition",
      "ack": "false",
      "autoCreate": "false",
      "stateName": "",
      "role": "",
      "payloadType": "",
      "readonly": "",
      "stateUnit": "",
      "stateMin": "",
      "stateMax": "",
      "x": 1030,
      "y": 180,
      "wires": []
      },
      {
      "id": "6b2dbcb2.b8e6e4",
      "type": "ioBroker in",
      "z": "a65f570c.ebb128",
      "name": "DF_Current",
      "topic": "0_userdata.0.Ankleide_Dachfenster",
      "payloadType": "value",
      "onlyack": "",
      "func": "rbe",
      "gap": "",
      "fireOnStart": "false",
      "x": 160,
      "y": 240,
      "wires": [
      [
      "3af45de8.b4f5d2"
      ]
      ]
      }
      ]

      f641acde-7015-4914-acf9-9b1194059d51-image.png

      Btw. Mega cooler Support hier!

      mickym 3 Replies Last reply Reply Quote 0
      • mickym
        mickym Most Active @sascho last edited by

        @sascho sagte in bshb - Rollladensteuerung mit yhka Homekit:

        @mickym

        Der Flow für den Reboot des KLF200 Steuergeräts hat super geklappt! Jetzt wäre noch die Frage, ob man die KLF200 Instanz mit einem Delay gleich mit Rebooten kann. Dann würde ich mir ein CRON Pattern sparen:

        Du kannst den Adapter einfach mit einer Exec Node neustarten, indem Du den Befehl

        iobroker restart instanz
        

        verwendest.

        89414aea-81bc-4afe-97ad-dbabcab40e84-image.png

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

          @sascho sagte in bshb - Rollladensteuerung mit yhka Homekit:

          Bzgl. des bedingten Schließung der Dachfensterrollladen habe ich noch mal eine Grafik gemalt. Es ist etwas komplizierter:
          47bb1ec2-02f9-4ab8-ad76-43371be3455d-image.png

          Ich habe Dir doch eine Flow unten zur Verfügung gestellt, der das macht.

          Allerdings, wenn nichts gemacht werden soll - dann muss man es auch nicht implementieren.

          2d9ddc9d-8b20-4b6f-85ea-d6d4d22be74b-image.png

          Die Nachrichten wie gesagt warten nicht auf Dich - deswegen nutzt es nicht, wenn Du 3 Trigger in Deinem Flow nutz. Der Vergleich wird nie erfolgreich sein, weil es jedesmal neue Nachrichtenobjekte sind.

          Deswegen hier noch mal der FLOW für Dich, den ich Dir gestern zur Verfügung gestellt habe und der Dir Deine blaue Grafik zur Verfügung stellt.

          Allerdings hast Du aus meiner Sicht trotzdem ein Fehler. Du schließt nur wenn das Target unter 7 ist. Wenn Du von 100 auf 40 schließen willst, schließt Du das Fenster nicht.

          Im Prinzip hab ich doch so verstanden, dass der Rollladen nur geschlossen werden soll, wenn der Target unter 7 ist, aber in jedem Fall das Fenster immer auf das Target eingestellt werden soll, egal ob geschlossen oder geöffnet werden soll.

          be08f841-896c-4487-952e-1cc0eb7ddba4-image.png

          [
             {
                 "id": "64916d25.85ac54",
                 "type": "ioBroker in",
                 "z": "dce8fa20.2e93c8",
                 "name": "targetValue",
                 "topic": "targetValue",
                 "payloadType": "value",
                 "onlyack": "",
                 "func": "all",
                 "gap": "",
                 "fireOnStart": "false",
                 "x": 230,
                 "y": 3720,
                 "wires": [
                     [
                         "dec4374.9f7f8c8"
                     ]
                 ]
             },
             {
                 "id": "dec4374.9f7f8c8",
                 "type": "ioBroker get",
                 "z": "dce8fa20.2e93c8",
                 "name": "hole current",
                 "topic": "current",
                 "attrname": "current",
                 "payloadType": "value",
                 "x": 440,
                 "y": 3720,
                 "wires": [
                     [
                         "3af45de8.b4f5d2"
                     ]
                 ]
             },
             {
                 "id": "3af45de8.b4f5d2",
                 "type": "switch",
                 "z": "dce8fa20.2e93c8",
                 "name": "Fenster öffnen schliessen",
                 "property": "payload",
                 "propertyType": "msg",
                 "rules": [
                     {
                         "t": "lt",
                         "v": "current",
                         "vt": "msg"
                     },
                     {
                         "t": "gt",
                         "v": "current",
                         "vt": "msg"
                     }
                 ],
                 "checkall": "true",
                 "repair": false,
                 "outputs": 2,
                 "x": 660,
                 "y": 3720,
                 "wires": [
                     [
                         "ad50345b.ef7b08"
                     ],
                     [
                         "e3fda95f.74b768",
                         "ad50345b.ef7b08"
                     ]
                 ]
             },
             {
                 "id": "e3fda95f.74b768",
                 "type": "switch",
                 "z": "dce8fa20.2e93c8",
                 "name": "Rollladen schließen nur bei target < 7",
                 "property": "payload",
                 "propertyType": "msg",
                 "rules": [
                     {
                         "t": "lt",
                         "v": "7",
                         "vt": "num"
                     }
                 ],
                 "checkall": "true",
                 "repair": false,
                 "outputs": 1,
                 "x": 950,
                 "y": 3800,
                 "wires": [
                     [
                         "c4409b3c.c55ff8"
                     ]
                 ]
             },
             {
                 "id": "ad50345b.ef7b08",
                 "type": "ioBroker out",
                 "z": "dce8fa20.2e93c8",
                 "name": "Fenster auf target setzen egal ob öffnen oder schliessen",
                 "topic": "",
                 "ack": "false",
                 "autoCreate": "false",
                 "stateName": "",
                 "role": "",
                 "payloadType": "",
                 "readonly": "",
                 "stateUnit": "",
                 "stateMin": "",
                 "stateMax": "",
                 "x": 1070,
                 "y": 3720,
                 "wires": []
             },
             {
                 "id": "c4409b3c.c55ff8",
                 "type": "ioBroker out",
                 "z": "dce8fa20.2e93c8",
                 "name": "Rollladen schließen",
                 "topic": "",
                 "ack": "false",
                 "autoCreate": "false",
                 "stateName": "",
                 "role": "",
                 "payloadType": "",
                 "readonly": "",
                 "stateUnit": "",
                 "stateMin": "",
                 "stateMax": "",
                 "x": 1280,
                 "y": 3800,
                 "wires": []
             }
          ]
          

          Importiere mal den Flow und dann wirst Du sehen, wie das implementiert wurde.

          Dein Flow mit current und target Trigger wird nichtfunktionieren, da Du für Vergleiche nur Werte in einem Nachrichtenobjekt vergleichen kannst.

          Ich habe das schon mehrfach geschrieben - du hast bei Vergleichen von variablen Werten grundsätzlich 2 Möglichkeiten:

          1. Du speicherst Dir Werte in Flow Variablen ab, dann stehen Dir diese jederzeit zum Vergleich zur Verfügung.
          2. Du fügst Eigenschaften Deinem Nachrichten Objekt in einer Kette hinzu und schliefst damit alle benötigten Werte mit, damit sie Dir in Echtzeit zum Vergleich zur Verfügung stehen.

          Ich finde es nicht mehr wo ich das ganze Nachrichtenobjekt mal erklärt habe.

          Das Nachrichtenobjekt ist ein Javaobjekt in Node Red mit dem Namen: msg
          Das hat nun mehrere Eigenschaften: In der Regel eine payload (also msg.payload) und ein topic (msg.topic).

          Man kann aber auch andere Eigenschaften definieren.

          In dem Flow, den ich Dir zur Verfügung gestellt habe ist in der msg.payload der target wert (getriggert über einen iobroker IN-Node).
          Mit der iobroker GET-Node addiere ich zum msg Objekt eine Eigenschaft current (also msg.current) und das kann dann in der switch Node verglichen werden, da beide Eigenschaften Bestandteil des Nachrichtenobjektes sind.

          Hier siehst Du ähnliche Problemstellungen, die entweder über Flow-Variablen oder zusätzliche Eigenschaften im Nachrichtenobjekt gelöst wurden,

          https://forum.iobroker.net/topic/45662/wait-until-ähnliche-node-arbeit-mit-context/2
          https://forum.iobroker.net/topic/45737/mehrere-datenpunkte-mit-einer-variablen-vergleichen/25
          https://forum.iobroker.net/topic/43480/gelöst-poolsteuerung-anfänger-braucht-e-hilfe

          Merke einfach die Nachrichtenobjekte warten nicht aufeinander und der switch vergleicht nur in Echtzeit!!!

          screen.png

          Deshalb kann Dein Flow nicht funktionieren.

          Das schöne an NodeRed ist ja - dass man Deine Grafik schön in Node Red abbilden kann.

          screen.png

          Ich habe ja mal das Mapping eingezeichnet. Wenn Du unten nicht mit target sondern mit current vergleichen willst musst halt die switch Node ändern. Und ob Du nun die Fenster oder die Rollläden auf die target Postition setzen willst - das machst Du halt wie Du es brauchst.

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

            @sascho sagte in bshb - Rollladensteuerung mit yhka Homekit:

            Btw. Mega cooler Support hier!

            Danke schön. Mache ich gerne - bei den vielen Projekten lerne ich ja selbst auch. 😉

            S 1 Reply Last reply Reply Quote 0
            • S
              sascho @mickym last edited by sascho

              @mickym

              Du bist aber hier schon fast Red Node Key Account Berater :-).

              Also das Rebooten des KLF200 Adapters klappt jetzt. Das ist super... so kann ich regelmäßig Adapter rebooten, wenn sie hängen bleiben sollten. Klasse.

              Bzgl. des Flows... ich habe den gerade mal importiert. So ganz scheint es noch nicht zu passen, oder ich stehe einfach auf der Leitung. Ich vermute aber, dass noch ein Missverständnis vorliegt.
              Die Dachfenster selbst sollen über diesen Flow nie angesteuert werden. Es soll nur geprüft werden, ob sie offen sind. Nur die Dachfensterrollladen sollen angesteuert werden - und hier soll geprüft werden ob sie geschlossen werden sollen oder öffnen sollen. Öffnen dürfen sie immer, aber schließen nicht wenn die Dachfenster offen sind.

              Ich habe Deinen Flow mal dahingehend angepasst und er scheint zu funktionieren:
              d5bba601-e9a3-4118-94c1-8a7dbad0a2ea-image.png

              836d622d-cb2e-4545-8bb4-06ca1ca633b4-image.png

              d9b7c4bc-2862-4842-b17b-496f8b749db1-image.png


              [
              {
              "id": "9bc15394.e1382",
              "type": "switch",
              "z": "626ad550.a646cc",
              "name": "Rollladen öffnen schliessen",
              "property": "payload",
              "propertyType": "msg",
              "rules": [
              {
              "t": "lt",
              "v": "currentPosition_DF-RL",
              "vt": "msg"
              },
              {
              "t": "gt",
              "v": "currentPosition_DF-RL",
              "vt": "msg"
              }
              ],
              "checkall": "true",
              "repair": false,
              "outputs": 2,
              "x": 580,
              "y": 160,
              "wires": [
              [
              "d13c3e8b.58f49"
              ],
              [
              "24dd6c35.6132c4"
              ]
              ]
              }
              ]

              Das einzige, was noch nicht funktioniert ist, auf der IQontrol Oberfläche eine Notification erscheinen zu lassen die so etwas schreibt wie "Dachfenster offen. Rollladen kann nur geöffnet werden!". Das wäre die Kirsche auf der Sahnetorte :-). Wie findest Du das?

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

                @sascho Na gut, dann weißt Du ja nun wie es prinzipiell funktioniert. 😉 - Jedenfalls glaube ich, dass Du das nun alles verstanden hast und selbst Deine Flows machen kannst. 🙂

                Bzgl. IQontrol kann ich Dir leider nicht weiterhelfen. Da gibt es aber einen Thread. Da könntest ja mal Deine Frage stellen. 😉

                Wahrscheinlich muss man auch nur was in einen Datenpunkt schreiben, oder man definiert einen Datenpunkt, der eine Notification auslöst, wenn man da was reinschreibt. 😉

                Die notification im NR Dashboard hast ja easy hinbekommen.

                S 2 Replies Last reply Reply Quote 0
                • S
                  sascho @mickym last edited by

                  @mickym

                  Ich bin zufrieden, wie das System nun läuft. Das UI sieht wirklich gut aus - auch ohne das Pop-Up ist klar, warum ein Rollladen nicht fährt. Ich denke, ich lasse es so.

                  Jetzt würde ich mich mal an die Programmierung der Szenarien machen - Regelmäßiges Dachfenster öffnen, Alarmanlage usw. :-). Es gibt ja immer etwas zu tun.

                  1 Reply Last reply Reply Quote 0
                  • S
                    sascho @mickym last edited by sascho

                    @mickym

                    Hi!
                    Ich bin jetzt mit Fenstern, Rollläden usw. weitgehend durch. Demnächst mache ich mich an die Umsetzung des Alarmanlage.
                    Leider stürzt der Velux KLF200 Adapter noch regelmäßig ab. Ich konnte das noch nicht abstellen.
                    Per manuellen Neustart klappt dann wieder alles.
                    Das Log enthält auch eine Fehlermeldung.
                    Gibt es in Node red eine Möglichkeit, das Log auszulesen? Per trigger würde ich dann bei einer bestimmten Fehlermeldung den Neustart auslösen.
                    :-).

                    P.S. iqcontrol kann Meldungen per Pop up ausgeben, wenn man einen Datenpunkt mit einem Wert füllt.

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

                      @sascho sagte in bshb - Rollladensteuerung mit yhka Homekit:

                      @mickym

                      Hi!
                      Ich bin jetzt mit Fenstern, Rollläden usw. weitgehend durch. Demnächst mache ich mich an die Umsetzung des Alarmanlage.
                      Leider stürzt der Velux KLF200 Adapter noch regelmäßig ab. Ich konnte das noch nicht abstellen.
                      Per manuellen Neustart klappt dann wieder alles.
                      Das Log enthält auch eine Fehlermeldung.
                      Gibt es in Node red eine Möglichkeit, das Log auszulesen? Per trigger würde ich dann bei einer bestimmten Fehlermeldung den Neustart auslösen.
                      :-).

                      P.S. iqcontrol kann Meldungen per Pop up ausgeben, wenn man einen Datenpunkt mit einem Wert füllt.

                      Ehrlich gesagt verstehe ich nicht warum Du den Aufwand betreibst mit dem Adapter, mit täglichen Neustarts und nun getriggerten Neustarts, da würde ich erst mal die Nodes unten ausprobieren bevor ich da mit dem Adapter weiter rumärgere:
                      https://flows.nodered.org/node/node-red-contrib-velux.

                      aa8f1f00-efb1-4e31-8c5e-aaff8de1f280-image.png

                      Das hat überhaupt nichts mit der UI zu tun.

                      Wie gesagt ich würde es nicht machen - sondern erst die Velux Nodes anstelle des Adapters ausprobieren.

                      Ansonsten hast Du Glück, da ich schon mal einen Flow gebastelt hatte, der das Log ausliest und jeder Eintrag den Flow triggert. Du musst Dir halt eine Tail-Node installieren. Ich habe für mich mal die einfachste genommen:

                      https://flows.nodered.org/node/node-red-node-tail

                      Die Logzeilen habe ich dann mit folgendem Flow aufbereitet und analysiert:

                      0363c0ab-6f4d-463c-92aa-1230cf33bae8-image.png

                      Das kannst nun natürlich weiter mit einem Switch filtern und dann auf einzelne Ereignisse reagieren. Als Filter würde ich dann einfach auf das vorhandensein eines Textes reagieren.

                      26e66aee-247c-4054-8204-93a1ea09e01e-image.png

                      Ich lad das mal als Datei hoch - weil sonst der Import fehlschlägt. Der Import über die Zwischenablage stört sich immer an den eckigen Klammern.

                      iobroker log auslesen.json

                      Wie gesagt die Datei runterladen, abspeichern und den Import dann über die Datei machen:
                      5cb6e8d2-11ec-40f5-9904-8e2e09ed3ec6-image.png

                      Aber wie gesagt vorher die tail Node installieren.

                      Es gibt auch noch andere tail Nodes mit mehr Funktionen, wie diese hier:
                      https://flows.nodered.org/node/node-red-contrib-tail-file

                      aber wie gesagt - ist alles Geschmackssache

                      S 1 Reply Last reply Reply Quote 0
                      • S
                        sascho @mickym last edited by sascho

                        @mickym

                        Cool, bevor ich das Log auslese, würde ich wirklich erstmal die Velux Nodes versuchen.
                        Damit ich das gleich richtig verinnerliche, man nutzt dann nicht mehr den KLF200 Adapter sondern greift mit den Velux Nodes direkt auf das KLF200 Steuergerät zu?
                        Mit dem dem Objekt "Velux Nodes" schreibe ich Werte, mit dem "Velux API" lese ich Werte aus?

                        Ich habe das gerade mal ausprobiert:

                        1. KLF 200 Adapter deaktiviert.
                        2. Eine Velux Nodes mit IP und Passwort angelegt (WLAN Passwort direkt aus dem Velux UI herauskopiert), einem IOBroker In, das eine 0 einspeist. Allerdings bekomme ich im Log Fehlerwerte ausgegeben:

                        Hier mal meine Setups:

                        c8b5bbfd-cef8-41df-8827-d30d28e9d267-image.png
                        3d16aa58-545c-4e04-9e06-a39bdc97eca1-image.png
                        26726f47-af1f-4d8d-9484-486663ddf65c-image.png
                        9a11cac8-cbee-45ae-852a-8a7ec4c73207-image.png

                        93c8e123-9503-4409-b7a7-79a33036b245-image.png

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

                          @sascho Nun das hatte ich ja unten schon vorgeschlagen - grundsätzlich baut NodeRed direkt dann zu Deiner KLF 200 eine Verbindung auf und man grundsätzlich auch anstelle der Adapter im iobroker auch direkt von NodeRed eine Verbindung mit den entsprechenden Nodes aufbauen.

                          Nun habe ich natürlich grundsätzlich das Problem, dass ich keine Velux Umgebung - Fenster habe.

                          Bei Deiner Fehlermeldung sieht aus, dass der Login nicht akzeptiert ist oder die Verbindung blockiert ist. Du musst halt erst mal sicherstellen, dass zumindest der iobroker Adapter nicht auch auf Deine Schnittstelle zugreift. Also den Adapter auf jedenfall deaktivieren - Du greifst über NodeRed direkt auf das Steuergerät zu.

                          Dann noch ein Tipp - am Anfang zum Ausprobieren - benutze einfach die Inject Nodes das ist einfacher, als immer über die iobroker Datenpunkte zu gehen und damit kann man viel schneller ausprobieren ob was funktioniert.

                          So auch wenn ich von der Velux Thematik nicht viel verstehe, lese ich mich halt bisschen ein - aber kann natürlich eben selbst nie nachprüfen, ob ich selbst alles richtig verstanden habe bzw. ob sich dann das auch richtig verhält.

                          Auf meinem Standalone System habe ich mir mal die Nodes installiert.

                          Also meines Erachtens hast Du mit der Fehlermeldung generell noch ein Verbindungsproblem.

                          Du wirst in meinen Augen hauptsächlich mit den Velux Nodes arbeiten. Mit der Velux API ist das eher low level und man kann damit wahrscheinlich noch diffiziellere Sachen machen.
                          Die API ist ja hier dokumentiert: https://velcdn.azureedge.net/-/media/com/api/klf200/technical specification for klf 200 api-ver3-18.pdf
                          auf dieser setzt sowohl der iobroker Adapter auf, als auch die Velux Node.

                          Die Velux Scenes - ist eine Node mit der Du auf in Deinem Velux System definierte Szenen abrufen kannst.

                          Ob das was schreibst oder liest hängt also von dem topic ab:

                          If the topic starts with velux: this is possible:
                          
                          velux:read Like setting, see above, the value is output from the buffer
                          
                          velux:load Like setting, see above, the value is requested and output at the KLF200
                          
                          velux:read:id:<id> -1 all values ​​or velux-node id for read. The settings are ignored.
                          
                          velux:load:id:<id> -1 all values ​​or velux-node id for load. The settings are ignored.
                          
                          velux:read:name:<name> Read the value by velux-node name. The settings are ignored.
                          
                          velux:load:name:<name> Load the value by velux-node name. The settings are ignored.
                          
                          velux:write Like setting, see above, the value is send to the velux-node
                          
                          velux:write:[name:<name>:][id:<id>:][valuetype:<valuetype>:] Overwrite the settings, the Payload must be an float value. []=optional, id and name together make no sense.
                          

                          Mit einer Inject Node - kann man so dann ein Fenster mit bestimmter ID auslesen:
                          b4e370ec-2112-43ae-8055-84fdacb28065-image.png

                          Im Prinzip würde ich mir mal an Deiner Stelle diese Beispiele hier anschauen:

                          So solltest Du über folgende Konfig:

                          49e59305-2034-4533-b3fa-69d13b5d364a-image.png der Velux Node - eben die aktuelle Position auslesen können.

                          Und so setzt Du das Fenster auf eine bestimmte Postition

                          aa074432-d960-4cdf-b37f-e12a3c342ccf-image.png

                          Die current Position kann man auch sicher nicht beschreiben, sondern eher was zum Lesen. Ich denke DU, dass Du das Target beschreiben wolltest.

                          Aber wie gesagt - erst muss mal die Kommunikation stimmen und die node selbst sollte den Status no errors detected haben.

                          In dem Link zu den Beispielen ist auch ein Beispiel, wie man die API aufruft.

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

                            @sascho

                            Eine Velux Nodes mit IP und Passwort angelegt (WLAN Passwort direkt aus dem Velux UI herauskopiert), einem IOBroker In, das eine 0 einspeist. Allerdings bekomme ich im Log Fehlerwerte ausgegeben:

                            Das ist meines Erachtens falsch!!!

                            Unter den Beispielen gibt es folgenden Eintrag:

                            You can find the password on the back of the KLf. If that doesn't work, you will need to reset the device to the factory settings.
                            You can find the IP address of the KLF in the settings in the web interface when you connect via WiFi or in the device list in your router.

                            Das heißt Du musst das Passwort eingeben, was auf der Rückseite Deines KLF - Box (Gateways) aufgeklebt ist. Wenn das nicht funktioniert, dann müsste man es die Box zurücksetzen.

                            Allerdings solltest Du in meinen Augen auch im iobroker Adapter dieses Passwort doch nutzen. Kannst Du es da rauskopieren?

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

                              Ich hab mir die Fehlermeldung nochmal genauer angeschaut.

                              Ich denke Du hast den KLF Adapter nicht richtig deaktiviert - ggf. musst Du nochmal neustarten.

                              e0adbeb4-46e6-418d-bdce-9943daf4464b-image.png

                              Der Pfad spricht nämlich dafür dass die API hier vom iobroker-Adapter benutzt wird.

                              Die API von den NodeRed Nodes sollte nämlich hier bei der Installation zu finden sein.

                              /opt/iobroker/iobroker-data/node-red/node_modules
                              

                              dort sollte es jetzt nämlich ebenfalles ein Verzeichnis Velux-KF200 -api geben. Ich gehe davon aus, dass sowohl der Adapter als auch die Node Red Nodes die gleiche API nutzen.

                              Würde halt erst mal Backups machen und dann versuchen, das NodeRed Interface zu nutzen.

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

                                @sascho Falls Du es doch mit dem Logfile versuchen musst - habe ich nun die andere tail Node installiert, da die einfache tail Node den Tageswechsel, wenn die neue Datei als current log erstellt wird, nicht mitmacht. Die neue anscheinend schon. Die spuckt nur die Kommandos oder normale Statusmeldungen als Fehler aus - die kann man aber einfach mit einer Catch Node abfangen.

                                Falls das dann aktuell wird - poste ich den Flow.

                                S 1 Reply Last reply Reply Quote 0
                                • S
                                  sascho @mickym last edited by

                                  @mickym

                                  Also, es lag tatsächlich am Passwort. In der Velux Docu wird geschrieben, dass man das Wlan Passwort verwenden soll. Das stimmt aber nicht - man muss das WebUI Passwort nehmen. Jetzt taucht keine Fehlermeldung mehr im Log auf.
                                  Allerdings reagiert das Testdachfenster noch nicht. Ich bin gerade doch noch mit einem Datenpunkt unterwegs, da ich so die Werte zwischen 0 und 100 tauschen kann. Muss man evtl. im Topic eine Einstellung machen?

                                  67e5f701-ce77-46e5-a3fb-3daa41b79e2d-image.png

                                  3eb49878-3016-48b7-90ec-ddd77bd9b257-image.png

                                  2ab5295c-054c-4db5-92a1-b4c2da6da0f7-image.png

                                  P.S. Den Reset vom Steuergerät würde ich ungern machen, da wir DF im First haben, an die ich zum Anlernen nie wieder rankomme...

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

                                    @sascho Nun wenn keine Fehlermeldung mehr kommt, ist ja gut - ich würde erst mal auslesen, um zu sehen, ob die Kommunikation funktioniert und dann halt mit mehren Inject Nodes arbeiten.

                                    Konfiguriere doch erst mal die Velux Node zum Lesen und hänge eine Debug Node an:

                                    ee4e26cf-e675-42a8-b2f6-2048263b89a5-image.png

                                    und dann verstellst Du mit Schalter oder App das Fenster und schaust ob was aus der Node rauskommt.

                                    Du kannst ja mal current position und all values ausprobieren und dann im Debug Fenster schauen, was für ein Ausgabe rauskommt.

                                    2f0e84e5-5f42-437f-abe9-84d63b6d422c-image.png

                                    edd279de-ff4d-4bc3-9a6a-edb8073ac359-image.png

                                    Beim Senden machst um auf und zu zumachen - nimm 2 Inject Nodes einmal mit 100 und 0 und gib gar kein topic mit - wie in dieser Abbildung und mach das nur auf target

                                    184b1ec2-3902-441a-8e8d-ce34d7af1968-image.png

                                    Damit injizierst einmal 0 und einmal 100 durch Tastendruck und geht schneller als über den Datenpunkt:

                                    0165af1d-cc03-4628-8eb7-ee42f83a11c9-image.png

                                    [{"id":"9eb35ce72d947bc8","type":"inject","z":"5191e3c.a1ef01c","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"0","payloadType":"num","x":750,"y":840,"wires":[["574b6771bbf6c0b3"]]},{"id":"eb54f3d21b803198","type":"inject","z":"5191e3c.a1ef01c","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"100","payloadType":"num","x":750,"y":900,"wires":[["574b6771bbf6c0b3"]]},{"id":"574b6771bbf6c0b3","type":"Velux Nodes","z":"5191e3c.a1ef01c","nodevalue":"","topic":"","x":910,"y":860,"wires":[["bfa52e3e5e6c9e66"]]},{"id":"bfa52e3e5e6c9e66","type":"debug","z":"5191e3c.a1ef01c","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1180,"y":860,"wires":[]}]
                                    

                                    S 1 Reply Last reply Reply Quote 0
                                    • S
                                      sascho @mickym last edited by

                                      @mickym

                                      Hi, ich habe Deine Vorschläge mal umgesetzt und konnte tatsächlich die Current Position auslesen und die Target Position setzen. Leider ist das Ganze noch nicht stabil. Ich bekomme immer noch Fehlermeldungen - evtl. ist das KFL200 oder der Motor überlastet:
                                      00fccf9d-9a28-47a0-a7e5-974f7d7ee1b4-image.png

                                      1107a69c-eb2b-42bf-b1cc-4bab7f385a26-image.png

                                      e1c45ba8-39d0-420b-bb82-ffd69a9426dc-image.png

                                      Ich muss mich da mal in Ruhe dransetzen...

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

                                        @sascho sagte in bshb - Rollladensteuerung mit yhka Homekit:

                                        @mickym

                                        Hi, ich habe Deine Vorschläge mal umgesetzt und konnte tatsächlich die Current Position auslesen und die Target Position setzen. Leider ist das Ganze noch nicht stabil. Ich bekomme immer noch Fehlermeldungen - evtl. ist das KFL200 oder der Motor überlastet:

                                        Nun das ist doch erst schon mal ein Riesenfortschritt. Anhand der Fehlermeldung glaube ich aber immer noch, dass der iobroker KLF200 Adapter für die Fehler verantwortlich ist. Ich würde hier einfach mal über längere Zeit den ganzen Adapter außer Betrieb setzen auch, wenn Du dann erst mal viel manuell machen musst. Warum glaube ich das?

                                        Auf Basis dieses Pfades /opt/iobroker/node_modules/.... gehe ich davon aus, dass diese Bibliothek von Deinem iobroker-Adapter stammt und nicht von den Node Red Nodes.

                                        644048b0-8a36-478e-b293-f0c1f7db85ea-image.png

                                        Die Node-Red Nodes sollten die gleiche API in diesem Pfad installiert haben:
                                        /opt/iobroker/node_modules/iobroker.node-red/node_modules
                                        Das heißt das müsste von daher kommen.

                                        Es kann auch einfach sein, dass der Adapter und die Node gleichzeitig auf die Schnittstelle zugreifen wollen, das geht natürlich auch nicht. Es wird Dir also nichts übrig bleiben für den Test den iobroker-Adapter mundtot zu machen.

                                        Also ich glaube erst mal ist wichtig, dass Du exklusiven Zugriff auf das Gateway hast.

                                        Dann hab ich noch bissi recherchiert, wie man diese API bedient.

                                        Im Prinzip gibst Du alles als Objekt in diese API Node mit.

                                        Du kannst mal versuchen ob Du damit Dein KLF200 Gateway neustarten kannst:

                                        cf90eb85-b88a-4c54-9ab3-6f095f722413-image.png

                                        [{"id":"275af5e430be8cde","type":"inject","z":"5191e3c.a1ef01c","name":"Reboot","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"{\"apiText\":\"GW_REBOOT_REQ\"}","payloadType":"json","x":270,"y":1160,"wires":[["9c07a33961e3b586"]]},{"id":"9c07a33961e3b586","type":"Velux Api","z":"5191e3c.a1ef01c","name":"","datasource":"","api":"8196","ntf":[],"topic":"s","x":420,"y":1160,"wires":[["20a2999409a22c6b"]]},{"id":"20a2999409a22c6b","type":"debug","z":"5191e3c.a1ef01c","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":590,"y":1160,"wires":[]}]
                                        

                                        Was in dem Drop Down ist kann ich nicht sagen, weil ich ja kein Gateway habe.

                                        Aber interessant ist, dass man die API mit ganz normalen JSON Objekten - quasi im Klartext bestücken kann.

                                        Mit diesem einfachen Kommando müsste man das KLF200 neustarten können - kannst ja mal ausprobieren. 😉

                                        a3ef87b3-0b1f-4ee3-b363-96c3e56a7443-image.png

                                        Aber auch bei komplexeren API Aufrufen kann man diese API Request also in lesbarem Format absenden.

                                        85412b2c-84a8-4b72-b4ea-db758609a101-image.png

                                        Das was Du hier siehst sind die Parameter für einen Command Send Request mit den Felder, die in der API auf S. 57 beschrieben sind:

                                        0fca50e7-8cc4-4436-9d52-5ce203e86c9b-image.png

                                        Die Bedeutung muss man dann natürlich aus den Folgeseiten übernehmen. Die Fragen ist, ob man das braucht.

                                        Aber mit der API den Neutstart des Gateways zu machen - ist ja schon mal ganz praktisch.

                                        Über eine Catch Node kannst Du dann später ggf. direkt auf Fehler reagieren und ggf. das Gateway neu starten.

                                        Hier aus diesem Thread habe ich teilweise die Beispiele: https://githubmemory.com/repo/PLCHome/node-red-contrib-velux/issues

                                        So müsste man beispielsweise die Informationen aller Nodes auslesen können:
                                        f2dafbf7-6093-4adf-bb0e-7dccd248add1-image.png

                                        b1c08f03-fdf6-4953-9e5f-cd8176e867f2-image.png 848ef05e-3068-4365-b432-fcced2461a6e-image.png

                                        [{"id":"774ff8d2.0467c8","type":"Velux Nodes","z":"5191e3c.a1ef01c","name":"","datasource":"","index":"-1","nodevalue":"ALL","topic":"","x":590,"y":2020,"wires":[["209dd4dd.4e37ac"]]},{"id":"209dd4dd.4e37ac","type":"debug","z":"5191e3c.a1ef01c","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":770,"y":2020,"wires":[]},{"id":"6f16143d.f9793c","type":"inject","z":"5191e3c.a1ef01c","name":"Alle Nodes auslesen","props":[{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"velux:read","x":390,"y":2020,"wires":[["774ff8d2.0467c8"]]}]
                                        

                                        Aber wie gesagt in meinen Augen musst Du erst mal schauen, dass Du exklusiven Zugriff mit Deinen Nodes auf die Schnittstelle hast.

                                        Zudem habe ich gefunden, dass dieses Gateway wohl max. 2 Verbindungen unterstützt:

                                        The KLF sometimes does not release the Session internally if the connection is lost. Since only 2 users are allowed to connect, it can happen that you are no longer allowed to connect to the KLF. Currently I am sending a GW_REBOOT_REQ from the API from the Node-Red once a day. This ensures that there is always a free slot available for connection.

                                        Wenn das tatsächlich so ist, dann wird sich die Stabilität auch nicht verbessern, dann brauchst vielleicht doch nicht den Aufwand betreiben und nutzt weiter den Adapter und untersuchst das Log.

                                        S 1 Reply Last reply Reply Quote 0
                                        • S
                                          sascho @mickym last edited by sascho

                                          @mickym said in bshb - Rollladensteuerung mit yhka Homekit:

                                          Okay, es sieht tatsächlich so aus, als wenn der KLF200 Adapter dazwischenfunkt obwohl er nicht gestartet ist. Ich hatte das Problem auch nur zeitweise gestern Abend - nach dem Docker Neustart und KLF200 Neustart war die Fehlermeldung heute morgen weg. Das KLF200 scheint sehr empfindlich auf Überlastung zu reagieren. Ich habe teilweise noch die Funktion "Send Message on Start aktiviert". Wenn ich dann die Flows abspeichere geht das KLF200 regelmäßig in die Knie.
                                          Evtl. brauche ich irgendwo noch einen Check, dass Red Node nur eine bestimmte Anzahl von Befehlen pro Minute ausgibt. Angeblich soll es schon helfen, wenn man im KLF200 Szenen anlegt. Dann könnte ich nämlich die direkt nebeneinanderliegenden Fenster und Rollläden kombinieren und so die Anzahl von Befehlen reduzieren. Es werden diese zwei Fenster/Rollläden eh immer parallel angesteuert.

                                          In den nächsten Tagen komme ich noch nicht dazu, danach würde ich mal den ein Backup des Containers machen und den KLF200 Adapter komplett deinstallieren.
                                          Dann könnte ich die Anbindung an meine Bosch Unterputzdosen testen - aktuell funktioniert das noch nicht, vermutlich kommt doch nicht die 0 bzw. 100 aus dem Flow so wie bei den bereits funktionierenden Inject Nodes.

                                          Die Reboot Funktion wäre natürlich auch super - da ich ja keinen Adapter mehr habe, müsste ich den Befehl über die Velux Nodes schicken.

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

                                            @sascho sagte in bshb - Rollladensteuerung mit yhka Homekit:

                                            Evtl. brauche ich irgendwo noch einen Check, dass Red Node nur eine bestimmte Anzahl von Befehlen pro Minute ausgibt. Angeblich soll es schon helfen, wenn man im KLF200 Szenen anlegt.

                                            Ok dafür nimmst Du eine Delay Node (hast Du schon in Deinem Werkzeugkasten) - da kann man nicht nur die Verzögerungen sondern Nachrichtenraten einstellen:

                                            6b5bb770-bff7-4ce0-a0eb-94fc391b2e0e-image.png

                                            und wie gesagt im Fehlerfall nimmst eine oder mehrere Catch Nodes und startest das Teil dann neu.

                                            Musst halt überlegen, ob sich der Aufwand lohnt - da ja jetzt schon alles über den Adapter machst und ich weiß nicht, ob Du an Stabilität gewinnst.

                                            Bezgl. Szenen habe ich auch einen Flow gefunden - und ja der hatte sogar auch ein delay Node dazwischengeklemmt:
                                            e8080a4b-9be6-4a6d-8f2b-ab0dc95ad826-image.png

                                            [{"id":"54b7854c.baf744","type":"Velux Scenes","z":"5191e3c.a1ef01c","name":"","datasource":"","index":"0","velocity":"DEFAULT","topic":"velux:id:1","x":680,"y":1660,"wires":[["499d6cd2.cf7f3c"]]},{"id":"499d6cd2.cf7f3c","type":"delay","z":"5191e3c.a1ef01c","name":"","pauseType":"delay","timeout":"1","timeoutUnits":"minutes","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":880,"y":1680,"wires":[["9d093885.ceb288"]]},{"id":"9d093885.ceb288","type":"Velux Scenes","z":"5191e3c.a1ef01c","name":"","datasource":"","index":"1","velocity":"DEFAULT","topic":"velux:id:2","x":1100,"y":1680,"wires":[[]]},{"id":"49c53e8e.840f38","type":"inject","z":"5191e3c.a1ef01c","name":"Fenster öffnen & schließen","props":[{"p":"payload","v":"","vt":"date"},{"p":"topic","v":"","vt":"string"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":440,"y":1680,"wires":[["54b7854c.baf744"]]},{"id":"3454a259.3ff65e","type":"inject","z":"5191e3c.a1ef01c","name":"Fenster schließen","props":[{"p":"payload","v":"","vt":"date"},{"p":"topic","v":"","vt":"string"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":910,"y":1740,"wires":[["9d093885.ceb288"]]}]
                                            

                                            aec6aea8-6838-4a00-adb5-46b2b135fc09-image.png

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            439
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            2
                                            121
                                            6571
                                            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