mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-08-11 13:21:10 +03:00
add updater topic for autotracking
This commit is contained in:
@@ -588,6 +588,10 @@ class Dispatcher:
|
|||||||
self.ptz_metrics[camera_name].start_time.value = 0
|
self.ptz_metrics[camera_name].start_time.value = 0
|
||||||
ptz_autotracker_settings.enabled = False
|
ptz_autotracker_settings.enabled = False
|
||||||
|
|
||||||
|
self.config_updater.publish_update(
|
||||||
|
CameraConfigUpdateTopic(CameraConfigUpdateEnum.autotracking, camera_name),
|
||||||
|
ptz_autotracker_settings,
|
||||||
|
)
|
||||||
self.publish(f"{camera_name}/ptz_autotracker/state", payload, retain=True)
|
self.publish(f"{camera_name}/ptz_autotracker/state", payload, retain=True)
|
||||||
|
|
||||||
def _on_motion_contour_area_command(self, camera_name: str, payload: int) -> None:
|
def _on_motion_contour_area_command(self, camera_name: str, payload: int) -> None:
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ class CameraConfigUpdateEnum(str, Enum):
|
|||||||
add = "add" # for adding a camera
|
add = "add" # for adding a camera
|
||||||
audio = "audio"
|
audio = "audio"
|
||||||
audio_transcription = "audio_transcription"
|
audio_transcription = "audio_transcription"
|
||||||
|
autotracking = "autotracking" # ptz autotracking only, without an onvif reinit
|
||||||
birdseye = "birdseye"
|
birdseye = "birdseye"
|
||||||
detect = "detect"
|
detect = "detect"
|
||||||
enabled = "enabled"
|
enabled = "enabled"
|
||||||
@@ -145,6 +146,8 @@ class CameraConfigUpdateSubscriber:
|
|||||||
config.snapshots = updated_config
|
config.snapshots = updated_config
|
||||||
elif update_type == CameraConfigUpdateEnum.onvif:
|
elif update_type == CameraConfigUpdateEnum.onvif:
|
||||||
config.onvif = updated_config
|
config.onvif = updated_config
|
||||||
|
elif update_type == CameraConfigUpdateEnum.autotracking:
|
||||||
|
config.onvif.autotracking = updated_config
|
||||||
elif update_type == CameraConfigUpdateEnum.timestamp_style:
|
elif update_type == CameraConfigUpdateEnum.timestamp_style:
|
||||||
config.timestamp_style = updated_config
|
config.timestamp_style = updated_config
|
||||||
elif update_type == CameraConfigUpdateEnum.zones:
|
elif update_type == CameraConfigUpdateEnum.zones:
|
||||||
|
|||||||
@@ -20,6 +20,10 @@ from norfair.camera_motion import (
|
|||||||
from frigate.camera import PTZMetrics
|
from frigate.camera import PTZMetrics
|
||||||
from frigate.comms.dispatcher import Dispatcher
|
from frigate.comms.dispatcher import Dispatcher
|
||||||
from frigate.config import CameraConfig, FrigateConfig, ZoomingModeEnum
|
from frigate.config import CameraConfig, FrigateConfig, ZoomingModeEnum
|
||||||
|
from frigate.config.camera.updater import (
|
||||||
|
CameraConfigUpdateEnum,
|
||||||
|
CameraConfigUpdateSubscriber,
|
||||||
|
)
|
||||||
from frigate.const import (
|
from frigate.const import (
|
||||||
AUTOTRACKING_MAX_AREA_RATIO,
|
AUTOTRACKING_MAX_AREA_RATIO,
|
||||||
AUTOTRACKING_MAX_MOVE_METRICS,
|
AUTOTRACKING_MAX_MOVE_METRICS,
|
||||||
@@ -194,7 +198,9 @@ class PtzAutoTrackerThread(threading.Thread):
|
|||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
while not self.stop_event.wait(1):
|
while not self.stop_event.wait(1):
|
||||||
for camera, camera_config in self.config.cameras.items():
|
self.ptz_autotracker.config_subscriber.check_for_updates()
|
||||||
|
|
||||||
|
for camera, camera_config in list(self.config.cameras.items()):
|
||||||
if not camera_config.enabled:
|
if not camera_config.enabled:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
@@ -211,6 +217,7 @@ class PtzAutoTrackerThread(threading.Thread):
|
|||||||
self.ptz_autotracker.tracked_object[camera] = None
|
self.ptz_autotracker.tracked_object[camera] = None
|
||||||
self.ptz_autotracker.tracked_object_history[camera].clear()
|
self.ptz_autotracker.tracked_object_history[camera].clear()
|
||||||
|
|
||||||
|
self.ptz_autotracker.config_subscriber.stop()
|
||||||
logger.info("Exiting autotracker...")
|
logger.info("Exiting autotracker...")
|
||||||
|
|
||||||
|
|
||||||
@@ -244,6 +251,15 @@ class PtzAutoTracker:
|
|||||||
self.zoom_time: dict[str, float] = {}
|
self.zoom_time: dict[str, float] = {}
|
||||||
self.zoom_factor: dict[str, object] = {}
|
self.zoom_factor: dict[str, object] = {}
|
||||||
|
|
||||||
|
self.config_subscriber = CameraConfigUpdateSubscriber(
|
||||||
|
self.config,
|
||||||
|
self.config.cameras,
|
||||||
|
[
|
||||||
|
CameraConfigUpdateEnum.add,
|
||||||
|
CameraConfigUpdateEnum.autotracking,
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
# if cam is set to autotrack, onvif should be set up
|
# if cam is set to autotrack, onvif should be set up
|
||||||
for camera, camera_config in self.config.cameras.items():
|
for camera, camera_config in self.config.cameras.items():
|
||||||
if not camera_config.enabled:
|
if not camera_config.enabled:
|
||||||
|
|||||||
Reference in New Issue
Block a user