[NODE-RED] RFXcom et volets roulants somfy RTS

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 ?

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
rfxmngr

cliquer sur le bouton connect
image
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 :wink: )
image

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:
image

[
    {
        "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 :wink:

Z.

4 « J'aime »

Super tuto ! Pense à mettre les bouts de JSON/code avec des balises de code sur le forum sinon c’est pas très lisible :slight_smile:

Merci pour l’info j’ai cherché et j’avais pas trouvé ^^ c’est modifié

1 « J'aime »