Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. bshb - Rollladensteuerung mit yhka Homekit

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    3.7k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.2k

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.5k

bshb - Rollladensteuerung mit yhka Homekit

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
121 Beiträge 2 Kommentatoren 10.4k Aufrufe 2 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • mickymM mickym

    @sascho So nun habe ich mal so eine Befehlsqueue realisiert:

    Wenn Du über die Inject Nodes wie im vorherigen Post Deine Fenster/Jalousien steuern kannst, dann wäre der nächste Schritt so eine Befehlsqueue mittels einer function Node zu realisieren. Man könnte das ggf. auch ohne function Node machen, aber dann wäre der Flow sehr unübersichtlich.

    e0c7e9f6-7acc-4d5e-9043-44374d44dd52-image.png

    Die blaue Gruppe - in der ich den Fehler der Velux Nodes nur simuliere, kannst Du dann natürlich weglassen. Ich habe in der Simulationsnode - die Fehlerhäufigkeit mal auf 30% eingestellt, so dass 30% einen Fehler erzeugen.

    Wenn Du im Flow die function Node "Befehlsqueue" markierst (orange Linie) und dann auf die Kontextdaten gehst und die Daten aktualisierst, dann siehst Du das die Befehlsqueue quasi leer ist.

    Nun drücke ich die Inject-Nodes nach der Reihe der IDs (also 1,2,3,4,1,2, ...)

    Wenn ein Fehler auftritt, bei mir gleich beim ID 1, dann siehst Du in der trigger Node das 1 Nachricht ansteht und diese nach einer Minute die Befehlsqueue erneut triggert.

    In der Queue ist immer noch der eine Befehl - der also wegen des Fehlers noch nicht abgesetzt werden konnte.

    29a4eb5e-f608-4cb9-a885-04239542ebf8-image.png

    Das passiert dann solange - bis die Velux Node (wieder verfügbar ist):

    3a3ac74b-0138-41cf-88b0-cfefefae9859-image.png

    Hier ein Beispiel wo die erste ID funktionierte, ID 2 und 3 jedoch nicht - da Velux Node nicht bereit.
    In der Befehlsqueue wurden die beiden zwischengespeichert:

    d2d899d1-63e0-4c2f-a5f5-54da4e294acb-image.png

    Alle Minuten wird nun versucht - die noch voll Queue abzuarbeiten bis die Velux Node verfügbar ist - dann wird die Queue geleert:

    58bfc2ed-35b2-432b-92fa-5a63cf5c45e9-image.png

    Hier wieder mal der View zum Spielen und Lernen. ;)

    [{"id":"928423187ddebeb8","type":"inject","z":"5191e3c.a1ef01c","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"velux:write:id:1","payload":"0","payloadType":"num","x":140,"y":2160,"wires":[["1174c3d4591443f0"]]},{"id":"271ceb4ffe85fc0c","type":"inject","z":"5191e3c.a1ef01c","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"velux:write:id:2","payload":"0","payloadType":"num","x":140,"y":2220,"wires":[["1174c3d4591443f0"]]},{"id":"acdfc9e792f998a3","type":"inject","z":"5191e3c.a1ef01c","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"velux:write:id:3","payload":"100","payloadType":"num","x":130,"y":2280,"wires":[["1174c3d4591443f0"]]},{"id":"2aad88c9786daebb","type":"inject","z":"5191e3c.a1ef01c","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"velux:write:id:4","payload":"50","payloadType":"num","x":130,"y":2340,"wires":[["1174c3d4591443f0"]]},{"id":"1174c3d4591443f0","type":"function","z":"5191e3c.a1ef01c","name":"Befehlsqueue","func":"var queue = context.get('queue') || [];\nvar isError = false;\n\nmsg.OK = msg.OK || false;\n\nif (msg.payload !== undefined) queue.push(msg);\nif (msg.error !== undefined) isError = true;\nif (msg.OK) {\n    // node.warn('msg.OK recieved');\n    queue.shift();\n    // node.warn(queue);\n    isError = false;\n}\ncontext.set('queue',queue);\n\n// if (msg.OK) return null; \n\n// node.warn('isError: ' + isError);\n// node.warn('msg.OK: ' + msg.OK);\n\nif (queue.length > 0 && !isError ) {\n    return [queue[0],null];\n}\n    else if (isError) {\n    return [null,msg];\n}\n    \n","outputs":2,"noerr":0,"initialize":"","finalize":"","libs":[],"x":420,"y":2240,"wires":[["e373e8c42f89a886","aed24250.60e72"],["9123ef8b7bd2ad6a","56618fd026f5c1b1"]]},{"id":"e373e8c42f89a886","type":"Velux Nodes","z":"5191e3c.a1ef01c","nodevalue":"","topic":"","x":650,"y":2080,"wires":[["6493512466028bf9","7361ce697612a791"]]},{"id":"6493512466028bf9","type":"debug","z":"5191e3c.a1ef01c","name":"Velux Node Simulation","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":1280,"y":2080,"wires":[]},{"id":"85ad53e3176273fe","type":"catch","z":"5191e3c.a1ef01c","name":"","scope":["70cf0aeb.94bae4"],"uncaught":false,"x":170,"y":2440,"wires":[["1174c3d4591443f0"]]},{"id":"7361ce697612a791","type":"change","z":"5191e3c.a1ef01c","name":"","rules":[{"t":"delete","p":"payload","pt":"msg"},{"t":"delete","p":"topic","pt":"msg"},{"t":"set","p":"OK","pt":"msg","to":"true","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":890,"y":2240,"wires":[["1174c3d4591443f0","c0a741f73c2a7530"]]},{"id":"56618fd026f5c1b1","type":"debug","z":"5191e3c.a1ef01c","name":"error","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":650,"y":2300,"wires":[]},{"id":"9123ef8b7bd2ad6a","type":"trigger","z":"5191e3c.a1ef01c","name":"","op1":"","op2":"true","op1type":"nul","op2type":"bool","duration":"1","extend":false,"overrideDelay":false,"units":"min","reset":"","bytopic":"all","topic":"topic","outputs":1,"x":670,"y":2360,"wires":[["8ff0b78f263a84ce"]]},{"id":"c0a741f73c2a7530","type":"change","z":"5191e3c.a1ef01c","name":"","rules":[{"t":"set","p":"reset","pt":"msg","to":"","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1120,"y":2240,"wires":[["9123ef8b7bd2ad6a"]]},{"id":"8ff0b78f263a84ce","type":"change","z":"5191e3c.a1ef01c","name":"","rules":[{"t":"delete","p":"payload","pt":"msg"},{"t":"delete","p":"topic","pt":"msg"},{"t":"delete","p":"error","pt":"msg"},{"t":"set","p":"OK","pt":"msg","to":"false","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":450,"y":2420,"wires":[["1174c3d4591443f0"]]},{"id":"3e49536e2c3f9b25","type":"group","z":"5191e3c.a1ef01c","name":"Simuliere VeluxNode","style":{"label":true,"color":"#000000","fill":"#3f93cf"},"nodes":["aed24250.60e72","70cf0aeb.94bae4"],"x":534,"y":2119,"w":612,"h":82},{"id":"aed24250.60e72","type":"change","z":"5191e3c.a1ef01c","g":"3e49536e2c3f9b25","name":"random 0 bis 1","rules":[{"t":"set","p":"rnd","pt":"msg","to":"$random()\t","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":640,"y":2160,"wires":[["70cf0aeb.94bae4"]]},{"id":"70cf0aeb.94bae4","type":"function","z":"5191e3c.a1ef01c","g":"3e49536e2c3f9b25","name":"Simuliert Velux Node und erzeugt Zufallsfehler","func":"if (msg.rnd > 0.7) {\n    msg = {};\n    node.error('Error: timeout GW_COMMAND_SEND_CFM',msg);\n    return null;\n}\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":940,"y":2160,"wires":[["6493512466028bf9","7361ce697612a791"]]}]
    

    Der untere Teil der function Node (Befehlsqueue) wird also ausgeführt, wenn die Velux Node im Fehlerzustand ist, ansonsten werden die Befehle nacheinander an die Velux Node über den oberen Ausgang der function Node gesendet.

    Du kannst natürlich meine ganzen Debug Nachrichten aus der function Node rauslöschen, so dass der reine Code der function Node nun so aussieht:

    var queue = context.get('queue') || [];
    var isError = false;
    msg.OK = msg.OK || false;
    
    if (msg.payload !== undefined) queue.push(msg);
    if (msg.error !== undefined) isError = true;
    if (msg.OK) {
        queue.shift();
        isError = false;
    }
    context.set('queue',queue);
    if (queue.length > 0 && !isError ) {
        return [queue[0],null];
    }
        else if (isError) {
        return [null,msg];
    }
    
    S Offline
    S Offline
    sascho
    schrieb am zuletzt editiert von sascho
    #90

    @mickym

    Wow! Jetzt bin ich völlig erschlagen. Ich muss mir das erst mal morgen alles in Ruhe ansehen. Tausend Dank schon mal vorweg! Ich glaube, ich muss Dir mal einen Präsentkorb schicken, bei dem ganzen Aufwand, den Du hier für mich betreibst!

    Ich habe gerade das KLR200 in Betrieb genommen, und im KLF200 4 Szenen zu einem Fensterpaar angelernt:
    1317055c-0909-4360-894f-0d6f49d76f95-image.png

    Mit der Scene Node und einer Inject Node kann ich die 4 Szenen ansteuern. Es funktioniert sehr gut.

    69e8da04-755e-4ccc-be3d-9ff02b1d10fe-image.png

    b5a7e9da-73a3-4280-95e0-ffd1cf7336c7-image.png

    11fce081-f398-4b93-8a33-a37da80817fd-image.png

    Die Kür wäre jetzt, wenn ich nur eine Velux Scene Node benötigen würde, indem ich den Szenenindex in der Nachricht mitgebe. Laut diesem Node Guide wäre das doch möglich:
    4b49a4be-3579-49f4-aba1-ec6145777089-image.png
    Was muss ich denn da im Topic mitgeben? Ich bekomme nur Fehler gerade.

    c03983e8-acf3-4f1c-b729-933927580cd8-image.png

    Das geht doch in die Richtung, wie Du es oben aufgebaut hast - hinter die Dachfenster Funktionen hängen, die dann die Velux Scene Node anspricht.

    Btw. Die Scene Node sendet auch Status Meldungen - einige während die Fenster laufen... Evtl. könnte ich mir da die Current, und Remaining/Run Status Meldungen abfangen und so auf die Velux Nodes komplett verzichten :-)

    e1e6cb95-d55c-4431-8efa-9be667492765-image.png

    mickymM 1 Antwort Letzte Antwort
    0
    • S sascho

      @mickym

      Wow! Jetzt bin ich völlig erschlagen. Ich muss mir das erst mal morgen alles in Ruhe ansehen. Tausend Dank schon mal vorweg! Ich glaube, ich muss Dir mal einen Präsentkorb schicken, bei dem ganzen Aufwand, den Du hier für mich betreibst!

      Ich habe gerade das KLR200 in Betrieb genommen, und im KLF200 4 Szenen zu einem Fensterpaar angelernt:
      1317055c-0909-4360-894f-0d6f49d76f95-image.png

      Mit der Scene Node und einer Inject Node kann ich die 4 Szenen ansteuern. Es funktioniert sehr gut.

      69e8da04-755e-4ccc-be3d-9ff02b1d10fe-image.png

      b5a7e9da-73a3-4280-95e0-ffd1cf7336c7-image.png

      11fce081-f398-4b93-8a33-a37da80817fd-image.png

      Die Kür wäre jetzt, wenn ich nur eine Velux Scene Node benötigen würde, indem ich den Szenenindex in der Nachricht mitgebe. Laut diesem Node Guide wäre das doch möglich:
      4b49a4be-3579-49f4-aba1-ec6145777089-image.png
      Was muss ich denn da im Topic mitgeben? Ich bekomme nur Fehler gerade.

      c03983e8-acf3-4f1c-b729-933927580cd8-image.png

      Das geht doch in die Richtung, wie Du es oben aufgebaut hast - hinter die Dachfenster Funktionen hängen, die dann die Velux Scene Node anspricht.

      Btw. Die Scene Node sendet auch Status Meldungen - einige während die Fenster laufen... Evtl. könnte ich mir da die Current, und Remaining/Run Status Meldungen abfangen und so auf die Velux Nodes komplett verzichten :-)

      e1e6cb95-d55c-4431-8efa-9be667492765-image.png

      mickymM Online
      mickymM Online
      mickym
      Most Active
      schrieb am zuletzt editiert von mickym
      #91

      @sascho Also die Szene IDs sind ja eindeutig. Im Prinzip brauchst Du in den Velux Scenes Node gar nichts eintragen.

      Du gibst einfach die ID in das topic im Inject Node ein und fütterst damit die Scenes Node:

      5463c08e-310b-4fa2-97aa-6637d50cbfea-image.png

      Die Zahl hinter der ID ist die Szene ID und nicht die Node ID - wie bei der Velux Node Node. ;)

      Aber nicht msg ;) msg.topic =msg.velux... , sondern natürlich als String :

      Sowas geht nicht:

      7e7a1d6b-f87e-4aba-a311-6dddcb380389-image.png

      Ein Objekt kann keine Doppelpunkte enthalten und Du hast ja in Deiner Inject kein msg.velux Objekt definiert. - Also einfach die Velux Node mit einem msg.topic als normalen String füttern.

      Es macht ausserdem in dem unteren Flow keinen Sinn in der Debug Node eine msg.payload abzugreifen, wenn es keine msg.payload gibt

      3869cfc9-c1ac-42f8-96ea-1d488f8259fc-image.png

      Dann ist es besser Du stellst die Debug Node auf das gesamte Nachrichten objekt um:

      0881f14b-bfba-4751-8e7a-49e61af1d38f-image.png

      9f236a0a-5988-4cb1-89a1-bc6b4b6311d2-image.png

      Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

      S 1 Antwort Letzte Antwort
      0
      • mickymM mickym

        @sascho Also die Szene IDs sind ja eindeutig. Im Prinzip brauchst Du in den Velux Scenes Node gar nichts eintragen.

        Du gibst einfach die ID in das topic im Inject Node ein und fütterst damit die Scenes Node:

        5463c08e-310b-4fa2-97aa-6637d50cbfea-image.png

        Die Zahl hinter der ID ist die Szene ID und nicht die Node ID - wie bei der Velux Node Node. ;)

        Aber nicht msg ;) msg.topic =msg.velux... , sondern natürlich als String :

        Sowas geht nicht:

        7e7a1d6b-f87e-4aba-a311-6dddcb380389-image.png

        Ein Objekt kann keine Doppelpunkte enthalten und Du hast ja in Deiner Inject kein msg.velux Objekt definiert. - Also einfach die Velux Node mit einem msg.topic als normalen String füttern.

        Es macht ausserdem in dem unteren Flow keinen Sinn in der Debug Node eine msg.payload abzugreifen, wenn es keine msg.payload gibt

        3869cfc9-c1ac-42f8-96ea-1d488f8259fc-image.png

        Dann ist es besser Du stellst die Debug Node auf das gesamte Nachrichten objekt um:

        0881f14b-bfba-4751-8e7a-49e61af1d38f-image.png

        9f236a0a-5988-4cb1-89a1-bc6b4b6311d2-image.png

        S Offline
        S Offline
        sascho
        schrieb am zuletzt editiert von
        #92

        @mickym

        Also, irgendwie funktioniert es noch nicht. Ich habe die Inject Node auf String umgestellt und den Scene Index 0 und 1 probiert. Darauf reagiert die Velux Scene Node nicht:

        2c83c173-62dd-4ba3-b68b-1073b229087d-image.png

        b38f9455-722b-4fae-8f40-b67ade0ad713-image.png

        1585ad52-d7bf-4512-a517-f4c784d6cc9b-image.png

        Die Debug Node habe ich auf all Messages umgestellt.

        1 Antwort Letzte Antwort
        0
        • mickymM Online
          mickymM Online
          mickym
          Most Active
          schrieb am zuletzt editiert von mickym
          #93

          @sascho Nun - ich finde leider auch nichts genaues

          Wenn die Scene Node noch rot ist - dann muss man da was eingeben. Es darf auf KEINEN Fall noch so ein rotes Warndreieck über der Node zu sehen sein und die rot umrandeten Felder müssen ausgefüllt sein.

          screen.png

          screen.png

          So wie ich den Text verstehe:

          velux:id:<id>  scene id for execute. **The settings are ignored.**
          

          Du musst in der Szene ID trotzdem in die Node eingeben (auch wenn man das wohl mit dem topic überschreibt) - das darf nicht leer oder rot bleiben. Also gib einfach mal eine Zahl als Szene Index ein und schau - ob Du das mit der Inject Node überschreiben kannst.

          Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

          S 1 Antwort Letzte Antwort
          0
          • mickymM mickym

            @sascho Nun - ich finde leider auch nichts genaues

            Wenn die Scene Node noch rot ist - dann muss man da was eingeben. Es darf auf KEINEN Fall noch so ein rotes Warndreieck über der Node zu sehen sein und die rot umrandeten Felder müssen ausgefüllt sein.

            screen.png

            screen.png

            So wie ich den Text verstehe:

            velux:id:<id>  scene id for execute. **The settings are ignored.**
            

            Du musst in der Szene ID trotzdem in die Node eingeben (auch wenn man das wohl mit dem topic überschreibt) - das darf nicht leer oder rot bleiben. Also gib einfach mal eine Zahl als Szene Index ein und schau - ob Du das mit der Inject Node überschreiben kannst.

            S Offline
            S Offline
            sascho
            schrieb am zuletzt editiert von
            #94

            @mickym

            Mit der Variante String geht es leider nicht :-(.
            Die ersten zwei Versuche mit den Scene IDs 4 und 5 führen zu keiner Reaktion bei KLF200, der dritte Versuche dann mit Scene ID 5 + Number produziert eine Reaktion allerdings keine Bewegung:

            64887805-5251-46f3-815b-2da70332cca0-image.png

            623fbda3-1f54-41e7-ac66-3887cc3d2373-image.png

            67e27111-9cd1-4039-8146-472c9381929d-image.png

            Gäbe es evtl. eine Alternative, die Szene über die Velux API + eine Funktion auszulösen? Hier wird das beschrieben (auch wie man die Überlastung des KLF200 verhindern kann):
            https://213.136.68.177/topic/14312/adapter-für-velux-klf-200-interface/41?lang=en-GB&amp;page=6
            Dies wäre der Code:


            [
            {
            "id": "6948542c.c8d8cc",
            "type": "tab",
            "label": "Flow 1",
            "disabled": false,
            "info": ""
            },
            {
            "id": "b807c1d.30bcd4",
            "type": "ui_button",
            "z": "6948542c.c8d8cc",
            "name": "",
            "group": "9f7de3ee.89f1c8",
            "order": 1,
            "width": "3",
            "height": "2",
            "passthru": false,
            "label": "Schließen",
            "tooltip": "",
            "color": "",
            "bgcolor": "red",
            "icon": "",
            "payload": "0",
            "payloadType": "num",
            "topic": "",
            "topicType": "str",
            "x": 100,
            "y": 80,
            "wires": [
            [
            "65db499a.ac2328"
            ]
            ]
            },
            {
            "id": "65db499a.ac2328",
            "type": "function",
            "z": "6948542c.c8d8cc",
            "name": "activateScene",
            "func": ""use strict"\n//const velux = require('velux-klf200-api');\nvar velux = global.get('velux');\nconst ip = '192.168.178.6';\nconst pwd = '....';\n\nvar sceneId = msg.payload;\n\nvelux.connect(ip,{})\n.then(()=>{\n return velux.login(pwd);\n})\n.then((data)=>{\n return velux.sendCommand({ api: velux.API.GW_ACTIVATE_SCENE_REQ,sceneID:sceneId,\n /SessionID: 124,/\n commandOriginator: 1,\n priorityLevel: 2,\n });\n})\n.then((data)=>{\n console.log(data);\n return velux.end();\n})\n.catch((err)=>{\n console.log(err);\n return velux.end();\n});\n\nreturn msg;\n",
            "outputs": 1,
            "noerr": 0,
            "initialize": "",
            "finalize": "",
            "libs": [],
            "x": 580,
            "y": 160,
            "wires": [
            []
            ],
            "inputLabels": [
            "sceneId"
            ]
            },
            {
            "id": "592841b2.aadd2",
            "type": "inject",
            "z": "6948542c.c8d8cc",
            "name": "",
            "props": [
            {
            "p": "payload"
            }
            ],
            "repeat": "",
            "crontab": "",
            "once": false,
            "onceDelay": 0.1,
            "topic": "",
            "payload": "1",
            "payloadType": "num",
            "x": 390,
            "y": 200,
            "wires": [
            [
            "65db499a.ac2328"
            ]
            ]
            },
            {
            "id": "9f7de3ee.89f1c8",
            "type": "ui_group",
            "name": "Alle",
            "tab": "e2ba1a6f.2f0198",
            "order": 1,
            "disp": true,
            "width": "6",
            "collapse": false
            },
            {
            "id": "e2ba1a6f.2f0198",
            "type": "ui_tab",
            "name": "Dachfenster",
            "icon": "home",
            "order": 9,
            "disabled": false,
            "hidden": false
            }
            ]

            Allerdings müsste ich wahrscheinlich die settings.js modifizieren.

            S mickymM 2 Antworten Letzte Antwort
            0
            • S sascho

              @mickym

              Mit der Variante String geht es leider nicht :-(.
              Die ersten zwei Versuche mit den Scene IDs 4 und 5 führen zu keiner Reaktion bei KLF200, der dritte Versuche dann mit Scene ID 5 + Number produziert eine Reaktion allerdings keine Bewegung:

              64887805-5251-46f3-815b-2da70332cca0-image.png

              623fbda3-1f54-41e7-ac66-3887cc3d2373-image.png

              67e27111-9cd1-4039-8146-472c9381929d-image.png

              Gäbe es evtl. eine Alternative, die Szene über die Velux API + eine Funktion auszulösen? Hier wird das beschrieben (auch wie man die Überlastung des KLF200 verhindern kann):
              https://213.136.68.177/topic/14312/adapter-für-velux-klf-200-interface/41?lang=en-GB&amp;page=6
              Dies wäre der Code:


              [
              {
              "id": "6948542c.c8d8cc",
              "type": "tab",
              "label": "Flow 1",
              "disabled": false,
              "info": ""
              },
              {
              "id": "b807c1d.30bcd4",
              "type": "ui_button",
              "z": "6948542c.c8d8cc",
              "name": "",
              "group": "9f7de3ee.89f1c8",
              "order": 1,
              "width": "3",
              "height": "2",
              "passthru": false,
              "label": "Schließen",
              "tooltip": "",
              "color": "",
              "bgcolor": "red",
              "icon": "",
              "payload": "0",
              "payloadType": "num",
              "topic": "",
              "topicType": "str",
              "x": 100,
              "y": 80,
              "wires": [
              [
              "65db499a.ac2328"
              ]
              ]
              },
              {
              "id": "65db499a.ac2328",
              "type": "function",
              "z": "6948542c.c8d8cc",
              "name": "activateScene",
              "func": ""use strict"\n//const velux = require('velux-klf200-api');\nvar velux = global.get('velux');\nconst ip = '192.168.178.6';\nconst pwd = '....';\n\nvar sceneId = msg.payload;\n\nvelux.connect(ip,{})\n.then(()=>{\n return velux.login(pwd);\n})\n.then((data)=>{\n return velux.sendCommand({ api: velux.API.GW_ACTIVATE_SCENE_REQ,sceneID:sceneId,\n /SessionID: 124,/\n commandOriginator: 1,\n priorityLevel: 2,\n });\n})\n.then((data)=>{\n console.log(data);\n return velux.end();\n})\n.catch((err)=>{\n console.log(err);\n return velux.end();\n});\n\nreturn msg;\n",
              "outputs": 1,
              "noerr": 0,
              "initialize": "",
              "finalize": "",
              "libs": [],
              "x": 580,
              "y": 160,
              "wires": [
              []
              ],
              "inputLabels": [
              "sceneId"
              ]
              },
              {
              "id": "592841b2.aadd2",
              "type": "inject",
              "z": "6948542c.c8d8cc",
              "name": "",
              "props": [
              {
              "p": "payload"
              }
              ],
              "repeat": "",
              "crontab": "",
              "once": false,
              "onceDelay": 0.1,
              "topic": "",
              "payload": "1",
              "payloadType": "num",
              "x": 390,
              "y": 200,
              "wires": [
              [
              "65db499a.ac2328"
              ]
              ]
              },
              {
              "id": "9f7de3ee.89f1c8",
              "type": "ui_group",
              "name": "Alle",
              "tab": "e2ba1a6f.2f0198",
              "order": 1,
              "disp": true,
              "width": "6",
              "collapse": false
              },
              {
              "id": "e2ba1a6f.2f0198",
              "type": "ui_tab",
              "name": "Dachfenster",
              "icon": "home",
              "order": 9,
              "disabled": false,
              "hidden": false
              }
              ]

              Allerdings müsste ich wahrscheinlich die settings.js modifizieren.

              S Offline
              S Offline
              sascho
              schrieb am zuletzt editiert von
              #95

              @sascho

              Ich hab's mit der Function + API Node hinbekommen :-)))!!! Ich kann nun über die Inject Node direkt die Szene aufrufen.

              Das Programm zum öffnen von Dateien im Terminal des Docker vom IOBroker nennt sich Nano. Damit konnte ich die settings.js modifizieren. Der Befehl lautet: nano /opt/iobroker/node_modules/iobroker.node-red/settings.js

              f7340401-a3f3-4127-9c6b-dc38859bca94-image.png

              Ich würde jetzt mal zwei Fenster auf die API Node umbauen. Im nächsten Schritt wäre aber die Frage, ob ich mit einer weiteren API Node auskommen würde, um die Current Position und Remaining/Bewegungsstatus auszulesen :-). Ich bin aber für heute schon mal super Happy!

              mickymM 1 Antwort Letzte Antwort
              0
              • S sascho

                @mickym

                Mit der Variante String geht es leider nicht :-(.
                Die ersten zwei Versuche mit den Scene IDs 4 und 5 führen zu keiner Reaktion bei KLF200, der dritte Versuche dann mit Scene ID 5 + Number produziert eine Reaktion allerdings keine Bewegung:

                64887805-5251-46f3-815b-2da70332cca0-image.png

                623fbda3-1f54-41e7-ac66-3887cc3d2373-image.png

                67e27111-9cd1-4039-8146-472c9381929d-image.png

                Gäbe es evtl. eine Alternative, die Szene über die Velux API + eine Funktion auszulösen? Hier wird das beschrieben (auch wie man die Überlastung des KLF200 verhindern kann):
                https://213.136.68.177/topic/14312/adapter-für-velux-klf-200-interface/41?lang=en-GB&amp;page=6
                Dies wäre der Code:


                [
                {
                "id": "6948542c.c8d8cc",
                "type": "tab",
                "label": "Flow 1",
                "disabled": false,
                "info": ""
                },
                {
                "id": "b807c1d.30bcd4",
                "type": "ui_button",
                "z": "6948542c.c8d8cc",
                "name": "",
                "group": "9f7de3ee.89f1c8",
                "order": 1,
                "width": "3",
                "height": "2",
                "passthru": false,
                "label": "Schließen",
                "tooltip": "",
                "color": "",
                "bgcolor": "red",
                "icon": "",
                "payload": "0",
                "payloadType": "num",
                "topic": "",
                "topicType": "str",
                "x": 100,
                "y": 80,
                "wires": [
                [
                "65db499a.ac2328"
                ]
                ]
                },
                {
                "id": "65db499a.ac2328",
                "type": "function",
                "z": "6948542c.c8d8cc",
                "name": "activateScene",
                "func": ""use strict"\n//const velux = require('velux-klf200-api');\nvar velux = global.get('velux');\nconst ip = '192.168.178.6';\nconst pwd = '....';\n\nvar sceneId = msg.payload;\n\nvelux.connect(ip,{})\n.then(()=>{\n return velux.login(pwd);\n})\n.then((data)=>{\n return velux.sendCommand({ api: velux.API.GW_ACTIVATE_SCENE_REQ,sceneID:sceneId,\n /SessionID: 124,/\n commandOriginator: 1,\n priorityLevel: 2,\n });\n})\n.then((data)=>{\n console.log(data);\n return velux.end();\n})\n.catch((err)=>{\n console.log(err);\n return velux.end();\n});\n\nreturn msg;\n",
                "outputs": 1,
                "noerr": 0,
                "initialize": "",
                "finalize": "",
                "libs": [],
                "x": 580,
                "y": 160,
                "wires": [
                []
                ],
                "inputLabels": [
                "sceneId"
                ]
                },
                {
                "id": "592841b2.aadd2",
                "type": "inject",
                "z": "6948542c.c8d8cc",
                "name": "",
                "props": [
                {
                "p": "payload"
                }
                ],
                "repeat": "",
                "crontab": "",
                "once": false,
                "onceDelay": 0.1,
                "topic": "",
                "payload": "1",
                "payloadType": "num",
                "x": 390,
                "y": 200,
                "wires": [
                [
                "65db499a.ac2328"
                ]
                ]
                },
                {
                "id": "9f7de3ee.89f1c8",
                "type": "ui_group",
                "name": "Alle",
                "tab": "e2ba1a6f.2f0198",
                "order": 1,
                "disp": true,
                "width": "6",
                "collapse": false
                },
                {
                "id": "e2ba1a6f.2f0198",
                "type": "ui_tab",
                "name": "Dachfenster",
                "icon": "home",
                "order": 9,
                "disabled": false,
                "hidden": false
                }
                ]

                Allerdings müsste ich wahrscheinlich die settings.js modifizieren.

                mickymM Online
                mickymM Online
                mickym
                Most Active
                schrieb am zuletzt editiert von
                #96

                @sascho Kannst Du Code für die Zukunft in CodeTags packen - sonst ist das blöd zum Kopieren.

                Punkt 1:

                Ehrlich gesagt verstehe ich den functions-code nur halb und halte auch davon überhaupt nichts. Wie gesagt, um Überlastung zu verhindern, habe ich Dir ja gestern ein paar Flows geschickt. Die settings.js müsstest Du modifizieren, aber nur weil du die API in der Function Node verfügbar machen müsstest. Dafür hast Du aber die Velux Nodes und die machen die Arbeit schon, auch wenn wir es halt nicht wissen, warum es nicht geht.

                In der Function Node werden Fehler auch nur mit catch abgefangen. Wie gesagt - ich halte nichts davon, über function Nodes so was komplett zu schreiben.

                Der Ersteller dieser Function Node macht nichts weiter als die API aufzurufen, das können wir mit der API Node ja auch versuchen.

                9ed21d44-df2e-4fc6-b90f-6bd23726ac02-image.png

                Im Prinzip fängt der Fehler nur mit der Catch Node ab, macht aber nichts draus.
                Was der macht ist nur die API aufzurufen, dass kannst Du aber auch mit den API Nodes:

                Das gleiche können wir aber auch mit der API Node versuchen:

                [{"id":"a3aade90e5d5d119","type":"inject","z":"4754a7c40731a9a7","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"{\"apiText\":\"GW_ACTIVATE_SCENE_REQ\",\"commandOriginator\":1,\"priorityLevel\":2,\"SceneID\":4}","payloadType":"json","x":360,"y":520,"wires":[["38b2a8196a72e975"]]},{"id":"38b2a8196a72e975","type":"Velux Api","z":"4754a7c40731a9a7","api":"","ntf":"","topic":"","x":540,"y":520,"wires":[["d002272057b9ce64"]]},{"id":"d002272057b9ce64","type":"debug","z":"4754a7c40731a9a7","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":690,"y":520,"wires":[]}]
                

                Im Prinzip hat dieser Ersteller der Function Node nur diese API Funktion aufgerufen:

                6fb058f4-0fc5-4f71-be7c-5f6f7520eb88-image.png

                Wenn Du die Inject Node aufmachst um das Objekt zu bearbeiten, dann mach den visuellen Editor auf, dann kannst da die Zahl für die Szene eingeben.

                screen.png

                Eventuell muss man lt. API auch noch die Velocity eingeben.

                Du hast auch nicht rückgemeldet, ob die API Nodes zur Ermittlung des Status und der Reboot funktionieren????

                Punkt 2:

                Probier halt auch ob meine Inject Nodes mit den normalen Nodes funktionieren.

                Punkt 3
                Ich habe mir gerade den Source Code der Szene Node angeschaut - also es muss in jedem Fall das Topic als String übergeben werden:

                b3336d3e-b1e8-49b1-ba1f-3491cba56f6e-image.png

                Ich bin mir aber noch nicht sicher, ob ich das mit den Szenen verstanden habe. Inzwischen kannst ja mal den API Call der Szene probieren und schauen, ob was zurückkommt.

                Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                1 Antwort Letzte Antwort
                0
                • S sascho

                  @sascho

                  Ich hab's mit der Function + API Node hinbekommen :-)))!!! Ich kann nun über die Inject Node direkt die Szene aufrufen.

                  Das Programm zum öffnen von Dateien im Terminal des Docker vom IOBroker nennt sich Nano. Damit konnte ich die settings.js modifizieren. Der Befehl lautet: nano /opt/iobroker/node_modules/iobroker.node-red/settings.js

                  f7340401-a3f3-4127-9c6b-dc38859bca94-image.png

                  Ich würde jetzt mal zwei Fenster auf die API Node umbauen. Im nächsten Schritt wäre aber die Frage, ob ich mit einer weiteren API Node auskommen würde, um die Current Position und Remaining/Bewegungsstatus auszulesen :-). Ich bin aber für heute schon mal super Happy!

                  mickymM Online
                  mickymM Online
                  mickym
                  Most Active
                  schrieb am zuletzt editiert von mickym
                  #97

                  @sascho sagte in bshb - Rollladensteuerung mit yhka Homekit:

                  @sascho

                  Ich hab's mit der Function + API Node hinbekommen :-)))!!! Ich kann nun über die Inject Node direkt die Szene aufrufen.

                  Das Programm zum öffnen von Dateien im Terminal des Docker vom IOBroker nennt sich Nano. Damit konnte ich die settings.js modifizieren. Der Befehl lautet: nano /opt/iobroker/node_modules/iobroker.node-red/settings.js

                  f7340401-a3f3-4127-9c6b-dc38859bca94-image.png

                  Ich würde jetzt mal zwei Fenster auf die API Node umbauen. Im nächsten Schritt wäre aber die Frage, ob ich mit einer weiteren API Node auskommen würde, um die Current Position und Remaining/Bewegungsstatus auszulesen :-). Ich bin aber für heute schon mal super Happy!

                  Ich würde es nicht machen. - Ich hab Dir ja gerade geschickt, wie Du das was die Funktion macht ggf. auhc mit der API Node machen kannst.

                  Nano ist übrigens ein Linux Editor - dann hat inzwischen jedes neuere Linux System an Board. ;)

                  Aber wie gesagt mit der Function Node - bin ich aus dem Spiel.

                  Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                  S 1 Antwort Letzte Antwort
                  0
                  • mickymM mickym

                    @sascho sagte in bshb - Rollladensteuerung mit yhka Homekit:

                    @sascho

                    Ich hab's mit der Function + API Node hinbekommen :-)))!!! Ich kann nun über die Inject Node direkt die Szene aufrufen.

                    Das Programm zum öffnen von Dateien im Terminal des Docker vom IOBroker nennt sich Nano. Damit konnte ich die settings.js modifizieren. Der Befehl lautet: nano /opt/iobroker/node_modules/iobroker.node-red/settings.js

                    f7340401-a3f3-4127-9c6b-dc38859bca94-image.png

                    Ich würde jetzt mal zwei Fenster auf die API Node umbauen. Im nächsten Schritt wäre aber die Frage, ob ich mit einer weiteren API Node auskommen würde, um die Current Position und Remaining/Bewegungsstatus auszulesen :-). Ich bin aber für heute schon mal super Happy!

                    Ich würde es nicht machen. - Ich hab Dir ja gerade geschickt, wie Du das was die Funktion macht ggf. auhc mit der API Node machen kannst.

                    Nano ist übrigens ein Linux Editor - dann hat inzwischen jedes neuere Linux System an Board. ;)

                    Aber wie gesagt mit der Function Node - bin ich aus dem Spiel.

                    S Offline
                    S Offline
                    sascho
                    schrieb am zuletzt editiert von
                    #98

                    @mickym

                    Mit der API Node + Funktion hattest Du vollkommen Recht, das war nichts. Die Reaktion der testweise angeschlossenen Fenster war total sporadisch. Ich habe sie erst einmal wieder rausgenommen - total frustierend so etwas.

                    Stattdessen habe ich gestern die restlichen Szenen im KLF200 angelernt, nachdem es aufgehört hatte zu regnen (ansonsten fahren die Fenster nicht auf).

                    Ich habe dann mal auf die Schnelle den KLF200 Adapter wieder installiert und an die Szenen gehängt. Bisher läuft der Adapter ohne Absturz und keine Fehlermeldungen im Log.

                    Evtl. ist ja der Adapter doch die bessere Wahl in Verbindung mit den Szenen + evtl. das Abfangen von Statusmeldungen im Log. Ich habe jetzt einen Smarten Zwischenstecker vor dem KLF200. Wenn eine Fehlermeldung des Adapters im Log auftaucht, könnte man den Zwischenstecker kurz aus und einschalten und dann den Adapter neu starten. Evtl. ist das die beste Lösung?

                    Mich würde aber schon noch interessieren, ob wir die Nodes zum Laufen bekommen mit Deinen Skripten - mir fehlt gerade nur die Zeit zum ausprobieren :-(.

                    mickymM 1 Antwort Letzte Antwort
                    0
                    • S sascho

                      @mickym

                      Mit der API Node + Funktion hattest Du vollkommen Recht, das war nichts. Die Reaktion der testweise angeschlossenen Fenster war total sporadisch. Ich habe sie erst einmal wieder rausgenommen - total frustierend so etwas.

                      Stattdessen habe ich gestern die restlichen Szenen im KLF200 angelernt, nachdem es aufgehört hatte zu regnen (ansonsten fahren die Fenster nicht auf).

                      Ich habe dann mal auf die Schnelle den KLF200 Adapter wieder installiert und an die Szenen gehängt. Bisher läuft der Adapter ohne Absturz und keine Fehlermeldungen im Log.

                      Evtl. ist ja der Adapter doch die bessere Wahl in Verbindung mit den Szenen + evtl. das Abfangen von Statusmeldungen im Log. Ich habe jetzt einen Smarten Zwischenstecker vor dem KLF200. Wenn eine Fehlermeldung des Adapters im Log auftaucht, könnte man den Zwischenstecker kurz aus und einschalten und dann den Adapter neu starten. Evtl. ist das die beste Lösung?

                      Mich würde aber schon noch interessieren, ob wir die Nodes zum Laufen bekommen mit Deinen Skripten - mir fehlt gerade nur die Zeit zum ausprobieren :-(.

                      mickymM Online
                      mickymM Online
                      mickym
                      Most Active
                      schrieb am zuletzt editiert von mickym
                      #99

                      @sascho sagte in bshb - Rollladensteuerung mit yhka Homekit:

                      Mit der API Node + Funktion hattest Du vollkommen Recht, das war nichts. Die Reaktion der testweise angeschlossenen Fenster war total sporadisch. Ich habe sie erst einmal wieder rausgenommen - total frustierend so etwas.

                      Na deswegen war ich da auch raus - wenn jemand meint mit einem API Call, dasselbe zu erreichen. Wie gesagt, das hättest Du direkt auch mit der API Node machen können und ich hab Dir ja beschrieben, wie man sowas dann macht. Und wenn man mit der API arbeitet, dann gehört etwas mehr dazu, als nur den Request abzusetzen, das können die API Nodes auch.

                      Lies mal aus der API Doku ab seite 95

                      5fd6fb3b-a247-486c-bab5-f9dabc88c08a-image.png

                      Ich hätte also zumindest erwartet, dass diese Function zurückgibt, ob der Request akzeptiert wurde oder nicht und das hat der alles nicht gemacht. Deswegen war das für mich gleich alles für die Tonne, zudem Du ja die API Node hast, um sowas zu machen.

                      Aber für Dich ist es wahrscheinlich wirklich besser, Du nimmst den iobroker Adapter wieder in Betrieb und reagierst erst mal auf Fehlersituationen im Log, als Dich mit diesen Problemen rumzuschlagen.

                      Es wäre was anderes wenn ich auch so KLF Gateway hätte, dann könnte ich Dich hier ganz anders unterstützen, da ich die Dinge ja selbst ausprobieren könnte, aber nach dem nicht der Fall ist, geht das leider nicht. Auch das ich generell den Vorschlag gemacht habe, es mit den Velux Nodes es zu versuchen, war ja nur der Versuch, ob Du damit etwas mehr Stabilität bekommst. Wie Du an dem Flow mit der Befehlsqueue siehst, hat man halt ggf. mehr Möglichkeiten durch direktes Zurückmelden einer Fehlersituation eben schneller zu reagieren, als über den Adapter.

                      Wie gesagt, nimm den Adapter wieder in Betrieb und installiere Dir die von mir empfohlene Tailnode. Ich habe die jetzt 1-2 Wochen in Betrieb und die kommt nun mit dem Wechsel des iobroker Log Files gut zu Recht.

                      Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                      S 1 Antwort Letzte Antwort
                      0
                      • mickymM mickym

                        @sascho sagte in bshb - Rollladensteuerung mit yhka Homekit:

                        Mit der API Node + Funktion hattest Du vollkommen Recht, das war nichts. Die Reaktion der testweise angeschlossenen Fenster war total sporadisch. Ich habe sie erst einmal wieder rausgenommen - total frustierend so etwas.

                        Na deswegen war ich da auch raus - wenn jemand meint mit einem API Call, dasselbe zu erreichen. Wie gesagt, das hättest Du direkt auch mit der API Node machen können und ich hab Dir ja beschrieben, wie man sowas dann macht. Und wenn man mit der API arbeitet, dann gehört etwas mehr dazu, als nur den Request abzusetzen, das können die API Nodes auch.

                        Lies mal aus der API Doku ab seite 95

                        5fd6fb3b-a247-486c-bab5-f9dabc88c08a-image.png

                        Ich hätte also zumindest erwartet, dass diese Function zurückgibt, ob der Request akzeptiert wurde oder nicht und das hat der alles nicht gemacht. Deswegen war das für mich gleich alles für die Tonne, zudem Du ja die API Node hast, um sowas zu machen.

                        Aber für Dich ist es wahrscheinlich wirklich besser, Du nimmst den iobroker Adapter wieder in Betrieb und reagierst erst mal auf Fehlersituationen im Log, als Dich mit diesen Problemen rumzuschlagen.

                        Es wäre was anderes wenn ich auch so KLF Gateway hätte, dann könnte ich Dich hier ganz anders unterstützen, da ich die Dinge ja selbst ausprobieren könnte, aber nach dem nicht der Fall ist, geht das leider nicht. Auch das ich generell den Vorschlag gemacht habe, es mit den Velux Nodes es zu versuchen, war ja nur der Versuch, ob Du damit etwas mehr Stabilität bekommst. Wie Du an dem Flow mit der Befehlsqueue siehst, hat man halt ggf. mehr Möglichkeiten durch direktes Zurückmelden einer Fehlersituation eben schneller zu reagieren, als über den Adapter.

                        Wie gesagt, nimm den Adapter wieder in Betrieb und installiere Dir die von mir empfohlene Tailnode. Ich habe die jetzt 1-2 Wochen in Betrieb und die kommt nun mit dem Wechsel des iobroker Log Files gut zu Recht.

                        S Offline
                        S Offline
                        sascho
                        schrieb am zuletzt editiert von
                        #100

                        @mickym

                        Dieses Schaubbild von Velux hat mich überzeugt, es mal verstärkt mit den Scenes zu versuchen. Ich habe ganz stark die Vermutung, dass das KLF200 gut damit zurecht kommt, aus einem User-Szenenbefehl mehrere Aktuatoren sauber anzusteuern. Nicht gut zurecht kommt es mit Situationen, wo mehrere User-Befehle mit mehreren Aktuatoren verheiratet werden müssen.
                        Auch mit fast zeitgleich ausgelösten Szenen kommt es gut zurecht. Seit zwei Tagen läuft der Adapter durch und nichts vom Adapter ist im Log aufgetaucht. Das ist doch schon mal super.

                        Und realistischerweise - ich habe hier im Haus noch so viele Sachen zu erledigen - da mache ich mich an das Nodes Thema lieber später noch mal dran. Evtl. hat es ja noch ein paar Vorteile ggü. dem Adapter.
                        Ich hoffe, dass der Adapter jetzt mal sauber durchläuft - beim ersten Crash baue ich dann noch die Tail-Node ein.
                        Als nächstes muss aber auf jeden Fall noch die PV Anlage eingebunden werden :-). Du bist aber eine ganz große Hilfe in der Lage! Wirklich noch einmal großen Dank und meine aufrichtige Hochachtung vor Deinen Fähigkeiten!

                        1 Antwort Letzte Antwort
                        0
                        • S Offline
                          S Offline
                          sascho
                          schrieb am zuletzt editiert von sascho
                          #101

                          @mickym Kurze Frage, ich wollte gerade noch mal den Restart der Instanz einbauen, wenn der Adapter die Verbindung zum KLF200 verliert.
                          Trigger für den Restart ist, wenn der Connection Datenpunkt auf False springt.
                          Ich bekomme aber den Trigger für den Instanz-Restart nicht hin. Es kommt immer folgende Fehlermeldung.


                          [
                          {
                          "id": "b75d7881.80f448",
                          "type": "tab",
                          "label": "KLF200_Adapter",
                          "disabled": false,
                          "info": ""
                          },
                          {
                          "id": "1269b93.a703647",
                          "type": "exec",
                          "z": "b75d7881.80f448",
                          "command": "iobroker restart klf200.0",
                          "addpay": "",
                          "append": "",
                          "useSpawn": "false",
                          "timer": "",
                          "oldrc": false,
                          "name": "iobroker restart klf200.0",
                          "x": 650,
                          "y": 140,
                          "wires": [
                          [
                          "e778d2c7.a6621"
                          ],
                          [
                          "e778d2c7.a6621"
                          ],
                          [
                          "e778d2c7.a6621"
                          ]
                          ]
                          },
                          {
                          "id": "c4ee8035.cdf36",
                          "type": "inject",
                          "z": "b75d7881.80f448",
                          "name": "",
                          "props": [
                          {
                          "p": "payload"
                          }
                          ],
                          "repeat": "",
                          "crontab": "",
                          "once": false,
                          "onceDelay": 0.1,
                          "topic": "",
                          "payload": "false",
                          "payloadType": "bool",
                          "x": 170,
                          "y": 220,
                          "wires": [
                          [
                          "9b67467.79a76b8"
                          ]
                          ]
                          },
                          {
                          "id": "1281ff6c.19b101",
                          "type": "ioBroker in",
                          "z": "b75d7881.80f448",
                          "name": "KLF200_Connection_Status",
                          "topic": "klf200.0.info.connection",
                          "payloadType": "value",
                          "onlyack": "",
                          "func": "rbe",
                          "gap": "",
                          "fireOnStart": "false",
                          "x": 160,
                          "y": 140,
                          "wires": [
                          [
                          "9b67467.79a76b8"
                          ]
                          ]
                          },
                          {
                          "id": "9b67467.79a76b8",
                          "type": "switch",
                          "z": "b75d7881.80f448",
                          "name": "",
                          "property": "payload",
                          "propertyType": "msg",
                          "rules": [
                          {
                          "t": "false"
                          },
                          {
                          "t": "true"
                          }
                          ],
                          "checkall": "true",
                          "repair": false,
                          "outputs": 2,
                          "x": 420,
                          "y": 220,
                          "wires": [
                          [
                          "1269b93.a703647"
                          ],
                          []
                          ]
                          },
                          {
                          "id": "e778d2c7.a6621",
                          "type": "debug",
                          "z": "b75d7881.80f448",
                          "name": "",
                          "active": true,
                          "tosidebar": true,
                          "console": false,
                          "tostatus": false,
                          "complete": "false",
                          "statusVal": "",
                          "statusType": "auto",
                          "x": 900,
                          "y": 220,
                          "wires": []
                          }
                          ]

                          07c5cc88-d8fa-416c-836a-581d0eb35d32-image.png

                          mickymM 1 Antwort Letzte Antwort
                          0
                          • S sascho

                            @mickym Kurze Frage, ich wollte gerade noch mal den Restart der Instanz einbauen, wenn der Adapter die Verbindung zum KLF200 verliert.
                            Trigger für den Restart ist, wenn der Connection Datenpunkt auf False springt.
                            Ich bekomme aber den Trigger für den Instanz-Restart nicht hin. Es kommt immer folgende Fehlermeldung.


                            [
                            {
                            "id": "b75d7881.80f448",
                            "type": "tab",
                            "label": "KLF200_Adapter",
                            "disabled": false,
                            "info": ""
                            },
                            {
                            "id": "1269b93.a703647",
                            "type": "exec",
                            "z": "b75d7881.80f448",
                            "command": "iobroker restart klf200.0",
                            "addpay": "",
                            "append": "",
                            "useSpawn": "false",
                            "timer": "",
                            "oldrc": false,
                            "name": "iobroker restart klf200.0",
                            "x": 650,
                            "y": 140,
                            "wires": [
                            [
                            "e778d2c7.a6621"
                            ],
                            [
                            "e778d2c7.a6621"
                            ],
                            [
                            "e778d2c7.a6621"
                            ]
                            ]
                            },
                            {
                            "id": "c4ee8035.cdf36",
                            "type": "inject",
                            "z": "b75d7881.80f448",
                            "name": "",
                            "props": [
                            {
                            "p": "payload"
                            }
                            ],
                            "repeat": "",
                            "crontab": "",
                            "once": false,
                            "onceDelay": 0.1,
                            "topic": "",
                            "payload": "false",
                            "payloadType": "bool",
                            "x": 170,
                            "y": 220,
                            "wires": [
                            [
                            "9b67467.79a76b8"
                            ]
                            ]
                            },
                            {
                            "id": "1281ff6c.19b101",
                            "type": "ioBroker in",
                            "z": "b75d7881.80f448",
                            "name": "KLF200_Connection_Status",
                            "topic": "klf200.0.info.connection",
                            "payloadType": "value",
                            "onlyack": "",
                            "func": "rbe",
                            "gap": "",
                            "fireOnStart": "false",
                            "x": 160,
                            "y": 140,
                            "wires": [
                            [
                            "9b67467.79a76b8"
                            ]
                            ]
                            },
                            {
                            "id": "9b67467.79a76b8",
                            "type": "switch",
                            "z": "b75d7881.80f448",
                            "name": "",
                            "property": "payload",
                            "propertyType": "msg",
                            "rules": [
                            {
                            "t": "false"
                            },
                            {
                            "t": "true"
                            }
                            ],
                            "checkall": "true",
                            "repair": false,
                            "outputs": 2,
                            "x": 420,
                            "y": 220,
                            "wires": [
                            [
                            "1269b93.a703647"
                            ],
                            []
                            ]
                            },
                            {
                            "id": "e778d2c7.a6621",
                            "type": "debug",
                            "z": "b75d7881.80f448",
                            "name": "",
                            "active": true,
                            "tosidebar": true,
                            "console": false,
                            "tostatus": false,
                            "complete": "false",
                            "statusVal": "",
                            "statusType": "auto",
                            "x": 900,
                            "y": 220,
                            "wires": []
                            }
                            ]

                            07c5cc88-d8fa-416c-836a-581d0eb35d32-image.png

                            mickymM Online
                            mickymM Online
                            mickym
                            Most Active
                            schrieb am zuletzt editiert von mickym
                            #102

                            @sascho Hallo ;) - wäre toll wenn Du den Code für den Flow in CodeTags packen würdest.

                            Ich habe den klf200 Adapter ja leider nicht installiert - aber ich fürchte ich kann Dir nicht helfen. Weil ich hab einfach mal einen anderen Adapter mit Deinem Flow genommen und der funktioniert:

                            Ich hab mal den Info Adapter neu gestartet.

                            072935f6-009b-482b-9472-cd339f2d7e7c-image.png

                            Schau mal ob Du andere Adapter neu starten kannst - ansonsten hast Du im System ggf. ein Berechtigungsproblem.

                            Irgendwie als ob Dein NodeRed Adapter unter einer anderen Kennung läuft keine Ahnung.

                            Eigentlich muss es so funktionieren. Evtl. ist an Deinem System was schief - da müsste ggf. unser Linux Guru helfen => @Thomas-Braun

                            HIer gabs mal ein ähnliches Problem: https://forum.iobroker.net/topic/40916/docker-container-restart-iobroker-per-script/42?_=1632433048127

                            Du kannst also mal probieren:

                            sudo -u iobroker iobroker restart info.0
                            

                            funktioniert bei mir jedenfalls auch:

                            14c8ad0b-be3c-49b1-9a29-b26553b2ecae-image.png

                            Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                            S 1 Antwort Letzte Antwort
                            0
                            • mickymM mickym

                              @sascho Hallo ;) - wäre toll wenn Du den Code für den Flow in CodeTags packen würdest.

                              Ich habe den klf200 Adapter ja leider nicht installiert - aber ich fürchte ich kann Dir nicht helfen. Weil ich hab einfach mal einen anderen Adapter mit Deinem Flow genommen und der funktioniert:

                              Ich hab mal den Info Adapter neu gestartet.

                              072935f6-009b-482b-9472-cd339f2d7e7c-image.png

                              Schau mal ob Du andere Adapter neu starten kannst - ansonsten hast Du im System ggf. ein Berechtigungsproblem.

                              Irgendwie als ob Dein NodeRed Adapter unter einer anderen Kennung läuft keine Ahnung.

                              Eigentlich muss es so funktionieren. Evtl. ist an Deinem System was schief - da müsste ggf. unser Linux Guru helfen => @Thomas-Braun

                              HIer gabs mal ein ähnliches Problem: https://forum.iobroker.net/topic/40916/docker-container-restart-iobroker-per-script/42?_=1632433048127

                              Du kannst also mal probieren:

                              sudo -u iobroker iobroker restart info.0
                              

                              funktioniert bei mir jedenfalls auch:

                              14c8ad0b-be3c-49b1-9a29-b26553b2ecae-image.png

                              S Offline
                              S Offline
                              sascho
                              schrieb am zuletzt editiert von
                              #103

                              @mickym

                              Ich habs mal mit dem info Adapter probiert. Das funktioniert auch nicht, sieht so aus als wenn ich tatsächlich ein Berechtigungsproblem habe. Soll ich dann mal den Kollegen anklingeln? Die verlinkte Lösung sieht sehr kompliziert aus.

                              b49e239b-2ee5-4d00-bf66-dd863573b205-image.png

                              mickymM 1 Antwort Letzte Antwort
                              0
                              • S sascho

                                @mickym

                                Ich habs mal mit dem info Adapter probiert. Das funktioniert auch nicht, sieht so aus als wenn ich tatsächlich ein Berechtigungsproblem habe. Soll ich dann mal den Kollegen anklingeln? Die verlinkte Lösung sieht sehr kompliziert aus.

                                b49e239b-2ee5-4d00-bf66-dd863573b205-image.png

                                mickymM Online
                                mickymM Online
                                mickym
                                Most Active
                                schrieb am zuletzt editiert von
                                #104

                                @sascho ja . ich kann hier nicht weiter helfen.

                                Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                                1 Antwort Letzte Antwort
                                0
                                • S Offline
                                  S Offline
                                  sascho
                                  schrieb am zuletzt editiert von sascho
                                  #105

                                  @mickym

                                  Hi,

                                  ich habe das Thema LOG Auswertungen aus Zeitgründen nicht weiterverfolgt. Der KLF200 Adapter ist seit dem ausschließlichen Nutzen von Szenen auch nicht mehr abgestürzt. Das System läuft jetzt seit ein paar Wochen stabil, obwohl ich noch laufend Anpassungen machen.

                                  Aktuell arbeite ich an einer Möglichkeit, die Wärmepumpe sauber in unser System zu integrieren. Sie ist leider keine Inverter Wärmepumpe - d.h. sie kann nur ein- oder ausschalten. Nachts soll soll sie möglichst nicht viel laufen, sondern den Strom der PV Anlage am Tag nutzen.

                                  Daher schalte ich sie per Skript um 16:30 in den Sommermodus (0) und um 10:30 in den Wintermodus (1).
                                  Im Sommermodus arbeitet sie gar nicht und die Rücklauftemperatur fällt irgendwann nachts unter 20°, wodurch das Haus auskühlt. Daher schalte ich die Wärmepumpe per Skript in den Urlaubsmodus, wenn die Rücklauftemperatur unter 20° fällt.
                                  Leider passiert das schon mal durch Temperaturschwankungen. Ich möchte mein Skript daher verbessern, dass die Umschaltung erst erfolgt, wenn die 20° für mehr als 10 Minuten unterschritten werden, und auch nur zwischen 16:30 - 10:30.
                                  Hast Du eine Ahnung, wie das gehen kann?

                                  Hier mal ein Testballon....


                                  [
                                  {
                                  "id": "18c687b8.a4de68",
                                  "type": "tab",
                                  "label": "Test Wärmepumpe",
                                  "disabled": false,
                                  "info": ""
                                  },
                                  {
                                  "id": "cf25994f.fe48b8",
                                  "type": "ioBroker in",
                                  "z": "18c687b8.a4de68",
                                  "name": "",
                                  "topic": "modbus.0.holdingRegisters.2_Ruecklauftemperatur_Ist",
                                  "payloadType": "value",
                                  "onlyack": "",
                                  "func": "rbe",
                                  "gap": "",
                                  "fireOnStart": "true",
                                  "x": 290,
                                  "y": 80,
                                  "wires": [
                                  [
                                  "71881515.b9f4dc",
                                  "b7e02d19.0f077"
                                  ]
                                  ]
                                  },
                                  {
                                  "id": "71881515.b9f4dc",
                                  "type": "falling-edge",
                                  "z": "18c687b8.a4de68",
                                  "name": "Untergrenze 20,0°",
                                  "threshold": "24",
                                  "x": 610,
                                  "y": 80,
                                  "wires": [
                                  [
                                  "fa130cf5.76646"
                                  ]
                                  ]
                                  },
                                  {
                                  "id": "fa130cf5.76646",
                                  "type": "change",
                                  "z": "18c687b8.a4de68",
                                  "name": "2 Urlaub",
                                  "rules": [
                                  {
                                  "t": "set",
                                  "p": "payload",
                                  "pt": "msg",
                                  "to": "2",
                                  "tot": "num"
                                  }
                                  ],
                                  "action": "",
                                  "property": "",
                                  "from": "",
                                  "to": "",
                                  "reg": false,
                                  "x": 820,
                                  "y": 80,
                                  "wires": [
                                  [
                                  "f7ee88d5.d64ac8",
                                  "de04b844.8a6c38"
                                  ]
                                  ]
                                  },
                                  {
                                  "id": "f7ee88d5.d64ac8",
                                  "type": "ioBroker out",
                                  "z": "18c687b8.a4de68",
                                  "d": true,
                                  "name": "modbus.0.holdingRegisters.5015_Betriebsmodus",
                                  "topic": "modbus.0.holdingRegisters.5015_Betriebsmodus",
                                  "ack": "false",
                                  "autoCreate": "false",
                                  "stateName": "",
                                  "role": "",
                                  "payloadType": "",
                                  "readonly": "",
                                  "stateUnit": "",
                                  "stateMin": "",
                                  "stateMax": "",
                                  "x": 1170,
                                  "y": 120,
                                  "wires": []
                                  },
                                  {
                                  "id": "b7e02d19.0f077",
                                  "type": "rising-edge",
                                  "z": "18c687b8.a4de68",
                                  "name": "Obergrenze 25°",
                                  "threshold": "24.7",
                                  "x": 620,
                                  "y": 180,
                                  "wires": [
                                  [
                                  "9e455735.9e79a8"
                                  ]
                                  ]
                                  },
                                  {
                                  "id": "9e455735.9e79a8",
                                  "type": "change",
                                  "z": "18c687b8.a4de68",
                                  "name": "0 Sommer",
                                  "rules": [
                                  {
                                  "t": "set",
                                  "p": "payload",
                                  "pt": "msg",
                                  "to": "0",
                                  "tot": "num"
                                  }
                                  ],
                                  "action": "",
                                  "property": "",
                                  "from": "",
                                  "to": "",
                                  "reg": false,
                                  "x": 830,
                                  "y": 180,
                                  "wires": [
                                  [
                                  "f7ee88d5.d64ac8",
                                  "de04b844.8a6c38"
                                  ]
                                  ]
                                  },
                                  {
                                  "id": "9c36b6cd.d63f58",
                                  "type": "comment",
                                  "z": "18c687b8.a4de68",
                                  "name": "für > 10 Min und nur zwischen 16:30 - 10:30 Uhr",
                                  "info": "",
                                  "x": 680,
                                  "y": 240,
                                  "wires": []
                                  },
                                  {
                                  "id": "de04b844.8a6c38",
                                  "type": "debug",
                                  "z": "18c687b8.a4de68",
                                  "name": "",
                                  "active": true,
                                  "tosidebar": true,
                                  "console": false,
                                  "tostatus": false,
                                  "complete": "false",
                                  "statusVal": "",
                                  "statusType": "auto",
                                  "x": 1200,
                                  "y": 60,
                                  "wires": []
                                  }
                                  ]

                                  mickymM 1 Antwort Letzte Antwort
                                  0
                                  • S sascho

                                    @mickym

                                    Hi,

                                    ich habe das Thema LOG Auswertungen aus Zeitgründen nicht weiterverfolgt. Der KLF200 Adapter ist seit dem ausschließlichen Nutzen von Szenen auch nicht mehr abgestürzt. Das System läuft jetzt seit ein paar Wochen stabil, obwohl ich noch laufend Anpassungen machen.

                                    Aktuell arbeite ich an einer Möglichkeit, die Wärmepumpe sauber in unser System zu integrieren. Sie ist leider keine Inverter Wärmepumpe - d.h. sie kann nur ein- oder ausschalten. Nachts soll soll sie möglichst nicht viel laufen, sondern den Strom der PV Anlage am Tag nutzen.

                                    Daher schalte ich sie per Skript um 16:30 in den Sommermodus (0) und um 10:30 in den Wintermodus (1).
                                    Im Sommermodus arbeitet sie gar nicht und die Rücklauftemperatur fällt irgendwann nachts unter 20°, wodurch das Haus auskühlt. Daher schalte ich die Wärmepumpe per Skript in den Urlaubsmodus, wenn die Rücklauftemperatur unter 20° fällt.
                                    Leider passiert das schon mal durch Temperaturschwankungen. Ich möchte mein Skript daher verbessern, dass die Umschaltung erst erfolgt, wenn die 20° für mehr als 10 Minuten unterschritten werden, und auch nur zwischen 16:30 - 10:30.
                                    Hast Du eine Ahnung, wie das gehen kann?

                                    Hier mal ein Testballon....


                                    [
                                    {
                                    "id": "18c687b8.a4de68",
                                    "type": "tab",
                                    "label": "Test Wärmepumpe",
                                    "disabled": false,
                                    "info": ""
                                    },
                                    {
                                    "id": "cf25994f.fe48b8",
                                    "type": "ioBroker in",
                                    "z": "18c687b8.a4de68",
                                    "name": "",
                                    "topic": "modbus.0.holdingRegisters.2_Ruecklauftemperatur_Ist",
                                    "payloadType": "value",
                                    "onlyack": "",
                                    "func": "rbe",
                                    "gap": "",
                                    "fireOnStart": "true",
                                    "x": 290,
                                    "y": 80,
                                    "wires": [
                                    [
                                    "71881515.b9f4dc",
                                    "b7e02d19.0f077"
                                    ]
                                    ]
                                    },
                                    {
                                    "id": "71881515.b9f4dc",
                                    "type": "falling-edge",
                                    "z": "18c687b8.a4de68",
                                    "name": "Untergrenze 20,0°",
                                    "threshold": "24",
                                    "x": 610,
                                    "y": 80,
                                    "wires": [
                                    [
                                    "fa130cf5.76646"
                                    ]
                                    ]
                                    },
                                    {
                                    "id": "fa130cf5.76646",
                                    "type": "change",
                                    "z": "18c687b8.a4de68",
                                    "name": "2 Urlaub",
                                    "rules": [
                                    {
                                    "t": "set",
                                    "p": "payload",
                                    "pt": "msg",
                                    "to": "2",
                                    "tot": "num"
                                    }
                                    ],
                                    "action": "",
                                    "property": "",
                                    "from": "",
                                    "to": "",
                                    "reg": false,
                                    "x": 820,
                                    "y": 80,
                                    "wires": [
                                    [
                                    "f7ee88d5.d64ac8",
                                    "de04b844.8a6c38"
                                    ]
                                    ]
                                    },
                                    {
                                    "id": "f7ee88d5.d64ac8",
                                    "type": "ioBroker out",
                                    "z": "18c687b8.a4de68",
                                    "d": true,
                                    "name": "modbus.0.holdingRegisters.5015_Betriebsmodus",
                                    "topic": "modbus.0.holdingRegisters.5015_Betriebsmodus",
                                    "ack": "false",
                                    "autoCreate": "false",
                                    "stateName": "",
                                    "role": "",
                                    "payloadType": "",
                                    "readonly": "",
                                    "stateUnit": "",
                                    "stateMin": "",
                                    "stateMax": "",
                                    "x": 1170,
                                    "y": 120,
                                    "wires": []
                                    },
                                    {
                                    "id": "b7e02d19.0f077",
                                    "type": "rising-edge",
                                    "z": "18c687b8.a4de68",
                                    "name": "Obergrenze 25°",
                                    "threshold": "24.7",
                                    "x": 620,
                                    "y": 180,
                                    "wires": [
                                    [
                                    "9e455735.9e79a8"
                                    ]
                                    ]
                                    },
                                    {
                                    "id": "9e455735.9e79a8",
                                    "type": "change",
                                    "z": "18c687b8.a4de68",
                                    "name": "0 Sommer",
                                    "rules": [
                                    {
                                    "t": "set",
                                    "p": "payload",
                                    "pt": "msg",
                                    "to": "0",
                                    "tot": "num"
                                    }
                                    ],
                                    "action": "",
                                    "property": "",
                                    "from": "",
                                    "to": "",
                                    "reg": false,
                                    "x": 830,
                                    "y": 180,
                                    "wires": [
                                    [
                                    "f7ee88d5.d64ac8",
                                    "de04b844.8a6c38"
                                    ]
                                    ]
                                    },
                                    {
                                    "id": "9c36b6cd.d63f58",
                                    "type": "comment",
                                    "z": "18c687b8.a4de68",
                                    "name": "für > 10 Min und nur zwischen 16:30 - 10:30 Uhr",
                                    "info": "",
                                    "x": 680,
                                    "y": 240,
                                    "wires": []
                                    },
                                    {
                                    "id": "de04b844.8a6c38",
                                    "type": "debug",
                                    "z": "18c687b8.a4de68",
                                    "name": "",
                                    "active": true,
                                    "tosidebar": true,
                                    "console": false,
                                    "tostatus": false,
                                    "complete": "false",
                                    "statusVal": "",
                                    "statusType": "auto",
                                    "x": 1200,
                                    "y": 60,
                                    "wires": []
                                    }
                                    ]

                                    mickymM Online
                                    mickymM Online
                                    mickym
                                    Most Active
                                    schrieb am zuletzt editiert von mickym
                                    #106

                                    @sascho Ich würde an Deiner Stelle lieber mit Hysterese arbeiten als mit Zeitfenstern - das nur allgemein zu den Regelmechanismen. Man kann es auch mit 10 min etc. machen - hängt halt davon ab, wie oft die Temperatur gemeldet wird.

                                    Bitte in Zukunft exportierte Flows in CodeTags stellen - es ist sonst wirklich mühselig durch das Skript zu scrollen.

                                    Falls Du öfter mal zeitliche Filter hast - die Du grafisch einstellen willst - empfehle ich Dir den lightscheduler. Ansonsten kann man es aber auch einfach mit Hausmitteln umsetzen:

                                    Diese Switch Node lässt Nachrichten, wie gewünscht nur zwischen 16:30 und 10:30 durch. Schaltet wahrscheinlich erst um 10:31 dann halt in >= ändern.

                                    [{"id":"7497c57df52c3840","type":"switch","z":"18c687b8.a4de68","name":"Aktuelle Uhrzeit zwischen 16:30 und 10:30 ?","property":"payload","propertyType":"msg","rules":[{"t":"jsonata_exp","v":"$not($moment().locale(\"de\").tz('Europe/Berlin').format('HH:mm') > \"10:30\" and $moment().locale(\"de\").tz('Europe/Berlin').format('HH:mm') < \"16:30\")","vt":"jsonata"}],"checkall":"true","repair":false,"outputs":1,"x":800,"y":420,"wires":[["998943d9a044870f"]]}]
                                    

                                    Trotzdem - auch wenn eventuell eine Hysterese besser ist - hier mal die Prüfung auf 10 Minuten unter 20°C und die gesamte Logik wie Du sie beschrieben hast: Ab 10:30 Wintermodus (1), ab 16:30 Sommermodus (0) bei 10 min unter 20°C Urlaubsmodus (2) im Zeitraum von 16:30 und 10:30.

                                    d0a196f3-9200-451a-a7f9-003991bb8a1e-image.png

                                    [
                                       {
                                           "id": "7497c57df52c3840",
                                           "type": "switch",
                                           "z": "1899530c.cddd1d",
                                           "name": "Aktuelle Uhrzeit zwischen 16:30 und 10:30 ?",
                                           "property": "payload",
                                           "propertyType": "msg",
                                           "rules": [
                                               {
                                                   "t": "jsonata_exp",
                                                   "v": "$not($moment().locale(\"de\").tz('Europe/Berlin').format('HH:mm') > \"10:30\" and $moment().locale(\"de\").tz('Europe/Berlin').format('HH:mm') < \"16:30\")",
                                                   "vt": "jsonata"
                                               },
                                               {
                                                   "t": "else"
                                               }
                                           ],
                                           "checkall": "true",
                                           "repair": false,
                                           "outputs": 2,
                                           "x": 410,
                                           "y": 220,
                                           "wires": [
                                               [
                                                   "31a4579aec5484bd"
                                               ],
                                               [
                                                   "6934748ea0b8a9ae"
                                               ]
                                           ],
                                           "outputLabels": [
                                               "zwischen 16:30 und 10:30",
                                               ""
                                           ]
                                       },
                                       {
                                           "id": "251448e00d41ee86",
                                           "type": "inject",
                                           "z": "1899530c.cddd1d",
                                           "name": "",
                                           "props": [
                                               {
                                                   "p": "payload"
                                               }
                                           ],
                                           "repeat": "",
                                           "crontab": "",
                                           "once": false,
                                           "onceDelay": 0.1,
                                           "topic": "",
                                           "payload": "19",
                                           "payloadType": "num",
                                           "x": 150,
                                           "y": 200,
                                           "wires": [
                                               [
                                                   "7497c57df52c3840"
                                               ]
                                           ]
                                       },
                                       {
                                           "id": "998943d9a044870f",
                                           "type": "debug",
                                           "z": "1899530c.cddd1d",
                                           "name": "",
                                           "active": true,
                                           "tosidebar": true,
                                           "console": false,
                                           "tostatus": false,
                                           "complete": "false",
                                           "statusVal": "",
                                           "statusType": "auto",
                                           "x": 1210,
                                           "y": 320,
                                           "wires": []
                                       },
                                       {
                                           "id": "31a4579aec5484bd",
                                           "type": "switch",
                                           "z": "1899530c.cddd1d",
                                           "name": "unter 20°C?",
                                           "property": "payload",
                                           "propertyType": "msg",
                                           "rules": [
                                               {
                                                   "t": "gte",
                                                   "v": "20",
                                                   "vt": "num"
                                               },
                                               {
                                                   "t": "lt",
                                                   "v": "20",
                                                   "vt": "num"
                                               }
                                           ],
                                           "checkall": "true",
                                           "repair": false,
                                           "outputs": 2,
                                           "x": 390,
                                           "y": 360,
                                           "wires": [
                                               [
                                                   "fc03ec7f987d601c"
                                               ],
                                               [
                                                   "13e17673693cf6f0"
                                               ]
                                           ]
                                       },
                                       {
                                           "id": "13e17673693cf6f0",
                                           "type": "trigger",
                                           "z": "1899530c.cddd1d",
                                           "name": "2 Urlaub",
                                           "op1": "",
                                           "op2": "2",
                                           "op1type": "nul",
                                           "op2type": "num",
                                           "duration": "10",
                                           "extend": false,
                                           "overrideDelay": false,
                                           "units": "min",
                                           "reset": "0",
                                           "bytopic": "all",
                                           "topic": "topic",
                                           "outputs": 1,
                                           "x": 840,
                                           "y": 380,
                                           "wires": [
                                               [
                                                   "d75a93a40f860423"
                                               ]
                                           ]
                                       },
                                       {
                                           "id": "87d7fd0bfc4520d5",
                                           "type": "inject",
                                           "z": "1899530c.cddd1d",
                                           "name": "",
                                           "props": [
                                               {
                                                   "p": "payload"
                                               }
                                           ],
                                           "repeat": "",
                                           "crontab": "",
                                           "once": false,
                                           "onceDelay": 0.1,
                                           "topic": "",
                                           "payload": "20",
                                           "payloadType": "num",
                                           "x": 150,
                                           "y": 260,
                                           "wires": [
                                               [
                                                   "7497c57df52c3840"
                                               ]
                                           ]
                                       },
                                       {
                                           "id": "fc03ec7f987d601c",
                                           "type": "change",
                                           "z": "1899530c.cddd1d",
                                           "name": "0 Sommer",
                                           "rules": [
                                               {
                                                   "t": "set",
                                                   "p": "payload",
                                                   "pt": "msg",
                                                   "to": "0",
                                                   "tot": "num"
                                               },
                                               {
                                                   "t": "delete",
                                                   "p": "reset",
                                                   "pt": "msg"
                                               }
                                           ],
                                           "action": "",
                                           "property": "",
                                           "from": "",
                                           "to": "",
                                           "reg": false,
                                           "x": 630,
                                           "y": 320,
                                           "wires": [
                                               [
                                                   "13e17673693cf6f0",
                                                   "d75a93a40f860423"
                                               ]
                                           ]
                                       },
                                       {
                                           "id": "d75a93a40f860423",
                                           "type": "rbe",
                                           "z": "1899530c.cddd1d",
                                           "name": "",
                                           "func": "rbe",
                                           "gap": "",
                                           "start": "",
                                           "inout": "out",
                                           "septopics": false,
                                           "property": "payload",
                                           "x": 1030,
                                           "y": 320,
                                           "wires": [
                                               [
                                                   "998943d9a044870f"
                                               ]
                                           ]
                                       },
                                       {
                                           "id": "6934748ea0b8a9ae",
                                           "type": "change",
                                           "z": "1899530c.cddd1d",
                                           "name": "1 Winter",
                                           "rules": [
                                               {
                                                   "t": "set",
                                                   "p": "payload",
                                                   "pt": "msg",
                                                   "to": "1",
                                                   "tot": "num"
                                               }
                                           ],
                                           "action": "",
                                           "property": "",
                                           "from": "",
                                           "to": "",
                                           "reg": false,
                                           "x": 840,
                                           "y": 220,
                                           "wires": [
                                               [
                                                   "d75a93a40f860423"
                                               ]
                                           ]
                                       }
                                    ]
                                    

                                    Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                                    S 1 Antwort Letzte Antwort
                                    0
                                    • mickymM mickym

                                      @sascho Ich würde an Deiner Stelle lieber mit Hysterese arbeiten als mit Zeitfenstern - das nur allgemein zu den Regelmechanismen. Man kann es auch mit 10 min etc. machen - hängt halt davon ab, wie oft die Temperatur gemeldet wird.

                                      Bitte in Zukunft exportierte Flows in CodeTags stellen - es ist sonst wirklich mühselig durch das Skript zu scrollen.

                                      Falls Du öfter mal zeitliche Filter hast - die Du grafisch einstellen willst - empfehle ich Dir den lightscheduler. Ansonsten kann man es aber auch einfach mit Hausmitteln umsetzen:

                                      Diese Switch Node lässt Nachrichten, wie gewünscht nur zwischen 16:30 und 10:30 durch. Schaltet wahrscheinlich erst um 10:31 dann halt in >= ändern.

                                      [{"id":"7497c57df52c3840","type":"switch","z":"18c687b8.a4de68","name":"Aktuelle Uhrzeit zwischen 16:30 und 10:30 ?","property":"payload","propertyType":"msg","rules":[{"t":"jsonata_exp","v":"$not($moment().locale(\"de\").tz('Europe/Berlin').format('HH:mm') > \"10:30\" and $moment().locale(\"de\").tz('Europe/Berlin').format('HH:mm') < \"16:30\")","vt":"jsonata"}],"checkall":"true","repair":false,"outputs":1,"x":800,"y":420,"wires":[["998943d9a044870f"]]}]
                                      

                                      Trotzdem - auch wenn eventuell eine Hysterese besser ist - hier mal die Prüfung auf 10 Minuten unter 20°C und die gesamte Logik wie Du sie beschrieben hast: Ab 10:30 Wintermodus (1), ab 16:30 Sommermodus (0) bei 10 min unter 20°C Urlaubsmodus (2) im Zeitraum von 16:30 und 10:30.

                                      d0a196f3-9200-451a-a7f9-003991bb8a1e-image.png

                                      [
                                         {
                                             "id": "7497c57df52c3840",
                                             "type": "switch",
                                             "z": "1899530c.cddd1d",
                                             "name": "Aktuelle Uhrzeit zwischen 16:30 und 10:30 ?",
                                             "property": "payload",
                                             "propertyType": "msg",
                                             "rules": [
                                                 {
                                                     "t": "jsonata_exp",
                                                     "v": "$not($moment().locale(\"de\").tz('Europe/Berlin').format('HH:mm') > \"10:30\" and $moment().locale(\"de\").tz('Europe/Berlin').format('HH:mm') < \"16:30\")",
                                                     "vt": "jsonata"
                                                 },
                                                 {
                                                     "t": "else"
                                                 }
                                             ],
                                             "checkall": "true",
                                             "repair": false,
                                             "outputs": 2,
                                             "x": 410,
                                             "y": 220,
                                             "wires": [
                                                 [
                                                     "31a4579aec5484bd"
                                                 ],
                                                 [
                                                     "6934748ea0b8a9ae"
                                                 ]
                                             ],
                                             "outputLabels": [
                                                 "zwischen 16:30 und 10:30",
                                                 ""
                                             ]
                                         },
                                         {
                                             "id": "251448e00d41ee86",
                                             "type": "inject",
                                             "z": "1899530c.cddd1d",
                                             "name": "",
                                             "props": [
                                                 {
                                                     "p": "payload"
                                                 }
                                             ],
                                             "repeat": "",
                                             "crontab": "",
                                             "once": false,
                                             "onceDelay": 0.1,
                                             "topic": "",
                                             "payload": "19",
                                             "payloadType": "num",
                                             "x": 150,
                                             "y": 200,
                                             "wires": [
                                                 [
                                                     "7497c57df52c3840"
                                                 ]
                                             ]
                                         },
                                         {
                                             "id": "998943d9a044870f",
                                             "type": "debug",
                                             "z": "1899530c.cddd1d",
                                             "name": "",
                                             "active": true,
                                             "tosidebar": true,
                                             "console": false,
                                             "tostatus": false,
                                             "complete": "false",
                                             "statusVal": "",
                                             "statusType": "auto",
                                             "x": 1210,
                                             "y": 320,
                                             "wires": []
                                         },
                                         {
                                             "id": "31a4579aec5484bd",
                                             "type": "switch",
                                             "z": "1899530c.cddd1d",
                                             "name": "unter 20°C?",
                                             "property": "payload",
                                             "propertyType": "msg",
                                             "rules": [
                                                 {
                                                     "t": "gte",
                                                     "v": "20",
                                                     "vt": "num"
                                                 },
                                                 {
                                                     "t": "lt",
                                                     "v": "20",
                                                     "vt": "num"
                                                 }
                                             ],
                                             "checkall": "true",
                                             "repair": false,
                                             "outputs": 2,
                                             "x": 390,
                                             "y": 360,
                                             "wires": [
                                                 [
                                                     "fc03ec7f987d601c"
                                                 ],
                                                 [
                                                     "13e17673693cf6f0"
                                                 ]
                                             ]
                                         },
                                         {
                                             "id": "13e17673693cf6f0",
                                             "type": "trigger",
                                             "z": "1899530c.cddd1d",
                                             "name": "2 Urlaub",
                                             "op1": "",
                                             "op2": "2",
                                             "op1type": "nul",
                                             "op2type": "num",
                                             "duration": "10",
                                             "extend": false,
                                             "overrideDelay": false,
                                             "units": "min",
                                             "reset": "0",
                                             "bytopic": "all",
                                             "topic": "topic",
                                             "outputs": 1,
                                             "x": 840,
                                             "y": 380,
                                             "wires": [
                                                 [
                                                     "d75a93a40f860423"
                                                 ]
                                             ]
                                         },
                                         {
                                             "id": "87d7fd0bfc4520d5",
                                             "type": "inject",
                                             "z": "1899530c.cddd1d",
                                             "name": "",
                                             "props": [
                                                 {
                                                     "p": "payload"
                                                 }
                                             ],
                                             "repeat": "",
                                             "crontab": "",
                                             "once": false,
                                             "onceDelay": 0.1,
                                             "topic": "",
                                             "payload": "20",
                                             "payloadType": "num",
                                             "x": 150,
                                             "y": 260,
                                             "wires": [
                                                 [
                                                     "7497c57df52c3840"
                                                 ]
                                             ]
                                         },
                                         {
                                             "id": "fc03ec7f987d601c",
                                             "type": "change",
                                             "z": "1899530c.cddd1d",
                                             "name": "0 Sommer",
                                             "rules": [
                                                 {
                                                     "t": "set",
                                                     "p": "payload",
                                                     "pt": "msg",
                                                     "to": "0",
                                                     "tot": "num"
                                                 },
                                                 {
                                                     "t": "delete",
                                                     "p": "reset",
                                                     "pt": "msg"
                                                 }
                                             ],
                                             "action": "",
                                             "property": "",
                                             "from": "",
                                             "to": "",
                                             "reg": false,
                                             "x": 630,
                                             "y": 320,
                                             "wires": [
                                                 [
                                                     "13e17673693cf6f0",
                                                     "d75a93a40f860423"
                                                 ]
                                             ]
                                         },
                                         {
                                             "id": "d75a93a40f860423",
                                             "type": "rbe",
                                             "z": "1899530c.cddd1d",
                                             "name": "",
                                             "func": "rbe",
                                             "gap": "",
                                             "start": "",
                                             "inout": "out",
                                             "septopics": false,
                                             "property": "payload",
                                             "x": 1030,
                                             "y": 320,
                                             "wires": [
                                                 [
                                                     "998943d9a044870f"
                                                 ]
                                             ]
                                         },
                                         {
                                             "id": "6934748ea0b8a9ae",
                                             "type": "change",
                                             "z": "1899530c.cddd1d",
                                             "name": "1 Winter",
                                             "rules": [
                                                 {
                                                     "t": "set",
                                                     "p": "payload",
                                                     "pt": "msg",
                                                     "to": "1",
                                                     "tot": "num"
                                                 }
                                             ],
                                             "action": "",
                                             "property": "",
                                             "from": "",
                                             "to": "",
                                             "reg": false,
                                             "x": 840,
                                             "y": 220,
                                             "wires": [
                                                 [
                                                     "d75a93a40f860423"
                                                 ]
                                             ]
                                         }
                                      ]
                                      

                                      S Offline
                                      S Offline
                                      sascho
                                      schrieb am zuletzt editiert von sascho
                                      #107

                                      @mickym

                                      Prima, das hat funktioniert. Ich habe noch eine E-Mail Notification eingebaut und die E-Mail kam pünktlich und der Test-Datenpunkt wurde mit dem neuen Betriebsmodus beschrieben.

                                      Was allerdings noch fehlen würde, wäre dass der ursprüngliche Sommermodus nach einer festgelegten Zeit wieder eingestellt wird - z.B. 30 Min.
                                      Die festgelegte Minimaltemperatur kann nämlich bereits um 23:00 Uhr unterschritten werden. Dann läuft die Wärmepumpe ungewollt bis Morgens um 10:30 im Urlaubsmodus. Sie sollte stattdessen nach einer festgelegten Zeit wieder "einschlafen".
                                      Ich würde das zeitgesteuert machen und nicht über eine Maximaltemperatur - denn die Rücklauftemperatur schwankt sehr stark je nachdem ob geheizt wird und auch wenn Ventile öffnen und schließen.
                                      Kann man das z.B. über ein Delay + Change Node machen? Würde die Untergrenzenüberwachung dann auch wieder scharf geschaltet?

                                      P.S. Was meinst Du mit Code Tags? & Besten Dank!

                                      mickymM 2 Antworten Letzte Antwort
                                      0
                                      • S sascho

                                        @mickym

                                        Prima, das hat funktioniert. Ich habe noch eine E-Mail Notification eingebaut und die E-Mail kam pünktlich und der Test-Datenpunkt wurde mit dem neuen Betriebsmodus beschrieben.

                                        Was allerdings noch fehlen würde, wäre dass der ursprüngliche Sommermodus nach einer festgelegten Zeit wieder eingestellt wird - z.B. 30 Min.
                                        Die festgelegte Minimaltemperatur kann nämlich bereits um 23:00 Uhr unterschritten werden. Dann läuft die Wärmepumpe ungewollt bis Morgens um 10:30 im Urlaubsmodus. Sie sollte stattdessen nach einer festgelegten Zeit wieder "einschlafen".
                                        Ich würde das zeitgesteuert machen und nicht über eine Maximaltemperatur - denn die Rücklauftemperatur schwankt sehr stark je nachdem ob geheizt wird und auch wenn Ventile öffnen und schließen.
                                        Kann man das z.B. über ein Delay + Change Node machen? Würde die Untergrenzenüberwachung dann auch wieder scharf geschaltet?

                                        P.S. Was meinst Du mit Code Tags? & Besten Dank!

                                        mickymM Online
                                        mickymM Online
                                        mickym
                                        Most Active
                                        schrieb am zuletzt editiert von mickym
                                        #108

                                        @sascho sagte in bshb - Rollladensteuerung mit yhka Homekit:

                                        P.S. Was meinst Du mit Code Tags? & Besten Dank!

                                        Fangen wir mal damit an - dachte eigentlich als nun "alter Hase" im Forum solltest Du das wissen:

                                        Code-Tags.gif

                                        Der Vorteil ist einfach - dass Du mit Select All in der schwarzen Box alles markiert hast und in die Zwischenablage kopieren kannst und nicht ewig durch den Code scrollen musst.

                                        Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                                        S 1 Antwort Letzte Antwort
                                        0
                                        • S sascho

                                          @mickym

                                          Prima, das hat funktioniert. Ich habe noch eine E-Mail Notification eingebaut und die E-Mail kam pünktlich und der Test-Datenpunkt wurde mit dem neuen Betriebsmodus beschrieben.

                                          Was allerdings noch fehlen würde, wäre dass der ursprüngliche Sommermodus nach einer festgelegten Zeit wieder eingestellt wird - z.B. 30 Min.
                                          Die festgelegte Minimaltemperatur kann nämlich bereits um 23:00 Uhr unterschritten werden. Dann läuft die Wärmepumpe ungewollt bis Morgens um 10:30 im Urlaubsmodus. Sie sollte stattdessen nach einer festgelegten Zeit wieder "einschlafen".
                                          Ich würde das zeitgesteuert machen und nicht über eine Maximaltemperatur - denn die Rücklauftemperatur schwankt sehr stark je nachdem ob geheizt wird und auch wenn Ventile öffnen und schließen.
                                          Kann man das z.B. über ein Delay + Change Node machen? Würde die Untergrenzenüberwachung dann auch wieder scharf geschaltet?

                                          P.S. Was meinst Du mit Code Tags? & Besten Dank!

                                          mickymM Online
                                          mickymM Online
                                          mickym
                                          Most Active
                                          schrieb am zuletzt editiert von mickym
                                          #109

                                          @sascho sagte in bshb - Rollladensteuerung mit yhka Homekit:

                                          Sie sollte stattdessen nach einer festgelegten Zeit wieder "einschlafen".
                                          Ich würde das zeitgesteuert machen und nicht über eine Maximaltemperatur - denn die Rücklauftemperatur schwankt sehr stark je nachdem ob geheizt wird und auch wenn Ventile öffnen und schließen.
                                          Kann man das z.B. über ein Delay + Change Node machen? Würde die Untergrenzenüberwachung dann auch wieder scharf geschaltet?

                                          Die Logik erschließt sich mir doch nicht so ganz. Wenn es kalt wird sollte doch die Rücklauftemperatur wieder höher werden, wenn die Pumpe eingeschaltet ist, das ist doch Sinn der Sache und wenn mehr geheizt wird, dauert es länger bis die Rücklauftemperatur wieder hoch genug ist. Na egal - so wird halt dann wohl mehrfach geschaltet.

                                          Um 23:00 für eine halbe Stunde - dann wenn wieder 19°C wieder für eine halbe Stunde - na egal ich muss es nicht verstehen.

                                          Nun zur Umsetzung - ist eigentlich ganz easy - Du schaltest 2 Trigger Nodes hintereinander. Die 1. Trigger Node wird nur noch als Trigger für die 2. Trigger Node genutzt - sprich wenn die Dauer der Temperaturüberprüfung abgelaufen ist, die eigentliche Steuerung übernimmt dann die 2. Trigger Node.

                                          b4aefe87-243f-40ee-9b45-4e461c0600e3-image.png

                                          [{"id":"7497c57df52c3840","type":"switch","z":"18c687b8.a4de68","name":"Aktuelle Uhrzeit zwischen 16:30 und 10:30 ?","property":"payload","propertyType":"msg","rules":[{"t":"jsonata_exp","v":"$not($moment().locale(\"de\").tz('Europe/Berlin').format('HH:mm') > \"10:30\" and $moment().locale(\"de\").tz('Europe/Berlin').format('HH:mm') < \"16:30\")","vt":"jsonata"},{"t":"else"}],"checkall":"true","repair":false,"outputs":2,"x":430,"y":600,"wires":[["31a4579aec5484bd"],["6934748ea0b8a9ae"]],"outputLabels":["zwischen 16:30 und 10:30",""]},{"id":"998943d9a044870f","type":"debug","z":"18c687b8.a4de68","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1390,"y":660,"wires":[]},{"id":"31a4579aec5484bd","type":"switch","z":"18c687b8.a4de68","name":"unter 20°C?","property":"payload","propertyType":"msg","rules":[{"t":"gte","v":"20","vt":"num"},{"t":"lt","v":"20","vt":"num"}],"checkall":"true","repair":false,"outputs":2,"x":370,"y":680,"wires":[["fc03ec7f987d601c"],["13e17673693cf6f0"]]},{"id":"13e17673693cf6f0","type":"trigger","z":"18c687b8.a4de68","name":"warte 10 Minuten","op1":"","op2":"true","op1type":"nul","op2type":"bool","duration":"10","extend":false,"overrideDelay":false,"units":"min","reset":"0","bytopic":"all","topic":"topic","outputs":1,"x":710,"y":720,"wires":[["b7f31ef8514d06aa"]]},{"id":"fc03ec7f987d601c","type":"change","z":"18c687b8.a4de68","name":"0 Sommer","rules":[{"t":"set","p":"payload","pt":"msg","to":"0","tot":"num"},{"t":"delete","p":"reset","pt":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":570,"y":660,"wires":[["13e17673693cf6f0","d75a93a40f860423"]]},{"id":"d75a93a40f860423","type":"rbe","z":"18c687b8.a4de68","name":"","func":"rbe","gap":"","start":"","inout":"out","septopics":false,"property":"payload","x":1230,"y":660,"wires":[["998943d9a044870f"]]},{"id":"6934748ea0b8a9ae","type":"change","z":"18c687b8.a4de68","name":"1 Winter","rules":[{"t":"set","p":"payload","pt":"msg","to":"1","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":1040,"y":600,"wires":[["d75a93a40f860423"]]},{"id":"b7f31ef8514d06aa","type":"trigger","z":"18c687b8.a4de68","name":"2 Urlaub (30 Min.) => 0 Sommer","op1":"2","op2":"0","op1type":"num","op2type":"num","duration":"30","extend":false,"overrideDelay":false,"units":"min","reset":"","bytopic":"all","topic":"topic","outputs":1,"x":970,"y":720,"wires":[["d75a93a40f860423"]]}]
                                          

                                          Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                                          S 1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          525

                                          Online

                                          32.7k

                                          Benutzer

                                          82.4k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe