Move the kiosk server to another machine; changes needed to make it work there.
authorScott Gasch <[email protected]>
Mon, 1 Feb 2021 06:54:14 +0000 (22:54 -0800)
committerScott Gasch <[email protected]>
Mon, 1 Feb 2021 06:54:14 +0000 (22:54 -0800)
constants.py
health_renderer.py
kiosk.py
local_photos_mirror_renderer.py
myq_renderer.py
weather_renderer.py

index 1e79b0775e634d5330302e02372753e0701744f5..3c391d452169a3ed8d06177452f5cf86f95af5d8 100644 (file)
@@ -1,8 +1,10 @@
 #!/usr/bin/env python3
 
+hostname = 'kiosk.house'
+pages_dir = "/var/www/kiosk/pages"
+
 refresh_period_sec = 22.0
 render_period_sec = 30.0
-pages_dir = "/usr/local/export/www/kiosk/pages"
 
 seconds_per_minute = 60
 seconds_per_hour = seconds_per_minute * 60
index 038e315c48144435255cec9720e1b90be0e731fa..302e793efda2b5e5ae968a38ffcaa8adab22e1a0 100644 (file)
@@ -2,7 +2,7 @@
 
 import os
 import time
-from typing import Dict, List
+from typing import Dict
 
 import constants
 import file_writer
@@ -61,27 +61,31 @@ class periodic_health_renderer(renderer.debuggable_abstaining_renderer):
 
             now = time.time()
             n = 0
-            for x in sorted(limits):
-                ts = os.stat(x).st_mtime
+            for filepath, limit_sec in sorted(limits.items()):
+                ts = os.stat(filepath).st_mtime
                 age = now - ts
-                self.debug_print("%s -- age is %ds, limit is %ds" % (x, age, limits[x]))
-                if age < limits[x]:
+                self.debug_print(f"{filepath} -- age: {age}, limit {limit_sec}")
+                if age < limits[filepath]:
+                    # OK
                     f.write(
-                        '<TD BGCOLOR="#007010" HEIGHT=100 WIDTH=33% STYLE="text-size:60%; vertical-align: middle;">\n'
+                        '<TD BGCOLOR="#007010" HEIGHT=100 WIDTH=33% STYLE="text-size:70%; vertical-align: middle;">\n'
                     )
+                    txt_color="#ffffff"
                 else:
+                    # BAD!
                     f.write(
-                        '<TD BGCOLOR="#990000" HEIGHT=100 WIDTH=33% CLASS="invalid" STYLE="text-size:60%; vertical-align:middle;">\n'
+                        '<TD BGCOLOR="#990000" HEIGHT=100 WIDTH=33% CLASS="invalid" STYLE="text-size:70%; vertical-align:middle;">\n'
                     )
-                f.write("  <CENTER><FONT SIZE=-2>\n")
+                    txt_color="#000000"
+                f.write(f"  <CENTER><FONT SIZE=-1 COLOR={txt_color}>\n")
 
-                name = x.replace(timestamps, "")
+                name = filepath.replace(timestamps, "")
                 name = name.replace("last_", "")
                 name = name.replace("_", "&nbsp;")
                 duration = utils.describe_duration_briefly(int(age))
 
                 self.debug_print(f"{name} is {duration} old.")
-                f.write(f"{name}<BR>\n<B>{ts}</B> old.\n")
+                f.write(f"{name}<BR>\n<B>{duration}</B> old.\n")
                 f.write("</FONT></CENTER>\n</TD>\n\n")
                 n += 1
                 if n % 3 == 0:
@@ -151,5 +155,5 @@ class periodic_health_renderer(renderer.debuggable_abstaining_renderer):
         )
 
 
-# test = periodic_health_renderer({"Test", 123})
-# test.periodic_render("Test")
+#test = periodic_health_renderer({"Test", 123})
+#test.periodic_render("Test")
index ffcd7863d1a75f0a9bb67cacc3b0ace27a083322..7ffce23d6d85a4b65eb465e231a52d87355b78cc 100755 (executable)
--- a/kiosk.py
+++ b/kiosk.py
@@ -236,7 +236,7 @@ def emit_wrapped(f, filename) -> None:
       function() {
         var xhr = new XMLHttpRequest();
         xhr.open('GET',
-                 'http://wannabe.house/kiosk/pages/reload_immediately.html');
+                 'http://%s/kiosk/pages/reload_immediately.html');
         xhr.onload =
           function() {
             if (xhr.status === 200) {
@@ -293,6 +293,7 @@ def emit_wrapped(f, filename) -> None:
         % (
             bgcolor,
             constants.refresh_period_sec * 1000,
+            constants.hostname,
             bgcolor,
             filename,
             filename,
@@ -316,7 +317,7 @@ def thread_invoke_renderers() -> None:
             delta = time.time() - now
             if delta > 1.0:
                 print(
-                    f"renderer[{utils.timestamp()}]: Warning: {r.get_name()}'s rendering took {delta:%5.2f}s."
+                    f"renderer[{utils.timestamp()}]: Warning: {r.get_name()}'s rendering took {delta:5.2f}s."
                 )
         print(
             f"renderer[{utils.timestamp()}]: thread having a little break for {constants.render_period_sec}s..."
index 390d6eabef0eab0d6230ad3075e10d012c4623a7..b27a7918feba389de82897941806bda83ee6ac99 100644 (file)
@@ -3,8 +3,9 @@
 import os
 import random
 import re
-from typing import List, Dict, Set
+from typing import Dict, Set
 
+import constants
 import file_writer
 import renderer
 
@@ -12,7 +13,7 @@ import renderer
 class local_photos_mirror_renderer(renderer.debuggable_abstaining_renderer):
     """A renderer that uses a local mirror of Google photos"""
 
-    album_root_directory = "/usr/local/export/www/gphotos/albums"
+    ALBUM_ROOT_DIR = "/var/www/kiosk/pages/images/gphotos/albums"
 
     album_whitelist = frozenset(
         [
@@ -86,7 +87,7 @@ class local_photos_mirror_renderer(renderer.debuggable_abstaining_renderer):
         """Walk the filesystem looking for photos in whitelisted albums and
         keep their paths in memory.
         """
-        for root, subdirs, files in os.walk(self.album_root_directory):
+        for root, subdirs, files in os.walk(self.ALBUM_ROOT_DIR):
             last_dir = root.rsplit("/", 1)[1]
             if self.album_is_in_whitelist(last_dir):
                 for filename in files:
@@ -94,7 +95,7 @@ class local_photos_mirror_renderer(renderer.debuggable_abstaining_renderer):
                     if extension in self.extension_whitelist:
                         photo_path = os.path.join(root, filename)
                         photo_url = photo_path.replace(
-                            "/usr/local/export/www/", "http://10.0.0.18/", 1
+                            "/var/www/", f"http://{constants.hostname}/", 1
                         )
                         self.candidate_photos.add(photo_url)
         return True
index df696f1f92304ab660f94992aca5df735c44334c..0ee104b55117a002b50476ed6f6d8d196c0b6411 100644 (file)
@@ -70,13 +70,13 @@ 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/pages/images/garage_open.png"
         elif state == "closed":
-            return "/icons/garage_closed.png"
+            return "/kiosk/pages/images/garage_closed.png"
         elif state == "opening":
-            return "/icons/garage_opening.png"
+            return "/kiosk/pages/images/garage_opening.png"
         elif state == "closing":
-            return "/icons/garage_closing.png"
+            return "/kiosk/pages/images/garage_closing.png"
         else:
             return str(state) + ", an unknown state for the door."
 
index 452b06922077441d9052038d5264cd19c82044a1..46d891cf3c6497fcbd5cfdee37d0bb89c0dca7db 100644 (file)
@@ -377,7 +377,7 @@ class weather_renderer(renderer.debuggable_abstaining_renderer):
 
                 # Icon
                 f.write(
-                    '  <tr><td colspan=3 height=100><center><img src="/icons/weather/%s" height=125></center></td></tr>\n'
+                    '  <tr><td colspan=3 height=100><center><img src="/kiosk/pages/images/weather/%s" height=125></center></td></tr>\n'
                     % self.pick_icon(conditions[date], rain[date], snow[date])
                 )