mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-04-10 09:07:37 +03:00
Fix MQTT count topics to deduplicate by object_id
Co-authored-by: Teagan42 <2989925+Teagan42@users.noreply.github.com>
This commit is contained in:
parent
2b288adf38
commit
bb534d81f5
@ -69,15 +69,28 @@ class CameraActivityManager:
|
||||
|
||||
# run through every zone, getting a count of objects in that zone right now
|
||||
for zone, labels in self.all_zone_labels.items():
|
||||
all_zone_objects = Counter(
|
||||
obj["label"].replace("-verified", "")
|
||||
# Deduplicate objects by object_id before counting
|
||||
# This ensures each unique object is only counted once even if it appears
|
||||
# multiple times (e.g., with custom classifications)
|
||||
zone_objects_by_id = {
|
||||
obj["id"]: obj
|
||||
for obj in all_objects
|
||||
if zone in obj["current_zones"]
|
||||
)
|
||||
active_zone_objects = Counter(
|
||||
}
|
||||
all_zone_objects = Counter(
|
||||
obj["label"].replace("-verified", "")
|
||||
for obj in zone_objects_by_id.values()
|
||||
)
|
||||
|
||||
# Same deduplication for active objects
|
||||
active_zone_objects_by_id = {
|
||||
obj["id"]: obj
|
||||
for obj in all_objects
|
||||
if zone in obj["current_zones"] and not obj["stationary"]
|
||||
}
|
||||
active_zone_objects = Counter(
|
||||
obj["label"].replace("-verified", "")
|
||||
for obj in active_zone_objects_by_id.values()
|
||||
)
|
||||
any_changed = False
|
||||
|
||||
@ -113,13 +126,21 @@ class CameraActivityManager:
|
||||
def compare_camera_activity(
|
||||
self, camera: str, new_activity: dict[str, Any]
|
||||
) -> None:
|
||||
# Deduplicate objects by object_id before counting
|
||||
# This ensures each unique object is only counted once even if it appears
|
||||
# multiple times (e.g., with custom classifications)
|
||||
objects_by_id = {obj["id"]: obj for obj in new_activity}
|
||||
all_objects = Counter(
|
||||
obj["label"].replace("-verified", "") for obj in new_activity
|
||||
obj["label"].replace("-verified", "") for obj in objects_by_id.values()
|
||||
)
|
||||
|
||||
# Same deduplication for active objects
|
||||
active_objects_by_id = {
|
||||
obj["id"]: obj for obj in new_activity if not obj["stationary"]
|
||||
}
|
||||
active_objects = Counter(
|
||||
obj["label"].replace("-verified", "")
|
||||
for obj in new_activity
|
||||
if not obj["stationary"]
|
||||
for obj in active_objects_by_id.values()
|
||||
)
|
||||
any_changed = False
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user