More work on generic RSS renderer base class. Make the kiosk have a countdown
[kiosk.git] / myq_renderer.py
index 333c356a6e96891a26ddf8c36f743636c785b155..91e946b9a621291046e56f4e681f2eb80ce9bd74 100644 (file)
@@ -1,5 +1,3 @@
-#!/usr/local/bin/python3.7
-
 import pymyq
 from aiohttp import ClientSession
 import asyncio
@@ -14,13 +12,15 @@ class garage_door_renderer(renderer.debuggable_abstaining_renderer):
     def __init__(self, name_to_timeout_dict):
         super(garage_door_renderer, self).__init__(name_to_timeout_dict, False)
         self.doors = None
+        self.last_update = None
 
     def debug_prefix(self):
         return "myq"
 
     def periodic_render(self, key):
         if key == "Poll MyQ":
-            asyncio.get_event_loop().run_until_complete(self.poll_myq())
+            self.last_update = datetime.datetime.now()
+            return asyncio.run(self.poll_myq())
         elif key == "Update Page":
             return self.update_page()
         else:
@@ -32,17 +32,17 @@ class garage_door_renderer(renderer.debuggable_abstaining_renderer):
                                     secrets.myq_password,
                                     websession)
             self.doors = myq.devices
+            return len(self.doors) > 0
 
     def update_page(self):
         f = file_writer.file_writer(constants.myq_pagename)
-        now = datetime.datetime.now()
         f.write("""
 <H1>Garage Door Status</H1>
 <!-- Last updated at %s -->
 <HR>
 <TABLE BORDER=0 WIDTH=99%%>
   <TR>
-""" % now)
+""" % self.last_update)
         html = self.do_door("Near House")
         if html == None:
             return False