Init if enabled when initially disabled in config

This commit is contained in:
Josh Hawkins 2023-07-02 13:40:16 -05:00
parent e883e00c74
commit 98d534918a

View File

@ -116,10 +116,15 @@ class PtzAutoTracker:
self.required_zones = {} self.required_zones = {}
self.move_queues = {} self.move_queues = {}
self.move_threads = {} self.move_threads = {}
self.autotracker_init = {}
# if cam is set to autotrack, onvif should be set up # if cam is set to autotrack, onvif should be set up
for camera_name, cam in self.config.cameras.items(): for camera_name, cam in self.config.cameras.items():
self.autotracker_init[camera_name] = False
if cam.onvif.autotracking.enabled: if cam.onvif.autotracking.enabled:
self._autotracker_setup(cam, camera_name)
def _autotracker_setup(self, cam, camera_name):
logger.debug(f"Autotracker init for cam: {camera_name}") logger.debug(f"Autotracker init for cam: {camera_name}")
self.object_types[camera_name] = cam.onvif.autotracking.track self.object_types[camera_name] = cam.onvif.autotracking.track
@ -130,10 +135,10 @@ class PtzAutoTracker:
self.move_queues[camera_name] = queue.Queue() self.move_queues[camera_name] = queue.Queue()
if not onvif.cams[camera_name]["init"]: if not self.onvif.cams[camera_name]["init"]:
if not self.onvif._init_onvif(camera_name): if not self.onvif._init_onvif(camera_name):
return return
if not onvif.cams[camera_name]["relative_fov_supported"]: if not self.onvif.cams[camera_name]["relative_fov_supported"]:
cam.onvif.autotracking.enabled = False cam.onvif.autotracking.enabled = False
self.camera_metrics[camera_name][ self.camera_metrics[camera_name][
"ptz_autotracker_enabled" "ptz_autotracker_enabled"
@ -145,12 +150,15 @@ class PtzAutoTracker:
return return
# movement thread per camera # movement thread per camera
if not self.move_threads or not self.move_threads[camera_name]:
self.move_threads[camera_name] = threading.Thread( self.move_threads[camera_name] = threading.Thread(
target=partial(self._process_move_queue, camera_name) target=partial(self._process_move_queue, camera_name)
) )
self.move_threads[camera_name].daemon = True self.move_threads[camera_name].daemon = True
self.move_threads[camera_name].start() self.move_threads[camera_name].start()
self.autotracker_init[camera_name] = True
def _process_move_queue(self, camera): def _process_move_queue(self, camera):
while True: while True:
try: try:
@ -314,6 +322,8 @@ class PtzAutoTracker:
autotracker_config = self.config.cameras[camera].onvif.autotracking autotracker_config = self.config.cameras[camera].onvif.autotracking
if autotracker_config.enabled: if autotracker_config.enabled:
if not self.autotracker_init[camera]:
self._autotracker_setup(self.config.cameras[camera], camera)
# regularly update camera status # regularly update camera status
if self.camera_metrics[camera]["ptz_moving"].value: if self.camera_metrics[camera]["ptz_moving"].value:
self.onvif.get_camera_status(camera) self.onvif.get_camera_status(camera)