FIXED: Ecovacs Deebot 2019 & OZMO Series - Working Library

Ciao Mi puoi dire esattamente cosa fare per selezionare e pulire solo le stanze selezionate? Ho gia la card funzionante (Grazie per tutto il lavoro svolto) Ho solo bisogno di far funzionare la selezione delle stanza…

Hi guys,

i’m trying to use the Andrea Liosi custom component with deebot ozmo 950.
I configured configuration.yaml following instructions on github but I receive an error and no entity is showed in HA.
In log file I see a Vacuum inizialized in debug mode but checking registers in HA there is:

deebot: Error on device update!
17:28:27 – Aspirapolvere (ERROR)

Logger: homeassistant.components.vacuum
Source: custom_components/deebot/vacuum.py:224
Integration: Aspirapolvere ([documentation](https://www.home-assistant.io/integrations/vacuum), [issues](https://github.com/home-assistant/home-assistant/issues?q=is%3Aissue+is%3Aopen+label%3A%22integration%3A+vacuum%22))
First occurred: 17:28:27 (1 occurrences)
Last logged: 17:28:27

deebot: Error on device update!

Traceback (most recent call last): 
File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 322, in _async_add_entity await entity.async_device_update(warning=False) 
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 470, in async_device_update await self.async_update()
File "/config/custom_components/deebot/vacuum.py", line 224, in async_update await self.hass.async_add_executor_job(self.device.request_all_statuses)
File "/usr/local/lib/python3.7/concurrent/futures/thread.py", line 57, in run result = self.fn(*self.args, **self.kwargs)
File "/usr/local/lib/python3.7/site-packages/deebotozmo/__init__.py", line 664, in request_all_statuses self.refresh_components()
File "/usr/local/lib/python3.7/site-packages/deebotozmo/__init__.py", line 642, in refresh_components self.exc_command('getCachedMapInfo')
File "/usr/local/lib/python3.7/site-packages/deebotozmo/__init__.py", line 714, in exc_command self.send_command(VacBotCommand(action, params))
File "/usr/local/lib/python3.7/site-packages/deebotozmo/__init__.py", line 718, in send_command self.iotmq.send_command(action, self._vacuum_address()) #IOTMQ devices need the full action for additional parsing
File "/usr/local/lib/python3.7/site-packages/deebotozmo/__init__.py", line 884, in send_command self._handle_ctl_api(action, self.__call_iotdevmanager_api(c ,verify_ssl=self.verify_ssl ))
File "/usr/local/lib/python3.7/site-packages/deebotozmo/__init__.py", line 1001, in _handle_ctl_api s(resp)
File "/usr/local/lib/python3.7/site-packages/deebotozmo/__init__.py", line 466, in _handle_ctl getattr(self, method)(ctl)
File "/usr/local/lib/python3.7/site-packages/deebotozmo/__init__.py", line 548, in _handle_cached_map mapid = response['info'][0]['mid']
IndexError: list index out of range

Any idea what is missing?

Thank for any suggestion

OK, I found that something was not working with duckdns and HA was not connecting to Deebot.
Restarted everything and now is working.

I get the same kind of errors. How did you fix it? Just restarting HA doesn’t work for me.
I keep getting:

Setup of vacuum platform deebot is taking over 10 seconds.

deebot: Error on device update!
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 322, in _async_add_entity
    await entity.async_device_update(warning=False)
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 470, in async_device_update
    await self.async_update()
  File "/config/custom_components/deebot/vacuum.py", line 224, in async_update
    await self.hass.async_add_executor_job(self.device.request_all_statuses)
  File "/usr/local/lib/python3.7/concurrent/futures/thread.py", line 57, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/usr/local/lib/python3.7/site-packages/deebotozmo/__init__.py", line 664, in request_all_statuses
    self.refresh_components()
  File "/usr/local/lib/python3.7/site-packages/deebotozmo/__init__.py", line 642, in refresh_components
    self.exc_command('getCachedMapInfo')
  File "/usr/local/lib/python3.7/site-packages/deebotozmo/__init__.py", line 714, in exc_command
    self.send_command(VacBotCommand(action, params))
  File "/usr/local/lib/python3.7/site-packages/deebotozmo/__init__.py", line 718, in send_command
    self.iotmq.send_command(action, self._vacuum_address())  #IOTMQ devices need the full action for additional parsing
  File "/usr/local/lib/python3.7/site-packages/deebotozmo/__init__.py", line 884, in send_command
    self._handle_ctl_api(action, self.__call_iotdevmanager_api(c ,verify_ssl=self.verify_ssl ))
  File "/usr/local/lib/python3.7/site-packages/deebotozmo/__init__.py", line 1001, in _handle_ctl_api
    s(resp)
  File "/usr/local/lib/python3.7/site-packages/deebotozmo/__init__.py", line 466, in _handle_ctl
    getattr(self, method)(ctl)
  File "/usr/local/lib/python3.7/site-packages/deebotozmo/__init__.py", line 548, in _handle_cached_map
    mapid = response['info'][0]['mid']
IndexError: list index out of range

Funny thing is that only version 1.1 is working perfectly with my Deebot Ozmo 950 (although no waterlevels).

Hi Stefano,

Tx for sharing your implementation.

Quick question. There are two variables in your code which I’m having problems with
valuestanze in the line var stanze = states['input_text.valuestanze'].state; which is throwing this error on the UI
ButtonCardJSTemplateError: TypeError: Cannot read property 'state' of undefined in 'var rooms = states['input_text.valuerooms'].state; rooms = rooms.substring(0,rooms.length - 1)...'

and idstanze in the line {{-states('input_text.idstanze')[:-1]}}
which is not used anywhere else…

Can you please help me with resolving the above.

Update: 15-May
Got rid of the UI error by defining input_text.valuestanze but we seem to be missing a logic to update these two input_text variables (idstanze and valuestanze).

Same problem, did you solve it?

Just managed to get rid of the error… see my update above. but there is still some things missing I think.

Where and how you defined input_text. valuestanze?

You need to define the 2 input_text (idstanze and valuestanze) under the input_text section…


input_text:
   .....

I can’t find any “input_text:” section inside the card, can you give me an example of how and where to insert the values ​​please?
These are my rooms

stanze

Thanks!

Try this in the yaml file which you put the other portions of the code (not in the card).
input_text:
valuerooms:
idrooms:

Hey Stefano,

Are you able to post the code which update the idstanze and valuestanze variables?

Hi Stefano,
I would also be interested in solving this problem

writing in the yaml (where input_boolean are shown) the code:
input_text:
valuestanze:
idstanze:
the card shows the message “stanze da pulire: unknow”

Stefano, only you can help us solve and understand the error!
We are waiting for you
Thanks in advance

I can’t even see the brush data and the status of the vacuum cleaner in the xiaomi vaacum card.
And I don’t even see the regulation of the fans and the water … do you see them?

Yes. You should use the updated js file posted by @Stefano.

Done, but I don’t see the data.

@Veuchez Go to the folder where the js is and delete the xiaomi-vacuum-card.js.gz file. HA loads the .gz file and not the .js file to reduce the network traffic. I tried to zip the updated .js file and replace the .gz file but it did not work, so ended up deleting the .gz file.

Once you do this refresh the browser a few times and it should work.

@sanathdw
With this solution it works partially and only via the web, from the app it does not work.
I don’t see the status via the web or from the app.
Do you see the buttons for adjusting the fans and water on the card?

Yes. It works fine for me.

@sanathdw
Do you see the buttons for adjusting the fans and water on the card?