From e1208e2dfeeb7f1c325c26eea61c95ea73020b36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torbj=C3=B6rn=20Axelsson?= Date: Tue, 5 Dec 2017 10:16:25 -0800 Subject: [PATCH 1/2] Added handler for error messages from bot in VacBot class --- .gitignore | 2 ++ sucks/__init__.py | 11 +++++++++++ 2 files changed, 13 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..62cc354 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +__pycache__ +Pipfile.lock diff --git a/sucks/__init__.py b/sucks/__init__.py index 8e594af..922301e 100644 --- a/sucks/__init__.py +++ b/sucks/__init__.py @@ -142,6 +142,8 @@ class VacBot(ClientXMPP): self.clean_status = None self.charge_status = None self.battery_status = None + self.error = None + self.error_no = None def wait_until_ready(self): self.ready_flag.wait() @@ -160,6 +162,10 @@ class VacBot(ClientXMPP): self.register_handler(Callback('battery info', MatchXPath('{jabber:client}iq/{com:ctl}query/{com:ctl}ctl[@td="BatteryInfo"]'), self.handle_battery_report)) + self.register_handler(Callback('error', + MatchXPath('{jabber:client}iq/{com:ctl}query/{com:ctl}ctl[@td="error"]'), + self.handle_error)) + def handle_clean_report(self, iq): self.clean_status = iq.find('{com:ctl}query/{com:ctl}ctl/{com:ctl}clean').get('type') @@ -184,6 +190,11 @@ class VacBot(ClientXMPP): logging.warning("Unknown charging status '" + report + "'") logging.debug("*** charge_status =" + self.charge_status) + def handle_error(self, iq): + self.error = iq.find('{com:ctl}query/{com:ctl}ctl').get('error') + self.error_no = iq.find('{com:ctl}query/{com:ctl}ctl').get('errno') + logging.debug("*** error =" + self.error_no + " " + self.error) + def send_command(self, xml): c = self.wrap_command(xml) c.send() From 60a74e6549b23190495e7ac4bfa32dda553bd125 Mon Sep 17 00:00:00 2001 From: William Pietri Date: Tue, 5 Dec 2017 14:51:11 -0800 Subject: [PATCH 2/2] Minor tidying and removing unused instance variables. --- sucks/__init__.py | 37 +++++++++++++++---------------------- 1 file changed, 15 insertions(+), 22 deletions(-) diff --git a/sucks/__init__.py b/sucks/__init__.py index 922301e..593cb78 100644 --- a/sucks/__init__.py +++ b/sucks/__init__.py @@ -141,9 +141,6 @@ class VacBot(ClientXMPP): self.ready_flag = Event() self.clean_status = None self.charge_status = None - self.battery_status = None - self.error = None - self.error_no = None def wait_until_ready(self): self.ready_flag.wait() @@ -153,30 +150,26 @@ class VacBot(ClientXMPP): logging.debug("event = {}".format(event)) self.ready_flag.set() - self.register_handler(Callback('clean report', - MatchXPath('{jabber:client}iq/{com:ctl}query/{com:ctl}ctl[@td="CleanReport"]'), - self.handle_clean_report)) - self.register_handler(Callback('charge state', - MatchXPath('{jabber:client}iq/{com:ctl}query/{com:ctl}ctl[@td="ChargeState"]'), - self.handle_charge_report)) - self.register_handler(Callback('battery info', - MatchXPath('{jabber:client}iq/{com:ctl}query/{com:ctl}ctl[@td="BatteryInfo"]'), - self.handle_battery_report)) - self.register_handler(Callback('error', - MatchXPath('{jabber:client}iq/{com:ctl}query/{com:ctl}ctl[@td="error"]'), - self.handle_error)) + self.__register_callback("CleanReport", self.handle_clean_report) + self.__register_callback("ChargeState", self.handle_charge_report) + self.__register_callback("BatteryInfo", self.handle_battery_report) + self.__register_callback("error", self.handle_error) + def __register_callback(self, kind, function): + self.register_handler(Callback(kind, + MatchXPath('{jabber:client}iq/{com:ctl}query/{com:ctl}ctl[@td="' + kind + '"]'), + function)) def handle_clean_report(self, iq): self.clean_status = iq.find('{com:ctl}query/{com:ctl}ctl/{com:ctl}clean').get('type') - logging.debug("*** clean_status =" + self.clean_status) + logging.debug("*** clean_status = " + self.clean_status) def handle_battery_report(self, iq): try: - self.battery_status = float(iq.find('{com:ctl}query/{com:ctl}ctl/{com:ctl}battery').get('power')) / 100 + battery_status = float(iq.find('{com:ctl}query/{com:ctl}ctl/{com:ctl}battery').get('power')) / 100 + logging.debug("*** battery_status = {:.0%}".format(battery_status)) except ValueError: logging.warning("couldn't parse battery status " + ET.tostring(iq)) - logging.debug("*** battery_status = {:.0%}".format(self.battery_status)) def handle_charge_report(self, iq): report = iq.find('{com:ctl}query/{com:ctl}ctl/{com:ctl}charge').get('type') @@ -188,12 +181,12 @@ class VacBot(ClientXMPP): self.charge_status = 'idle' else: logging.warning("Unknown charging status '" + report + "'") - logging.debug("*** charge_status =" + self.charge_status) + logging.debug("*** charge_status = " + self.charge_status) def handle_error(self, iq): - self.error = iq.find('{com:ctl}query/{com:ctl}ctl').get('error') - self.error_no = iq.find('{com:ctl}query/{com:ctl}ctl').get('errno') - logging.debug("*** error =" + self.error_no + " " + self.error) + error = iq.find('{com:ctl}query/{com:ctl}ctl').get('error') + error_no = iq.find('{com:ctl}query/{com:ctl}ctl').get('errno') + logging.debug("*** error = " + error_no + " " + error) def send_command(self, xml): c = self.wrap_command(xml)