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
 
 #!/usr/bin/env python3
 
+hostname = 'kiosk.house'
+pages_dir = "/var/www/kiosk/pages"
+
 refresh_period_sec = 22.0
 render_period_sec = 30.0
 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
 
 seconds_per_minute = 60
 seconds_per_hour = seconds_per_minute * 60
index 038e315c48144435255cec9720e1b90be0e731fa..302e793efda2b5e5ae968a38ffcaa8adab22e1a0 100644 (file)
@@ -2,7 +2,7 @@
 
 import os
 import time
 
 import os
 import time
-from typing import Dict, List
+from typing import Dict
 
 import constants
 import file_writer
 
 import constants
 import file_writer
@@ -61,27 +61,31 @@ class periodic_health_renderer(renderer.debuggable_abstaining_renderer):
 
             now = time.time()
             n = 0
 
             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
                 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(
                     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:
                 else:
+                    # BAD!
                     f.write(
                     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.")
                 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:
                 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',
       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) {
         xhr.onload =
           function() {
             if (xhr.status === 200) {
@@ -293,6 +293,7 @@ def emit_wrapped(f, filename) -> None:
         % (
             bgcolor,
             constants.refresh_period_sec * 1000,
         % (
             bgcolor,
             constants.refresh_period_sec * 1000,
+            constants.hostname,
             bgcolor,
             filename,
             filename,
             bgcolor,
             filename,
             filename,
@@ -316,7 +317,7 @@ def thread_invoke_renderers() -> None:
             delta = time.time() - now
             if delta > 1.0:
                 print(
             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..."
                 )
         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
 import os
 import random
 import re
-from typing import List, Dict, Set
+from typing import Dict, Set
 
 
+import constants
 import file_writer
 import renderer
 
 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"""
 
 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(
         [
 
     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.
         """
         """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:
             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(
                     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
                         )
                         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":
 
     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":
         elif state == "closed":
-            return "/icons/garage_closed.png"
+            return "/kiosk/pages/images/garage_closed.png"
         elif state == "opening":
         elif state == "opening":
-            return "/icons/garage_opening.png"
+            return "/kiosk/pages/images/garage_opening.png"
         elif state == "closing":
         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."
 
         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(
 
                 # 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])
                 )
 
                     % self.pick_icon(conditions[date], rain[date], snow[date])
                 )