[Custom Integration] ESPHome Update Manager

Hi everyone! :waving_hand:

I’d like to share a custom integration I’ve been working on:
ESPHome Update Manager

What is it?

A dedicated Home Assistant panel for managing firmware updates across all your ESPHome devices. Instead of updating devices one by one through the ESPHome dashboard or the standard HA update entities, this gives you a centralized overview with batch update capabilities.

NOTE:
Since version 1.4.0 the integration supports both local and external ESPHome dashboards. You can now connect to an ESPHome dashboard running on another machine (e.g., a dedicated build server) and manage updates through the dedicated panel in HA.

Key features:

  • External dashboard connection via URL configuration
  • Mixed setup support (local + external devices) supported

Configure via Settings → Devices & Services → ESPHome Update Manager → Configure.

3 Likes

Auto-update and notification/logging features added.
Available since release v1.1.0

Added start_updates service to manage updates.
This service can be used to trigger the updates via an automation.
Available since release v1.2.0

This morning I finally had the opportunity to test this integration.

While everything worked great I cannot seem to leave the main page anymore.

When there is no upgrade in process I can swipe from left to right and the home assistant menu appears. When updates are in progress no menu appears, it just bounces a bit to the right.

This is on iOS. Is this generic or something I’m doing wrong?

I’m not sure what you mean, I myself use iOS too but cannot swipe left/right, is this an add-on of some sort? can you give more details?
Or are you talking about the sidebar?

EDIT: tested the sidebar swipe in iOS while updating, everything is working as expected, sidebar appears and I can open the other panels, nothing seems out of the ordinary.

No, just the normal menu. I have my side bar (i think this is default) auto hide on my iOS device. When I go to the menu and see the ESPhome update manager, going back to the menu is swiping from left to right. Then the menu appears.

When everything was updating i could not get the swiping part to work. Now after the updates have been finished it is possible again.

But since ive got 10+ esphome devices it takes some time.

When I close the companion app on my iphone and start it again, it starts in the same view I left it, thus not being able to leave the esphome update manager.

I honestly don’t know how to explain further, maybe next esphome update I’ll try and see again and record the screen.

Btw, i now see i was still running 1.0.0. Maybe the 1.1.0 feature ‘auto update’ entriely removes the need for me to open the gui …

I’m sure it’s me, but I don’t understand this part, not sure what menu you’re talking about, but would like to understand so I can replicate the issue.
anyways, update first to the latest version, some significant changes were made.

Problem solved! issue was the buttons on the right falling outside viewport and blocking touch events, preventing the sidebar swipe.
Tested on a small iPhone 12 mini and it’s working as expected now.
When using even smaller screens, you need to use the device in panorama mode as a workaround.
Fix is available in release v1.2.4

EDIT: made an additional improvement for small phone screens in release v1.2.5

1 Like

Thank you @LawrenceH for using this integration.
Because there already is a topic on this integration, I will answer your questions here instead of ESPHome Update Manager – Issues & Feature Requests

  • about live logs: Live device logs are out of scope for this integration - the ESPHome Dashboard already provides that functionality.
  • log archive: I had this idea when building the integration but was not convinced this would be needed. I’ll add it to the backlog. If you really need to, you could also create an automation that copies the log file whenever it changes - that way you have full control over how many logs to keep and where to store them. (I can provide you with the necessary steps to take to accomplish this if needed)
  • include “from version > to version" in the logs: Good idea, I’ll add this to the next release.
  • Rename the side panel: I prefer keeping ‘ESPHome Updates’ - it’s concise and accurately describes the primary function. ‘Manager’ implies broader functionality that this integration doesn’t provide. The full name ‘ESPHome Update Manager’ is used in the panel header and logs where there’s more space.
  • Display the current version number: This information is already available in HACS and the Integrations page. Adding it to the panel header would just be visual clutter.
  • Manual refresh/rescan button: The integration doesn’t scan for updates for the ESPHome device builder add-on, it simply displays the update status that Home Assistant already knows about. The actual update detection is handled by Home Assistant and the ESPHome integration, not by this panel. A refresh button would just reload the same data that’s already shown. This integration reads the firmware update entities, which reflect whether each device’s firmware matches the installed ESPHome Device Builder version.
  • about your zombie device: Removing a device in ESPHome Device Builder only deletes the configuration file - it doesn’t remove the device from Home Assistant. To fully remove a device, you need to:
  1. Go to Settings → Devices & Services → ESPHome
  2. Find the device entry
  3. Click the 3 dots and select Delete

The ESPHome Update Manager only displays what Home Assistant knows about - it can’t remove devices itself

Thanks for taking the time to review the integration and share your ideas! I’ve noted the version logging suggestion and will add it in a future update. Hopefully the explanations help clarify how everything works under the hood. Feel free to reach out if you have more questions or feedback!

EDIT: update version info added to log file in release v1.2.7

1 Like

Hi, I’ll get back to you later about the enhancements.

But regarding the zombie device, as I explained in my post, it’s not visible in ESPHome Builder, but only in the ESPHome Device Manager, which is the odd part!

New feature added in release v1.3.0

  • Automatic log backups: After each update batch completes, the update log is automatically backed up with a timestamp
  • View previous logs: Access to previous and 1 latest update log via the new menu in the header
  • 3-dots menu: New menu button (⋮) in the top-right corner for quick access to logs
  • Latest Log: View the most recent update log
  • Previous Logs: Browse through historical update logs

EDIT:

  • The number of backups kept can be configured in the integration settings (set to 0 to disable backups) since release v1.3.1
1 Like

Important news!

I have updated the code so the integration can also be used with an external ESPHome builder. The integration can be used with a local, external, or mixed setup. At the moment, extensive (re)testing still needs to be done and the README must be updated to reflect the new addition. A new release will follow shortly.

1 Like

RELEASE V1.4.0
The integration now supports both local and external ESPHome dashboards. You can now connect to an ESPHome dashboard running on another machine (e.g., a dedicated build server) and manage updates through the dedicated panel in HA.

Key features:

  • External dashboard connection via URL configuration
  • Mixed setup support (local + external devices)

Configure via Settings → Devices & Services → ESPHome Update Manager → Configure.

Hi,
I am doing an ESPHome.yaml on my own, but regardless what I add, my devices are not “seen for update”. I have no clue how to describe it better.
What I do: I have a dedicated HomeAssistant, where I do all the programming with StudioCode Server on this dedicated machine.
I can start manually the ESPHome Builder, and it works flawless. I can do Updates via wireless, “Plug into the computer running ESPHome Device Builder”, manual download, …
In my YAML I have

esphome:
  name: ${rmgr_device_name}
  friendly_name: ${rmgr_device_name}
  project:
    name: punktde.rmgr
    version: "1.1.8"

but regardless what I change here or anywhere in the code, HomeAssistant does not “understand” that there is an update.
If ESPHome itself is updated, I see an “update” message for each ESP I am programming myself. How can I trigger this “Update is ready” in my progress?

I know I am doing something wrong, but have no clue what :slight_smile.

many thanks
Juergen

Hi,
I’ll need more info on your setup.
do you use esphome builder as an add-on/app in HA or is it an external dashboard?
if local, then maybe the update entities are disabled (they are by default) and you need to enable them manually.
go to settings - devices & services - entities and use the filter option to show disabled entities, then search for “update.” you can enable them from there.

Hi,
I have ESPHome as an APP (formerly Addon).
I enabled update.s03 et voila it worked. You are my hero. Many thanks! I was searching for a solution since ages.

Now I see

But still I do not see, an update request, if I change my personal s03.yaml
anywhere.

How can I trigger that I have done a new version of my own s03.yaml and let it update on next wakeup?

all the best
Juergen

glad it is working now for you.
but I’m not sure what you mean for your next question.
I guess you adapted your yaml file and want to upload it to your device?
if this is the case, you need to manually install this via the esphome builder.
the esphome update manager can only be used to update the firmware version of your device when esphome builder released a newer version.

Hi,
ahhh. I am looking for an update mechanism, that distributes new firmware if I change my own personal s03.yaml. So I can make new versions and than tell the system, that it can update to the newest firmware.
Is there any solution for this?
Like pre-compile the newest update.s03_firmware and than if the ESP connects after deep sleep, it gets the update.
Reason: I am having very lazy :slight_smile: (sleeping most of the time) ESPs, that still would need some updates.
So I was hoping that I could automate this in the way: They wake up, get a “longer uptime” and if this is the case, they automatically get the update.
Like the update mechanism that you ar eusing, but triggered by a new version of my personal ESP software.

Can I somehow “fake” that there is an ESPhome version with the same version number?

many thanks
Juergen

I understand now what you want to achieve, but unfortunately that’s not possible with this integration.
maybe you can use an automation for this, I’m not sure if this is even possible.
interesting problem though!

Hi,
maybe I have something different wrong. I updated the other device, that was ready for update from 2024.2.4 → 2026.3.1 with ESPHome Update Manager. The system was “pretending” that it updated, the ESP Home Update Manager was catching the update, saying “Up to date”! and getting green.

log seems to be fine:

Than the ESP went in deep sleep again, ESP went offline:

When it woke up it was showing

as if no update was happening.

Any ideas?

all the best
Juergen