Skip to content

Commit 0b51954

Browse files
committed
Refactoring
1 parent fa6712f commit 0b51954

File tree

1 file changed

+101
-83
lines changed

1 file changed

+101
-83
lines changed

core/class/frigate.class.php

Lines changed: 101 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -1177,6 +1177,7 @@ public static function getEvents($mqtt = false, $events = array(), $type = 'end'
11771177

11781178
// si data description existe, le mettre à jour aussi
11791179
if (isset($event['data']['description'])) {
1180+
log::add(__CLASS__, 'debug', "║ Mise à jour du champ recognition_description pour event ID: " . $event['id'] . ". ancienne valeur: " . json_encode($frigate->getRecognition_description()) . ", nouvelle valeur: " . json_encode($event['data']['description']));
11801181
$frigate->setRecognition_description($event['data']['description']);
11811182
}
11821183
$frigate->save();
@@ -1221,7 +1222,7 @@ private static function eventAdd($event, $eqLogicId)
12211222
"type" => $event->getType(),
12221223
"isFavorite" => $event->getIsFavorite() ?? 0,
12231224
"zones" => $event->getZones() ?? '',
1224-
"description" => $event->getRecognition_description() ?? ''
1225+
"description" => $event->getRecognition_description()
12251226
);
12261227

12271228

@@ -1743,7 +1744,7 @@ public static function showEvents()
17431744
"type" => $event->getType(),
17441745
"isFavorite" => $event->getIsFavorite() ?? 0,
17451746
"zones" => $event->getZones() ?? '',
1746-
"description" => $event->getRecognition_description() ?? ''
1747+
"description" => $event->getRecognition_description()
17471748
);
17481749
}
17491750

@@ -1985,98 +1986,120 @@ public static function generateEqStats()
19851986

19861987
public static function updateTrackedObjects($trackedObjects)
19871988
{
1988-
$type = $trackedObjects['type'];
1989-
$camera = $trackedObjects['camera'];
1990-
$id = $trackedObjects['id'];
1989+
$type = $trackedObjects['type'] ?? null;
1990+
$camera = $trackedObjects['camera'] ?? null;
1991+
$id = $trackedObjects['id'] ?? null;
1992+
19911993
log::add(__CLASS__, 'debug', "╔════════════════════════ :fg-success:UPDATE TRACKED OBJECTS:/fg: ═══════════════════");
1992-
log::add(__CLASS__, 'debug', "║ Type d'objet suivi : " . $type . " pour l'événement ID : " . $id . " sur la caméra : " . $camera);
1993-
// mettre a jour ou créer les commandes
1994+
log::add(__CLASS__, 'debug', "║ Type d'objet : $type | Événement ID : $id | Caméra : $camera");
1995+
1996+
// Vérification équipement Frigate
19941997
$frigate = frigate::byLogicalId("eqFrigateCamera_" . $camera, 'frigate');
19951998
if (!is_object($frigate)) {
1996-
log::add(__CLASS__, 'error', "Impossible de trouver l'équipement pour la caméra : " . $camera);
1999+
log::add(__CLASS__, 'error', "Équipement introuvable pour la caméra : $camera");
19972000
return;
19982001
}
2002+
19992003
$eqlogicId = $frigate->getId();
20002004
$frigateEvent = frigate_events::byEventId($id);
20012005
if (is_array($frigateEvent) && !empty($frigateEvent)) {
20022006
$frigateEvent = $frigateEvent[0];
20032007
}
2004-
log::add(__CLASS__, 'debug', "║ Json : " . json_encode($trackedObjects));
2005-
if ($type == "description") {
2006-
log::add(__CLASS__, 'debug', "║ Mise à jour de la description générée pour l'événement ID : " . $id);
2007-
// mettre à jour les commandes
2008-
$cmd = self::createCmd($eqlogicId, "Type de détection", "string", "", "info_detection_type", "", 0, null, 0);
2009-
$cmd->save();
2010-
$cmd->event("description");
2011-
$cmd->save();
20122008

2013-
$cmd = self::createCmd($eqlogicId, "description", "string", "", "info_id", "", 0, null, 0);
2014-
$cmd->save();
2015-
$cmd->event($trackedObjects['description']);
2016-
$cmd->save();
2017-
// mettre a jour la DB aussi
2018-
log::add(__CLASS__, 'debug', "║ Mise à jour de la DB pour la description générée");
2019-
if (!is_object($frigateEvent)) {
2020-
log::add(__CLASS__, 'error', "║ Impossible de trouver l'événement pour l'ID : " . $id);
2009+
if (!is_object($frigateEvent)) {
2010+
log::add(__CLASS__, 'error', "║ Événement introuvable pour l'ID : $id");
2011+
return;
2012+
}
2013+
2014+
log::add(__CLASS__, 'debug', "║ Données reçues : " . json_encode($trackedObjects));
2015+
2016+
// Mise à jour de la base de données
2017+
self::updateDatabase($frigateEvent, $type, $trackedObjects);
2018+
2019+
// Création / mise à jour des commandes Jeedom
2020+
self::updateCommands($eqlogicId, $type, $trackedObjects);
2021+
2022+
log::add(__CLASS__, 'debug', "╚════════════════════════ END UPDATE TRACKED OBJECTS ═══════════════════");
2023+
}
2024+
2025+
private static function updateDatabase($frigateEvent, $type, $trackedObjects)
2026+
{
2027+
switch ($type) {
2028+
case "description":
2029+
log::add(__CLASS__, 'debug', "║ MAJ DB → Description générée");
2030+
$frigateEvent->setRecognition_type("description");
2031+
$frigateEvent->setRecognition_description($trackedObjects['description'] ?? '');
2032+
break;
2033+
2034+
case "face":
2035+
log::add(__CLASS__, 'debug', "║ MAJ DB → Reconnaissance faciale");
2036+
$frigateEvent->setRecognition_type("face");
2037+
$frigateEvent->setRecognition_name($trackedObjects['name'] ?? '');
2038+
$frigateEvent->setRecognition_score($trackedObjects['score'] ?? '');
2039+
break;
2040+
2041+
case "lpr":
2042+
log::add(__CLASS__, 'debug', "║ MAJ DB → Plaque d’immatriculation");
2043+
$frigateEvent->setRecognition_type("lpr");
2044+
$frigateEvent->setRecognition_plate($trackedObjects['plate'] ?? '');
2045+
$frigateEvent->setRecognition_name($trackedObjects['name'] ?? '');
2046+
$frigateEvent->setRecognition_score($trackedObjects['score'] ?? '');
2047+
break;
2048+
2049+
default:
2050+
log::add(__CLASS__, 'debug', "║ Type de suivi inconnu : $type");
20212051
return;
2022-
}
2023-
$frigateEvent->setRecognition_type("description");
2024-
$frigateEvent->setRecognition_description($trackedObjects['description']);
2025-
$frigateEvent->save();
2026-
} elseif ($type == "face") {
2027-
log::add(__CLASS__, 'debug', "║ Mise à jour de la reconnaissance faciale pour l'événement ID : " . $id);
2028-
// mettre à jour les commandes
2029-
$cmd = self::createCmd($eqlogicId, "Type de détection", "string", "", "info_detection_type", "", 0, null, 0);
2030-
$cmd->save();
2031-
$cmd->event("face");
2032-
$cmd->save();
2052+
}
20332053

2034-
$cmd = self::createCmd($eqlogicId, "Nom", "string", "", "info_detection_name", "", 0, null, 0);
2035-
$cmd->save();
2036-
$cmd->event($trackedObjects['name']);
2037-
$cmd->save();
2054+
$frigateEvent->save();
2055+
}
2056+
private static function updateCommands($eqlogicId, $type, $trackedObjects)
2057+
{
2058+
log::add(__CLASS__, 'debug', "║ MAJ Commandes pour le type : $type");
20382059

2039-
$cmd = self::createCmd($eqlogicId, "Score de detection", "numeric", "%", "info_detection_score", "", 0, null, 0);
2040-
$cmd->save();
2041-
$cmd->event($trackedObjects['score']);
2042-
$cmd->save();
2043-
// mettre a jour la DB aussi
2044-
log::add(__CLASS__, 'debug', "║ Mise à jour de la DB pour la reconnaissance faciale");
2045-
$frigateEvent->setRecognition_type("face");
2046-
$frigateEvent->setRecognition_name($trackedObjects['name']);
2047-
$frigateEvent->setRecognition_score($trackedObjects['score']);
2048-
$frigateEvent->save();
2049-
} elseif ($type == "lpr") {
2050-
log::add(__CLASS__, 'debug', "║ Mise à jour de la reconnaissance de plaque d'immatriculation pour l'événement ID : " . $id);
2051-
// mettre à jour les commandes
2052-
$cmd = self::createCmd($eqlogicId, "Type de détection", "string", "", "info_detection_type", "", 0, null, 0);
2053-
$cmd->save();
2054-
$cmd->event("lpr");
2055-
$cmd->save();
2060+
// Commande de type
2061+
$cmd = self::createCmd($eqlogicId, "Type de détection", "string", "", "info_detection_type", "", 0, null, 0);
2062+
$cmd->save();
2063+
$cmd->event($type);
2064+
$cmd->save();
20562065

2057-
$cmd = self::createCmd($eqlogicId, "Plaque d'immatriculation", "string", "", "info_plate", "", 0, null, 0);
2058-
$cmd->save();
2059-
$cmd->event($trackedObjects['plate']);
2060-
$cmd->save();
2066+
switch ($type) {
2067+
case "description":
2068+
$cmd = self::createCmd($eqlogicId, "description", "string", "", "info_description", "", 0, null, 0);
2069+
$cmd->save();
2070+
$cmd->event($trackedObjects['description'] ?? '');
2071+
$cmd->save();
2072+
break;
20612073

2062-
$cmd = self::createCmd($eqlogicId, "Nom", "string", "", "info_detection_name", "", 0, null, 0);
2063-
$cmd->save();
2064-
$cmd->event($trackedObjects['name']);
2065-
$cmd->save();
2074+
case "face":
2075+
$cmd = self::createCmd($eqlogicId, "Nom", "string", "", "info_detection_name", "", 0, null, 0);
2076+
$cmd->save();
2077+
$cmd->event($trackedObjects['name'] ?? '');
2078+
$cmd->save();
20662079

2067-
$cmd = self::createCmd($eqlogicId, "Score de detection", "numeric", "%", "info_detection_score", "", 0, null, 0);
2068-
$cmd->save();
2069-
$cmd->event($trackedObjects['score']);
2070-
$cmd->save();
2071-
// mettre a jour la DB aussi
2072-
log::add(__CLASS__, 'debug', "║ Mise à jour de la DB pour la reconnaissance de plaque d'immatriculation");
2073-
$frigateEvent->setRecognition_type("lpr");
2074-
$frigateEvent->setRecognition_plate($trackedObjects['plate']);
2075-
$frigateEvent->setRecognition_name($trackedObjects['name']);
2076-
$frigateEvent->setRecognition_score($trackedObjects['score']);
2077-
$frigateEvent->save();
2080+
$cmd = self::createCmd($eqlogicId, "Score de detection", "numeric", "%", "info_detection_score", "", 0, null, 0);
2081+
$cmd->save();
2082+
$cmd->event($trackedObjects['score'] ?? '');
2083+
$cmd->save();
2084+
break;
2085+
2086+
case "lpr":
2087+
$cmd = self::createCmd($eqlogicId, "Plaque d'immatriculation", "string", "", "info_plate", "", 0, null, 0);
2088+
$cmd->save();
2089+
$cmd->event($trackedObjects['plate'] ?? '');
2090+
$cmd->save();
2091+
2092+
$cmd = self::createCmd($eqlogicId, "Nom", "string", "", "info_detection_name", "", 0, null, 0);
2093+
$cmd->save();
2094+
$cmd->event($trackedObjects['name'] ?? '');
2095+
$cmd->save();
2096+
2097+
$cmd = self::createCmd($eqlogicId, "Score de detection", "numeric", "%", "info_detection_score", "", 0, null, 0);
2098+
$cmd->save();
2099+
$cmd->event($trackedObjects['score'] ?? '');
2100+
$cmd->save();
2101+
break;
20782102
}
2079-
log::add(__CLASS__, 'debug', "╚════════════════════════ END UPDATE TRACKED OBJECTS ═══════════════════");
20802103
}
20812104

20822105
private static function createCmd($eqLogicId, $name, $subType, $unite, $logicalId, $genericType, $isVisible = 1, $infoCmd = null, $historized = 0, $type = "info")
@@ -2568,10 +2591,7 @@ public static function majEventsCmds($event)
25682591
$cmd->save();
25692592

25702593
$cmd = self::createCmd($eqlogicId, "description", "string", "", "info_description", "", 0, null, 0);
2571-
$data = $event->getData();
2572-
$dataArray = is_array($data) ? $data : json_decode($data, true);
2573-
$description = isset($dataArray['description']) ? $dataArray['description'] : "";
2574-
$cmd->event($description);
2594+
$cmd->event($event->getRecognition_description());
25752595
$cmd->save();
25762596

25772597
$cmd = self::createCmd($eqlogicId, "id", "string", "", "info_id", "", 0, null, 0);
@@ -2769,9 +2789,7 @@ private static function executeActionNewEvent($eqLogicId, $event)
27692789
$camera = $event->getCamera();
27702790
$cameraId = eqLogic::byLogicalId("eqFrigateCamera_" . $camera, "frigate")->getId();
27712791
$label = $event->getLabel();
2772-
$data = $event->getData();
2773-
$dataArray = is_array($data) ? $data : json_decode($data, true);
2774-
$description = isset($dataArray['description']) ? $dataArray['description'] : "";
2792+
$description = $event->getRecognition_description();
27752793
$zones = $event->getZones();
27762794
$score = $event->getScore();
27772795
$type = $event->getType();

0 commit comments

Comments
 (0)