import logging
import json
from dateutil.parser import parse
-from typing import Dict, Optional
+from typing import Any, Dict, Optional
import requests
from pyutils.datetimes import datetime_utils
logger = logging.getLogger(__name__)
-class garage_door_renderer(renderer.abstaining_renderer):
+class ratago_renderer(renderer.abstaining_renderer):
def __init__(self, name_to_timeout_dict: Dict[str, int]) -> None:
super().__init__(name_to_timeout_dict)
self.last_update: Optional[datetime.datetime] = None
- self.doors = {
+ self.doors: Dict[str, Dict[str, Any]] = {
"cover.ratgdo_middle_door_door": {"state": "unknown"},
"cover.ratgdo_near_house_door": {"state": "unknown"},
"cover.ratgdo_shop_door": {"state": "unknown"},
raise Exception("Unknown operaiton")
def poll_home_assistant(self) -> bool:
- key = secrets.HOMEASSISTANT_API_KEY
+ key = secrets.homeassistant_api_key
headers = {
"Authorization": f"Bearer {key}",
"Content-Type": "application/json",
)
if r.ok:
j = json.loads(r.content.decode())
- logger.debug(j)
self.doors[door] = j
else:
logger.warning("Unable to get state of garage door {door}, using 'unknown'")
<TR>
"""
)
-
- html = self.do_door("cover.ratago_near_house_door")
+ html = self.do_door('cover.ratgdo_near_house_door')
if html is None:
return False
f.write(html)
- html = self.do_door("cover.ratago_middle_door_door")
+ html = self.do_door('cover.ratgdo_middle_door_door')
if html is None:
return False
f.write(html)
- html = self.do_door("cover.ratago_shop_door")
+ html = self.do_door('cover.ratgdo_shop_door')
if html is None:
return False
f.write(html)
"cover.ratgdo_near_house_door": "Near House Door",
"cover.ratgdo_shop_door": "Workshop Door",
}
- if self.doors is None:
- return None
-
friendly_name = friendly_door_names.get(name, "unknown")
- attributes = self.doors.get(name, {"state": "unknown"})
+ attributes = self.doors[name] #.get(name) #, {"state": "unknown"})
state = attributes.get("state", "unknown").lower()
since = attributes.get("last_changed", "unknown").lower()
# "last_update": "2020-07-04T18:11:34.2981419Z"
- ts = parse(since)
- tz_info = ts.tzinfo
- now = datetime.datetime.now(tz_info)
- delta = (now - ts).total_seconds()
- duration = datetime_utils.describe_duration_briefly(int(delta))
+ if since != "unknown":
+ ts = parse(since)
+ tz_info = ts.tzinfo
+ now = datetime.datetime.now(tz_info)
+ delta = (now - ts).total_seconds()
+ duration = datetime_utils.describe_duration_briefly(int(delta))
+ else:
+ duration = "unknown"
now = datetime.datetime.now()
is_night = now.hour <= 7 or now.hour >= 21
# Test
-#x = garage_door_renderer({"Test": 1})
-#x.periodic_render("Poll MyQ")
+#x = ratago_renderer({"Test": 1})
+#x.periodic_render("Poll Home Assistant")
#x.periodic_render("Update Page")