Contrôle de la lumière avec NodeMcu et Ubidots
Combien de fois vous est-il arrivé d'oublier d'allumer les lumières de votre maison ? Résolvez rapidement ce problème grâce à un système de détecteur de lumière automatique qui peut s'éteindre (et s'allumer) en fonction de la luminosité ambiante.
Ce système fonctionne avec un capteur de luminosité qui détecte l'intensité et la clarté de la lumière naturelle. Si le capteur détecte de la lumière du jour, il éteint la lumière principale et remonte les stores ; s'il détecte l'absence de lumière, il allume la lumière et abaisse les stores. De plus, grâce à Ubidots vous pouvez allumer ou éteindre une lumière supplémentaire à votre guise.
Il est très simple à fabriquer et, plus important encore, il permet d'économiser de l'énergie.
Aperçu
Cet article explique comment utiliser le NodeMCU avec Ubidots . Le NodeMCU est un IoT ) intégrant des interfaces GPIO, PWM, I2C, 1-Wire et un convertisseur analogique-numérique (ADC), le tout sur une seule carte. Il dispose également d'une connexion Wi-Fi. Son utilisation est simple et il suffit d'utiliser l' IDE Arduino pour le programmer.
Exigences
- NodeMcu version 1.0
- Protection de base Grove pour NodeMCU
- Relais Grove
- Capteur de lumière Grove
- LED blanche Grove
- Servomoteur
- Bibliothèque UbidotsESPMQTT
- Compte Ubidots
Installation
- Commencez par connecter le NodeMcu à sa carte d'extension, puis connectez les composants comme suit :
Le résultat final :
- Ouvrez l'IDE Arduino, cliquez sur Fichier → Préférences et saisissez l'URL ci-dessous 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
Ouvrez « Gestionnaire de cartes » depuis le menu Outils → Carte et installez la plateforme esp8266. N'oubliez pas de sélectionner votre carte NodeMCU 1.0 dans le menu après l'installation.
2. Téléchargez la Ubidots ESPMQTT si ce n'est pas déjà fait. Cliquez ensuite sur Croquis → Inclure une bibliothèque → Ajouter une bibliothèque .ZIP
3. Sélectionnez le fichier .ZIP d' Ubidots ESPMQTT , puis cliquez sur « Accepter » ou « Choisir » pour toutes les bibliothèques. Si vous ne parvenez pas à ajouter la bibliothèque, procédez manuellement : décompressez le fichier rar/zip téléchargé et copiez le dossier de la bibliothèque vers le chemin suivant : C:\Users\ ubidots \Documents\Arduino\
4. Fermez l'IDE Arduino et rouvrez-le.
Configuration Ubidots
- Ajoutez une nouvelle source de données appelée « manual » et une nouvelle variable appelée « extra_light » (comme indiqué ci-dessous).

2. Vérifiez que le nom de la source de données et de la variable correspond à leurs étiquettes d'API. Ceci est important car notre variable sera abonnée via l'étiquette d'API, ce qui permet la communication entre Ubidots et le NodeMCU. Une fois les étiquettes de la source de données et de la variable vérifiées, vous pouvez les modifier en un seul clic.

3. Créez l' interrupteur permettant d'allumer ou d'éteindre la lumière. Pour ce faire, accédez au Dashboard et, en haut à droite de la page, cliquez sur Ajouter un widget . Sélectionnez Contrôle → Interrupteur → Manuel (source de données) → Lumière (variable) → Terminer.
Programmer le NodeMCU ESP8266
Une fois que tout sera correctement connecté, nous ouvrirons l'IDE et écrirons le code suivant :
/**************************************** * Inclure les bibliothèques ****************************************/ #include "UbidotsESPMQTT.h" #include<Servo.h> /**************************************** * Définition des constantes ****************************************/ #define TOKEN "...." // Votre jeton Ubidots #define WIFINAME "...." // Votre SSID #define WIFIPASS "...." // Votre mot de passe Wi-Fi #define MQTTCLIENTNAME "..." // Nom de votre client MQTT ; il doit être unique, nous vous recommandons donc de choisir un nom ASCII aléatoire Servo myservo; int sensorPin = A0; int ledPin = D5; int relayPin = D3; int state; int lightState; 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("] "); for (int i=0;i <length;i++) { Serial.print((char)payload[i]); } Serial.println(); if ((char)payload[0]=='1'){ digitalWrite(relayPin, HIGH); } else if ((char)payload[0]=='0'){ digitalWrite(relayPin, LOW); } } /**************************************** * Main Functions ****************************************/ void setup() { // put your setup code here, to run once: Serial.begin(115200); client.wifiConnection(WIFINAME, WIFIPASS); client.begin(callback); myservo.attach(D8); pinMode(ledPin, OUTPUT); pinMode(relayPin, OUTPUT); client.ubidotsSubscribe("manual", "extra_light"); //Insérer la source de données et les étiquettes des variables } state = analogRead(sensorPin); lightState = digitalRead(ledPin); if (state <= 50) { digitalWrite(ledPin, HIGH); client.add("light", lightState); myservo.write(180); client.add("blind", 0);ubidotsPublish("Control"); Serial.println("Nuit - Lumière allumée, stores baissés."); } else { digitalWrite(ledPin, LOW); client.add("light", lightState); myservo.write(0); client.add("blind", 1);ubidotsPublish("Contrôle"); Serial.println("Jour - Lumière éteinte, stores relevés."); } client.add("luminosité", état); //Insérez vos étiquettes de variable et la valeur à envoyerubidotsPublish("Contrôle"); client.loop(); }
Résultats
Après avoir chargé votre code, rendez-vous sur Ubidots et actualisez la page. Vous verrez alors apparaître le nouveau contrôle .
Si vous souhaitez vérifier l'état des stores ou de l'éclairage, vous pouvez personnaliser votre dashboard . Si vous ne savez pas comment faire, consultez ce tutoriel .

Nous venons de vous montrer comment concevoir un système de contrôle d'éclairage basé sur l'Internet des objets, ce qui prouve que des choses apparemment complexes peuvent être réalisées très facilement avec les bons outils.
Il est temps de créer un dashboard pour contrôler et gérer votre éclairage. Pour en savoir plus sur Ubidots , consultez ces tutoriels vidéo et inscrivez-vous gratuitement dès aujourd'hui !