Fix MQTT count topics to deduplicate by object_id

Co-authored-by: Teagan42 <2989925+Teagan42@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot] 2026-02-16 22:52:19 +00:00
parent 2b288adf38
commit bb534d81f5

View File

@ -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