danielperna84 / hahomematic

Python 3 Interface for Home Assistant to interact with HomeMatic devices
MIT License
131 stars 22 forks source link

Entity Ids change when device firmware updated with problems #1578

Closed martiesim closed 4 months ago

martiesim commented 4 months ago

I agree to the following

The problem

I had a few devices which had a firmware update available. I downloaded it to the ccu and once the ccu distributed it to the devices, this integration offered the update buttons as expected. I pressed them and the fun began.

The devices became uncontrollable and the CCU started displaying the service message "Gerätekommunikation gestört" for each updated device. Some googling showed me this is a common problem, so I followed the online instructions of restarting the CCU and all the devices. This worked, however this integration did not like that:

All entity ids of the updated devices have reverted to the default. It's not the biggest problem in the world, but it broke my node red automations, which was annoying.

The devices were some HmIP-FROLL and a HmIP-SWD.

What version of HomematicIP (local) has the issue?

1.62.0

What was the last working version of HomematicIP (local)?

No response

What type of installation are you running?

Home Assistant OS

What type of installation are you running for your homematic backend?

CCU3

Which version of your homematic backend are you running?

No response

What hardware are you running for your system?

Pi4

Which config details do you use

Which interfaces do you use?

Diagnostics information (no logs here)

config_entry-homematicip_local-ed96d18a91d971088d7a3acfff29bb00.json

Log file extract. Anything in the logs that might be useful for us? The log (Setting/System/Logs -> load full log) is the best source to support trouble shooting!

The only relevant log entries are from when I renamed the entity ids again:

2024-05-31 22:38:04.064 WARNING (Recorder) [homeassistant.components.recorder.entity_registry] Cannot migrate history for entity_id `binary_sensor.wassersensor_feuchtigkeit_erkannt` to `binary_sensor.raw_kitchen_flood_sensor_moist` because the new entity_id is already in use
2024-05-31 22:38:38.216 WARNING (Recorder) [homeassistant.components.recorder.entity_registry] Cannot migrate history for entity_id `binary_sensor.wassersensor_wasserstand_erkannt` to `binary_sensor.raw_kitchen_flood_sensor_flood` because the new entity_id is already in use
2024-05-31 22:39:25.242 WARNING (Recorder) [homeassistant.components.recorder.entity_registry] Cannot migrate history for entity_id `binary_sensor.wassersensor_batterie` to `binary_sensor.raw_kitchen_flood_sensor_low_battery` because the new entity_id is already in use

Additional information

No response

SukramJ commented 4 months ago

Sorry but this is not reproducable .

martiesim commented 4 months ago

Yeah, I guessed this was a really weird combination of circumstances, but I wanted to let you know about it. Maybe also just so other can find this issue (even if closed unresolved) if they run into the same problem (because it took me some time to figure out that my automations broke because of the changed entity ids).

Maybe you'll be able to find the reason and fix it, which would be cool. And if not, no hard feelings ;) Thank you guys anyways :)

SukramJ commented 4 months ago

Wie haben sich die ids denn geändert? Vorher/Nachher Hast Du noch irgendwas in HA gemacht, wie z.Bsp. einen Service aufgerufen? Hast Du die Geräte in der CCU abgelernt und wieder angelernt?

martiesim commented 4 months ago

Ich habe vor längerem die neuen Firmware Dateien auf die CCU geladen, die hat die Firmwares dann an die Geräte verteilt. Sobald das fertig war wurden mir in HomeAssistant unter Einstellungen oben in der Updates-Lsite von der Integration die Update entities als Updateable angezeigt. Da habe ich dann der Reihe nach auf die Update-Knöpfe gedrückt und die Update entities sind wieder verschwunden (bis auf die des Wassersensors). Danach waren dann die betroffenen Geräte nicht mehr steuerbar. Weder über HomeAssistant (ich habe also services wie cover.open_cover aufgerufen), noch über die CCU.

Edit: Ich glaube, bevor ich online die Lösung mit den Neustarts gefunden hatte, habe ich die Integration einmal neugestartet. Also hier (glaube das ist intern irgendwie auch ein service): grafik

Zur Problemlösung habe ich die betroffenen Geräte und die CCU jeweils neugestartet. Zuerst die HmIP-FROLL Rollladenaktoren (über die Sicherung). Daraufhin ließen sie sich wieder über die CCU steuern und ich war zunächst zufrieden, bis mir auffiel, dass die Node-Red Automatisierungen nicht mehr funktionierten. Da habe ich dann herausgefunden, dass die Entity-Ids sich geändert hatten. Danach habe ich dann auch den Wassersensor (vorher kam ich nicht dazu) neugestartet (Batterie raus und wieder rein) und konnte im HomeAssistant live anschauen, wie sich die Entity-Id geändert hat.

Hier am Beispiel des Rollladenaktors für den Küchenrollladen: Das Gerät heißt in der CCU "Rollladen Küche". Die Entität in HomeAssistant hatte die Id: "cover.raw_kitchen_window_rolling_shutters" Sobald das Gerät über die CCU wieder funktionierte, wurde die Id geändert zu: "cover.rollladen_kuche" Also da wurde der Gerätename aus der CCU irgendwie verwurstet.

Für den Wassersensor stehen die Ids oben im Log file extract. Da verhielt es sich genauso, dass eben der Gerätename aus der CCU übernommen wurde.

SukramJ commented 4 months ago

Danke für die ausführliche Rückmeldung.

Die Integration kann nach der erstmaligen Einrichtung die entity_id nicht mehr ändern. Es gibt aber zwei Szenarien wie das aber passieren kann.

  1. Das Gerät wird von der CCU ab- und wieder angemeldet, und damit auch von HA
  2. Die unique_id des Gerätes hat sich geändert, und wird somit als neu in HA erkannt.

Fall 2 halte ich für nicht wahrscheinlich, da die unique_id auf der Seriennummer basiert.

Ich würde eher vermuten das irgendwie Fall 1 aufgetreten ist, zumindest im Hintergrund, aber so etwas ist mir noch nicht unter gekommen.

Ich werde das Ticket erst mal schliessen, da ich nicht von einem Fehler in der Integration ausgehe.