Упрощаем конфигурационные файлы устройств на прошивке ESPHome для частого использования

23 ноября 2019, 11:01

Недавно я прошил несколько WiFi выключателей. И так как конфигурационные файлы выключателей похожи и отличаются только названием устройств и паролями, задумался о том, как можно упростить написание конфигурационных файлов и описать общие части в одном месте.

Изучив документацию ESPHome, я узнал:

substitutions:
  devicename: livingroom
  upper_devicename: Livingroom

esphome:
  name: $devicename
  # ...

sensor:
- platform: dht
  # ...
  temperature:
    name: ${upper_devicename} Temperature
  humidity:
    name: ${upper_devicename} Humidity
  • мы можем подгружать содержимое из других файлов.
# In nodemcu1.yaml
substitutions:
  devicename: nodemcu1
  upper_devicename: NodeMCU 1

<<: !include common.yaml
Таким образом, у меня получился следующий "рецепт" (все действия проводятся в каталоге с конфигурационными файлами): 
  • создаем файл .common.yaml
    (в нем описана общая часть для всех моих конфигурационных файлов);
  • создаем файл secrets.yaml (рекомендуется пароли хранить в нем) Пример моего файла;
  • для однокнопочных выключателей создаем общий файл конфигурации .switch-one.common.yaml;
  • пример общей конфигурации для двухкнопочного выключателя и для устройств Sonnof Basic;
  • затем переписываем конфигурационные файлы устройств, в моем случае - это выключатели и реле Sonoff Basic.
# switch_kitchen.yaml

#===============================================================================
# Выключатель на кухне
#===============================================================================
substitutions:
  device_name: switch_kitchen
  platform: ESP8266
  board: esp01_1m
  
  wifi_ssid: !secret wifi_ssid
  wifi_password: !secret wifi_password
  
  ap_sid: !secret switch_kitchen_ap_sid
  ap_password: !secret switch_kitchen_ap_password
  
  web_server_username: ${device_name}
  web_server_password: !secret switch_kitchen_web_server_password
  
  api_password: !secret api_password
  
  ota_password: !secret switch_kitchen_ota_password
#===============================================================================  

# подгружаем общие части

<<: !include .common.yaml

<<: !include .switch-one.common.yaml


# switch_hallway.yaml

#===============================================================================
# Выключатель в прихожей
#===============================================================================
substitutions:
  device_name: switch_hallway
  platform: ESP8266
  board: esp01_1m
  
  wifi_ssid: !secret wifi_ssid
  wifi_password: !secret wifi_password
  
  ap_sid: !secret switch_hallway_ap_sid
  ap_password: !secret switch_hallway_ap_password
  
  web_server_username: ${device_name}
  web_server_password: !secret switch_hallway_web_server_password
  
  api_password: !secret api_password
  
  ota_password: !secret switch_hallway_ota_password
#===============================================================================  

# подгружаем общие части

<<: !include .common.yaml

<<: !include .switch-one.common.yaml
# switch_living_room.yaml

#===============================================================================
# Выключатель в комнате
#===============================================================================
substitutions:
  device_name: switch_living_room
  platform: ESP8266
  board: esp01_1m
  
  wifi_ssid: !secret wifi_ssid
  wifi_password: !secret wifi_password
  
  ap_sid: !secret switch_living_room_ap_sid
  ap_password: !secret switch_living_room_ap_password
  
  web_server_username: ${device_name}
  web_server_password: !secret switch_living_room_web_server_password
  
  api_password: !secret api_password
  
  ota_password: !secret switch_living_room_ota_password
#===============================================================================  

# подгружаем общие части

<<: !include .common.yaml

<<: !include .switch-two.common.yaml
# sonoff_1.yaml

#===============================================================================
# Sonoff basic
#===============================================================================
substitutions:
  device_name: sonoff_1
  platform: ESP8266
  board: esp01_1m
  
  wifi_ssid: !secret wifi_ssid
  wifi_password: !secret wifi_password
  
  ap_sid: !secret sonoff_1_ap_sid
  ap_password: !secret sonoff_1_ap_password
  
  web_server_username: ${device_name}
  web_server_password: !secret sonoff_1_web_server_password
  
  api_password: !secret api_password
  
  ota_password: !secret sonoff_1_ota_password
#===============================================================================  


<<: !include .common.yaml

<<: !include .sonoff-basic.common.yaml

Все новости мира умных домов - t.me/SprutAI_News или Instagram
Остались вопросы? Мы в Telegram - @Soprut

Хочешь умный дом но нет времени разбираться?
Посмотри примеры работ и выбери себе интегратора.
  1. (Brain)
    (Brain) 21 день назад

    Под девизом "мы не ищем легких путей" :-)


К списку статей

Похожие статьи

04 сентября 2018, 12:14
Интеграция RGB ленты на ESP8266 с прошивкой tasmota в систему HomeBridge (HomeKit)
02 ноября 2018, 12:14
Кнопка звонка с уведомлениями в HomeKit
15 октября 2018, 09:05
Прошивка для Sonoff c нативным HomeKit
15 ноября 2018, 09:42
Способы автоматизации механических ворот
27 октября 2018, 12:20
Нативный Термостат для котла на ESP8266 с поддержкой Apple HomeKit
01 октября 2018, 07:43
Нативный HomeKit на ESP8266
15 июня 2018, 12:13
Охранная система в гараж на ESP8266 с интеграцией в Apple HomeKit
24 августа 2018, 12:18
Пошаговая установка HomeAssistant
27 августа 2018, 10:14
Интегрируем ХА в HomeKit
02 октября 2018, 18:41
Установка SDK для компиляции прошивок под HomeKit