[TUTO] Programmatio...
 
Share:
Notifications
Clear all

[TUTO] Programmation d'ESP sous ESPHome

Ikes72000
(@ikes72000)
Membre

Programmation d'ESP sous ESPHome


Avant-propos

Bonjour les nextdomiens, nextdomiennes. Aujourd'hui, je vais vous emmener à la découverte d'un outil fantastique pour programmer nos ESP adorés, ESPHome.

J'ai découvert cet outil il y a peu et l'ai testé de façon assez poussée avec tout un tas de capteurs, afficheurs OLED et led type WS2812. J'ai trouvé ça juste génial tellement la mise en œuvre est simple et je viens donc vous faire partager mon expérience.


Présentation ESPHome

Site: https://esphome.io/

A la base, ESPHome est un add-on de la solution domotique Homme Assistant, mais celui-ci utilisant le protocole de communication mqtt, il est parfaitement envisageable de l'utiliser avec Nextdom ou Jeedom, en utilisant l'un des 2 plugins de gestion du protocole mqtt (MQTT, jMQTT).

Le principe d'ESPHome? Une interface web (très) dépouillée mais terriblement efficace, un fichier de configuration au format yaml dans lequel on va renseigner des paramètres en fonction des capteurs ou actionneurs que l'on souhaite couplé à notre ESP et c'est tout...

Un wizard vous permet de créer un projet de manière très simple et en quelques clics, et ce qui aura pour effet de pré-renseigner le fichier de configuration. Depuis l'interface web, vous pourrez aussi éditer vos fichiers de configuration, les valider et les envoyer vers les ESP, soit en USB, soit par OTA. L'interface permet aussi de vérifier quels ESP sont en ligne et de lire les logs des ESP.

ESPHome supporte une très longue liste de capteurs, d'actionneurs, et bien d'autres choses encore. Le site est très bien documenté d'ailleurs.

Allez, c'est parti pour une petite présentation de l'interface.

Comme vous pouvez le constater, l'interface est très simple. En haut à droite, nous trouvons la sélection de l'interface de connexion à l'ESP (OTA ou USB), et un menu permettant diverses actions.

A droite, un bouton + permet la création d'un nouveau projet et de lancer le wizard.

Au centre, apparaissent les projets, avec différentes informations et commandes:

  • nom du projet,
  • lien vers le serveur web de l'esp si celui-ci est configuré,
  • état de l'esp (en / hors ligne),
  • emplacement de sauvegarde du projet,
  • les commandes pour charger le programme dans l'esp, éditer le fichier de configuration, visualiser les logs de l'ESP et valider le fichier de configuration.
  • sur la droite, un menu permettant d'effacer les topics mqtt liés au projet, nettoyer la compilation, compiler le code ou effacer le projet.

Création d'un projet

Passons à la création d'un nouveau projet à l'aide du wizard, en renseignant tout d'abord le nom du noeud.

Sélectionner ensuite le type de carte dans la liste déroulante.

Renseigner ensuite les paramètres (SSID et mot de passe) de votre point d'accès wifi.

Voilà, c'est terminé...

Passons à l'édition du code. Le fichier de configuration comprend certains paramètres renseignés automatiquement à la création du projet au travers du wizard.

Par défaut, l'ESP embarque un portail captif et l'OTA est activée. Ceux-ci sont paramétrés par défaut mais il est possible de les customiser aux travers de variables.

Par contre, soyez très rigoureux sur la syntaxe du yaml, au risque d'avoir sinon des erreurs et l'impossibilité de compiler votre fichier.

Ne fonctionnant pas sous Home Assistant, vous pouvez commenter ou supprimer la ligne:

# Enable Home Assistant API
# api:

Il faudra ensuite configurer votre broker mqtt, là encore paramétrable au travers de différentes variables.

mqtt:
broker: 192.168.1.71

Passons maintenant à l'ajout des différents bus nécessaires, comme l'i2c ou le dallas.

i2c:
sda: D2
scl: D1
scan: True
id: bus_a

dallas:
- pin: D4

L'affectation des pins comporte certaines restrictions, de même que la syntaxe de nommage, en fonction du type de carte liée au projet. Tout est détaillé dans la documentation et vérifié à la compilation.

Ajoutons maintenant quelques capteurs.

sensor:
- platform: wifi_signal
name: "WiFi Signal Sensor"
update_interval: 60s

- platform: sht3xd
temperature:
name: "Living Room Temperature"
id: temperature
humidity:
name: "Living Room Humidity"
id: humidity
address: 0x45
update_interval: 60s

- platform: dallas
address: 0x6B021480F6CBFF28
name: "Temperature"
id: temperature2

- platform: uptime
name: Uptime Sensor

- platform: bh1750
name: "BH1750 Illuminance"
resolution: 0.5
address: 0x23
update_interval: 60s
id: luminosite

J'ai ajouté ici les capteurs suivants:

  • puissance du signal wifi,
  • sonde sht31 de mesure de température et d'humidité,
  • sonde ds18b20 de mesure de température,
  • l'uptime de l'esp,
  • sonde bh1750 de mesure de la luminosité.

Pour chaque capteur, il faut paramétrer différentes variables, qui peuvent varier en fonctions du type de capteurs:

  • plateform: type de capteur (cf documentation),
  • name: le nom du capteur qui sera remonté au travers du réseau mqtt
  • id: id du capteur, utile pour utiliser le capteur dans de l'automation ou remonter ses valeurs sur un afficheur connecté à l'ESP,
  • address: adresse du capteur sur le bus I2C ou dallas, par exemple,
  • resolution: résolution du capteur dans le cas où le capteur le supporte,
  • update_interval: intervalle de temps pour la mise à jour des valeurs des capteurs sur le réseau mqtt.

Maintenant, il n'y a plus qu'à sauvegarder votre fichier et l'uploader dans l'ESP.

Une fois le code chargé dans l'ESP, vous pourrez visualiser les logs

Vous pourrez aussi vous connecter au web serveur embarqué de l'ESP si vous avez configuré cette option.

Voilà pour les bases d'ESPHome. Il y a bien d'autres fonctionnalités, comme la possibilité de gérer des écrans Nextion, des modules Sonoff ou de faire de l'automatisation directement dans l'ESP (scénarios sous Nextdom). Je rajouterai également un petit complément à ce tuto pour la gestion d'écrans oled, qui est super bien faite, notamment au niveau de la gestion des polices de caractères, et sur la partie automation, que je n'ai pour l'instant pas testée.

This topic was modified Il y a 1 année 16 times by Ikes72000
Quote
Topic starter Posté : 18/01/2020 10:20
Topic Tags
Ikes72000
(@ikes72000)
Membre

Réservé

RépondreQuote
Topic starter Posté : 18/01/2020 11:22
Ikes72000
(@ikes72000)
Membre

Réservé

RépondreQuote
Topic starter Posté : 18/01/2020 11:22
Share:
fr_FRFrançais
fr_FRFrançais