Small autotracking changes (#9571)

* ignore web-new

* remove web-new

* catch exceptions for unsupported cameras

* don't split up large ptz movements

* fix ruff
This commit is contained in:
Josh Hawkins 2024-02-02 06:23:14 -06:00 committed by GitHub
parent 2d0864c723
commit 3df8b5829c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 26 additions and 26 deletions

3
.gitignore vendored
View File

@ -14,9 +14,6 @@ frigate/version.py
web/build web/build
web/node_modules web/node_modules
web/coverage web/coverage
web-new/build
web-new/node_modules
web-new/coverage
core core
!/web/**/*.ts !/web/**/*.ts
.idea/* .idea/*

View File

@ -734,11 +734,12 @@ class PtzAutoTracker:
and frame_time > self.ptz_metrics[camera]["ptz_stop_time"].value and frame_time > self.ptz_metrics[camera]["ptz_stop_time"].value
and not self.move_queue_locks[camera].locked() and not self.move_queue_locks[camera].locked()
): ):
# split up any large moves caused by velocity estimated movements # we can split up any large moves caused by velocity estimated movements if necessary
# get an excess amount and assign it instead of 0 below
while pan != 0 or tilt != 0 or zoom != 0: while pan != 0 or tilt != 0 or zoom != 0:
pan, pan_excess = split_value(pan) pan, _ = split_value(pan)
tilt, tilt_excess = split_value(tilt) tilt, _ = split_value(tilt)
zoom, zoom_excess = split_value(zoom, False) zoom, _ = split_value(zoom, False)
logger.debug( logger.debug(
f"{camera}: Enqueue movement for frame time: {frame_time} pan: {pan}, tilt: {tilt}, zoom: {zoom}" f"{camera}: Enqueue movement for frame time: {frame_time} pan: {pan}, tilt: {tilt}, zoom: {zoom}"
@ -746,9 +747,10 @@ class PtzAutoTracker:
move_data = (frame_time, pan, tilt, zoom) move_data = (frame_time, pan, tilt, zoom)
self.move_queues[camera].put(move_data) self.move_queues[camera].put(move_data)
pan = pan_excess # reset values to not split up large movements
tilt = tilt_excess pan = 0
zoom = zoom_excess tilt = 0
zoom = 0
def _touching_frame_edges(self, camera, box): def _touching_frame_edges(self, camera, box):
camera_config = self.config.cameras[camera] camera_config = self.config.cameras[camera]

View File

@ -528,8 +528,7 @@ class OnvifController:
except Exception: except Exception:
pass # We're unsupported, that'll be reported in the next check. pass # We're unsupported, that'll be reported in the next check.
# there doesn't seem to be an onvif standard with this optional parameter try:
# some cameras can report MoveStatus with or without PanTilt or Zoom attributes
pan_tilt_status = getattr(status.MoveStatus, "PanTilt", None) pan_tilt_status = getattr(status.MoveStatus, "PanTilt", None)
zoom_status = getattr(status.MoveStatus, "Zoom", None) zoom_status = getattr(status.MoveStatus, "Zoom", None)
@ -542,7 +541,9 @@ class OnvifController:
"IDLE", "IDLE",
"MOVING", "MOVING",
]: ]:
logger.error( raise Exception
except Exception:
logger.warning(
f"Camera {camera_name} does not support the ONVIF GetStatus method. Autotracking will not function correctly and must be disabled in your config." f"Camera {camera_name} does not support the ONVIF GetStatus method. Autotracking will not function correctly and must be disabled in your config."
) )
return return