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 Ubidots ESPMQTT 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' Ubidots ESPMQTT, 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 !