Contrôle de la température avec Ubidots MQTT et NodeMcu
Ce guide détaille comment réaliser un contrôle de température avec Ubidots et un simple NodeMCU pour envoyer des alertes par email ou SMS lorsque votre « variable » (dans ce cas, la température) devient trop chaude, trop froide ou atteint une certaine règle de conception.
Nous allons utiliser une version pré-câblée et étanche du capteur DS18B20 (capteur de température OneWire). C'est pratique lorsque vous devez mesurer quelque chose à distance ou dans des conditions humides. Le capteur de température OneWire a différentes versions ; l'un d'eux a une résistance intégrée et d'autres non, alors assurez-vous que la version que vous utilisez est correcte avant de commencer le projet. Pour le contrôle, nous allons utiliser un NodeMcu utilisant un pin numérique.
Exigences
- NodeMcu version 1.0
- Capteur de température DS18B20 OneWire
- Bibliothèque Ubidots ESPMQTT
- Bibliothèque OneWire
- Bibliothèque de température de Dallas
- Une résistance de 4,7 kΩ (au cas où votre DS18B20 n'en aurait pas)
- Câbles
Installation
- Tout d’abord, nous devons choisir une version. Si votre capteur a la résistance intégrée, connectez-le simplement au NodeMcu comme ceci :
DS18B20 | NoeudMCU |
---|---|
FIL NOIR | GND |
FIL ROUGE | Vin |
FIL JAUNE | D3 |
Sinon, vous devez alimenter la broche DATA via la résistance de 4,7 kΩ, et les broches Vin et GND doivent être connectées entre elles et à la terre.
- Accédez à l'IDE Arduino, cliquez sur Fichiers -> Préférences et entrez l'URL suivante dans le champ « URL supplémentaires du gestionnaire de cartes ». Vous pouvez ajouter plusieurs URL en les séparant par des virgules.
http://arduino.esp8266.com/stable/package_esp8266com_index.json
-
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).
-
Téléchargez la Ubidots ESPMQTT , la bibliothèque OneWire et la bibliothèque DallasTemperature à l'aide de ces hyperliens.
-
Maintenant, cliquez sur Sketch -> Include Library -> Add .ZIP Library .
-
Sélectionnez les fichiers .ZIP d' Ubidots ESPMQTT, OneWire et DallasTemperature puis « Accepter » ou « Choisir » pour toutes les bibliothèques. Si vous ne parvenez pas à ajouter les bibliothèques, essayez manuellement : décompressez le rar/zip téléchargé et copiez le dossier de la bibliothèque dans le chemin C:Users ubidots DocumentsArduinolibraries .
-
Fermez l'IDE Arduino et ouvrez-le à nouveau.
Code
Une fois que tout est correctement connecté, nous irons dans l’EDI et écrirons le code suivant :
/****************************************** * Inclure les bibliothèques ****** **********************************/ #include " Ubidots ESPMQTT.h" #include<OneWire.h> #inclure<DallasTemperature.h> /**************************************** * Définir les constantes ****** **********************************/ #define TOKEN "....." // Votre JETON Ubidots #define WIFINAME "....." //Votre SSID #define WIFIPASS "....." // Votre Wifi Pass #define MQTTCLIENTNAME "....." // Votre Nom de Client MQTT, il doit être unique nous vous recommandons donc de choisir un nom ASCCI aléatoire #define Pin D3 float temp ; OneWire notre fil (broche); Capteurs de température Dallas (&ourWire) ; Client Ubidots (TOKEN, MQTTCLIENTNAME); /****************************************** * Fonctions auxiliaires ****** **********************************/ rappel nul (sujet char*, charge utile octet*, longueur int non signée) { Serial.print("Message arrivé ["); Serial.print (sujet); Série.print("] "); pour (int je = 0; je <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 Publier("contrôle"); client.loop(); }
Résultats
Maintenant, ouvrez votre compte Ubidots Source . Vous verrez une nouvelle DataSource nommée « contrôle ». cliquez dessus.
Ici, vous verrez la valeur de la température :
Créer une alerte
Vous pouvez également créer un événement qui vous avertit lorsque la température est irrégulière. Allez dans Événements , cliquez sur Ajouter un événement et sélectionnez votre source de données et une variable .
Les événements peuvent vous avertir par e-mail, SMS, télégramme ou WebHook. Vous pouvez également définir une variable :
Lorsque votre événement est prêt, vous devriez voir ces fenêtres :
Dans cet exemple, si de température est >= 28 , Ubidots vous enverra un email comme précédemment configuré, à savoir :
C'est très simple ! Avec seulement quelques câbles, vous pouvez observer l'évolution de la température de votre maison, que vous soyez à l'intérieur ou à l'extérieur. Vous pouvez même déclencher des alertes par email/SMS en cas d'incendie.
Maintenant, essayez !
… pas encore Ubidots Pas de soucis, vous pouvez le faire ici en moins de 30 secondes.