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.