fix topic name and initial websocket state

This commit is contained in:
Josh Hawkins 2024-12-14 13:36:36 -06:00
parent a7e1ddad3d
commit 7e7fe48750
4 changed files with 28 additions and 12 deletions

View File

@ -80,8 +80,8 @@ class Dispatcher:
"snapshots": self._on_snapshots_command, "snapshots": self._on_snapshots_command,
"birdseye": self._on_birdseye_command, "birdseye": self._on_birdseye_command,
"birdseye_mode": self._on_birdseye_mode_command, "birdseye_mode": self._on_birdseye_mode_command,
"alerts": self._on_alerts_command, "review_alerts": self._on_alerts_command,
"detections": self._on_detections_command, "review_detections": self._on_detections_command,
} }
self._global_settings_handlers: dict[str, Callable] = { self._global_settings_handlers: dict[str, Callable] = {
"notifications": self._on_notification_command, "notifications": self._on_notification_command,
@ -515,7 +515,7 @@ class Dispatcher:
review_settings.alerts.enabled = False review_settings.alerts.enabled = False
self.config_updater.publish(f"config/review/{camera_name}", review_settings) self.config_updater.publish(f"config/review/{camera_name}", review_settings)
self.publish(f"{camera_name}/review/alerts/state", payload, retain=True) self.publish(f"{camera_name}/review_alerts/state", payload, retain=True)
def _on_detections_command(self, camera_name: str, payload: str) -> None: def _on_detections_command(self, camera_name: str, payload: str) -> None:
"""Callback for detections topic.""" """Callback for detections topic."""
@ -537,4 +537,4 @@ class Dispatcher:
review_settings.detections.enabled = False review_settings.detections.enabled = False
self.config_updater.publish(f"config/review/{camera_name}", review_settings) self.config_updater.publish(f"config/review/{camera_name}", review_settings)
self.publish(f"{camera_name}/review/detections/state", payload, retain=True) self.publish(f"{camera_name}/review_detections/state", payload, retain=True)

View File

@ -505,6 +505,12 @@ class FrigateConfig(FrigateBaseModel):
camera_config.onvif.autotracking.enabled_in_config = ( camera_config.onvif.autotracking.enabled_in_config = (
camera_config.onvif.autotracking.enabled camera_config.onvif.autotracking.enabled
) )
camera_config.review.alerts.enabled_in_config = (
camera_config.review.alerts.enabled
)
camera_config.review.detections.enabled_in_config = (
camera_config.review.detections.enabled
)
# Add default filters # Add default filters
object_keys = camera_config.objects.track object_keys = camera_config.objects.track

View File

@ -53,7 +53,15 @@ function useValue(): useValueReturn {
const cameraStates: WsState = {}; const cameraStates: WsState = {};
Object.entries(cameraActivity).forEach(([name, state]) => { Object.entries(cameraActivity).forEach(([name, state]) => {
const { record, detect, snapshots, audio, autotracking } = const {
record,
detect,
snapshots,
audio,
autotracking,
alerts,
detections,
} =
// @ts-expect-error we know this is correct // @ts-expect-error we know this is correct
state["config"]; state["config"];
cameraStates[`${name}/recordings/state`] = record ? "ON" : "OFF"; cameraStates[`${name}/recordings/state`] = record ? "ON" : "OFF";
@ -63,6 +71,10 @@ function useValue(): useValueReturn {
cameraStates[`${name}/ptz_autotracker/state`] = autotracking cameraStates[`${name}/ptz_autotracker/state`] = autotracking
? "ON" ? "ON"
: "OFF"; : "OFF";
cameraStates[`${name}/review_alerts/state`] = alerts ? "ON" : "OFF";
cameraStates[`${name}/review_detections/state`] = detections
? "ON"
: "OFF";
}); });
setWsState((prevState) => ({ setWsState((prevState) => ({
@ -207,7 +219,7 @@ export function useAlertsState(camera: string): {
const { const {
value: { payload }, value: { payload },
send, send,
} = useWs(`${camera}/review/alerts/state`, `${camera}/review/alerts/set`); } = useWs(`${camera}/review_alerts/state`, `${camera}/review_alerts/set`);
return { payload: payload as ToggleableSetting, send }; return { payload: payload as ToggleableSetting, send };
} }
@ -219,8 +231,8 @@ export function useDetectionsState(camera: string): {
value: { payload }, value: { payload },
send, send,
} = useWs( } = useWs(
`${camera}/review/detections/state`, `${camera}/review_detections/state`,
`${camera}/review/detections/set`, `${camera}/review_detections/set`,
); );
return { payload: payload as ToggleableSetting, send }; return { payload: payload as ToggleableSetting, send };
} }

View File

@ -261,10 +261,9 @@ export default function CameraSettingsView({
<Switch <Switch
id="alerts-enabled" id="alerts-enabled"
className="mr-3" className="mr-3"
disabled={alertsState == "OFF"}
checked={alertsState == "ON"} checked={alertsState == "ON"}
onCheckedChange={(isChecked) => { onCheckedChange={(isChecked) => {
sendAlerts(isChecked ? "OFF" : "ON"); sendAlerts(isChecked ? "ON" : "OFF");
}} }}
/> />
<div className="space-y-0.5"> <div className="space-y-0.5">
@ -276,10 +275,9 @@ export default function CameraSettingsView({
<Switch <Switch
id="detections-enabled" id="detections-enabled"
className="mr-3" className="mr-3"
disabled={detectionsState == "OFF"}
checked={detectionsState == "ON"} checked={detectionsState == "ON"}
onCheckedChange={(isChecked) => { onCheckedChange={(isChecked) => {
sendDetections(isChecked ? "OFF" : "ON"); sendDetections(isChecked ? "ON" : "OFF");
}} }}
/> />
<div className="space-y-0.5"> <div className="space-y-0.5">