Après une coupure de courant à la maison, mon précédent montage de domotique à connu… un petit soucis.
En oui, quand l’arduino qui pilotait les registres à décalage qui étaient en cascade (et suivi d’un ensemble de relais) a subi quelques bagots d’alimentation, il s’est produit un phénomène plutôt gênant que je m’explique encore mal dans les détails. Pour faire simple, la coupure à remis mes volets en mode apprentissage (procédure normale chez somfy) et s’est combinée à des activations intempestives des relais qui ont fait pedre l’ensemble des appairages aux volets (argh !!!). La piste, que je retiens, est liée à l’état indéfini des pins de l’arduino au moment du boot, suivi d’un effet de logique inversée sur les relais (+5v= relais « off » et 0v= relais « on »). Bref j’ai perdu beaucoup de temps à tout faire rentrer dans l’ordre, volet par volet.
Ce fut donc le coup de grâce de mes 27 relais (9 volets + 3 fonction par volets -> 9×3 >27 relais). L’idée maitresse était de trouver de quoi hacker une télécommande usine ou trouver un émetteur 433,42mhz (<- spécialité somfy puisque habituellement on trouve plutôt des émetteurs en 433,92mhz) afin de faire simuler par l’aduino: l’ID de chaque volet ainsi que son rolling code (simple incrément d’un nombre à chaque appui sur un la télécommande -> chiffre en mémoire à la fois sur le volet et sur le télécommande qui permet d’offrir une petite sécurité supplémentaire si l’ID de la télécommande venait à être copiée). Après de multiples et longues recherches sur le net, j’ai pu trouver un post sur le forum Arduino et qui offrait une bibliothèque ainsi que de quoi se débrouiller avec une télécommande d’origine (by pass du microcontroleur à bord et interfaçage direct d’un pin de arduino sur l’émetteur). Le graal était trouvé !!!!!!
Au passage, j’en ai profité pour changer le raspberry pi 1 qui servait à gerer l’IHM (python pygame et serveur apache/php) par un raspberry pi zero muni d’un petit hub micro-usb offrant un port ethernet 10/100.
Au final et comme les volets somfy RTS sont conçus pour accepter plusieurs télécommandes en parallèle, la domotique gère désormais un pool de 9 télécommandes virtuelles avec chacune une ID et un rolling code qui bouge (stockés dans l’EEPROM de l’arduino)
Toutefois, il ne m’est pas possible de me passer de relais physiques, ne serait-ce que pour piloter mon poêle à granulés. Mais chat échaudé… j’ai pu trouver un petit module I2C spécifique pour gérer un bloc standard de 8 relais…. donc fini les relais qui claquent sans raisons !!!
le code de cette nouvelle version est disponible sur github:
https://github.com/Chnalex/arduino/blob/master/nouvelle_domotiquev2.ino