Table des matières
Volet roulant Legrand - Wemos
Objectif
Commander ses volets roulants Legrand avec Blynk et le Wemos.
Voir aussi Volet roulant Legrand - Blitwolf
Problématique
Les volets roulants du séjour sont commandés par des interrupteurs Legrand (ref 67261).
Legrand propose une commande de centralisation sans fil (ref 67262) pour commander plusieurs interrupteurs en même temps.
J'ai cherché un peu sur le web pour intégrer la commande des volets à une solution domotique qui me trotte dans la tête mais je n'ai pas trouvé grand chose sur ces interrupteurs.
Pour faire de la domotique DIY il vaut mieux se tourner vers des devices Chinois qu'on trouve partout la plupart du temps commandés sur des porteuses à 433MHz.
Dans ces conditions et avec une solution RFLink on a toutes les chances d'avoir une solution clef en main.
Mais moi je suis bien triste avec mon Legrand qui m'a coûté une fortune et maintenant que la maison est équipée je ne me vois pas revenir en arrière !
Donc je prend ma pelle et je creuse :
En démontant le machin on retrouve une circuiterie toute bête :
- une pile de 3v3
- un mircocontroleurs (PIC16F636)
- une puce TI CC1150 controlée en SPI et son antenne plaquée accordée pour du 868,3 MHz (On trouve plein de truc low cost en 433MHz ou 2,4GHz mais un peu moins en 868MHz)
Solutions
Bon alors là on se retrouve face à 2 solutions :
Solution 1 : Celle que j'affectionne particulièrement serait de comprendre comment ça fonctionne et de faire la même chose.
Donc je me jette sur la doc du CC1150 : “belle bête”!!
Pour comprendre le protocole de Mr Legrand il faudrait écouter le bus SPI entre le microntrôleur et l'émetteur CC1150.
Mon oscilloscope le fait .. mais là il a piscine .. et moi aussi … donc on passe au point 2 .
Plus sérieusement ça se fait mais il faut avoir un peu de temps devant soit : exemple avec le Bus Pirate Adafruit.
Je garde cela de coté par curiosité quand je voudrai tester le décodage SPI avec ou sans l’oscillo (après la piscine).
Solution 2 : Le wemos va jouer le rôle tout bête de “doigt” sur le bouton.
Bon ok c'est moche mais c'est pragmatique, quand on ne sait pas trop ou l'on va et que l'on veut tester une solution c'est encore le mieux à faire.
En regardant le circuit de prêt : les boutons de commande positionnent les pins du PIC à la masse, ils avaient prévu un condensateur en parallèle mais il n'a pas été soudé. Leur filtre anti-rebond logiciel fait l'affaire (voir Switch Shield)
J'ai envisagé d'utiliser des sorties de l'ESP8266 en haute impédance et de les mettre au niveau bas au moment voulu (Pas de composants d'interface à prévoir).
Problème : on ne maîtrise pas l'état des pins au démarrage. D'après la doc de l'esp les pins sont positionnées à l'état bas au moment du boot ou du reset.
Pour jouer le rôle du “doigt” le mieux est de mettre un transistor fet en parallèle du bouton actuel. On passera la pin au niveau haut pour commander le bouton.
Comme j'avais commandé des MOSFETs et que je les ai sous la main j'en profite pour utiliser un N-Channel : voir Transistors - Interface de Sortie.
Réalisation
Je prend mon fer, je soude 2 mosfets sur des petites plaque d'adaptation SOT23/DIP, je positionne la grille à la masse (pull down) avec une résistance CMS de 27K qui traîne.
Je tire des câbles sur la plaque de l'interrupteur Legrand : 2 boutons, l'alim + et -.
Je branche le tout sur le 3.3V et les sorties D0 et D1 du Wemos :
Code Arduino
Pour le code je ne m'embête pas trop non plus (ben voyons), je me base sur l'excellente interface Blynk pour créer 2 boutons virtuels et les utiliser en mode “interruption” dans le code du wemos.
L'interface :
Code complet : GitHub
Démonstration avec des Leds témoins, le bruit des volets en fond .. et des enfants :
(Blynk est réactif malgré une connexion Wifi/Adsl pour le Wemos et GSM pour le smartphone)