Introduction: Comment Connecter Votre Télécommande SOMFY À Alexa Avec Un ESP8266 Pour Contrôler Vos Volets À La Voix ?

Voici un petit tuto inspiré de celui-ci pour connecter votre télécommande SOMFY à Alexa et contrôler vos volets à la voix pour moins de dix euros.

Vous pourrez ainsi seulement ouvrir vos volets et fermer vos volets (pas de stop avec le bouton MY).

Pour ce faire il vous faut :

une télécommande Somfy qui contrôle l'ensemble de vos volets (fonctionne aussi avec les télécommandes qui contrôlent un seul volet)

• un PC ou un Mac avec le logiciel Arduino (gratuit)

un ESP8266

un echo dot 3 ou autre (mais récent, mon programme ne fonctionne pas avec les dot 2 par exemple)

Step 1: Installation Arduino - Partie 1

Pour commencer téléchargez et installez l'IDE d'Arduino (gratuit), il vous faudra aussi télécharger et installer les bibliothèques suivantes :

Pour installer les bibliothèques (Libraries en anglais) dans Arduino, allez dans :

  1. Croquis
  2. Inclure une bibliothèque
  3. Ajouter une bibliothèque.ZIP...
  4. Sélectionnez le fichier zip de ESPAsyncTCP.zip
  5. Répéter la manip pour ESPAsyncUDP.zip

Step 2: Installation Arduino - Partie 2

Pour installer la dernière bibliothèques FauxMoESP, ça ce passe directement dans Arduino, voici la marche à suivre :

  1. Croquis
  2. Inclure une bibliothèque
  3. Gérer les bibliothèques
  4. Faire un rechercher FauxMoESP
  5. Installer la dernière version en cours

Step 3: Installation Aduino - Partie 3

Pour finaliser l'installation allez dans Préférences et collez ce lien directement dans "URL de gestionnaire de cartes supplémentaires" :

"http://arduino.esp8266.com/stable/package_esp8266com_index.json"

Validez sur OK.

Enfin pour finir allez dans :

  1. Outils
  2. Type de carte:
  3. Gestionnaire de carte
  4. Recherchez ESP8266 et installez la
  5. Retournez dans Outils / Type de carte:
  6. Sélectionnez NodeMCU 1.0 (ESP-12E Module)

Ok on a fini d'installer Arduino et ses bibliothèques ! Un peu long mais pas très compliqué.

Step 4: Hardware Partie 1 - L'ESP8266

Les choses sérieuses commencent !

Pour la suite il vous faut un ESP8266, pour ma part j'ai acheté celui-ci sur Amazon à 7€. Il correspond parfaitement à la description et est de très bonne qualité. Sa puce Wifi va nous permettre de la connecter à notre BOX internet et ainsi à Alexa !

  • Installez le driver disponible ici et connectez l'ESP8266 au port USB de votre ordinateur.
  • Après le redémarrage de votre ordinateur, allez sur Arduino
  • Dans Outils / Port / et sélectionnez le ESP8266

Ok on débranche le port USB et on passe à la suite.

Step 5: Hardware Partie 2 - La Télécommande Somfy

Sans elle rien ne fonctionne, alors faites attention aux soudures car l'achat d'une nouvelle vous coûtera plus de 100€ (!!).

Ok vous êtes prévenus, on continue. Dévissez la vis au dos, retirez la pile bouton, puis retirez la vis en forme d'étoile avec un trou au milieu pour enlever la carte mère et commencer les soudures.

Step 6: Les Soudures

Suivez le schémas de soudure suivant :

  • Le bouton du haut sur D1
  • Le bouton du bas sur D3
  • La masse (le - de la pile) (rond jaune à gauche du bouton du bas) sur G
  • Le + (le positif de la pile) sur 3V

Voilà, c'est tout pour les soudures. Libre à vous de souder sur D0, D2, D4 ou autre, mais il faudra changer le code du programme si vous le faites.

Step 7: Le Programme

Revenons à Arduino, donc après avoir réalisé les soudures, installé le driver de l'ESP8266, branchez celui-ci à votre ordinateur et lancé Arduino, créez un nouveau document et collez le code ci-dessous :

    #include <Arduino.h>
    #include <ESP8266WiFi.h>
    #include "fauxmoESP.h"
    #include <ESPAsyncTCP.h>
     
    #define WIFI_SSID "***"
    #define WIFI_PASS "***"
    #define SERIAL_BAUDRATE 115200
     
    fauxmoESP fauxmo;
    #define D1 5
    #define D3 0 
    
    // -----------------------------------------------------------------------------
    // Wifi
    // -----------------------------------------------------------------------------
     
    void wifiSetup() {
     
        // Set WIFI module to STA mode
        WiFi.mode(WIFI_STA);
     
        // Connect
        Serial.printf("[WIFI] Connecting to %s ", WIFI_SSID);
        WiFi.begin(WIFI_SSID, WIFI_PASS);
     
        // Wait
        while (WiFi.status() != WL_CONNECTED) {
            Serial.print(".");
            delay(100);
        }
        Serial.println();
     
        // Connected!
        Serial.printf("[WIFI] STATION Mode, SSID: %s, IP address: %s\n", WiFi.SSID().c_str(), WiFi.localIP().toString().c_str());
    }

    
    void setup() {
      Serial.begin(SERIAL_BAUDRATE);
      pinMode(D1, OUTPUT);
      pinMode(D3, OUTPUT);   
      digitalWrite(D1, HIGH);
      digitalWrite(D3, HIGH);     
      // Init serial port and clean garbage
      Serial.println("FauxMo demo sketch");
      Serial.println("After connection, ask Alexa/Echo to 'turn <devicename> on' or 'off'");
     
      // Wifi
      wifiSetup();
     
      // Fauxmo
      fauxmo.addDevice("volets");
      // Gen3 Devices or above
      fauxmo.setPort(80);
     
      // Allow the FauxMo to be discovered
      fauxmo.enable(true);
      
       fauxmo.onSetState([](unsigned char device_id, const char * device_name, bool state, unsigned char value) {
        Serial.print("Device: ");Serial.print(device_name);
        Serial.print(" state");
        if(state) {
          Serial.println("on");
          digitalWrite(D1, HIGH);
          digitalWrite(D3, LOW);
          delay(1000);
          digitalWrite(D1, HIGH);  
          Serial.println("Ouvert");
          delay(5000);
          Serial.println("Resetting ESP");
          ESP.restart(); //-- ou ESP.reset();
        }
        else {
          Serial.println("off");
          digitalWrite(D3, HIGH);
          digitalWrite(D1, LOW);
          delay(1000);
          digitalWrite(D3, HIGH);  
          Serial.println("Fermé");
          delay(5000);
          Serial.println("Resetting ESP");
          ESP.restart(); //-- ou ESP.reset();          
        }
     
      });
     
    }
     
    void loop() {
      fauxmo.handle(); 
    }

N'oubliez pas de remplacer les *** dans :

#define WIFI_SSID "***" par le nom de votre wifi, ne fonctionne que en 2,4Ghz

#define WIFI_PASS "***" par votre mot de passe


Ensuite il ne vous reste plus qu'à envoyer le programme sur votre ESP8266 en cliquant sur téléverser .

Normalement si vous avez bien tout suivi à la lettre, ça devrait fonctionner. Cliquez sur le Moniteur série (petite loupe en haut à droite) pour voir si vous être bien connecté au WIFI.

Step 8: Alexa, Enfin !

Le plus compliqué est dernière nous, maintenant passons aux choses amusantes !

Lancez votre application Alexa et faites une recherche de nouvel appareil (+) en sélectionnant Autre. Au bout de 45 secondes le nouvel objet Volets apparait !

Configurez une Routine avec celui-ci tel que quand vous dites "Alexa, ouvre les volets" il passe sur "on" et lorsque vous dites "Alexa, ferme les volets" il passe sur "off".

Il ne vous reste plus qu'à tester si tout fonctionne bien grâce au moniteur de Arduino dans un premier temps.

Voilà, libre à vous de modifier le code pour l'améliorer si vous avez des connaissances plus poussées que moi en programmation et pourquoi pas faire fonctionner le bouton MY.

J'espère que ce tuto vous servira, n'hésitez pas à poser vos questions en commentaire.