Contrôle de la température avec Ubidots MQTT et NodeMcu

Maria Hernández
· 4 min de lecture
Envoyer par email

onewire_nodeMcu.jpg

Ce guide explique en détail comment créer un système de contrôle de température avec Ubidots et un simple NodeMCU pour envoyer des alertes par e-mail ou SMS lorsque votre « variable » (dans ce cas, la température) devient trop chaude, trop froide ou atteint une certaine limite de conception.

Nous allons utiliser une version pré-câblée et étanche du capteur DS18B20 (capteur de température OneWire). Il est pratique pour les mesures à distance ou en milieu humide. Le capteur de température OneWire existe en différentes versions ; certaines intègrent une résistance, d'autres non. Assurez-vous donc d'utiliser la version adéquate avant de commencer le projet. Pour le contrôle, nous utiliserons un NodeMCU connecté à une broche numérique.

Exigences

Installation

  1. Il faut d'abord choisir une version. Si votre capteur intègre une résistance, connectez-le simplement au NodeMcu comme ceci :
DS18B20 NodeMCU
FIL NOIR GND
FIL ROUGE Vin
FIL JAUNE D3

Sinon, vous devez alimenter la broche DATA via une résistance de 4,7 kΩ, et les broches Vin et GND doivent être connectées entre elles et à la masse.

IMG_20161214_145917.jpg

  1. Ouvrez l'IDE Arduino, cliquez sur Fichier -> Préférences , puis saisissez l'URL suivante dans le champ « URL supplémentaires du gestionnaire de cartes ». Vous pouvez ajouter plusieurs URL, séparées par des virgules.

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

  1. Ouvrez « Boards Manager » depuis le menu Outils -> Carte et installez la plateforme esp8266 (et n'oubliez pas de sélectionner votre carte NodeMCU 1.0 dans le menu Outils > Carte après l'installation).

  2. Téléchargez les Ubidots ESPMQTT , OneWire et DallasTemperature en utilisant ces liens hypertextes.

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

  4. Sélectionnez les fichiers .ZIP d' Ubidots ESPMQTT, OneWire et DallasTemperature, puis cliquez sur « Accepter » ou « Choisir » pour toutes les bibliothèques. Si vous ne parvenez pas à ajouter les bibliothèques, essayez manuellement : décompressez le fichier rar/zip téléchargé et copiez le dossier de la bibliothèque vers le chemin C:\Users\ ubidots \Documents\Arduino\libraries .

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

Code

Une fois que tout sera correctement connecté, nous ouvrirons l'IDE et écrirons le code suivant :

/**************************************** * Inclure les bibliothèques ****************************************/ #include "UbidotsESPMQTT.h" #include<OneWire.h> #inclure<DallasTemperature.h> /**************************************** * Définition des constantes ****************************************/ #define TOKEN "....." // Votre jeton Ubidots #define WIFINAME "....." // Votre SSID #define WIFIPASS "....." // Votre mot de passe Wi-Fi #define MQTTCLIENTNAME "....." // Le nom de votre client MQTT. Il doit être unique ; nous vous recommandons donc de choisir un nom ASCII aléatoire. #define Pin D3 float temp; OneWire ourWire(Pin); DallasTemperature sensors(&ourWire); Ubidots client(TOKEN, MQTTCLIENTNAME); /**************************************** * Fonctions auxiliaires ****************************************/ void callback(char* topic, byte* payload, unsigned int length) { Serial.print("Message reçu ["); Serial.print(topic); Serial.print("] "); pour (int i=0;i <length;i++) { Serial.print((char)payload[i]); } Serial.println(); } /**************************************** * Main Functions ****************************************/ void setup() { // put your setup code here, to run once: Serial.begin(115200); client.wifiConnection(WIFINAME, WIFIPASS); sensors.begin(); client.begin(callback); } void loop() { // put your main code here, to run repeatedly: if(!client.connected()){ client.reconnect(); } sensors.requestTemperatures(); //Prepare the sensor for reading temp = sensors.getTempCByIndex(0); Serial.print(sensors.getTempCByIndex(0)); //Read and print the temperature in Celsius client.add("temperature", temp); //Insert your variable Labels and the value to be sent delay(1000); Serial.println("Grados Centigrados"); client.<a i=3> ubidots Publish("control"); client.loop(); }

Résultats

Ouvrez votre Ubidots et accédez à la section Source . Vous y trouverez une nouvelle source de données nommée « control ». Cliquez dessus.

Temp_control_DSNodeMcu.jpg

Vous verrez ici la valeur de la température :

Temp_control_NodeMcu.jpg

Création d'une alerte

Vous pouvez également créer un événement qui vous avertit en cas d'anomalie de température. Accédez à Événements , cliquez sur Ajouter un événement et sélectionnez votre source de données et une variable .

Les événements peuvent vous notifier par e-mail, SMS, Telegram ou WebHook. Vous pouvez également définir une variable :

Temp_control_EventNodeMcu.jpg

Lorsque votre événement sera prêt, vous devriez voir ces fenêtres :

Temp_control_EventNodeMcu2.jpg

Dans cet exemple, si la température est supérieure ou égale à 28 , Ubidots vous enverra un e-mail comme configuré précédemment, comme suit :

TempControl_Event.jpg

C'est très simple ! Avec quelques câbles seulement, vous pouvez surveiller la température de votre maison, que vous soyez à l'intérieur ou à l'extérieur. Vous pouvez même recevoir des alertes par e-mail ou SMS en cas d'incendie.

À vous d'essayer !

Vous n'êtes pas encore inscrit sur Ubidots ? Pas de souci, vous pouvez le faire ici en moins de 30 secondes.