Programmation des microcontrôleurs ESP8266 / ESP32 en écrivant des fichiers de configuration YAML

En tant que fan du système de contrôle de la maison intelligente Home Assistant , j'ai récemment découvert un outil intéressant qui est étroitement intégré à HA et qui était auparavant éteint sur Habré - ESP Home (anciennement ESPhomeYAML).


ESP Home est un ensemble de bibliothèques et d'outils qui génèrent un firmware pour les microcontrôleurs ESP8266 et ESP32 à partir d'un fichier de configuration créé par l'utilisateur au format YAML. Cela simplifie considérablement l'écriture de micrologiciels de petit et moyen niveau, en particulier pour ceux qui ne sont pas bons en programmation pour Arduino et réduit considérablement le nombre de lignes de code / configuration pour ceux qui sont forts.


Pour faciliter la configuration, une mise à jour du firmware en direct est prise en charge.


ESP Home prend en charge les appareils basés sur ESP8266 et ESP32, qui sont très populaires parmi les ventilateurs domotiques et autres ventilateurs faits maison, ainsi que plusieurs dizaines de capteurs et divers périphériques - écrans, cartes réseau, etc. Pour échanger des données avec l'appareil programmé, MQTT, UART, I2C, SPI et API sont intégrés, intégrés avec Home Assistant.


Vous trouverez ci-dessous un court exemple d'installation d'ESP Home et de configuration simple de l'appareil sur l'exemple du commutateur Sonoff T1 , qui est un ESP8266 avec un relais, un bouton et une LED contrôlée. L'exemple aura des étapes d'installation pour Python pur et Docker en même temps.


L'installation


Python 2.7 (en raison des dépendances de Platformio )


pip2 install esphome 

Docker à partir de l'image finie


 docker pull esphome/esphome 

Création d'un fichier de configuration


ESP Home comprend un assistant qui vous aide à créer le fichier de configuration initial.
Les mêmes étapes peuvent être effectuées dans l'interface ESP Home WEB, qui est décrite à la fin de l'article.


Vous devez d'abord spécifier:


  • Le nom de l'appareil (appelons-le switch)
  • ESP8266 (dans l'exemple) ou ESP32
  • Type de planche (nous avons esp01_1m)
  • Points d'accès WiFi nommés
  • Mot de passe WiFi
  • Mot de passe de l'API Home Assistant, il sera également utilisé par défaut pour mettre à jour le firmware en direct.

Le résultat du travail de l'assistant sera le fichier switch.yaml dans le dossier actuel d'environ ce type:


 esphome: name: switch platform: ESP8266 board: esp01_1m wifi: ssid: 'wifi_ap' password: 'wifi_password' # Enable logging logger: # Enable Home Assistant API api: password: 'api_password' ota: password: 'api_password' 

Cela suffit pour compiler le firmware et apporter d'autres modifications par voie aérienne.


Premier firmware


Maintenant, si vous connectez le contrôleur à l'ordinateur via USB (NodeMCU) ou via le programmateur, vous pouvez télécharger le firmware.


Python :


 esphome switch.yaml run 

ESP Home vérifie qu'il n'y a pas d'erreur dans le fichier de configuration, compile et télécharge le firmware. De plus, un nouveau dossier apparaîtra dans le dossier actuel avec le nom de votre appareil et le projet platformio à l'intérieur.


Si le programmeur / périphérique n'est pas connecté à l'ordinateur, vous pouvez exécuter la commande:


 esphome switch.yaml compile 

et le fichier de firmware compilé apparaîtra dans le dossier switch / .pioenvs / switch / firmware.bin


Docker
Sous Linux ou MacOS, vous pouvez ajouter la commande --device = / dev / ttyUSB0 Docker - l'adresse du périphérique du programmeur ou du port série.


 docker run --rm -v "${PWD}":/config --device=/dev/ttyUSB0 -it esphome/esphome switch.yaml compile 

De manière similaire à la commande esphome, à la suite du démarrage du conteneur, le dossier switch / .pioenvs / switch / firmware.bin apparaîtra


Le fichier du micrologiciel binaire peut être téléchargé sur le contrôleur via l'IDE Arduino.


Après cela, l'appareil peut être déconnecté de l'USB et d'autres mises à jour du micrologiciel auront lieu automatiquement par voie aérienne.


Réglage du commutateur


Ensuite, vous pouvez ajouter les composants nécessaires:


Capteurs
 #   binary_sensor: #    - platform: gpio pin: number: GPIO0 mode: INPUT_PULLUP inverted: True name: "Switch button" # ,       on_press: - switch.toggle: relay_1 # ,     - platform: status name: "Switch Status" 

Relais
 switch: #   - platform: gpio name: "Switch Relay 1" pin: GPIO12 id: relay_1 

LEDs
 output: #   ,    - platform: esp8266_pwm id: blue_led pin: GPIO13 inverted: True light: #    "",    - platform: monochromatic name: "Switch Blue LED" output: blue_led id: blue_led_light # ID  ,        

Pour enfin obtenir:


Configuration terminée
 esphome: name: switch platform: ESP8266 board: esp01_1m #  ,      . on_boot: #   priority: -10 then: - light.turn_on: blue_led_light wifi: ssid: 'wifi_ap' password: 'wifi_password' #   logger: #  Home Assistant API api: password: 'api_password' #     ota: password: 'api_password' #  web  #            web_server: port: 80 #  MQTT mqtt: broker: 10.0.0.2 username: mqt_user password: mqtt_password #   binary_sensor: #    - platform: gpio pin: number: GPIO0 mode: INPUT_PULLUP inverted: True name: "Switch button" # ,       on_press: - switch.toggle: relay_1 # ,     - platform: status name: "Switch Status" switch: #   - platform: gpio name: "Switch Relay 1" pin: GPIO12 id: relay_1 output: #   ,    - platform: esp8266_pwm id: blue_led pin: GPIO13 inverted: True light: #    "",    - platform: monochromatic name: "Switch Blue LED" output: blue_led id: blue_led_light # ID  ,        

Interface WEB


Les mêmes actions peuvent être effectuées via l'interface WEB, qui fonctionne sous Linux et MacOS.


Python


Vous devez installer des dépendances supplémentaires:


 pip2 install tornado esptool 

et exécutez ESP Home avec cette commande:


 esphome config/ dashboard 

Docker


La documentation indique que pour que les indicateurs d'état fonctionnent, vous devez connecter le conteneur au réseau hôte avec la commande suivante:


 docker run --rm --net=host -v "${PWD}":/config -it esphome/esphome 

Elle ne travaillait pas pour moi et j'ai utilisé:


 docker run --rm --net=bridge -p 6052:6052 -v "${PWD}":/config -it esphome/esphome 

Après cela, vous pouvez aller à 127.0.0.1:6052 et travailler dans une interface pratique:



Bon travail.

Source: https://habr.com/ru/post/fr441984/


All Articles