Le node MCU est une petite carte électronique disposant d’une puce wifi ainsi que du fameux ESP8266. Voyez cela comme un module électronique aux capacités de programmation d’un Arduino et pilotable depuis la box domotique Jeedom.
Comment programmer un Node MCU ?
Pour mener à bien vos projets domotiques DIY basés sur un module Node MCU, il vous faudra vous doter d’un IDE de programmation. Je le disais plus haut, le node MCU est une sorte d’Arduino. C’est pourquoi, si les possibilités de programmation sont nombreuses pour ce module, je vous conseille d’utiliser l’IDE Arduino qui est compatible avec le node MCU.
1. Rendez-vous alors sur le site Arduino pour télécharger l’IDE. Compatible aussi bien sous Mac OS que sous windows, il y en a pour tout le monde.
2. Lancez l’IDE une fois installé. Il est alors nécessaire de faire une petite configuration pour permettre la programmation du node MCU. Pour cela, rendez-vous dans Arduino puis préférence.
3. Une fois dans les préférences ajoutez l’URL ci-dessous dans le champ URL de gestionnaire de cartes supplémentaires.
http://arduino.esp8266.com/stable/package_esp8266com_index.json
4. Maintenant que nous avons ajouté la source, allons installer la bonne version de la gestion pour l’ESP8266. Allez dans Outils/Type de carte/Gestionnaire de carte.
5. Recherchez esp8266 et lancez l’installation.
6. Maintenant que c’est fait, il faut sélectionner le type de carte NodeMCU dans la liste
7. Enfin, il ne reste plus qu’à indiquer les bons paramètres de communication pour programmer la carte comme indiqué ci-dessous.
L’environnement de programmation est prêt, vous allez à présent pouvoir configurer votre NodeMCU comme si c’était un Arduino.
Pour communiquer avec la domotique notre node MCU aura besoin de se connecter au wifi de la maison forcément, mais aussi à un serveur MQTT. Nous avons évoqué MQTT dans un précédent article, ce protocole très léger se prête particulièrement bien à l’utilisation d’une telle carte dans un projet connecté. Je vous invite alors à consulter notre article sur le sujet pour mieux comprendre MQTT et au passage mettre en oeuvre un broker sur votre réseau local.
Comment installer MQTT sur Raspberry Pi avec Mosquitto
MQTT est un protocole hyper léger et donc tout aussi rapide qui révolutionne le monde des objets connectés. On entend de plus en plus parler de MQTT ici et là. Pourtant le protocole n’est pas nouveau. Créé en 1999 par…
Je ne suis pas un expert en Arduino, je découvre les bibliothèques au fil de mes besoins, voici toutefois un script qui fonctionne sur un nodeMCU associé à un moteur pas à pas et un support imprimé en 3D qui me permet de gérer un rideau Ikea manuel de façon automatique et piloté par Jeedom.
#include <ESP8266WiFi.h> #include <PubSubClient.h> #include <Stepper.h> // Update these part with your network informations const char* ssid = "MyWifiSSID"; const char* password = "MyWifiPassword"; const char* mqtt_server = "192.168.1.114"; const int stepsPerRevolution = 200; // initialize the stepper library on D1,D2,D5,D6 Stepper myStepper(stepsPerRevolution, D1, D2, D5, D6); WiFiClient espClient; PubSubClient client(espClient); void setup_wifi() { delay(100); // Connecting to a WiFi network Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } randomSeed(micros()); //Print network informations Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); } void callback(char* topic, byte* payload, unsigned int length) { Serial.print("Command from MQTT broker is : ["); Serial.print(topic); int p =(char)payload[0]-'0'; // Action for 1 value if(p==1) { for (int i=0; i <= 20; i++) { myStepper.step(stepsPerRevolution); Serial.print(i); delay(25); } } // Action for 2 value else if(p==2) { for (int i=0; i <= 20; i++) { myStepper.step(-stepsPerRevolution); Serial.print(i); delay(25); } } Serial.println(); } void reconnect() { // Loop until we're reconnected while (!client.connected()) { Serial.print("Attempting MQTT connection..."); // Create a random client ID String clientId = "ESP8266Client-"; clientId += String(random(0xffff), HEX); // Attempt to connect MQTT broker if (client.connect(clientId.c_str())) { Serial.println("connected"); //once connected to MQTT broker, subscribe to topic client.subscribe("Roller"); } else { Serial.print("failed, rc="); Serial.print(client.state()); Serial.println(" try again in 5 seconds"); // Wait 6 seconds before retrying delay(6000); } } } //end reconnect() void setup() { Serial.begin(115200); setup_wifi(); client.setServer(mqtt_server, 1883); client.setCallback(callback); // set the motor speed at 80 rpm: myStepper.setSpeed(80); } void loop() { if (!client.connected()) { reconnect(); } client.loop(); }
Si vous aussi vous avez des projets compilés sous IDE Arduino à destination de la maison connectée, n’hésitez pas à nous en parler dans les commentaires. Cette petite carte est juste top pour une multitude de projets.
Du côté de Jeedom
Du coté de Jeedom, j’ajoute le plugin gratuit MQTT.
Je crée un nouveau device qui va publier dans le même topic MQTT que mon script Arduino. Le script quant à lui se connecte sur ce topic et lit chaque valeur qui est postée pour s’actionner en conséquence.
Par exemple pour le cas de mon rideau, si je publie un 1 depuis mon actionneur Jeedom, le rideau se ferme. Et si je publie un 2 depuis mon actionneur, le rideau monte.
Le principe de mon script doit pouvoir s’adapter à plusieurs situations. Il vous faut simplement déterminer et indiquer l’action à réaliser dans le script dans les deux boucles en fonction de chiffre envoyé.
Conclusion
Le node MCU est vraiment très peu coûteux et hyper performant. Des projets connectés autour de cette petite carte wifi sont possibles assez simplement, il ne manque plus qu’à s’y mettre. Nous avons un exemple concret ici, mais de très nombreuses possibilités s’ouvrent à nous avec la notion de MQTT. N’hésitez pas à nous proposer des usages voire même vos scripts et schémas de câblage.
Add Comment