X-Git-Url: https://wannabe.guru.org/gitweb/?a=blobdiff_plain;f=myq_renderer.py;h=ebfac233927a8038cda3daca83a2fe23fb984d78;hb=addd4980077f6e3857c5c035b49784dc3ceca49a;hp=4be8deeb28f59f5a8e219463f20134ed42d07b9a;hpb=c06bfef53f70551e7920bc4facce27f47b89e2ba;p=kiosk.git diff --git a/myq_renderer.py b/myq_renderer.py index 4be8dee..ebfac23 100644 --- a/myq_renderer.py +++ b/myq_renderer.py @@ -4,21 +4,22 @@ from aiohttp import ClientSession import asyncio import datetime from dateutil.parser import parse -import pymyq -from typing import Dict, List +import pymyq # type: ignore +from typing import Dict, Optional -import constants +from pyutils.datetimes import datetime_utils + +import kiosk_constants import file_writer import renderer -import secrets -import utils +import kiosk_secrets as secrets -class garage_door_renderer(renderer.debuggable_abstaining_renderer): +class garage_door_renderer(renderer.abstaining_renderer): def __init__(self, name_to_timeout_dict: Dict[str, int]) -> None: - super(garage_door_renderer, self).__init__(name_to_timeout_dict, False) - self.doors = None - self.last_update = None + super().__init__(name_to_timeout_dict) + self.doors: Optional[Dict] = None + self.last_update: Optional[datetime.datetime] = None def debug_prefix(self) -> str: return "myq" @@ -30,7 +31,7 @@ class garage_door_renderer(renderer.debuggable_abstaining_renderer): elif key == "Update Page": return self.update_page() else: - raise error("Unknown operaiton") + raise Exception("Unknown operaiton") async def poll_myq(self) -> bool: async with ClientSession() as websession: @@ -38,10 +39,11 @@ class garage_door_renderer(renderer.debuggable_abstaining_renderer): secrets.myq_username, secrets.myq_password, websession ) self.doors = myq.devices + assert(self.doors is not None) return len(self.doors) > 0 def update_page(self) -> bool: - with file_writer.file_writer(constants.myq_pagename) as f: + with file_writer.file_writer(kiosk_constants.myq_pagename) as f: f.write( f"""

Garage Door Status

@@ -52,12 +54,12 @@ class garage_door_renderer(renderer.debuggable_abstaining_renderer): """ ) html = self.do_door("Near House") - if html == None: + if html is None: return False f.write(html) html = self.do_door("Middle Door") - if html == None: + if html is None: return False f.write(html) f.write( @@ -69,17 +71,19 @@ class garage_door_renderer(renderer.debuggable_abstaining_renderer): def get_state_icon(self, state: str) -> str: if state == "open": - return "/icons/garage_open.png" + return "/kiosk/images/garage_open.png" elif state == "closed": - return "/icons/garage_closed.png" + return "/kiosk/images/garage_closed.png" elif state == "opening": - return "/icons/garage_opening.png" + return "/kiosk/images/garage_opening.png" elif state == "closing": - return "/icons/garage_closing.png" + return "/kiosk/images/garage_closing.png" else: return str(state) + ", an unknown state for the door." - def do_door(self, name: str) -> str: + def do_door(self, name: str) -> Optional[str]: + if self.doors is None: + return None for key in self.doors: door = self.doors[key] if door.name == name: @@ -94,7 +98,7 @@ class garage_door_renderer(renderer.debuggable_abstaining_renderer): delta = (now - ts).total_seconds() now = datetime.datetime.now() is_night = now.hour <= 7 or now.hour >= 21 - duration = utils.describe_duration_briefly(delta) + duration = datetime_utils.describe_duration_briefly(int(delta)) width = 0 if is_night and door.state == "open": color = "border-color: #ff0000;"