Fixed undesired sunset detection reset behavior #4
Squashed commit of the following: commit 733c4fb387649d58621a86ff483c3c42c787c58d Author: Ashish D'Souza <sudouser512@gmail.com> Date: Tue Dec 5 21:37:21 2023 -0600 Fixed sunset detection reset behavior commit c581ea62d59bd21e4f024bf50578f75338aa91c5 Author: Ashish D'Souza <sudouser512@gmail.com> Date: Tue Dec 5 21:35:10 2023 -0600 Updated config.yaml to reflect regular state
This commit is contained in:
parent
70a5c983ea
commit
ce1497cf86
|
@ -65,7 +65,7 @@ cameras:
|
||||||
output_args:
|
output_args:
|
||||||
record: preset-record-generic-audio-aac # Record with aac audio
|
record: preset-record-generic-audio-aac # Record with aac audio
|
||||||
detect:
|
detect:
|
||||||
enabled: true
|
enabled: false
|
||||||
width: 1920
|
width: 1920
|
||||||
height: 1080
|
height: 1080
|
||||||
motion:
|
motion:
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
import json
|
import json
|
||||||
|
import traceback
|
||||||
from time import sleep
|
from time import sleep
|
||||||
from threading import Thread
|
from threading import Thread
|
||||||
from datetime import datetime, time, timedelta
|
from datetime import datetime, time, timedelta
|
||||||
|
@ -22,8 +23,8 @@ def get_sunset() -> datetime:
|
||||||
|
|
||||||
astronomical_json = json.loads(ipgeolocation_api_response.content)
|
astronomical_json = json.loads(ipgeolocation_api_response.content)
|
||||||
sunset_time = datetime.strptime(astronomical_json['sunset'], '%H:%M').time()
|
sunset_time = datetime.strptime(astronomical_json['sunset'], '%H:%M').time()
|
||||||
except Exception as e:
|
except Exception:
|
||||||
print(e, file=sys.stderr)
|
traceback.print_exc()
|
||||||
sunset_time = time(20, 00, 00)
|
sunset_time = time(20, 00, 00)
|
||||||
finally:
|
finally:
|
||||||
if sunset_time < datetime.now().time():
|
if sunset_time < datetime.now().time():
|
||||||
|
@ -32,7 +33,7 @@ def get_sunset() -> datetime:
|
||||||
return datetime.combine(sunset_date, sunset_time)
|
return datetime.combine(sunset_date, sunset_time)
|
||||||
|
|
||||||
|
|
||||||
def reset_all_camera_detection_at_sunset():
|
def reset_all_camera_detection_at_sunset() -> None:
|
||||||
while True:
|
while True:
|
||||||
try:
|
try:
|
||||||
sunset = get_sunset()
|
sunset = get_sunset()
|
||||||
|
@ -40,14 +41,19 @@ def reset_all_camera_detection_at_sunset():
|
||||||
seconds_until_sunset = (sunset - datetime.now()).total_seconds()
|
seconds_until_sunset = (sunset - datetime.now()).total_seconds()
|
||||||
sleep(seconds_until_sunset)
|
sleep(seconds_until_sunset)
|
||||||
|
|
||||||
# Get all camera names
|
# Get names of cameras with detection enabled in configuration
|
||||||
frigate_api_response = requests.get('http://frigate:5000/api/config')
|
frigate_api_response = requests.get('http://frigate:5000/api/config')
|
||||||
frigate_api_response.raise_for_status()
|
frigate_api_response.raise_for_status()
|
||||||
all_camera_names = json.loads(frigate_api_response.content)['cameras'].keys()
|
|
||||||
for camera_name in all_camera_names:
|
frigate_camera_config = json.loads(frigate_api_response.content)['cameras']
|
||||||
|
for camera_name in frigate_camera_config:
|
||||||
|
camera_enabled = frigate_camera_config[camera_name].get('enabled', True)
|
||||||
|
detection_enabled = frigate_camera_config[camera_name].get('detect', {}).get('enabled', True)
|
||||||
|
|
||||||
|
if camera_enabled and detection_enabled:
|
||||||
set_camera_detection(camera_name, True)
|
set_camera_detection(camera_name, True)
|
||||||
except Exception as e:
|
except Exception:
|
||||||
print(e, file=sys.stderr)
|
traceback.print_exc()
|
||||||
|
|
||||||
|
|
||||||
def set_camera_detection(camera: str, value: bool, delay: int = 0) -> None:
|
def set_camera_detection(camera: str, value: bool, delay: int = 0) -> None:
|
||||||
|
|
Loading…
Reference in New Issue