Ekman / home-assistant-pure-i9

Electrolux Pure i9 robot vacuum integration for Home Assistant.
MIT License
26 stars 5 forks source link

v1.5.0 leads to "This entity is no longer being provided" #66

Closed 01ste02 closed 7 months ago

01ste02 commented 8 months ago

I have purei9 v1.5.0 and home-assistant 1.4. When I upgraded purei9 to this version from the last, my robot vacuum stopped being provided. I have found a recurring error message in the logs that relate to this:

2024-01-24 17:38:22.710 ERROR (MainThread) [homeassistant] Error doing job: Task exception was never retrieved Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 243, in _handle_refresh_interval await self._async_refresh(log_failures=True, scheduled=True) File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 399, in _async_refresh self.async_update_listeners() File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 182, in async_update_listeners update_callback() File "/config/custom_components/purei9/vacuum.py", line 226, in _handle_coordinator_update self.async_write_ha_state() File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 945, in async_write_ha_state self._async_write_ha_state() File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1066, in _async_write_ha_state state, attr, capabilities, shadowed_attr = self.async_calculate_state() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1006, in async_calculate_state attr.update(self.extra_state_attributes or {}) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/config/custom_components/purei9/vacuum.py", line 129, in extra_state_attributes "maps": ", ".join([_map["name"] for _map in self._params.maps]), ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ TypeError: sequence item 2: expected str instance, NoneType found

I do not currently have the time to dig into the code and create a pull request, but if anyone else produces a PR, I'd be happy to try out the fix from my end.

VidFerris commented 8 months ago

Having the same issue; however (in case it helps for troubleshooting), sensors like the dustbin status are still provided, it's just the core device entity and controls for the vacuum that's no longer provided.

01ste02 commented 8 months ago

I realise now that I was unclear in my initial message. The other sensors and entities such as the dustbin work as usual for me as well.

Romain13700 commented 8 months ago

Hello, same for me. After the last update the other sensor works but the main one is grayed out... IMG_20240201_095136.jpg

drgreenbaum commented 7 months ago

I have the same error!

01ste02 commented 7 months ago

I seem to have found the solution to this problem. Make sure that none of the maps or room names in the electrolux app contain spaces. After I removed the spaces from my map name, I ran the service vacuum.start and then the vacuum started and was no longer greyed out.

Can anyone verify that this solves the problem? I also noticed that UTF-8 names in maps and rooms are not an issue.

michaelfuncke commented 7 months ago

I have spaces in map as well as room names and my entity has never been unavailable.

01ste02 commented 7 months ago

Then I was maybe mistaken in my analysis. It was based on my logs being full of the following stacktrace after "could not retrieve data" from this plugin. `This error originated from a custom integration.

Logger: homeassistant Source: custom_components/purei9/vacuum.py:129 Integration: Pure i9 (documentation, issues) First occurred: February 17, 2024 at 22:31:31 (3654 occurrences) Last logged: 12:30:36

Error doing job: Task exception was never retrieved Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 256, in _handle_refresh_interval await self._async_refresh(log_failures=True, scheduled=True) File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 412, in _async_refresh self.async_update_listeners() File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 183, in async_update_listeners update_callback() File "/config/custom_components/purei9/vacuum.py", line 226, in _handle_coordinator_update self.async_write_ha_state() File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 989, in async_write_ha_state self._async_write_ha_state() File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1110, in _async_write_ha_state state, attr, capabilities, shadowed_attr = self.async_calculate_state() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1050, in async_calculate_state attr.update(self.extra_state_attributes or {}) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/config/custom_components/purei9/vacuum.py", line 129, in extra_state_attributes "maps": ", ".join([_map["name"] for _map in self._params.maps]), ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ TypeError: sequence item 2: expected str instance, NoneType found `

Maybe I stumbled upon some other bug, or the solution might simply have been to run the vacuum.start service?

Brorssonn1 commented 7 months ago

My vacuum entity has been unavalible since the update. I just removed spaces. And within seconds vacuum entity was back. (Without sending vacuum.star)

cederfelt commented 7 months ago

I removed spaces and reloaded HA and now it is back.

VidFerris commented 7 months ago

I can confirm that removing spaces in the strings for zone names in the Electrolux app also solved this problem for me, with the entity returning as it behaved previously within Home Assistant. I imagine there's a string not being sanitised/escaped somewhere. It's interesting that @michaelfuncke is reporting this isn't an issue on his instance - if you can share a screenshot of the relevant zones within the attributes pane (similar to the one below) it might help ID the root cause?

image

Ekman commented 7 months ago

I have released a new version 1.5.1 that should fix this.

Thanks for everyone commenting and helping me problem-solve. Please know that I'm aware and constantly seeing these issues, even if I don't have the time to respond immediately. I will eventually solve as much as possible when my schedule allows it.