Updating devices after an ESPHome 2024.9.0

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

You are not alone, I see the same update errors as you do for the Atom Echo.

display:

  • platform: ili9xxx
    id: s3_box_lcd
    model: S3BOX
    data_rate: 40MHz
    invert_colors: false
    cs_pin: 5
    dc_pin: 4
    reset_pin:
    number: 48
    inverted: true
    update_interval: never
1 Like

@eamonn @fireplex For the Atom Echo, change the mode: mono line to channel: mono

Thanks. It looks like someone has updated the main repo and the updates are working again.

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:

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…).

1 Like

This post wasn’t about the changes, it was about how to deal with the changes in pre-made device configs.

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.

but, then again, why update if all works…

Ready Made projects is something ESPHome (and HA) are promoting, see Ready-Made Projects — ESPHome

They are designed to be as easy as possible, trying to target less technical users who just want something to work, an appliance, like your TV.

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:

  1. Wait for upstream to address the breaking changes. Update when it works.
  2. 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.

Thanks, all!

1 Like

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…

Well I think it is a nice-to-have for people not really comfortable with electronics. But I think this starts to be a little bit OT