From a483d30625eafcd93cf256e5033a460450d57af3 Mon Sep 17 00:00:00 2001 From: bittles Date: Thu, 19 Jan 2023 16:52:06 -0500 Subject: [PATCH] fix error handling, bump to 1.5.2 --- custom_components/ecovacs/manifest.json | 2 +- custom_components/ecovacs/sucks.py | 36 +++++++++++++++++++++---- 2 files changed, 32 insertions(+), 6 deletions(-) diff --git a/custom_components/ecovacs/manifest.json b/custom_components/ecovacs/manifest.json index b66e721..4434fbc 100644 --- a/custom_components/ecovacs/manifest.json +++ b/custom_components/ecovacs/manifest.json @@ -1,7 +1,7 @@ { "domain": "ecovacs", "name": "Ecovacs Bumper", - "version": "1.5.1", + "version": "1.5.2", "documentation": "https://github.com/bittles/ha_ecovacs_bumper", "issue_tracker": "https://github.com/bittles/ha_ecovacs_bumper/issues", "requirements": ["sleekxmppfs==1.4.1", "requests>=2.18", "pycryptodome>=3.4", "pycountry-convert>=0.5", "paho-mqtt>=1.4", "stringcase>=1.2"], diff --git a/custom_components/ecovacs/sucks.py b/custom_components/ecovacs/sucks.py index 8ee481b..f36fb87 100644 --- a/custom_components/ecovacs/sucks.py +++ b/custom_components/ecovacs/sucks.py @@ -106,14 +106,40 @@ class VacBot(): getattr(self, method)(ctl) def _handle_error(self, event): - if 'error' in event: - error = event['error'] - elif 'errs' in event: - error = event['errs'] - if not error == '': + if 'error' in event or 'errs' in event: + error = '' # init error var so it's available outside of first if loop + if 'error' in event: + error = event['error'] + elif 'errs' in event: + error = event['errs'] self.errorEvents.notify(error) LOGGER.error("*** error = " + error) +# if not error == '': + +""" +Errors +The bot broadcasts error codes for a number of cases. + + + +The latest error can be requested like so: + +Request +Response +However in some cases the robot sends to code 100 shortly after an error has occurred, meaning that we cannot trust the GetError request to contain the last relevant error. For example, if the robot gets stuck it broadcasts 102 HostHang, then proceeds to stop and broadcasts 100 NoError. + +Known error codes + +100 NoError: Robot is operational +101 BatteryLow: Low battery +102 HostHang: Robot is stuck +103 WheelAbnormal: Wheels are not moving as expected +104 DownSensorAbnormal: Down sensor is getting abnormal values +110 NoDustBox: Dust Bin Not installed +These codes are taken from model M81 Pro. Error codes may differ between models. +""" + def _handle_life_span(self, event): type = event['type'] try: