Domoticz , KLF-200 et Velux Integra io homecontrol

Forum pour tous les autres protocoles : Enocean, X10, les cartes piface.razberry ...
Pour les questions concernant le choix de protocoles, merci d'utiliser le forum Les autres objets.
Répondre
ProfBoc75
Messages : 6
Inscription : 22 oct. 2020, 19:04

Domoticz , KLF-200 et Velux Integra io homecontrol

Message par ProfBoc75 »

Bonjour à tous,

J'ai réussi à faire fonctionner de bout en bout mon installation Domoticz / KLF-200.
Le net n'aide pas beaucoup sur le sujet, j'aimerai donc partager ici la démarche pour y arrriver.

Ma config:

Domoticz <--in/out --> MQTT Broker <---> Node-Red + Node-red-contrib-velux <---> Velux KLF-200 <---> Velux Integra avec volet extérieur.

Prérequis : https://www.domoticz.com/wiki/MQTT
1- Avoir installer un MQTT Broker type mosquitto https://mosquitto.org/blog/2013/01/mosq ... epository/
2- Avoir installer Node-Red https://nodered.org/docs/getting-started/raspberrypi
3- installer node-red-contrib-velux (version 0.0.4) (ne pas faire via l'install de palette dans l'interface web de node-red, la version sera 0.0.3 et ne marchera pas).

Code : Tout sélectionner

sudo node-red-stop
cd ~/.node-red/
npm install node-red-contrib-velux@0.0.4
sudo node-red-start
4- Avoir installer et configurer le KLF-200: choisir le mode interface,
suivre les instructions pour importer les produits Velux ainsi que les scènes. Une scène doit exister sinon le velux-node plantera dans Node-red.

Coté Domoticz:
1- Créer un hardware Velux Dummy
2- Depuis ce Velux Dummy et pour chaque équipement , Créer un "virtual sensor" de type "blinds percentage" et noter les idx (classique), prendre soin de nomer de manière similaire les équipements comme dans le KLF-200 pour faciliter la correspondance plus tard dans Node-Red.
Domoticz_Velux.png
Domoticz_Velux.png (73.66 Kio) Consulté 37557 fois
************************************************
Mise à jour du 27 Novembre 2022:

La toute dernière version de Domoticz 2022.2, impose une correction sur les équipements de type "blinds", ce qui est le cas pour les fenêtre Velux et les volets :
Reverse Open/Close State: Enabled
et permet d'avoir le bon status, Ouvert/Fermé.
************************************************

3- Ajouter le hardware MQTT Client Gateway with LAN interface qui pointe sur le MQTT Broker (prevent loop = true)

Coté Node-Red:

Retour d'état dans Domoticz:
1- Créer la chaine suivante :
lectureVelux_domoticz_in.png
lectureVelux_domoticz_in.png (24.97 Kio) Consulté 37557 fois
- Importer le code dans node-red :

Code : Tout sélectionner

[
    {
        "id": "774ff8d2.0467c8",
        "type": "Velux Nodes",
        "z": "6e3cbaf0.36e4e4",
        "name": "",
        "datasource": "e59f5b49.c02b58",
        "index": "-1",
        "nodevalue": "ALL",
        "topic": "",
        "x": 590,
        "y": 80,
        "wires": [
            [
                "d7808506.616dc8",
                "209dd4dd.4e37ac"
            ]
        ]
    },
    {
        "id": "a2494c81.43609",
        "type": "mqtt out",
        "z": "6e3cbaf0.36e4e4",
        "name": "",
        "topic": "domoticz/in",
        "qos": "",
        "retain": "",
        "broker": "26a40b17.e8e744",
        "x": 1030,
        "y": 80,
        "wires": []
    },
    {
        "id": "209dd4dd.4e37ac",
        "type": "debug",
        "z": "6e3cbaf0.36e4e4",
        "name": "",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "false",
        "statusVal": "",
        "statusType": "auto",
        "x": 1030,
        "y": 160,
        "wires": []
    },
    {
        "id": "d7808506.616dc8",
        "type": "function",
        "z": "6e3cbaf0.36e4e4",
        "name": "UpdatePosition",
        "func": "var dt = new Date();\n\nvar nodeID = msg.payload.nodeID;\nvar cpv = msg.payload.currentPosition.value;\n// var tpv = msg.payload.target.value\n\n//Convert NodeID to Domoticz IDX value\n\nif (nodeID === 0) {\n\tvar idx = 4556;\n} else if (nodeID === 1) {\n\tvar idx = 4550;\n} else if (nodeID === 2) {\n\tvar idx = 4551;\n} else if (nodeID === 3) {\n\tvar idx = 4552;\n}\n\n// set nvalue and svalue from current position\nif (cpv === 0) {\n\tvar nv=0;\n\tvar sv=0;\n} else if (cpv === 100) {\n\tvar nv=1;\n\tvar sv=100;\n} else {\n\tvar nv=2;\n\tvar sv=cpv;\n}\n\nmsg.payload = {};\nmsg.payload.command = \"switchlight\";\nmsg.payload.switchcmd = \"Set Level\";\nmsg.payload.level = sv;\nmsg.payload.idx = idx;\n// msg.payload.nvalue = nv;\n// msg.payload.svalue = sv;\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "x": 820,
        "y": 80,
        "wires": [
            [
                "a2494c81.43609"
            ]
        ]
    },
    {
        "id": "c1b21be6.47156",
        "type": "comment",
        "z": "6e3cbaf0.36e4e4",
        "name": "Opérationel",
        "info": "ça fonctionne pas touche !",
        "x": 590,
        "y": 40,
        "wires": []
    },
    {
        "id": "6f16143d.f9793c",
        "type": "inject",
        "z": "6e3cbaf0.36e4e4",
        "name": "LectureVelux",
        "props": [
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "velux:read",
        "payloadType": "str",
        "x": 330,
        "y": 80,
        "wires": [
            [
                "774ff8d2.0467c8"
            ]
        ]
    },
    {
        "id": "e59f5b49.c02b58",
        "type": "velux-connection",
        "z": "",
        "host": "192.168.xx.xx",
        "password": "YourWifiPassword",
        "monitor": "MONITOR"
    },
    {
        "id": "26a40b17.e8e744",
        "type": "mqtt-broker",
        "z": "",
        "name": "MQTTBroker",
        "broker": "localhost",
        "port": "1883",
        "clientid": "",
        "usetls": false,
        "compatmode": true,
        "keepalive": "60",
        "cleansession": true,
        "birthTopic": "",
        "birthQos": "0",
        "birthPayload": "",
        "closeTopic": "",
        "closeQos": "0",
        "closePayload": "",
        "willTopic": "",
        "willQos": "0",
        "willPayload": ""
    }
]
- Configurer la connexion mqtt-broker dans le node domoticz/in
- Idem dans Velux-Nodes, l'adresse ip et le mot de passe du KLF-200 (mot de passe du WIFI !!! )

- Déployer le nouveau flux.
- Surveiller la console Debug voir s'il y a des erreurs de connexion au KLF-200.
- connected doit s'afficher sous le topic domoticz/in

Récupérer les nodeID Velux pour faire la correspondance avec les idx Domoticz :

http://hostname:1880/velux/nodes (hostname = ip où est installé node-red)

Exemple de réponse :
[{"id":3,"name":"VoletVeluxDroit","order":3},{"id":2,"name":"VoletVeluxGauche","order":2},{"id":0,"name":"VeluxDroite","order":1},{"id":1,"name":"VeluxGauche","order":0}]

Si votre réponse est [] , vérifier la connexion au KLF-200 ou la version de contrib-velux qui doit être la 0.0.4. Relancer Node-red : sudo node-red-restart et en dernier, un reboot est peut être nécessaire après l'installation de node-red et .contrib-velux.

Si tout va bien :
- Editer la fonction "Update Position" et adapater le code avec vos idx des virtuals sensors créés dans Domoticz et les id de Velux (nodeID = id) , donc mon cas j'ai 4 équipements, donc 4 conversions.
- Ne pas utiliser "order" qui correspond à l'ordre d'affichage des produits Velux dans le KLF-200.
Function_updateposition.png
Function_updateposition.png (97.52 Kio) Consulté 37557 fois
- C'est un exemple que codage dans Node-red, qui peut être optimisé, je ne suis pas un spécialiste.

- Le statut Velux est envoyé, dès un changement de position et toutes les 15 mn pour les équipements branchés sur le 220V, toutes les heures si sur batterie à haut rendement et 1 fois par jour pour les batteries à faible rendement.

- Une fois la fonction adaptée à votre installation: Deployer à nouveau le flux

- Tester avec le bouton 'LectureVelux', une information remonte dans la console Debug et dans la log de Domoticz.
Exemple:

Code : Tout sélectionner

26/10/2020 à 18:12:15node: 209dd4dd.4e37acmsg.payload : Object
{ id: 0, api: 529, apiText: "GW_NODE_STATE_POSITION_CHANGED…", nodeID: 0, order: 1 … }
26/10/2020 à 18:12:15node: 209dd4dd.4e37acmsg.payload : Object
{ id: 0, api: 529, apiText: "GW_NODE_STATE_POSITION_CHANGED…", nodeID: 1, order: 0 … }
26/10/2020 à 18:12:15node: 209dd4dd.4e37acmsg.payload : Object
{ id: 0, api: 529, apiText: "GW_NODE_STATE_POSITION_CHANGED…", nodeID: 2, order: 2 … }
26/10/2020 à 18:12:15node: 209dd4dd.4e37acmsg.payload : Object
{ id: 0, api: 529, apiText: "GW_NODE_STATE_POSITION_CHANGED…", nodeID: 3, order: 3 … }
- Vérifer que Domoticz les traite correctement, qu'il n'y a pas d'erreur d'idx. :
Exemple:

Code : Tout sélectionner

2020-10-26 18:07:47.340 MQTT: Topic: domoticz/in, Message: {"command":"switchlight","switchcmd":"Set Level","level":100,"idx":4556}
2020-10-26 18:07:47.350 (Velux) Light/Switch (VeluxDroite)
2020-10-26 18:07:47.463 MQTT: Topic: domoticz/in, Message: {"command":"switchlight","switchcmd":"Set Level","level":100,"idx":4550}
2020-10-26 18:07:47.471 (Velux) Light/Switch (VeluxGauche)
2020-10-26 18:07:47.583 MQTT: Topic: domoticz/in, Message: {"command":"switchlight","switchcmd":"Set Level","level":100,"idx":4551}
2020-10-26 18:07:47.592 (Velux) Light/Switch (VoletVeluxGauche)
2020-10-26 18:07:47.704 MQTT: Topic: domoticz/in, Message: {"command":"switchlight","switchcmd":"Set Level","level":100,"idx":4552}
2020-10-26 18:07:47.714 (Velux) Light/Switch (VoletVeluxDroit)
Cette partie est terminée, vous pouvez utiliser votre télécommande Velux pour constater que le retour d'état remonte bien sur Domoticz.

2- Créer la chaine de commande:
C'est plus complex, mais simple à comprendre.
BougePosition.png
BougePosition.png (51.88 Kio) Consulté 37557 fois
Importer ce code dans le même flux (au popup, valider "import copy" puisque des nodes existent déjà):

Code : Tout sélectionner

[
    {
        "id": "4adc61a.8da8ca",
        "type": "mqtt in",
        "z": "6e3cbaf0.36e4e4",
        "name": "",
        "topic": "domoticz/out",
        "qos": "2",
        "datatype": "json",
        "broker": "26a40b17.e8e744",
        "x": 110,
        "y": 220,
        "wires": [
            [
                "7e99db6c.65c0a4"
            ]
        ]
    },
    {
        "id": "209dd4dd.4e37ac",
        "type": "debug",
        "z": "6e3cbaf0.36e4e4",
        "name": "",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "false",
        "statusVal": "",
        "statusType": "auto",
        "x": 1170,
        "y": 220,
        "wires": []
    },
    {
        "id": "11487e17.9aadfa",
        "type": "switch",
        "z": "6e3cbaf0.36e4e4",
        "name": "VeluxMsg",
        "property": "payload.name",
        "propertyType": "msg",
        "rules": [
            {
                "t": "eq",
                "v": "VeluxGauche",
                "vt": "str"
            },
            {
                "t": "eq",
                "v": "VeluxDroite",
                "vt": "str"
            },
            {
                "t": "eq",
                "v": "VoletVeluxGauche",
                "vt": "str"
            },
            {
                "t": "eq",
                "v": "VoletVeluxDroit",
                "vt": "str"
            }
        ],
        "checkall": "true",
        "repair": false,
        "outputs": 4,
        "x": 260,
        "y": 400,
        "wires": [
            [
                "14871380.3ebfbd"
            ],
            [
                "3a5904ed.26840c"
            ],
            [
                "a2ff102b.2de6c"
            ],
            [
                "91019c5a.a94348"
            ]
        ]
    },
    {
        "id": "14871380.3ebfbd",
        "type": "change",
        "z": "6e3cbaf0.36e4e4",
        "name": "SetVeluxGauchenodeID",
        "rules": [
            {
                "t": "set",
                "p": "payload.nodeID",
                "pt": "msg",
                "to": "1",
                "tot": "num"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 510,
        "y": 340,
        "wires": [
            [
                "acb78b54.7f69b"
            ]
        ]
    },
    {
        "id": "3a5904ed.26840c",
        "type": "change",
        "z": "6e3cbaf0.36e4e4",
        "name": "SetVeluxDroitenodeID",
        "rules": [
            {
                "t": "set",
                "p": "payload.nodeID",
                "pt": "msg",
                "to": "0",
                "tot": "num"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 500,
        "y": 380,
        "wires": [
            [
                "acb78b54.7f69b"
            ]
        ]
    },
    {
        "id": "7e99db6c.65c0a4",
        "type": "change",
        "z": "6e3cbaf0.36e4e4",
        "name": "SetPosition",
        "rules": [
            {
                "t": "set",
                "p": "payload.position",
                "pt": "msg",
                "to": "$number(payload.svalue1)",
                "tot": "jsonata"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 310,
        "y": 220,
        "wires": [
            [
                "11487e17.9aadfa"
            ]
        ]
    },
    {
        "id": "4ff6fe72.96ce78",
        "type": "Velux Api",
        "z": "6e3cbaf0.36e4e4",
        "name": "",
        "datasource": "e59f5b49.c02b58",
        "api": "768",
        "ntf": [
            "770",
            "771"
        ],
        "topic": "",
        "x": 1000,
        "y": 400,
        "wires": [
            [
                "209dd4dd.4e37ac"
            ]
        ]
    },
    {
        "id": "acb78b54.7f69b",
        "type": "function",
        "z": "6e3cbaf0.36e4e4",
        "name": "BougePosition",
        "func": "var dt = new Date();\n\nvar nodeID = msg.payload.nodeID\nvar position = msg.payload.position\nif (msg.payload.nvalue === 0) {\n    position = 0;\n} else if (msg.payload.nvalue === 1) {\n    position = 100;\n}\n\nvar cmd = { \n      commandOriginator: 1,\n      priorityLevel: 2,\n      parameterActive: 0,\n      functionalParameterMP: {valueType:'RELATIVE', value:position},\n      indexArrayCount: 1,\n      indexArray: [nodeID],\n      priorityLevelLock: false,\n      lockTime: 0\n  }\n\nmsg.payload = cmd;\n\n// msg.topic = \"velux:write\"\n// msg.payload.nvalue = nv;\n// msg.payload.svalue = sv;\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "x": 800,
        "y": 400,
        "wires": [
            [
                "4ff6fe72.96ce78"
            ]
        ]
    },
    {
        "id": "a2ff102b.2de6c",
        "type": "change",
        "z": "6e3cbaf0.36e4e4",
        "name": "SetVoletVeluxGauchenodeID",
        "rules": [
            {
                "t": "set",
                "p": "payload.nodeID",
                "pt": "msg",
                "to": "2",
                "tot": "num"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 520,
        "y": 420,
        "wires": [
            [
                "acb78b54.7f69b"
            ]
        ]
    },
    {
        "id": "91019c5a.a94348",
        "type": "change",
        "z": "6e3cbaf0.36e4e4",
        "name": "SetVoletVeluxDroitnodeID",
        "rules": [
            {
                "t": "set",
                "p": "payload.nodeID",
                "pt": "msg",
                "to": "3",
                "tot": "num"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 510,
        "y": 460,
        "wires": [
            [
                "acb78b54.7f69b"
            ]
        ]
    },
    {
        "id": "26a40b17.e8e744",
        "type": "mqtt-broker",
        "z": "",
        "name": "MQTTBroker",
        "broker": "localhost",
        "port": "1883",
        "clientid": "",
        "usetls": false,
        "compatmode": true,
        "keepalive": "60",
        "cleansession": true,
        "birthTopic": "",
        "birthQos": "0",
        "birthPayload": "",
        "closeTopic": "",
        "closeQos": "0",
        "closePayload": "",
        "willTopic": "",
        "willQos": "0",
        "willPayload": ""
    },
    {
        "id": "e59f5b49.c02b58",
        "type": "velux-connection",
        "z": "",
        "host": "192.168.xx.xx",
        "password": "YouWIFIPassword",
        "monitor": "MONITOR"
    }
]
- Configurer la connexion mqtt-broker dans le node domoticz/out, normalement la connexion existe déjà du précédent import.
- Idem pour l'API Velux qui utilise le même "velux-connection" , juste vérifier l'adresse ip et le mot de passe du velux-node (celui du WIFI !!! ).

- Editer "VeluxMSG" pour faire correspondre vos équipements, j'ai utilisé la variable "name", on peut utiliser la variable "idx", à vous d'adapter ce node.
- Editer chaque SetxxxxnodeID en fonction de votre installation.
- Deployer votre flux.
- Tester depuis Domoticz et les nouveaux "virtual sensors".
- Vérifier les logs Domoticz et la console Debug de Node-red. Console qui pourra être désactivé en cliquant sur le bouton vert à droite de msg.payload.

Et c'est tout !


ça devrait ressembler à ça :
Resultat_final.png
Resultat_final.png (71.21 Kio) Consulté 37557 fois
Remarque : Ma configuration est limitée à 2 Fenêtre de toit Velux Integra et 2 volets/stores extérieurs.

La fonction "BougePosition" devra être adaptée à vos équipements, voir renomée si vous utiliser des lampes, des intérupteurs, des portes de garage, et j'en passe.
Je vous invite à fouiller dans le code klf.js pour retrouver la bonne structure JSON du msg.payload qu'il faudra envoyer à l'API Velux.
https://github.com/PLCHome/velux-klf200-api
https://github.com/PLCHome/velux-klf200 ... lib/klf.js
Il s'agit du même contributeur que pour le node-red-contrib-velux (version 0.0.4) , donc la structure est la même, qu'on retrouve ici:
https://github.com/PLCHome/node-red-contrib-velux

Merci de m'avoir lu jusqu'au bout... ;)
Dernière modification par ProfBoc75 le 27 nov. 2022, 09:53, modifié 1 fois.
hestia
Messages : 397
Inscription : 12 sept. 2018, 22:36

Re: Domoticz , KLF-200 et Velux Integra io homecontrol

Message par hestia »

super tuto !
même si le besoin de tous ces composants me fait un peu peur, je vais peut-être me lancer pour cet été.
J'ai 3 velux dont 2 avec des volets.
Question: 1 seul KLF-200 est-il suffisant pour piloter chacunes des 5 parties de façon indépendante?
D'autre part, est-il possible d'avoir le retour du capteur de pluie?
pshadoko
Messages : 1
Inscription : 03 juin 2021, 20:45

Re: Domoticz , KLF-200 et Velux Integra io homecontrol

Message par pshadoko »

Bonjour,
merci pour ce très bon tuto.
C'est en vous lisant que j'ai franchi le pas et investi dans un KLF200... en me disant que c'était possible.
Effectivement ça l'est ;-)

Au début rien ne marchait et j'avais des messages avec ERRCONREFUSE.
Il m'a fallu comprendre qu'il y a un problème avec le KLF si on redémarre le raspberry PI.
La connexion ne fonctionne plus sans effectuer un cycle d'alimentation Eteint(10s)/Allumé du KLF.
Sur le forum Home Assistant il est spécifié :

"There is a problem with the KLF 200 gateway where the connection cannot be established after a restart of Home Assistant, only a manual power off and on fixes this. As a workaround, you can use an automation to force a restart of the KLF 200 before exiting Home Assistant, like this:"

automation:
alias: KLF reboot on hass stop event
description: Reboots the KLF200 in order to avoid SSL Handshake issue
trigger:
- platform: homeassistant
event: shutdown
action:
- service: velux.reboot_gateway

Cela peut aussi se produire sur une casse du réseau IP. J'ai cru comprendre que c'est le handshake TLS qui n'était pas renouvelé et que du coup la connexion était refusée.
Avez vous ce problème et l'avez vous solutionné, existe t'il un moyen d'envoyer le reboot au KLF via nodered + domoticz ?
Je lis dans la doc de l'API qu'il y a une commande GW_REBBOT_REQ. Avez vous une idée pour l’implémenter?

Je ne sais si vous aurez le temps de me répondre et je vous remercie pour ce partage.
ProfBoc75
Messages : 6
Inscription : 22 oct. 2020, 19:04

Re: Domoticz , KLF-200 et Velux Integra io homecontrol

Message par ProfBoc75 »

hestia a écrit : 19 janv. 2021, 00:01 super tuto !
même si le besoin de tous ces composants me fait un peu peur, je vais peut-être me lancer pour cet été.
J'ai 3 velux dont 2 avec des volets.
Question: 1 seul KLF-200 est-il suffisant pour piloter chacunes des 5 parties de façon indépendante?
D'autre part, est-il possible d'avoir le retour du capteur de pluie?
Désolé pour cette réponse tardive, l'info pluie est présente uniquement si on tente d'ouvrir un Vélux et qu'il pleut, c'est une information qu'il faut extraire dans la réponse à la commande. Perso, je n'ai pas mis en oeuvre. Info qui sera aussi présente lorsque les Vélux sont ouverts et que la fermeture se fait automatiquement en cas de pluie. Donc c'est une info qu'on ne peut pas demandée, juste recevoir quand elle est "vraie".

Le KLF200 permet de gérer 200 équipements via l'API et 5 groupes filaires dans la limite de 200 équipements.
pshadoko a écrit : 04 juin 2021, 17:34 Bonjour,
merci pour ce très bon tuto.
C'est en vous lisant que j'ai franchi le pas et investi dans un KLF200... en me disant que c'était possible.
Effectivement ça l'est ;-)

Au début rien ne marchait et j'avais des messages avec ERRCONREFUSE.
Il m'a fallu comprendre qu'il y a un problème avec le KLF si on redémarre le raspberry PI.
La connexion ne fonctionne plus sans effectuer un cycle d'alimentation Eteint(10s)/Allumé du KLF.
Sur le forum Home Assistant il est spécifié :

"There is a problem with the KLF 200 gateway where the connection cannot be established after a restart of Home Assistant, only a manual power off and on fixes this. As a workaround, you can use an automation to force a restart of the KLF 200 before exiting Home Assistant, like this:"

automation:
alias: KLF reboot on hass stop event
description: Reboots the KLF200 in order to avoid SSL Handshake issue
trigger:
- platform: homeassistant
event: shutdown
action:
- service: velux.reboot_gateway

Cela peut aussi se produire sur une casse du réseau IP. J'ai cru comprendre que c'est le handshake TLS qui n'était pas renouvelé et que du coup la connexion était refusée.
Avez vous ce problème et l'avez vous solutionné, existe t'il un moyen d'envoyer le reboot au KLF via nodered + domoticz ?
Je lis dans la doc de l'API qu'il y a une commande GW_REBBOT_REQ. Avez vous une idée pour l’implémenter?

Je ne sais si vous aurez le temps de me répondre et je vous remercie pour ce partage.
Je n'ai pas ce soucis de connexion depuis 2 ans, mon nodered marche H24, mon pi3 est sur batterie à l'abri des coupures électriques.
Dès lors que la connexion est corrompue, impossible donc de lui envoyer des ordres/commandes, je n'ai pas mis en oeuvre la commande GW_REBOOT_REQ mais elle existe bien dans le javascript klf.js. donc surement possible de l'intégrer dans un script ou NodeRed.
En relisant la doc, il faut simplement attendre 15 min, la connexion est réinitialisée.

4 Gateway interface
4.1 TCP/IP interface

The Ethernet module establishes a TCP/IP server listening at port 51200. Up to two
sockets can be established at the same time on wired ethernet.
TCP/IP socket will be closed after 15 min, with no communication.
Dernière modification par Keros le 27 nov. 2022, 13:41, modifié 1 fois.
Raison : Regrouppement des réponses
slt
Messages : 8
Inscription : 01 oct. 2021, 15:47

Re: Domoticz , KLF-200 et Velux Integra io homecontrol

Message par slt »

Bonjour et merci pour ce superbe tuto

Tout fonctionnait depuis plus d'un an sans problèmes majeurs.

Depuis ce matin les commandes sont inversées !!!
J'ai relancé domoticz, le kfl200 et les alimentations des velux (fonctionnement normal avec les télécommandes)

Je dois fermer pour ouvrir... et vice/versa ...

Le volet est ouvert.... et il apparait fermé.

State : Closed
Value : 0/0

Une idée?

A première vue les commande par script sont bonnes... si je met le volet à Level 100% il se ferme bien
mais au final apparait comme ouvert...

Il s'agit donc de la commande "inidividuelle" et de son état actuel qui n'est pas bon.
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: Domoticz , KLF-200 et Velux Integra io homecontrol

Message par Keros »

Tu n'aurais pas fait la mise çà jour de DomoticZ 2022.2 ?

Si oui, un peu de lecture
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
slt
Messages : 8
Inscription : 01 oct. 2021, 15:47

Re: Domoticz , KLF-200 et Velux Integra io homecontrol

Message par slt »

Possible c'est passé en automatique...

Là je suis même passé en beta pour tester :D

Merci pour le message, je vais regarder cela effectivement ça parle des volets...

.../...
https://easydomoticz.com/forum/viewtopi ... 29&t=12712
J'ai donc activé reverse open/close State et tout est rentré dans l'ordre.
ProfBoc75
Messages : 6
Inscription : 22 oct. 2020, 19:04

Re: Domoticz , KLF-200 et Velux Integra io homecontrol

Message par ProfBoc75 »

Bonjour,

Oui, j'avais fait une mise à jour dans mon tuto le 27 Novembre pour la bonne prise en compte du status Ouvert/Fermé avec la nouvelle version 2022.2 de Domoticz:

************************************************
Mise à jour du 27 Novembre 2022:

La toute dernière version de Domoticz 2022.2, impose une correction sur les équipements de type "blinds", ce qui est le cas pour les fenêtre Velux et les volets :
Reverse Open/Close State: Enabled
et permet d'avoir le bon status, Ouvert/Fermé.
************************************************
AchilleTalon
Messages : 112
Inscription : 26 sept. 2020, 13:47

Re: Domoticz , KLF-200 et Velux Integra io homecontrol

Message par AchilleTalon »

EDIT : tout fonctionne, voir fin du message

Bonjour,

merci pour ce tuto. J'ai (presque) réussi à le faire fonctionner avec un volet Somfy IO : la boucle domoticz -> KLF fonctionne bien : j'arrive à faire bouger le volet avec le device virtuel (youpi !), mais la boucle KLF-> domoticz m'embête.

J'ai l'impression d'avoir une boucle infinie ou très rapide, et j'ai plusieurs messages qui se répètent en boucle (quasiment tous les dixièmes de seconde avant de provoquer un timeout :
"GW_NODE_STATE_POSITION_CHANGED", "GW_COMMAND_SEND_CFM", "GW_COMMAND_RUN_STATUS_NTF", ...

C'est le noeud "Velux Nodes" qui semble n'en faire qu'à sa tête : la remontée se fait bien côté domoticz, mais le message de mise à jour du volet est envoyé en boucle et très rapidement.

J'ai peut-être raté quelque chose dans ma config (j'ai dû créer un program vide dans l'interface du KLF pour que le flow fonctionne).


Merci à tous pour votre aide

EDIT :

Cette boucle infinie m'a conduit à regarder du côté du matériel "MQTT Client Gateway with LAN interface", qui était bien configuré pour éviter les boucles.

En regardant les messages dans domoticz/in et domoticz/out, j'ai vu qu'il s'agissait bien d'une boucle infinie.

J'ai juste modifié la valeur "Prevent Loop" (qui était pourtant à True), False puis True, et ça s'est mis à marcher. Va savoir...

Donc tout va bien et tout fonctionne. Merci pour le tuto.
Domoticz 2025.1 sur Raspberry 5/Bookworm
+ 2 RFlink (std+RTS)
+ SonoffZigbee 3.0 (E)
+ KLF200
- Alexicz
- Shelly (1, 1L, 2.5, TRV, 1Plus, ...)
- thermomètres, capteurs
- SIM+EG25-G
- caméras Tapo
- ...
slt
Messages : 8
Inscription : 01 oct. 2021, 15:47

Re: Domoticz , KLF-200 et Velux Integra io homecontrol

Message par slt »

Bonjour, encore moi avec mon lot de soucis...

Tout fonctionne bien depuis des mois... là je me décide à déplacer mon RPI et à le changer de réseau... a priori rien de trop compliqué.

Avant : RPI + USB (RFX, Conbee) dans une pièce, le reste à part. Teleinfo sur un Docker Proxmox...
Maintenant : RPI + USB (RFX, Conbee, TeleInfo), Ponts (Hue, KLF), DECT à proximité.

Si je relance le RPI (ou juste domoticz)... les velux fonctionnent bien... pour un certain temps au moins 4 heures...

Puis par la suite ça ne fonctionne plus, j'ai bien le retour de position qui se met à jour si je les bouge manuellement.

Lorsque cela bug si je relance le KLF rien ne change.

http://IP du domotics:1880/velux/nodes
J'ai bien les informations avec les id...

Rien d'affiché dans les logs domoticz.

Mais dans Node-Red si je lance le debug j'ai des erreurs :
noeud: SetPosition
msg : string[66]
"Invalid JSONata expression: Unable to cast value to a number: "on""

noeud: SetPosition
msg : string[67]
"Invalid JSONata expression: Unable to cast value to a number: "Off""

noeud: SetPosition
msg : string[68]
"Invalid JSONata expression: Unable to cast value to a number: "Open""

noeud: SetPosition
msg : string[70]
"Invalid JSONata expression: Unable to cast value to a number: "Closed""
Restart Node-RED : = KO

Une idée du problème?

... Update du 13/11/2023

J'ai tout réinstallé avec au passage la contrib Velux en 0.0.7, Bullseye et les dernières versions des logiciels.
Cela fonctionne un temps puis ça bugg...

Hier j'ai viré la téléfinfo, retour sur le docker. Ce matin les volets fonctionnent encore ! .. mais pas ce soir, donc la vérité est ailleurs...

En regardant sur nodered, un debug sur le domoticz/out SetPosition j'ai toujours des messages de la teleinfo (plus d'une vingtaine par seconde, donc pareil qu'avec tout sur le même RPI) n'y at-il pas un moyen de filtrer? Je ne suis pas expert mais j'ai l'impression que le SetPosition reçois des informations qui ne le concerne pas et que cela pose problème...
Répondre