More cleanup.
[kiosk.git] / camera_trigger.py
index 620a5b2fd62f27587cac6c096583eb94f42e90a5..41dc809c300b844b4289acabc2ed3cbe1638e845 100644 (file)
@@ -4,7 +4,7 @@ from datetime import datetime
 import glob
 import os
 import time
-from typing import List, Tuple
+from typing import List, Tuple, Optional
 
 import trigger
 import utils
@@ -15,20 +15,23 @@ class any_camera_trigger(trigger.trigger):
         self.triggers_in_the_past_seven_min = {
             "driveway": 0,
             "frontdoor": 0,
+            "doorbell": 0,
             "cabin_driveway": 0,
         }
         self.last_trigger_timestamp = {
             "driveway": 0,
             "frontdoor": 0,
+            "doorbell": 0,
             "cabin_driveway": 0,
         }
 
     def choose_priority(self, camera: str, age: int) -> int:
         """Based on the camera name and last trigger age, compute priority."""
         base_priority_by_camera = {
-            "driveway": 1,
+            "driveway": 3,
             "frontdoor": 2,
-            "cabin_driveway": 1,
+            "doorbell": 1,
+            "cabin_driveway": 3,
         }
         priority = base_priority_by_camera[camera]
         if age < 10:
@@ -39,11 +42,11 @@ class any_camera_trigger(trigger.trigger):
             priority += trigger.trigger.PRIORITY_LOW
         return priority
 
-    def get_triggered_page_list(self) -> List[Tuple[str, int]]:
+    def get_triggered_page_list(self) -> Optional[List[Tuple[str, int]]]:
         """Return a list of triggered pages with priorities."""
         triggers = []
         num_cameras_with_recent_triggers = 0
-        camera_list = ["driveway", "frontdoor", "cabin_driveway"]
+        camera_list = ["driveway", "frontdoor", "doorbell", "cabin_driveway"]
 
         now = time.time()
         try:
@@ -53,16 +56,18 @@ class any_camera_trigger(trigger.trigger):
             for camera in camera_list:
                 filename = f"/timestamps/last_camera_motion_{camera}"
                 ts = os.stat(filename).st_ctime
-                if ts != self.last_trigger_timestamp[camera] and (now - ts) < 10:
-                    print("Camera: %s, age %s" % (camera, (now - ts)))
+                age = now - ts
+                if ts != self.last_trigger_timestamp[camera] and age < 10:
+                    print(f'Camera: {camera}, age {age}')
                     self.last_trigger_timestamp[camera] = ts
                     num_cameras_with_recent_triggers += 1
+
                     self.triggers_in_the_past_seven_min[camera] = 0
                     filename = f"/timestamps/camera_motion_history_{camera}"
                     with open(filename, "r") as f:
                         contents = f.readlines()
                     for x in contents:
-                        x.strip()
+                        x = x.strip()
                         age = now - int(x)
                         if age < (60 * 7):
                             self.triggers_in_the_past_seven_min[camera] += 1
@@ -78,10 +83,10 @@ class any_camera_trigger(trigger.trigger):
                         self.triggers_in_the_past_seven_min[camera] <= 4
                         or num_cameras_with_recent_triggers > 1
                     ):
-                        ts = utils.timestamp()
-                        priority = self.choose_priority(camera, age)
+                        age = now - self.last_trigger_timestamp[camera]
+                        priority = self.choose_priority(camera, int(age))
                         print(
-                            f"{ts}: ****** {camera}[{priority}] CAMERA TRIGGER ******"
+                            f"{utils.timestamp()}: *** {camera}[{priority}] CAMERA TRIGGER ***"
                         )
                         triggers.append(
                             (
@@ -90,7 +95,7 @@ class any_camera_trigger(trigger.trigger):
                             )
                         )
                     else:
-                        print(f"{ts}: Camera {camera} too spammy, squelching it")
+                        print(f"{utils.timestamp()}: Camera {camera} too spammy, squelching it")
         except Exception as e:
             print(e)
             pass