core: Sudden neato connection error no Vacuum entity created

Home Assistant release with the issue:

arch | x86_64


dev | false docker | true hassio | false os_name | Linux python_version | 3.7.4 timezone | America/Chicago version | 0.102.2 virtualenv | false

Last working Home Assistant release (if known): 0.102.3

Operating environment (Hass.io/Docker/Windows/etc.): home-assistant docker (not hass) running on Unraid

Integration: https://www.home-assistant.io/integrations/neato/

Description of problem: After restart yesterday HA will not create the vacuum entity for neato, it creates the battery, floor map and schedule status switch fine.

Problem-relevant configuration.yaml entries and (fill out even if it seems unimportant): Using the integration from configuration>> integration. After deleting and reconnecting it connects fine just does not show my robot. the Neato IOS app work fine.

Traceback (if applicable): 2019-11-29 17:36:57 WARNING (MainThread) [homeassistant.components.vacuum] Setup of platform neato is taking over 10 seconds. 2019-11-29 17:36:57 ERROR (SyncWorker_12) [homeassistant.components.neato.vacuum] Neato vacuum connection error: Unable to communicate with robot 2019-11-29 17:36:57 ERROR (MainThread) [homeassistant.core] Error doing job: Task exception was never retrieved Traceback (most recent call last): File “/usr/src/homeassistant/homeassistant/helpers/entity_platform.py”, line 316, in _async_add_entity device_info = entity.device_info File “/usr/src/homeassistant/homeassistant/components/neato/vacuum.py”, line 329, in device_info “manufacturer”: self._robot_stats[“data”][“mfg_name”], TypeError: ‘NoneType’ object is not subscriptable

Additional information: Been working great last 2-3 month I have had the robot. Suddenly its now not creating the vacuum entity.

About this issue

  • Original URL
  • State: closed
  • Created 5 years ago
  • Comments: 22 (16 by maintainers)

Most upvoted comments

All, We’ve received the request from @newAM. Thank you Alex for contacting us, let me reply here.

We’ve investigated what you are experiencing, and saw that with some firmware and under certain conditions it is possible that data sent from the robot gets corrupted. When this happens, an API call results in a 504 Gateway Timeout error as the data is filtered on servers and the client never receives a response.

We’ve found a way to mitigate this server-side, and have just deployed a fix. If what you are experiencing is linked to our findings, this should fix it. Please tell us if this solves your issues.

Also, even though this has nothing to do with the issue at hand, good call on not using getRobotInfo ^^_

Thank you for your input!

Best, r.

It looks like HA has the fix in the next release anyway. The Neato API service side fix above did not fix my issue when I restart HA. When I get home I will reboot the robot, reset HA and see what happens.

@faspina I do not have this issue personally so seems it may be impacting some of neatos servers but not all.

Perhaps neato is not aware of this then? I found their contact email in the footer of the API reference and sent them an email asking if they are aware out the outage, and if there is an ETA on resolution from their side. I’ll post another comment if I hear back from them.

Did some debug, looks like neato is having some problems after all.

from pybotvac import Account
import json

for robot in Account("REDACTED", "REDACTED").robots:
    print(f"{robot=}")
    print(f"{robot.get_robot_state()=}")
    print(f"{robot.get_robot_info()=}")
    print(f"{json.dumps(robot.state, indent=4)=}")
robot=<pybotvac.robot.Robot object at 0x7fe15e63be50>
robot.get_robot_state()=<Response [200]>
Traceback (most recent call last):
  File "/usr/local/lib/python3.8/dist-packages/pybotvac/robot.py", line 66, in _message
    response.raise_for_status()
  File "/usr/lib/python3/dist-packages/requests/models.py", line 935, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 504 Server Error: Gateway Timeout for url: https://nucleo.neatocloud.com/vendors/neato/robots/REDACTED/messages

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "./test.py", line 8, in <module>
    print(f"{robot.get_robot_info()=}")
  File "/usr/local/lib/python3.8/dist-packages/pybotvac/robot.py", line 216, in get_robot_info
    return self._message({'reqId': "1", 'cmd': "getRobotInfo"})
  File "/usr/local/lib/python3.8/dist-packages/pybotvac/robot.py", line 69, in _message
    raise NeatoRobotException("Unable to communicate with robot")
pybotvac.exceptions.NeatoRobotException: Unable to communicate with robot