Als Fan des Smart-Home-Steuerungssystems Home Assistant habe ich kürzlich ein interessantes Tool entdeckt, das eng in HA integriert ist und zuvor bei Habré - ESP Home (ehemals ESPhomeYAML) nicht beleuchtet war.
ESP Home ist eine Reihe von Bibliotheken und Tools, die aus einer vom Benutzer erstellten Konfigurationsdatei im YAML-Format Firmware für ESP8266- und ESP32-Mikrocontroller generieren. Dies vereinfacht das Schreiben von Firmware mit kleiner und mittlerer Komplexität erheblich, insbesondere für diejenigen, die nicht gut für Arduino programmieren können, und reduziert die Anzahl der Code- / Konfigurationszeilen für diejenigen, die stark sind, erheblich.
Zur Vereinfachung der Einrichtung wird ein drahtloses Firmware-Update unterstützt.
ESP Home unterstützt Geräte auf der Basis von ESP8266 und ESP32, die bei Hausautomation und anderen hausgemachten Lüftern sehr beliebt sind, sowie mehrere Dutzend Sensoren und verschiedene Peripheriegeräte - Displays, Netzwerkkarten usw. Um Daten mit dem programmierten Gerät auszutauschen, sind MQTT, UART, I2C, SPI und API integriert und in Home Assistant integriert.
Im Folgenden finden Sie ein kurzes Beispiel für die Installation von ESP Home und die einfache Einrichtung von Geräten am Beispiel des Sonoff T1- Schalters, der ein ESP8266 mit einem Relais, einer Taste und einer gesteuerten LED ist. Das Beispiel enthält Installationsschritte für reines Python und Docker gleichzeitig.
Installation
Python 2.7 (aufgrund von Platformio- Abhängigkeiten)
pip2 install esphome
Docker aus dem fertigen Bild
docker pull esphome/esphome
Konfigurationsdatei erstellen
ESP Home enthält einen Assistenten, mit dem Sie die Erstkonfigurationsdatei erstellen können.
Die gleichen Schritte können in der ESP Home WEB-Oberfläche ausgeführt werden, über die am Ende des Artikels geschrieben wird.
Zuerst müssen Sie angeben:
- Der Name des Geräts (nennen wir es Schalter)
- ESP8266 (im Beispiel) oder ESP32
- Board-Typ (wir haben esp01_1m)
- Benannte WiFi Access Points
- WiFi Passwort
- Das Kennwort vom API Home Assistant wird standardmäßig auch zum drahtlosen Aktualisieren der Firmware verwendet.
Das Ergebnis der Arbeit des Assistenten ist die Datei switch.yaml im aktuellen Ordner von ungefähr diesem Typ:
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'
Dies reicht aus, um die Firmware zu kompilieren und weitere Änderungen auf dem Luftweg vorzunehmen.
Erste Firmware
Wenn Sie nun den Controller über USB (NodeMCU) oder über den Programmierer an den Computer anschließen, können Sie die Firmware hochladen.
Python :
esphome switch.yaml run
ESP Home überprüft, ob die Konfigurationsdatei fehlerfrei ist, kompiliert die Firmware und lädt sie herunter. Außerdem wird im aktuellen Ordner ein neuer Ordner mit dem Namen Ihres Geräts und dem darin enthaltenen Plattformprojekt angezeigt.
Wenn der Programmierer / das Gerät nicht mit dem Computer verbunden ist, können Sie den folgenden Befehl ausführen:
esphome switch.yaml compile
Die kompilierte Firmware-Datei wird im Ordner switch / .pioenvs / switch / firmware.bin angezeigt
Docker
Unter Linux oder MacOS können Sie den Docker-Befehl --device = / dev / ttyUSB0 hinzufügen - die Adresse des Geräts des Programmiergeräts oder der seriellen Schnittstelle.
docker run --rm -v "${PWD}":/config --device=/dev/ttyUSB0 -it esphome/esphome switch.yaml compile
Ähnlich wie beim Befehl esphome wird beim Starten des Containers der Ordner switch / .pioenvs / switch / firmware.bin angezeigt
Die binäre Firmware-Datei kann über die Arduino IDE auf den Controller heruntergeladen werden.
Danach kann das Gerät von USB getrennt werden und weitere Firmware-Updates werden automatisch über Funk durchgeführt.
Schaltereinstellung
Dann können Sie die erforderlichen Komponenten hinzufügen:
Sensoren # 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 ,
Um endlich zu bekommen:
Fertige Konfiguration 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 ,
WEB-Schnittstelle
Die gleichen Aktionen können über die WEB-Oberfläche ausgeführt werden, die unter Linux und MacOS ausgeführt wird.
Python
Sie müssen zusätzliche Abhängigkeiten installieren:
pip2 install tornado esptool
und führen Sie ESP Home mit diesem Befehl aus:
esphome config/ dashboard
Docker
In der Dokumentation heißt es, dass Sie den Container mit dem folgenden Befehl mit dem Host-Netzwerk verbinden müssen, damit Statusanzeigen funktionieren:
docker run --rm --net=host -v "${PWD}":/config -it esphome/esphome
Sie hat nicht für mich gearbeitet und ich habe verwendet:
docker run --rm --net=bridge -p 6052:6052 -v "${PWD}":/config -it esphome/esphome
Danach können Sie zu 127.0.0.1:6052 gehen und in einer praktischen Oberfläche arbeiten:

Gute Arbeit.