Tutoriel SONOFF : Un contrôleur de température ambiante Wi-Fi pour 10 $

Mateo Vélez
· 5 min de lecture
Envoyer par courriel

Dans notre précédent article de blog, nous avons appris à utiliser l'interrupteur intelligent SONOFF pour contrôler un relais Ubidots . Ici, nous allons apprendre à contrôler un climatiseur avec le SONOFF TH , une variante du modèle original équipée de capteurs de température et d'humidité. Grâce à ces mesures, nous utiliserons Ubidots pour allumer ou éteindre automatiquement votre climatiseur en fonction de la température ambiante.

Aperçu

Comparée aux $ disponibles sur le marché, la SONOFF constitue une excellente alternative pour la réalisation de projets domotiques et même IoT à plus grande échelle. De plus, elle repose sur la puce Wi-Fi ESP8266, très répandue, ce qui la rend compatible avec l'environnement Arduino et d'autres ressources telles que nos bibliothèques ESP chez Ubidots .

Le SONOFF est livré avec son propre firmware et son application mobile, mais nous pensons que son principal atout réside dans son format compact et son prix. C'est pourquoi nous avons décidé de le bidouiller un peu et d'exploiter tout son potentiel !

Exigences

Installation

  1. Démontez le dispositif SONOFF pour accéder au brochage TTL, nécessaire à la programmation du microcontrôleur ESP8266. Vous devrez souder quatre broches, illustrées ci-dessous.
  2. Connectez les broches UARTbee aux broches SONOFF en suivant ce brochage :

UARTbee SONOFF
VCC VCC
TX RX
RX TX
GND GND

Ouvrez l'IDE Arduino, cliquez sur Fichier -> Préférences et saisissez cette URL pour pouvoir accéder aux bibliothèques ESP8266 pour Arduino :

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

dans le « URL supplémentaires du gestionnaire de tableaux » . Ce champ accepte plusieurs URL, séparées par des virgules, au cas où vous en auriez déjà saisi d'autres.

3. Ouvrez le Gestionnaire de cartes depuis Outils > Carte et installez la plateforme ESP8266. Sélectionnez ensuite votre carte ESP8266 dans le menu Outils > Carte

4. Téléchargez la bibliothèque Ubidots ici .

5. Cliquez maintenant sur Sketch -> Inclure la bibliothèque -> Ajouter une bibliothèque .ZIP.

6. Sélectionnez le fichier .ZIP d' Ubidots , puis cliquez sur « Accepter » ou « Choisir » .

7. Fermez l'IDE Arduino et rouvrez-le.

Créer des événements Ubidots

Nous aurons besoin de deux événements Ubidots : un pour activer le relais et un autre pour le désactiver :

  1. Dans votre Ubidots , accédez à Événements puis cliquez sur « Ajouter un nouvel événement ».
  2. Sélectionnez la source de données SONOFF que vous venez de créer.
  3. Sélectionnez la variable Indice de chaleur
  4. Réglez la condition de déclenchement sur « supérieur à 25 » ou sur l'indice de chaleur souhaité (le SONOFF envoie les données en degrés Celsius)
  5. Sélectionnez le type de déclencheur « Définir une variable », puis sélectionnez à nouveau la source de données SONOFF, puis « Variable de relais »
  6. Définissez cette valeur sur « 1 » afin que l’événement attribue la valeur « 1 » à la variable Relay lorsque la condition est remplie.
  7. Répétez ces étapes pour créer un deuxième événement, mais cette fois-ci, définissez la condition sur « moins de 20 » et la valeur envoyée au relais sur « 0 ».

Programmation de votre SONOFF-TH

Voici le code qui active/désactive l'appareil SONOFF. Pour utiliser ce code, n'oubliez pas de modifier WIFISSID, PASSWORD et votre jeton Ubidots .

Pour téléverser le code dans le SONOFF, vous devrez le mettre en mode programmation :

  1. Connectez l'UARTbee au port USB du PC.
  2. Appuyez simultanément sur le bouton SONOFF et débranchez le câble USB.
  3. Tout en maintenant le bouton enfoncé, reconnectez le câble USB.
/**************************************** * Inclure les bibliothèques ****************************************/ #include "Ubidots.h" #include "DHT.h" /**************************************** * Définir les instances et les constantes ****************************************/ #define DHTPIN 14 // Broche numérique à laquelle nous sommes connectés #define DHTTYPE DHT11 // DHT 11 #define RELAY 12 #define LED 13 const char* UBIDOTS= "..."; // Indiquez ici votre jeton Ubidots const char* WIFI_SSID = "..."; // Indiquez ici votre SSID Wi-Fi const char* WIFI_PASS = "..."; // Indiquez ici votre mot de passe Wi-Fi char *macAddrs; DHT dht(DHTPIN, DHTTYPE); Ubidots ubidots(UBIDOTS_TOKEN, UBI_HTTP); /**************************************** * Fonctions auxiliaires ****************************************/ // Insérez ici vos fonctions auxiliaires /**************************************** * Fonctions principales ****************************************/ void setup() { Serial.begin(115200); dht.begin(); ubidots.wifiConnect(WIFI_SSID, WIFI_PASS); pinMode(RELAY, OUTPUT); pinMode(LED, OUTPUT); digitalWrite(LED, HIGH); ubidots.setDebug(true); // Décommentez cette ligne pour afficher les messages de débogage } void loop() { // Attendez quelques secondes entre les mesures. delay(2000); // La lecture de la température ou de l'humidité prend environ 250 millisecondes ! // Les relevés du capteur peuvent avoir jusqu'à 2 secondes de retard (capteur très lent). float h = dht.readHumidity(); // Lecture de la température en degrés Celsius (valeur par défaut). float t = dht.readTemperature(); // Vérification des échecs de lecture et sortie anticipée (pour réessayer). if (isnan(h) || isnan(t)) { Serial.println("Échec de la lecture du capteur DHT !"); return; } // Calcul de l'indice de chaleur en degrés Celsius (isFahreheit = false). float hic = dht.computeHeatIndex(t, h, false); ubidots("humidity", h); // À remplacer par vos noms de variables. ubidots("temperature", t); ubidots("heat", hic); bool bufferSent = false; bufferSent = ubidots(); // Envoi des données à l'étiquette du périphérique correspondant à son ID si (bufferSent) { // Effectuer une action si les valeurs ont été correctement envoyées Serial.println("Valeurs envoyées par le périphérique"); } ubidots(macAddrs); /* Récupérer la dernière valeur d'une variable sous forme de float via HTTP */ float setRelay = ubidots(macAddrs, "relay"); if (setRelay == 1.00) { digitalWrite(RELAY, HIGH); // Relais activé digitalWrite(LED, LOW); // LED allumée } if (setRelay == 0.00) { digitalWrite(RELAY, LOW); // Relais désactivé digitalWrite(LED, HIGH); // LED éteinte } delay(5000); }
  1. Une fois le code téléchargé, déconnectez l'UARTbee et le SONOFF, puis connectez le capteur DHT11.

Votre SONOFF est prêt à être branché sur une alimentation de 110-240 V et sur votre climatiseur.

En résumé, tout est mis ensemble

Nous avons testé ce projet avec un ventilateur « SAMURAI Eole Crystal ». Cet appareil nécessitait d'appuyer sur un bouton pour l'allumer après l'avoir branché sur une prise secteur ; nous avons donc soudé le bouton marche/arrêt pour qu'il soit toujours allumé

samouraï-haut.jpg
samuri-pcb.jpg
samurai-solded.jpg

Nous avons ensuite remonté l'appareil, l'avons branché sur le secteur et c'était terminé !

samurai-all-2.jpg

Allons plus loin…

Ubidots est un service cloud qui permet à des milliers d'ingénieurs du monde entier de développer IoT , aussi bien dans le secteur de l'éducation que dans le monde de l'entreprise. Pour découvrir comment Ubidots peut aider votre entreprise, consultez nos fonctionnalités ou laissez-nous un message.