I know in advance that this is going to be a really stupid question, but I got ask. I have two voice assistants, one on the Atom Echo and one on the S3 box. Both created by just blindly following the tutorials. One of the tutorials (I think the box one) suggested installing the ESPHome add-on and using that to make some minor customisation (choosing the wake word). All fine and dandy.
But now the add-on has updated and neither device will update or install. Version 2024.9.0 has some breaking changes, I see. The current yaml fails validation because of the breaking changes. (They work, mind you, but they have an update button that I’m itching to press.)
What is the next step? I tried to edit the yaml, but that’s just pulling in yaml from somewhere else (e.g., m5stack.atom-echo-wake-word-voice-assistant: github://esphome/wake-word-voice-assistants/m5stack-atom-echo/m5stack-atom-echo.yaml@main), which I think is where the breaking changes need to be made? Or do I start again? The install button also fails with validation errors.
Update errors (for the Atom Echo):
INFO ESPHome 2024.9.0
INFO Reading configuration /config/esphome/m5stack-atom-echo-b83f4c.yaml...
INFO Updating https://github.com/esphome/esphome.git@pull/5230/head
INFO Updating https://github.com/jesserockz/esphome-components.git@None
Failed config
speaker.i2s_audio: [source /data/packages/dec89df9/m5stack-atom-echo/m5stack-atom-echo.yaml:47]
platform: i2s_audio
id: echo_speaker
i2s_dout_pin: GPIO22
dac_type: external
[mode] is an invalid option for [speaker.i2s_audio]. Did you mean [i2s_mode]?
mode: mono
Update errors (for the esp32-s3-box):
INFO ESPHome 2024.9.0
INFO Reading configuration /config/esphome/esp32-s3-box-3-055a28.yaml...
INFO Updating https://github.com/esphome/esphome.git@pull/5230/head
INFO Updating https://github.com/jesserockz/esphome-components.git@None
WARNING GPIO0 is a strapping PIN and should only be used for I/O with care.
Attaching external pullup/down resistors to strapping pins can cause unexpected failures.
See https://esphome.io/guides/faq.html#why-am-i-getting-a-warning-about-strapping-pins
Failed config
display.ili9xxx: [source /data/packages/dec89df9/esp32-s3-box-3/esp32-s3-box-3.yaml:688]
'invert_colors' is a required option for [display.ili9xxx].
platform: ili9xxx
id: s3_box_lcd
model: S3BOX
data_rate: 40MHz
cs_pin: 5
dc_pin: 4
reset_pin:
number: 48
inverted: True
update_interval: never
pages:
- id: idle_page
Read changelogs, guys… It’s all there… ALWAYS read changelog! It’s not there because someone has nothing better to do, but because it’s required to be read, right? Just clicking on" update" is the worst thing you do…
for display:
[ili9xxx] Make invert_colors requiredesphome#7292 by @gvdhoven (breaking-change)
for I2S audio:
Move I2S config settings the the base i2sAudio files. Phase 1 esphome#7183 by @nielsnl68 (breaking-change)
clicking on link gives:
To make the Speaker component compatible with the microphone component there will be some breaking change by changing “mode” variable will be changed into “channel”.
And, having an external link to yaml is in long-term never a good idea, for this exact reason. Open that external link and copy/paste contents to your yaml file. That way editing will be so much easier. Not doing so will cause you to be dependant on the guy who created that yaml and maintains it (or not…).
That’s why pre-made configs and linking to them are a bad idea in the first place… as i wrote above, you’re totally dependant on developer… and, at the end you learn nothing, since you just blindly copy/paste things, which results in endless help topics at each error shown.
I’m a principal software engineer for my day job. I understand about changelogs. It was really more about what the expected procedures are with breaking changes like that. I only have a couple of ESP32 devices, so I’m not that familiar with it.
It sounds like either of:
Wait for upstream to address the breaking changes. Update when it works.
Fork the upstream and just do it all yourself.
I haven’t got a lot of time. I’ll do the former. And I’m not going to feel the least bit inferior about it.
Yeah, well… some decisions, made by HA stuff are known to be…let’s say “unusual” and no-one (ok, very few of us) understands why that is so…