Shelly Update available entity

Hi :slight_smile:

I’d like to do an admin only page, where I have an overview of available firmware updates, maybe even start the update on this page.
The shelly integration offers an entity “binary_sensor.xxxxxxx_firmware_update” that shows, when an update is available.
My problem is now, that this entity gets “activated” when only a beta update is available.

Would it be possible to have two separate entities for available beta and released updates?

I have now about 50 Shelly devices in my house. Checking every device for available updates is a pain, especially when it comes to semi offline devices like ShellyH&T or TRV.

It would also be nice, if there were an entity showing the currently installed firmware version :slight_smile:

Hi,
I know some people don’t like it but in general HA guidelines are to reflect the device and not add any logic above it. Shelly devices show and update if either beta or release firmware are available (not as you described)
If you want to differentiate between beta and release firmware you can use the example in the linked issue:

It is also possible to create a new binary sensor with this behaviour, however if you only need it for the UI this example should work.

thank you very much. I searched, but haven’t found that article.
And yes, it’s absolutely enough.
Since it’s only for an administrative overview page, this is more than enough. On the same page, I have also an overview of the battery status of all battery powered devices.

There is now a new entity you can enable called update.device_id_firmware_update that once enabled will drop a notification badge on the settings menu showing all the Shelly updates just like other HA add-ons. The entities for ota_update and firmware_update have been deprecated and can safely be deleted.

image

Just flash over the air to tasmota or esp home then you have full control.
Digiblurthat how to flash over the air Shelly

I had a rest command approach to update all shellies when an update was found. However, since HomeAssistant introduced new domain ‘update.’, shellies reacted and created new entities for each one. So I had to rewrite my yaml for all entities, however, now the update is managed by the home assistant interface and it looks I cannot use rest command approach to update them all at once.

How do you deal with this when you have 50 shellies? Do you seriously click 50 times on install button?

Sorry, my fault, I had to rename more entities on the way given this change from binary_sensor. domain to update. domain. Rest command works still well for updating them all at once.

User @TheFes came up with a great solution on Discord, you can add a template button to update all Shellies.

Add the following to the template section of your configuration.yaml
Simply add the button and Lovelace and click to update all Shellies

template:
  - button:
      - name: Update Shellies
        unique_id: button_update_all_shellies
        device_class: update
        press:
          - service: update.install
            target:
              entity_id: "{{ expand(integration_entities('shelly')) | selectattr('domain', 'eq', 'update') | selectattr('state', 'eq', 'on') | map(attribute='entity_id') | list }}"
2 Likes

ok, also a solution, an elegant one. I have this in configuration.yaml

rest_command:
  toilet_update:
    url: http://192.168.2.201/ota?update=true'
  livingroom_central_update:
    url: http://192.168.2.202/ota?update=true'
  bedroom_central_update:
    url: http://192.168.2.203/ota?update=true'
  office_central_update:
    url: http://192.168.2.204/ota?update=true'
  bathroom_update:
    url: http://192.168.2.205/ota?update=true'
  balcony_living_update:
    url: http://192.168.2.206/ota?update=true'
  balcony_bedroom_update:
    url: http://192.168.2.207/ota?update=true'
  balcony_office_update:
    url: http://192.168.2.208/ota?update=true'
  almara_update:
    url: http://192.168.2.209/ota?update=true'
  pantry_update:
    url: http://192.168.2.210/ota?update=true'
  hall_update:
    url: http://192.168.2.212/ota?update=true'

Then I have a script that includes all these shell commands and run the script by calling a service.

I have nearly 100 shellies and more units are getting installed on a regular basis. So I prefer to have ‘auto-populate’ this list to make sure I update all of them without having to maintain a list.

True, I understand but that approach was not possible before introduction of the update. domain.

I will rewrite it as well. Thanks!

The firmware update available on a shelly device is disabled by default.
Is there a way to have it enabled by default when a new device is found?

1 Like

Not that I know… But it is easy to filter all update entities in the entity list and enable all at once. Be aware that you can easily enable all beta firmware updates as well.