[Tuto][homebridge][RFXtrx433XL] contrôle de volets roulants Somfy RTS

totoguile

Membre actif
Club iGen
29 Avril 2010
344
63
Puteaux
Bonjour,

Suite à l'excellent article de Nicolas https://clubigen.fr/igen/article/114979 , je me suis lancé dans la domotique.
Premier tuto : piloter ses volets roulants Somfy RTS (433MHz) avec un Raspberry Pi + un module de chez RFXcom.

Matériel:

La première blague dans cette configuration, c'est qu'il faut appairer ses volets avec le module radio, et seule l'application Windows est disponible pour cela (il y a une autre solution mais j'en parlerai à la fin).
En effet, la configuration n'est pas dynamique, ou via un fichier de conf, mais enregistrée en dur dans le module RFXtrx433XL. Il faut donc faire l'appairage une première fois avec l'appli RFXmngr.exe sous Windows, puis connecter ensuite l'appareil sur le Raspberry.

Le meilleur tuto pour l'appairage des volets se trouve ici : https://blog.domadoo.fr/guides/appairer-volet-roulant-somfy-rfxcom-rfxtrx433e/
- il faut envoyer la commande "Program" avec un ID différent par volet

dans mon cas, j'ai 5 volets associés avec entre parenthèses les pièces correspondantes

ID
C B9 01 (Chambre principale)
C B9 02 (Salon)
C B9 03 (Cuisine)
C B9 04 (Chambre filles)
C B9 05 (Chambre garçon)

Une fois l'appairage et l'attribution des ID par volet effectuée, on passe au Raspberry.

- via SSH (ssh pi@<ip address> , password "raspberry" par défaut), on se connecte au Raspberry.

- il faut créer le fichier /etc/udev/rules.d/99-usb-serial.rules avec ceci dedans :
Bloc de code:
SUBSYSTEM=="tty", SUBSYSTEMS=="usb", ENV{ID_MODEL}=="RFXtrx433XL", SYMLINK+="ttyUSBRFX"

C'est pour créer un alias ttyUSBRFX fixe quelque soit le nombre de modules que vous connectez au raspberry. En effet, l'attribution des TTYusb peut tourner, et on peut se retrouver avec un RFXtrx433xl disponible sur le ttyusb0 à un moment, puis après un reboot ou déconnexion / reconnexion sur le ttyusb1. Bref, on "fige" le ttyUSBRFX au module.
Pour la prise ne compte, un reboot est la solution la plus simple.

Ensuite, on passe à la configuration homebridge.
dans la page plugin, faites une recherche sur rfx et installez le plugin Homebridge-rfx-shutter.

1591104605174.png
Ensuite, dans la partie config, il faut ajouter vos volets à la main : attenton aux virgules en fin de lignes, sauf pour les lignes finales de bloc.

Voici ma configuration :

Bloc de code:
 "accessories": [
        {
            "accessory": "HomebridgeRfxShutter",
            "tty": "/dev/ttyUSBRFX",
            "name": "Volet Chambre Parents",
            "deviceId": "0xCB901/1",
            "openSeconds": 20,
            "closeSeconds": 20
        },
        {
            "accessory": "HomebridgeRfxShutter",
            "tty": "/dev/ttyUSBRFX",
            "name": "Volet Salon",
            "deviceId": "0xCB902/1",
            "openSeconds": 20,
            "closeSeconds": 20
        },
        {
            "accessory": "HomebridgeRfxShutter",
            "tty": "/dev/ttyUSBRFX",
            "name": "Volet Cuisine",
            "deviceId": "0xCB903/1",
            "openSeconds": 20,
            "closeSeconds": 20
        },
        {
            "accessory": "HomebridgeRfxShutter",
            "tty": "/dev/ttyUSBRFX",
            "name": "Volet Chambre Girls",
            "deviceId": "0xCB904/1",
            "openSeconds": 20,
            "closeSeconds": 20
        },
        {
            "accessory": "HomebridgeRfxShutter",
            "tty": "/dev/ttyUSBRFX",
            "name": "Volet Chambre Boy",
            "deviceId": "0xCB905/1",
            "openSeconds": 20,
            "closeSeconds": 20
        }
    ],

Les openSeconds et closeSeconds sont à 20 par défaut, mais honnêtement ca ne sert à rien.
Ce qu'il faut avoir c'est que de toute façon, le protocole RTS est sans retour d'état, donc en gros vous pourrez juste envoyer des commandes pour ouvrir ou fermer complètement les volets.

Une fois cette configuration saisie, enregistrez là et redémarrez homebridge.
Si tout va bien, vous verrez dans les logs ceci:
Bloc de code:
[6/2/2020, 15:36:08] [Volet Chambre Boy] Found device 0x0CB901/1
[6/2/2020, 15:36:08] [Volet Chambre Boy] Found device 0x0CBç02/1
[6/2/2020, 15:36:08] [Volet Chambre Boy] Found device 0x0CB903/1
[6/2/2020, 15:36:08] [Volet Chambre Boy] Found device 0x0CB904/1
[6/2/2020, 15:36:08] [Volet Chambre Boy] Found device 0x0CB905/1

Si vous ne voyez pas ces lignes, ... redémarrez encore homebridge !
Car oui, le plugin n'est pas fiable et le reinit est très ch...t !

Maintenant, il faut 'initialiser' une première fois les volets en cliquant 1 fois sur chaque icône dans la page accessoire
1591105173823.png
Voilà, vos volets sont dispo maintenant dans l'app Maison et vous pouvez jouer avec !

Pour revenir au début de l'article, il existe une plateforme domotique qui permet de faire la programmation de ses volets sans passer par windows, c'est Jeedom.
Je n'ai pas essayé , mais vu la stabilité du module homebridge-rfx-shutter, je ne pense pas rester sur une image homebridge simple.
 
  • J’aime
Réactions: Nathan.28
Bonjour,

Avez-vous une idée de la portée du signal en 433Mhz ? Équivalent à une télécommande somfy ou supérieur ?
 
Globalement ce plugin a un défaut par rapport à l'architecture logicielle : il fonctionne très bien si vous n'avez qu'un seul volet, mais si vous en avez plusieurs, comme il est déclaré en accessory et non pas en platform, il initialise le RFXtrx433XL à chaque accessoire, et rempli le buffer.
Il y a un autre plugin homebridge-rfxcom qui n'est malheureusement plus maintenu et qui ne peut plus s'installer (enfin il faut bcp de travail pour le refaire fonctionner). Celui-ci est très stable... mais il ne configure pas les volets en "volets" mais en interrupteur et genère donc 3 interrupteurs par volet (up/down/stop).

J'hesite à me lancer dans le "merge" de ces 2 plugin pour en créer un qui soit correct ... ou migrer de plateforme et passer à openHab par exemple.
 
Globalement ce plugin a un défaut par rapport à l'architecture logicielle : il fonctionne très bien si vous n'avez qu'un seul volet, mais si vous en avez plusieurs, comme il est déclaré en accessory et non pas en platform, il initialise le RFXtrx433XL à chaque accessoire, et rempli le buffer.
Il y a un autre plugin homebridge-rfxcom qui n'est malheureusement plus maintenu et qui ne peut plus s'installer (enfin il faut bcp de travail pour le refaire fonctionner). Celui-ci est très stable... mais il ne configure pas les volets en "volets" mais en interrupteur et genère donc 3 interrupteurs par volet (up/down/stop).

J'hesite à me lancer dans le "merge" de ces 2 plugin pour en créer un qui soit correct ... ou migrer de plateforme et passer à openHab par exemple.

Si il initialise le RFXtrx433XL il est impossible d'ouvrir ou de fermer simultanément tout les volet ?
 
non le problème est plus sournois: au redémarrage du process homebridge, les plugins sont initialisés et il arrive très fréquemment que le plugin RFX soit mal initialisé : dans ce cas, homebridge ne genère pas d'erreur, mais il est impossible de piloter ses volets.
 
  • J’aime
Réactions: Nathan.28
Hier, j'ai pu tester très rapidement home-automation.io et openHAB:
  • les 2 gèrent les volets
  • openHAB me semblait plus propre mais assez complexe à paramétrer
  • la gestion par contre de l'OS laisse à désirer sérieusement, les packet .deb sont hébergés sur un site non signé !
  • home-automation a une configuration assez clean
  • par contre pas possible de programmer le RFXtrx433XL depuis l'interface (il faut passer par windows et le rfxmgnr.exe) là aussi
  • j'ai des commandes qui sont "inversés" pour certains volets sur Home automation...

je vais creuser un peu plus la piste openHAB je pense, pour avoir une installation clean, à jour et supportant à la fois le RFXtrx433XL mais aussi mon raspbee 2 (zigbee hub).
 
  • J’aime
Réactions: Nathan.28
Finalement, vu que le protocole RTS est monodirectionnel, je pense que l'approche "bouton" est plus approprié.
De plus, ca permet de binder un bouton logique à un bouton physique.
Du coup, j'ai forké homebridge-rfxcom pour mettre à jour les dépendances afin de pouvoir le compiler et permettre l'usage à chacun.

1591891948430.png
 
  • J’aime
Réactions: Nathan.28
Voici la conf correspondante avec le plugin Rfxcom2

Bloc de code:
       {
            "platform": "RFXCom",
            "name": "RFXCom",
            "rfyRemotes": [
                {
                    "name": "volet parents",
                    "deviceID": "0x0CB901/1",
                    "openCloseSeconds": 18
                },
                {
                    "name": "volet Sejour",
                    "deviceID": "0x0CB902/1",
                    "openCloseSeconds": 18
                },
                {
                    "name": "volet cuisine",
                    "deviceID": "0x0CB903/1",
                    "openCloseSeconds": 18
                },
                {
                    "name": "volet Girls",
                    "deviceID": "0x0CB904/1",
                    "openCloseSeconds": 18
                },
                {
                    "name": "volet Boy",
                    "deviceID": "0x0CB905/1",
                    "openCloseSeconds": 18
                }
            ]
        }

Cela va créer 3 boutons par volet comme ceci :

1591957452046.png

Ensuite, il est possible d'attacher ces boutons à des boutons physique: par exemple, avec la télécommande Philips Hue à 4 boutons, on peut remplacer l'interrupteur et la télécommande de la pièce par ce dernier en appliquant un conf du type :

Bloc de code:
bouton 1 appui court -> Volet Stop
bouton 1 appui long -> Volet Up
bouton 2 appui court -> lumière ON
bouton 3 appui court -> lumière OFF
bouton 4 appui court -> Volet Stop
bouton 4 appui long -> Volet Down

1591957578526.png
 
  • J’aime
Réactions: Nathan.28
 
  • J’aime
Réactions: Nathan.28
J'essaie d'ajouter un script "program" et "erase" pour pouvoir se passer de l'appli windows pour la configuration du RFXtrx433XL mais c'est un echec (et je ne sais pas programmer en node js donc c'est des copy/paste ...)
 
  • J’aime
Réactions: Nathan.28
Hello @totoguile trop cool d'avoir repris le plugin rfxcom qui était abandonné !

De mon côté je suis en grosse galère depuis des mois, j'ai tout tenté en vain.

J'ai à ma dispo :
  • 2 volets A-OK AC114 (sur le logiciel windows c'est Blinds1 puis T3)
  • 2 volets ASP (sur Windows c'est Blinds1 puis T11)

J'ai essayé tous les plugins homebridge en vain, j'ai l'impression que la plus part des plugins ne gèrent que les Somfy (télécommandes Rfy dans le logiciel).

J'ai aussi utilisé Jeedom, le plugin est très bien fait et fonctionne avec mes volets A-OK mais pas les ASP. Il détecte les ASP mais ne trouve pas la sous catégorie T11 et donc ça plante.

De ton côté, tu sais si ton plugin rfxcom gère les autres types de commandes que les Somfy ? Est ce qu'il gère tous les types de commande pris en charge par le vfxcom manager ?

Merci pour ta réponse, j'espère trouver une solution haha. À ta dispo pour des tests si besoin
 
Merci pour ta réponse @totoguile :) Aller sur open hab et remettre HomeKit par derrière etc semble complexe...

Tu as essayé ce plugin : https://github.com/DaGolle/homebridge-rfxtrx ?

On dirait qu'il gère tous les types de volets mais il y a une erreur dans le code et le plugin n'est plus tenu à jour. L'erreur a l'air simple, voilà ce que j'ai :

TypeError: rfxcom[type] is not a constructor
at RFXtrxPlatform.getTransmitter (/usr/local/lib/node_modules/homebridge-rfxtrx/lib/RFXtrxPlatform.js:89:10)
at new WindowCovering (/usr/local/lib/node_modules/homebridge-rfxtrx/lib/WindowCovering.js:11:36)
at RFXtrxPlatform.<anonymous> (/usr/local/lib/node_modules/homebridge-rfxtrx/lib/RFXtrxPlatform.js:19:63)
at Array.forEach (<anonymous>)
at new RFXtrxPlatform (/usr/local/lib/node_modules/homebridge-rfxtrx/lib/RFXtrxPlatform.js:18:31)
at /usr/local/lib/node_modules/homebridge/src/server.ts:397:40
at Array.forEach (<anonymous>)
at Server.loadPlatforms (/usr/local/lib/node_modules/homebridge/src/server.ts:374:27)
at Server.start (/usr/local/lib/node_modules/homebridge/src/server.ts:153:29)
at cli (/usr/local/lib/node_modules/homebridge/src/cli.ts:80:10)


Qu'en penses tu ? :)