X-Git-Url: https://wannabe.guru.org/gitweb/?a=blobdiff_plain;f=smart_home%2Flights.py;h=64f2105ffe8a4de0864e95a14d2b05703010a2bb;hb=0df075ce2ba86c529fe6fb73b4058c5cf20ff94c;hp=dd211eb13cdb23361cc17e9129bfcf613dbb154e;hpb=957c962294cde93c4c649ed18dedd16df071878d;p=python_utils.git diff --git a/smart_home/lights.py b/smart_home/lights.py index dd211eb..64f2105 100644 --- a/smart_home/lights.py +++ b/smart_home/lights.py @@ -46,14 +46,16 @@ def tplink_light_command(command: str) -> bool: result = os.system(command) signal = result & 0xFF if signal != 0: - logger.warning(f'{command} died with signal {signal}') - logging_utils.hlog("%s died with signal %d" % (command, signal)) + msg = f'{command} died with signal {signal}' + logger.warning(msg) + logging_utils.hlog(msg) return False else: exit_value = result >> 8 if exit_value != 0: - logger.warning(f'{command} failed, exited {exit_value}') - logging_utils.hlog("%s failed, exit %d" % (command, exit_value)) + msg = f'{command} failed, exited {exit_value}' + logger.warning(msg) + logging_utils.hlog(msg) return False logger.debug(f'{command} succeeded.') return True @@ -318,7 +320,10 @@ class TPLinkLight(BaseLight): @overrides def is_on(self) -> bool: - return self.get_on_duration_seconds() > 0 + self.info = self.get_info() + if self.info is None: + raise Exception('Unable to get info?') + return self.info.get("relay_state", 0) == 1 @overrides def is_off(self) -> bool: @@ -334,10 +339,12 @@ class TPLinkLight(BaseLight): def get_info(self) -> Optional[Dict]: cmd = self.get_cmdline() + "-c info" out = subprocess.getoutput(cmd) + logger.debug(f'RAW OUT> {out}') out = re.sub("Sent:.*\n", "", out) out = re.sub("Received: *", "", out) try: self.info = json.loads(out)["system"]["get_sysinfo"] + logger.debug(json.dumps(self.info, indent=4, sort_keys=True)) self.info_ts = datetime.datetime.now() return self.info except Exception as e: