From e4273d7ea4c53d6ac08f332916fc917dbd00d085 Mon Sep 17 00:00:00 2001 From: bittles Date: Sun, 25 Dec 2022 19:18:46 -0500 Subject: [PATCH] catch messages without td in event --- custom_components/ecovacs/sucksbumper.py | 34 ++++++++++++++++-------- 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/custom_components/ecovacs/sucksbumper.py b/custom_components/ecovacs/sucksbumper.py index ae1350d..4c7237a 100644 --- a/custom_components/ecovacs/sucksbumper.py +++ b/custom_components/ecovacs/sucksbumper.py @@ -940,20 +940,32 @@ class EcoVacsXMPP(ClientXMPP): _LOGGER.debug("result from xml is :") _LOGGER.debug(result) _LOGGER.debug("end of result") - if 'td' not in result: + if 'td' in result: + result['event'] = result.pop('td') + if xml: + result.update(xml[0].attrib) + + for key in result: + if not RepresentsInt(result[key]): #Fix to handle negative int values + result[key] = stringcase.snakecase(result[key]) + + return result + + elif 'type' in result: + result['event'] = result.pop('type') + if xml: + result.update(xml[0].attrib) + + for key in result: + if not RepresentsInt(result[key]): #Fix to handle negative int values + result[key] = stringcase.snakecase(result[key]) + + return result + + else # This happens for commands with no response data, such as PlaySound return - result['event'] = result.pop('td') - if xml: - result.update(xml[0].attrib) - - for key in result: - if not RepresentsInt(result[key]): #Fix to handle negative int values - result[key] = stringcase.snakecase(result[key]) - - return result - def register_callback(self, userdata, message): self.register_handler(Callback(kind,