Menjadi penggemar sistem kendali rumah pintar Home Assistant , saya baru-baru ini menemukan alat menarik yang terintegrasi erat dengan HA dan sebelumnya tidak dinyalakan di Habré - ESP Home (sebelumnya ESPhomeYAML).
ESP Home adalah seperangkat pustaka dan alat yang menghasilkan firmware untuk mikrokontroler ESP8266 dan ESP32 dari file konfigurasi yang dibuat pengguna dalam format YAML. Ini sangat menyederhanakan penulisan firmware dengan kompleksitas kecil dan menengah, terutama bagi mereka yang tidak pandai pemrograman untuk Arduino dan sangat mengurangi jumlah baris kode / konfigurasi untuk mereka yang kuat.
Untuk kemudahan pengaturan, pembaruan firmware over-the-air didukung.
ESP Home mendukung perangkat berbasis ESP8266 dan ESP32, yang sangat populer di kalangan otomatisasi rumah dan penggemar buatan rumah lainnya, serta beberapa lusin sensor dan berbagai periferal - display, kartu jaringan, dll. Untuk bertukar data dengan perangkat yang diprogram, MQTT, UART, I2C, SPI dan API terintegrasi, terintegrasi dengan Home Assistant.
Di bawah ini adalah contoh singkat dari menginstal ESP Home dan pengaturan perangkat sederhana pada contoh saklar Sonoff T1 , yang merupakan ESP8266 dengan satu relai, satu tombol dan satu LED yang dikendalikan. Contoh ini akan memiliki langkah-langkah instalasi untuk Python dan Docker murni pada saat yang sama.
Instalasi
Python 2.7 (karena dependensi Platformio )
pip2 install esphome
Docker dari gambar yang sudah jadi
docker pull esphome/esphome
Membuat file konfigurasi
ESP Home mencakup panduan yang membantu Anda membuat file konfigurasi awal.
Langkah-langkah yang sama dapat dilakukan dalam antarmuka WEP Home ESP, yang ditulis di akhir artikel.
Pertama, Anda perlu menentukan:
- Nama perangkat (sebut saja beralih)
- ESP8266 (dalam contoh) atau ESP32
- Jenis papan (kami punya esp01_1m)
- Bernama Poin Akses WiFi
- Kata Sandi WiFi
- Kata sandi dari Home Assistant API, itu juga akan digunakan secara default untuk memperbarui firmware melalui udara.
Hasil pekerjaan wizard akan menjadi file switch.yaml di folder saat ini kira-kira jenis ini:
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'
Ini cukup untuk mengkompilasi firmware dan membuat perubahan lebih lanjut melalui udara.
Firmware pertama
Sekarang, jika Anda menghubungkan pengontrol ke komputer melalui USB (NodeMCU) atau melalui pemrogram, Anda dapat mengunggah firmware.
Python :
esphome switch.yaml run
ESP Home akan memeriksa bahwa tidak ada kesalahan dalam file konfigurasi, kompilasi dan unduh firmware. Selain itu, folder baru akan muncul di folder saat ini dengan nama perangkat Anda dan proyek platformio di dalamnya.
Jika programmer / perangkat tidak terhubung ke komputer, Anda dapat menjalankan perintah:
esphome switch.yaml compile
dan file firmware yang dikompilasi akan muncul di folder switch / .pioenvs / switch / firmware.bin
Docker
Di Linux atau MacOS, Anda dapat menambahkan perintah --device = / dev / ttyUSB0 Docker - alamat perangkat programmer atau port serial.
docker run --rm -v "${PWD}":/config --device=/dev/ttyUSB0 -it esphome/esphome switch.yaml compile
Demikian pula dengan perintah esphome, sebagai hasil dari memulai wadah, folder switch / .pioenvs / switch / firmware.bin akan muncul
File firmware biner dapat diunduh ke controller melalui Arduino IDE.
Setelah itu, perangkat dapat diputuskan dari USB dan pembaruan firmware lebih lanjut akan berlangsung secara otomatis melalui udara.
Ganti pengaturan
Kemudian Anda dapat menambahkan komponen yang diperlukan:
Sensor # 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"
Relay switch: # - platform: gpio name: "Switch Relay 1" pin: GPIO12 id: relay_1
LED 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 ,
Untuk akhirnya mendapatkan:
Konfigurasi jadi 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 ,
Antarmuka WEB
Tindakan yang sama dapat dilakukan melalui antarmuka WEB, yang berjalan di Linux dan MacOS.
Python
Anda perlu menginstal dependensi tambahan:
pip2 install tornado esptool
dan jalankan ESP Home dengan perintah ini:
esphome config/ dashboard
Docker
Dokumentasi mengatakan bahwa agar indikator status berfungsi, Anda harus menghubungkan wadah ke jaringan host dengan perintah berikut:
docker run --rm --net=host -v "${PWD}":/config -it esphome/esphome
Dia tidak bekerja untuk saya dan saya menggunakan:
docker run --rm --net=bridge -p 6052:6052 -v "${PWD}":/config -it esphome/esphome
Setelah itu, Anda bisa pergi ke 127.0.0.1:6052 dan bekerja di antarmuka yang nyaman:

Selamat bekerja.