VOUS ÊTES ICI: Accueil » Blog » Domotique » Node MCU et MQTT : Connecter les objets DIY à la domotique Jeedom
Domotique

Node MCU et MQTT : Connecter les objets DIY à la domotique Jeedom

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.

arduino-configuration-preference

3 Une fois dans les préférences ajoutez l’URL ci-dessous dans le champ URL de gestionnaire de cartes supplémentaires.

preference-arduino-esp8266-sources

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.

board-configuration-arduino

5 Recherchez esp8266 et lancez l’installation.

esp8266-arduino-board

6 Maintenant que c’est fait, il faut sélectionner le type de carte NodeMCU dans la liste

selection-carte-arduino

7 Enfin, il ne reste plus qu’à indiquer les bons paramètres de communication pour programmer la carte comme indiqué ci-dessous.

configuration-arduino-carte-esp8266

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.

Lire
Comment créer un serveur MQTT sur le Raspberry Pi avec Mosquitto

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.

mqtt-jeedom-device

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.

mqtt-jeedom-piblication

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.

AZDelivery 3 x NodeMCU Lua Lolin V3 Module ESP8266 ESP-12F Carte de développement Wi-FI avec CH340...
1 013 Commentaires
AZDelivery 3 x NodeMCU Lua Lolin V3 Module ESP8266 ESP-12F Carte de développement Wi-FI avec CH340...
  • ✔️ Obtenez maintenant trois modules AZDelivery NodeMCU Lua Lolin V3 ESP8266 ESP-12F à un...

Dernière mise à jour du tarif le  2020-10-25 at 21:25

Restez connecté aux nouveautés domotiques, inscrivez-vous à notre newsletter

A propos de cet auteur

Aurélien Brunet

Aurélien Brunet

Chef de projet informatique, anciennement informaticien spécialisé dans l'IT industrielle, le réseau et les bases de données. Un peu geek à mes heures perdues, je me suis mis à la domotique en 2012 pour sécuriser mon domicile.
Depuis, je test, j’installe, je code, j’améliore mon installation et surtout, je partage avec vous mon expertise via ce blog pour améliorer votre quotidien dans la maison connectée !

Choix box domotique
promos domotique
promos domotique