Tutoriel SONOFF Dual : Contrôlez vos appareils électriques à distance via MQTT et Ubidots

Ce guide vous apprendra à contrôler deux appareils 110 V via Wi-Fi pour seulement $, grâce à SONOFF Dual d'Itead.
Comparée aux prises connectées Wi-Fi grand public disponibles sur le marché, la SONOFF est une excellente alternative pour réaliser des projets domotiques et même IoT à plus grande échelle. De plus, elle est basée sur la puce Wi-Fi ESP8266, très répandue, ce qui la rend compatible avec l'environnement Arduino et d'autres ressources comme nos bibliothèques ESP sur Ubidots.

Exigences

Configuration matérielle

Démontez le module SONOFF Dual pour accéder au brochage TTL, nécessaire à la programmation du microcontrôleur ESP8266. Le SONOFF est livré sans deux connecteurs ; il faudra donc les souder avant la programmation.

Après la soudure, connectez la carte à l'UartSBee en suivant ce tableau :

UartSBee SONOFF Dual
VCC VCC
TX RX
RX TX
GND GND

Brochage UartSBEE

Vous devrez également établir une connexion entre la broche GND du connecteur situé à gauche (celui qui contient les broches des boutons 1 et 0) et la broche EN_FW de l'ESP8266, comme indiqué ci-dessous :

Brochage SONOFF (face avant)

Brochage SONOFF (face arrière)

Configuration de l'IDE Arduino

  1. Dans l'IDE Arduino, cliquez sur Fichier -> Préférences et saisissez cette URL dans le URL supplémentaires du gestionnaire de cartes pour pouvoir accéder aux bibliothèques ESP8266 pour Arduino :
http://arduino.esp8266.com/stable/package_esp8266com_index.json

Ce champ accepte plusieurs URL. Séparez-les par des virgules si vous en avez déjà saisi d'autres.

  1. Ouvrez le Gestionnaire de cartes depuis le menu **Outils -> Carte** et installez la plateforme ESP8266.
  2. Après l'installation, allez dans le Outils > Carte et sélectionnez la carte : Module ESP8266 générique.
  3. Téléchargez la UbidotsESPMQTT sous forme de fichier ZIP sur notre compte GitHub.
  4. De retour dans votre IDE Arduino, cliquez sur Croquis -> Inclure une bibliothèque -> Ajouter une bibliothèque .ZIP.
  5. Sélectionnez le fichier .ZIP d' UbidotsESPMQTT, puis cliquez sur « Accepter » ou « Choisir ».
  6. Fermez l'IDE Arduino et rouvrez-le.

Programmation de votre SONOFF Dual

Cet exemple de code s'abonne à une variable Ubidots qui active ou désactive les deux relais simultanément.

Avant d'exécuter le code, connectez-vous à votre compte Ubidots , repérez l'onglet « Appareils » et créez un appareil nommé « SONOFF Dual » ainsi qu'une variable nommée « Relays ». Le résultat devrait ressembler à ceci :

Vérifiez que l'étiquette de l'API du périphérique est « sonoff-dual » et celle de l'API de variable est « relays ». Ce sont les identifiants uniques utilisés par le SONOFF pour savoir à quelle variable s'abonner auprès du courtier MQTT. Vous pouvez modifier ces étiquettes si nécessaire.

Vous êtes maintenant prêt à flasher votre appareil avec le code suivant :

/**************************************** * Inclure les bibliothèques ****************************************/ #include "UbidotsESPMQTT.h" /**************************************** * Définir les constantes ****************************************/ #define TOKEN "p4uuxxxxxxxxncTVfoVqxxxxxRQW" // Votre jeton Ubidots #define WIFINAME "UBIWIFI" // Votre SSID #define WIFIPASS "clave123456789ubi" // Votre mot de passe Wi-Fi #define MQTTCLIENTNAME "sonoff15345" // Le nom de votre client MQTT ; il doit être unique, nous vous recommandons donc de choisir un nom ASCII aléatoire. Ubidots client(TOKEN, MQTTCLIENTNAME); /**************************************** * Fonctions auxiliaires ****************************************/ void relays_on() { Serial.write(0xA0); Serial.write(0x04); Serial.write(0x03); Serial.write(0xA1); Serial.flush(); } void relays_off(){ Serial.write(0xA0); Serial.write(0x04); Serial.write(0x00); Serial.write(0xA1); Serial.flush(); } void callback(char* topic, byte* payload, unsigned int length) { Serial.print("Message reçu ["); Serial.print(topic); Serial.print("] "); for (int i=0;i <length;i++) { Serial.print((char)payload[i]); } if ((char)payload[0]=='1'){ relays_on(); } else{ relays_off(); } Serial.println(); } /**************************************** * Main Functions ****************************************/ void setup() { // put your setup code here, to run once: Serial.begin(19200); Serial.println("Connecting to WiFi..."); client.wifiConnection(WIFINAME, WIFIPASS); client.begin(callback); Serial.println("Connected!"); pinMode(16, OUTPUT); client.ubidotspour le périphérique et la variable Serial.println("Abonné !"); } void loop() { // Insérez votre code principal ici, pour une exécution répétée : if(!client.connected()){ client.reconnect();ubidotsSubscribe("sonoff-dual","relays"); // Insérez les libellés de la source de données et de la variable } client.loop(); }

Vous pouvez réaliser des actions plus complexes en modifiant les commandes internes du SONOFF Dual. Voici un guide rapide trouvé sur leurs forums:

Numéro de série : 19230,8,N,1 Octets à envoyer à l’unité : 0xA0 0x04 0xxx 0xA1 où 0xxx semble correspondre à : 0x00 relais désactivés, 0x01 relais 1 activé, 0x02 relais 2 activé, 0x03 relais activés

Après avoir flashé vos appareils, ouvrez le moniteur série de l'IDE Arduino ; vous devriez voir quelque chose comme ceci, ce qui signifie que la connexion Wi-Fi et l'abonnement MQTT ont réussi :

Résultats

Maintenant, rendez-vous dans l'onglet «Dashboards» et ajoutez un nouveau widget de type « Contrôle » → « Interrupteur » :

Cet interrupteur envoie un « 1 » ou un « 0 » à la variable « Relays », qui est ensuite lue par la fonction de rappel du SONOFF pour activer ou désactiver les relais. Vous pouvez désormais contrôler votre SONOFF Dual à distance depuis votre dashboard!

Il est temps de créer vos propres applications et dashboards pour contrôler et gérer vos environnements. Pour en savoir plus sur Ubidots , consultez ces tutoriels vidéo et inscrivez-vous gratuitement dès aujourd'hui !