mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-02-19 09:27:06 +03:00
fix topic name and initial websocket state
This commit is contained in:
parent
a7e1ddad3d
commit
7e7fe48750
@ -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)
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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 };
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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">
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user