When the addon tries to compile firmware for ESPHome devices, it enumerates all of the *.yaml files in the root of the ESPHome config directory.
When it finds partial files - e.g. blocks of YAML designed to be included in devicename.yaml or those designed to be pulled in as ESPHome packages, it tries to compile those as well, and fails. For instance, all of my include files are named .common.yaml/.common-thread.yaml/.xiao-c6.yaml etc. They're reused across a bunch of devices so that I don't have to keep redefining common esp32 config blocks across multiple devices and can make changes in one place.
When the addon comes across these, it treats them as first-class "devices". The ESPHome config editor resolves package imports/includes, so when editing a device config which has these, it doesn't throw errors.
It might be useful to add an ignoreor exclude config parameter which would cause the auto-updater to skip certain files or filename patterns.
There's already an update_only_these field, but that feels like it might defeat the point of having a system that can intelligently push updates to N devices without needing to explicitly configure them. It's fine as a workaround, but it feels like it could be improved.
Sample log output:
[2026-02-18 12:35:48] [9/29] Processing: .xiao-c3-ble-arduino
[2026-02-18 12:35:48] Config: .xiao-c3-ble-arduino.yaml
[2026-02-18 12:35:48] Versions: deployed=unknown, current=unknown
[2026-02-18 12:35:48] No manual IP configured; using mDNS: .xiao-c3-ble-arduino.local
[2026-02-18 12:35:48] → Starting update for .xiao-c3-ble-arduino
[2026-02-18 12:35:48] → Compiling .xiao-c3-ble-arduino.yaml via Docker in 'addon_5c53de3b_esphome'
INFO ESPHome 2026.1.5
INFO Reading configuration /config/esphome/.xiao-c3-ble-arduino.yaml...
Failed config
'esphome' section missing from configuration. Please make sure your configuration has an 'esphome:' line in it.
[2026-02-18 12:35:48] ✗ Compilation failed for .xiao-c3-ble-arduino
[2026-02-18 12:35:48] ✗ .xiao-c3-ble-arduino failed
s6-rc: info: service legacy-services: stopping
s6-rc: info: service legacy-services successfully stopped
s6-rc: info: service legacy-cont-init: stopping
s6-rc: info: service legacy-cont-init successfully stopped
s6-rc: info: service fix-attrs: stopping
s6-rc: info: service fix-attrs successfully stopped
s6-rc: info: service s6rc-oneshot-runner: stopping
s6-rc: info: service s6rc-oneshot-runner successfully stopped
When the addon tries to compile firmware for ESPHome devices, it enumerates all of the
*.yamlfiles in the root of the ESPHome config directory.When it finds partial files - e.g. blocks of YAML designed to be included in
devicename.yamlor those designed to be pulled in as ESPHomepackages, it tries to compile those as well, and fails. For instance, all of myincludefiles are named.common.yaml/.common-thread.yaml/.xiao-c6.yamletc. They're reused across a bunch of devices so that I don't have to keep redefining commonesp32config blocks across multiple devices and can make changes in one place.When the addon comes across these, it treats them as first-class "devices". The ESPHome config editor resolves package imports/includes, so when editing a device config which has these, it doesn't throw errors.
It might be useful to add an
ignoreorexcludeconfig parameter which would cause the auto-updater to skip certain files or filename patterns.There's already an
update_only_thesefield, but that feels like it might defeat the point of having a system that can intelligently push updates to N devices without needing to explicitly configure them. It's fine as a workaround, but it feels like it could be improved.Sample log output: