Apres pas mal d’heures a appréhender Gladys + Node red + RFXcom
je tente un tuto afin de conserver une procédure et peut être aider certains ^^
De quoi avons nous besoin ?
- Des volets SOMFY RTS (le tuto marche aussi avec n’importe quel périphérique RTS)
- un RFXcom compatible RTS (RFX433XL ou RFX433E)
- une Install Gladys et Node red fonctionnels
- le logiciel officiel Rfxcom : RFXmngr dispo ici : http://www.rfxcom.com/WebRoot/StoreNL2/Shops/78165469/MediaGallery/Downloads/RFXmngr.zip
perso j’utilise le RFX433E:
Pour commencer nous allons lancer le programme RFXmngr afin d’associer un code aux volets a manipuler.
je n’ai trouvé aucune solution pour récupérer les codes existants, il faut donc ajouter une association pour chaque périphérique RTS, cela signifie associer arbitrairement un code choisi aux différents périphériques. Cela ne casse pas le lien existant avec une télécommande par exemple.
2 manières de faire :
- connecter le dongle sur un pc windows sur lequel tourne l’application RFXmngr, très simple
- se connecter a distance, moins simple mais plus pratique pour moi car mon serveur se trouve dans mes combles ^^
Voici la procédure afin de se connecter au dongle a distance, manipulation a effectuer sur votre machine Gladys (raspbery pi, docker) en mode console:
cd
curl -LO https://github.com/andrew-d/static-binaries/raw/master/binaries/linux/x86_64/socat
chmod +x socat
./socat file:/dev/serial/by-id/usb-RFXCOM_RFXtrx433_A1K5N6B-if00-port0,raw,echo=0 tcp4-l:3007
attention, votre RFXcom aura sans doute une adresse différente, vous pouvez la recuperer via la commande suivante :
ls /dev/serial/by-id/usb-RFXCOM_RFXtrx433_*
et modifier le chemin de votre RFXcom en fonction…
ensuite, lancer le progtramme RFXmngr
cliquer sur le bouton connect
choisissez :
- le port usb si le dongle est en local
- l’ip (ip gladys) et port(3007) si vous y accéder a distance
en cliquant sur OK, RFXmngr sera connecté au RFXcom
une fois connecté, cliquez sur l’onglet « RFY » puis il sera nécessaire de générer un ID unique dans « ID » et une unité de code unique dans « Unit Code » pour votre dispositif RTS ici on utilise l’ID « 1 01 00 » et l’unité de code « 1 »). (ne vous fiez pas a la copie d’écran uniquement la pour présenter l’interface )
Il ne reste qu’a appairer votre porte/volet avec le dongle en mettant votre porte/volet en mode apprentissage (consultez la doc de votre moteur) et cliquer dans la liste « command » sur la commande « PROGRAM » de l’application puis sur « transmit », voila votre moteur est associé a un code, il est désormais possible de le piloter!
Dans Gladys:
Pour commencer nous allons paramétrer un device MQTT dans Gladys :
Avec une fonctionalité « Etat du rideau/volet » configuré comme ceci:
Avec les valeurs mini -1 et maxi 1
la valeur -1 descend le volet
la valeur 0 stoppe le volet
la valeur 1 monte le volet
Le reste va se jouer dans node red:
tout d’abord, installer la palette « node-red-contrib-rfxcom » afin de disposer des nœuds nécessaires
Voici un export de mon flux portes de garages:
il suffit d’importer ce flux et d’indiquer dans la partie MQTT in vos paramètres serveur et topic gladys
et dans le nœud rfx-blinds-out le périphérique usb correspondant a votre dongle e l’adresse RFY donné via l’appli RFXmngr:
[
{
"id": "c58f505d143ae7e9",
"type": "tab",
"label": "Portes de garage",
"disabled": false,
"info": "",
"env": []
},
{
"id": "a9ae1a361b44c464",
"type": "mqtt in",
"z": "c58f505d143ae7e9",
"name": "Porte moto",
"topic": "gladys/device/mqtt:portegaragemoto2/feature/mqtt:porte-moto/state",
"qos": "2",
"datatype": "auto-detect",
"broker": "041d2917313dea6e",
"nl": false,
"rap": true,
"rh": 0,
"inputs": 0,
"x": 60,
"y": 120,
"wires": [
[
"cf1072ce938eb86b",
"ed1a6590de4a9312"
]
]
},
{
"id": "cf1072ce938eb86b",
"type": "switch",
"z": "c58f505d143ae7e9",
"name": "",
"property": "payload",
"propertyType": "msg",
"rules": [
{
"t": "eq",
"v": "-1",
"vt": "str"
},
{
"t": "eq",
"v": "0",
"vt": "str"
},
{
"t": "eq",
"v": "1",
"vt": "str"
}
],
"checkall": "false",
"repair": false,
"outputs": 3,
"x": 230,
"y": 260,
"wires": [
[
"f1c6dbe6146fde4e"
],
[
"f9cae6d5f71b1f74"
],
[
"1783b4006754428c"
]
]
},
{
"id": "ed1a6590de4a9312",
"type": "debug",
"z": "c58f505d143ae7e9",
"name": "gladys",
"active": false,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "payload",
"targetType": "msg",
"statusVal": "",
"statusType": "auto",
"x": 770,
"y": 120,
"wires": []
},
{
"id": "f1c6dbe6146fde4e",
"type": "change",
"z": "c58f505d143ae7e9",
"name": "fermer",
"rules": [
{
"t": "set",
"p": "payload",
"pt": "msg",
"to": "Down",
"tot": "str"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 430,
"y": 180,
"wires": [
[
"8de8b0dc91284d7b"
]
]
},
{
"id": "8de8b0dc91284d7b",
"type": "rfx-blinds-out",
"z": "c58f505d143ae7e9",
"name": "fermeture",
"port": "16459ba880d0837b",
"topicSource": "node",
"topic": "RFY/0x10100/1",
"x": 780,
"y": 180,
"wires": []
},
{
"id": "f9cae6d5f71b1f74",
"type": "change",
"z": "c58f505d143ae7e9",
"name": "stopper",
"rules": [
{
"t": "set",
"p": "payload",
"pt": "msg",
"to": "Stop",
"tot": "str"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 440,
"y": 260,
"wires": [
[
"3079920a261a7a4d"
]
]
},
{
"id": "3079920a261a7a4d",
"type": "rfx-blinds-out",
"z": "c58f505d143ae7e9",
"name": "stop",
"port": "16459ba880d0837b",
"topicSource": "node",
"topic": "RFY/0x10100/1",
"x": 770,
"y": 260,
"wires": []
},
{
"id": "1783b4006754428c",
"type": "change",
"z": "c58f505d143ae7e9",
"name": "ouvrir",
"rules": [
{
"t": "set",
"p": "payload",
"pt": "msg",
"to": "Up",
"tot": "str"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 430,
"y": 340,
"wires": [
[
"b67c7c98c5bcf352"
]
]
},
{
"id": "b67c7c98c5bcf352",
"type": "rfx-blinds-out",
"z": "c58f505d143ae7e9",
"name": "ouverture",
"port": "16459ba880d0837b",
"topicSource": "node",
"topic": "RFY/0x10100/1",
"x": 780,
"y": 340,
"wires": []
},
{
"id": "041d2917313dea6e",
"type": "mqtt-broker",
"name": "",
"broker": "mqtt://192.168.0.1",
"port": "1883",
"clientid": "",
"autoConnect": true,
"usetls": false,
"protocolVersion": "4",
"keepalive": "60",
"cleansession": true,
"birthTopic": "",
"birthQos": "0",
"birthPayload": "",
"birthMsg": {},
"closeTopic": "",
"closeQos": "0",
"closePayload": "",
"closeMsg": {},
"willTopic": "",
"willQos": "0",
"willPayload": "",
"willMsg": {},
"userProps": "",
"sessionExpiry": ""
},
{
"id": "16459ba880d0837b",
"type": "rfxtrx-port",
"port": "/dev/ttyUSB0",
"enableDebug": true,
"rfyVenetianMode": "EU"
}
]
En principe vous avez tout ce qu’il faut, n’hésitez pas a me faire un retour, toute modification sera la bienvenue pour rendre ce tuto le plus clair et facile possible
Z.