Proposition d'amélioration de la gestion des events du plugin Frigate

@sagitaz, ton plugin Frigate est vraiment top, il permet d’intégrer la gestion des caméras et des évènements de manière très simple dans Jeedom, sans faire des tas d’équipements en MQTT et quasiment sans scénarios

J’ai toutefois quelques suggestions d’améliorations pour la partie « actions » :

  • le fait de devoir mettre la condition pour NE PAS déclencher les actions est un peu contre-intuitif, je me loupe à chaque fois… on a plutôt l’habitude dans jeedom de mettre des conditions pour que ça se produise, et pas pour que ça ne se produise pas ! :wink:
  • je ne vais pas réussir à faire ce que je veux sans passer par des scénarios multiples ou copier de nombreuses fois les mêmes actions, juste à cause d’un petit détail, le fait que si tu mets une action sur une caméra, ça désactive les actions communes à toutes les caméras. Actions qui elles même ne se passent que si la condition en haut n’est pas remplie. On finit par s’y perdre :smile:

Concrètement j’ai (pas mal) d’actions communes à toutes les caméras, des actions propres à certaines caméras sur plusieurs caméras, et pas mal de caméras au total (10), donc dans tous les cas peu importe comment je m’y prend, il faut soit que je mette beaucoup de lignes dans chaque caméra pour avoir les actions communes + les actions propres à la caméra, soit que je rajoute ce que j’ai dans les actions communes de event à toutes les caméras qui ont des actions propres. A chaque fois que je fais une amélioration, j’essaie de voir ce qui est au plus simple, mais je m’y perds, il y a toujours un cas de figure qui ne va pas.

Pourtant c’est très puissant ton système, car ça permet de faire plein de choses facilement. Allumer les lumières extérieures de manière bien plus efficace que les détecteurs de mouvement. Déclencher les répulsifs pour les chats et les hérons autour de mes bassins. Déclencher l’alarme. Envoyer les images via telegram. Et surement des tas d’autres applications auxquelles je n’ai pas encore pensé ! C’est juste que quand on en a pas mal, ça devient compliqué.

Mais j’ai une proposition toute simple : pourrais-tu juste, dans les actions communes de « Event », ajouter la colonne de condition sur les caméras ? (à chaque ligne d’action, on indique les caméras concernées) Comme je gère tout au même endroit.

En fait c’est juste aller un peu plus loin dans les actions de l’équipement « event », qui n’est pas tout à fait un équipement, en fait. C’est un peu un centre de gestion des déclenchements, et si on pouvait tout centraliser ici, ce serait peut être plus simple/plus pratique pour s’adapter à toutes les situations ?

On aurait en fait une action par ligne avec sur chaque ligne la possibilité d’indiquer toutes les conditions actuelles (label, type, zones), avec en plus une condition sur les caméras (toutes ou juste une selection), et peut être aussi un champ avec des conditions libre pour pouvoir intégrer des infos extérieures à Frigate dans les conditions ? Ce dernier remplacerait le champ avec « NE PAS », qui pourrait être renseigné spécifiquement pour chaque action.

Bon au fur et à mesure que j’écris je me dis que serait top mais que ça fait sûrement pas mal de boulot/de modifs par rapport à la version actuelle :roll_eyes:

Merci déjà d’avoir lu jusque là, et merci encore pour ton travail sur ce plug in :+1:

1 « J'aime »

Salut,

J’ai tout lu, mais je prendrai le temps de tout relire.

Merci pour ton retour plus que complet.

Et je fais rentrer tout cela comment sur la ligne :sweat_smile:

Je vais faire un truc plus simple, ajouter une option sur l’équipement event pour que les actions s’exécutent malgré la configuration des caméras.

Disponible sur la Beta 1.2.1

Cela te permet d’avoir les actions globales dans l’équipement events et d’affiner ensuite sur chaque caméra.

Je te remercie. Je ne vois pas la case sur mon équipement Event, même après avoir mis à jour en Beta. Est-ce que je dois supprimer l’équipement Event pour qu’il soit recréé ?

Salut, j’avais juste oublié de push sur le market, tu peux mettre à jour la bêta.

Salut,

Ce n’était pas bien long a ajouter alors j’ai mis une condition de réalisation sur les commandes :

Voici le déroulé pour qu’une action soit exécutée.

Salut,

je viens de faire la mise à jour, ça a l’air top, y’a plus qu’à tester !

Petite question : j’ai eu une visite d’un héron hier matin, et je me suis rendu compte que Frigate l’a identifié à 9h36, mais il a pu se promener pendant 2 min autour du bassin, ton plugin n’a déclenché les actions qu’à 9h38. Sais-tu d’où peut provenir l’intervalle entre les deux ?

J’ai l’impression que le déclenchement des actions correspond à la fin de la détection, mais comme le héron s’est envolé justement au déclenchement des actions, je ne sais pas ce qui est la cause et ce qui est la conséquence.

Merci pour ton travail en tout cas, c’est top :+1:

Euh, j’ai un doute, car ce n’est plus précisé, la condition générale fonctionne comme avant (condition pour NE PAS déclencher) ou comme une condition normale ?

Comme avant :

Les actions sont déclenchées quand le plugin reçoit l’info mqtt, je n’attends pas pour déclencher les actions. En log debug, tu auras le log frigate_Actions où tu vois vraiment le déroulé.

Ah oui ok merci, je n’avais pas vu l’indication au survol.

Et par contre les conditions dans les actions sont dans quel sens ? la condition doit être vraie ou doit être fausse pour que l’action se déclenche ?

Je suis en train de faire des tests, car mon log était trop chargé et ne remontait pas jusque hier matin…

Alors, j’ai fait quelques tests, et voilà ce que je crois déduire de tout ça :

  • la condition dans chaque ligne doit être vraie pour que l’action s’effectue, et ne peut pas être vide ! Si je ne mets rien, l’action ne s’exécute pas, si je mets « 1=1 », l’action s’exécute. C’est pas forcément évidemment au premier abord qu’il faut faire ainsi :wink:

  • il y a un délai assez important (parfois plus d’une minute) avant le déclenchement des actions mais je n’arrive pas à savoir à quoi il correspond. Je me suis fait des envois de messages horodatés (timestamp jeedom), déclenchés soit par ton plugin par les actions, soit par ton plugin par une commande info de la caméra, soit sur un équipement mqtt dans jeedom. Le déclenchement est identique à la seconde près par l’équipement mqtt ou par ta commande info, par contre l’action de l’équipement « event » intervient entre 30 secondes et 1m30 plus tard. Du coup pour allumer une lampe ou déclencher un effaroucheur, ça ne va pas le faire…

Ah zut j’ai zappé un bout de code alors, je vais corriger car ma volonté c’est pour les actions :
si vide => action exécutée
si condition est vraie => action exécutée
si condition est fausse => action non exécutée

Tu peux me faire un screen de la configuration action pour ton effaroucheur. Tu as mis quoi dans type ?

Oui je m’en doutais, mais en attendant le 1=1 fonctionne très bien :+1: :smile:

pour le type :

end, frigate envoie un message quand la détéction est terminée donc cela peux mettre 30/40/60/90 sc.

update, frigate envoie un message au début de la détection. utilise cela pour ton effaroucheur, par exemple sur envoie de notification JeeMate:

heure de declenchement :

heure de reception :

Alors là il n’y a plus rien du tout, vu que j’ai tout repris de zéro avec tes nouvelles fonctionnalités. J’ai une seule action de test dans l’équipement Event, et je n’ai mis aucune condition dans la ligne d’action : pas de label, ni de type, ni de zone. Juste 1=1 et envoi d’un message télégram contenant un timestamp.

Je viens de refaire un test en ne laissant qu’une seule caméra active, pour alléger le traitement et pouvoir récupérer le log sans avoir à trier. L’évènement mqtt me signale la détection de personne à 10:30:13, alors que le timestamp télégram est horodaté 10:30:50.

Et voici le log en mode debug :

[2025-03-22 10:30:14] DEBUG  : ╔════════════════════════ START CLEAN ═══════════════════
[2025-03-22 10:30:14] DEBUG  : ║ Taille du dossier : 500.18
[2025-03-22 10:30:14] DEBUG  : ║ Taille maximale du dossier : 500
[2025-03-22 10:30:14] DEBUG  : ║ Le dossier est plein, nettoyage du fichier le plus ancien
[2025-03-22 10:30:14] DEBUG  : ║ Clip MP4 supprimé pour l'événement 1742498934.723301-208qdq
[2025-03-22 10:30:14] DEBUG  : ║ Snapshot JPG supprimé pour l'événement 1742498934.723301-208qdq
[2025-03-22 10:30:14] DEBUG  : ║ Miniature JPG supprimée pour l'événement 1742498934.723301-208qdq
[2025-03-22 10:30:14] DEBUG  : ║ GIF supprimé pour l'événement 1742498934.723301-208qdq
[2025-03-22 10:30:14] DEBUG  : ║ Événement 1742498934.723301-208qdq supprimé de la base de données.
[2025-03-22 10:30:14] DEBUG  : ║ Nouvelle taille du dossier : 497.92
[2025-03-22 10:30:14] DEBUG  : ║ Le dossier n'est pas plein
[2025-03-22 10:30:14] DEBUG  : ╚════════════════════════ END CLEAN ═══════════════════
[2025-03-22 10:30:14] DEBUG  : ╔════════════════════════ START EVENT ═══════════════════
[2025-03-22 10:30:14] DEBUG  : ║ Fichier non trouvé: /var/www/html/plugins/frigate/data/Bassin/1742635813.300301-4lt938_thumbnail.jpg, téléchargement
[2025-03-22 10:30:19] DEBUG  : ║ Le fichier a été enregistré : http://192.168.1.223:5000/api/events/1742635813.300301-4lt938/thumbnail.jpg
[2025-03-22 10:30:19] DEBUG  : ║ Fichier snapshot non trouvé: /var/www/html/plugins/frigate/data/Bassin/1742635813.300301-4lt938_snapshot.jpg
[2025-03-22 10:30:19] DEBUG  : ║ Has Snapshot: true, téléchargement
[2025-03-22 10:30:24] DEBUG  : ║ Le fichier a été enregistré : http://192.168.1.223:5000/api/events/1742635813.300301-4lt938/snapshot.jpg?timestamp=0&bbox=1
[2025-03-22 10:30:24] DEBUG  : ║ Snapshot: {"url":"\/plugins\/frigate\/data\/Bassin\/1742635813.300301-4lt938_snapshot.jpg","has":1}
[2025-03-22 10:30:24] DEBUG  : ║ Pas de clip, le type n'est pas 'end' {"id":"1742635813.300301-4lt938","label":"person","sub_label":null,"camera":"Bassin","start_time":1742635813.300301,"end_time":null,"false_positive":null,"zones":[],"thumbnail":"*--coupé--*","has_clip":true,"has_snapshot":true,"retain_indefinitely":false,"plus_id":null,"model_hash":"381ddff7e02bc86b7e6c5b1b9cc894db","detector_type":"edgetpu","model_type":"ssd","data":{"box":[0.471875,0.18333333333333332,0.0265625,0.13333333333333333],"region":[0.225,0,0.5,0.8888888888888888],"score":0.70703125,"top_score":0.73046875,"attributes":[],"type":"object","max_severity":"alert"}}
[2025-03-22 10:30:24] DEBUG  : ║ Fichier preview non trouvé: /var/www/html/plugins/frigate/data/Bassin/1742635813.300301-4lt938_preview.gif
[2025-03-22 10:30:24] DEBUG  : ║ Le fichier a été enregistré : http://192.168.1.223:5000/api/events/1742635813.300301-4lt938/preview.gif
[2025-03-22 10:30:24] DEBUG  : ║ Events (type=new) => {"id":"1742635813.300301-4lt938","label":"person","sub_label":null,"camera":"Bassin","start_time":1742635813.300301,"end_time":null,"false_positive":null,"zones":[],"thumbnail":"*--coupé--*","has_clip":true,"has_snapshot":true,"retain_indefinitely":false,"plus_id":null,"model_hash":"381ddff7e02bc86b7e6c5b1b9cc894db","detector_type":"edgetpu","model_type":"ssd","data":{"box":[0.471875,0.18333333333333332,0.0265625,0.13333333333333333],"region":[0.225,0,0.5,0.8888888888888888],"score":0.70703125,"top_score":0.73046875,"attributes":[],"type":"object","max_severity":"alert"}}
[2025-03-22 10:30:24] DEBUG  : ║ ACTION: Aucune action configurée.
[2025-03-22 10:30:24] DEBUG  : ║ ACTION: Les actions sont autorisées pour l'équipement Events (ID: 80).
[2025-03-22 10:30:24] DEBUG  : ║ ACTION: Aucune action caméra activée, exécution des actions pour l'équipement Events (ID: 80).
[2025-03-22 10:30:24] DEBUG  : ║ Evénement Frigate créé et sauvegardé, event ID: 1742635813.300301-4lt938
[2025-03-22 10:30:24] DEBUG  : ╚════════════════════════ END EVENT ═══════════════════
[2025-03-22 10:30:44] DEBUG  : ║ ManualEvent : requête GET exécutée.
[2025-03-22 10:30:44] DEBUG  : ╔════════════════════════ START CLEAN ═══════════════════
[2025-03-22 10:30:44] DEBUG  : ║ Taille du dossier : 498.13
[2025-03-22 10:30:44] DEBUG  : ║ Taille maximale du dossier : 500
[2025-03-22 10:30:44] DEBUG  : ║ Le dossier n'est pas plein
[2025-03-22 10:30:44] DEBUG  : ╚════════════════════════ END CLEAN ═══════════════════
[2025-03-22 10:30:44] DEBUG  : ╔════════════════════════ START EVENT ═══════════════════
[2025-03-22 10:30:44] DEBUG  : ║ Snapshot: {"url":"\/plugins\/frigate\/data\/Bassin\/1742635813.300301-4lt938_snapshot.jpg","has":1}
[2025-03-22 10:30:44] DEBUG  : ║ Fichier clip non trouvé: /var/www/html/plugins/frigate/data/Bassin/1742635813.300301-4lt938_clip.mp4
[2025-03-22 10:30:50] DEBUG  : ║ Le fichier a été enregistré : http://192.168.1.223:5000/api/events/1742635813.300301-4lt938/clip.mp4
[2025-03-22 10:30:50] DEBUG  : ║ La durée de la video est de 00:00:03
[2025-03-22 10:30:50] DEBUG  : ║ Mise à jour du champ 'EndTime' pour event ID: 1742635813.300301-4lt938. ancienne valeur: 0, nouvelle valeur: 1742635816
[2025-03-22 10:30:50] DEBUG  : ║ Mise à jour du champ 'HasClip' pour event ID: 1742635813.300301-4lt938. ancienne valeur: 0, nouvelle valeur: 1
[2025-03-22 10:30:50] DEBUG  : ║ Mise à jour du champ 'Clip' pour event ID: 1742635813.300301-4lt938. ancienne valeur: "null", nouvelle valeur: "\/plugins\/frigate\/data\/Bassin\/1742635813.300301-4lt938_clip.mp4"
[2025-03-22 10:30:50] DEBUG  : ║ Mise à jour du champ 'Box' pour event ID: 1742635813.300301-4lt938. ancienne valeur: "[0.471875,0.18333333333333332,0.0265625,0.13333333333333333]", nouvelle valeur: "[0.471875,0.18611111111111112,0.03125,0.13333333333333333]"
[2025-03-22 10:30:50] DEBUG  : ║ Mise à jour du champ 'Type' pour event ID: 1742635813.300301-4lt938. ancienne valeur: "new", nouvelle valeur: "end"
[2025-03-22 10:30:50] DEBUG  : ║ Mise à jour du champ 'Score' pour event ID: 1742635813.300301-4lt938. ancienne valeur: 71, nouvelle valeur: 73
[2025-03-22 10:30:50] DEBUG  : ║ Mise à jour du champ data pour event ID: 1742635813.300301-4lt938
[2025-03-22 10:30:50] DEBUG  : ║ ACTION: Aucune action configurée.
[2025-03-22 10:30:50] DEBUG  : ║ ACTION: Les actions sont autorisées pour l'équipement Events (ID: 80).
[2025-03-22 10:30:50] DEBUG  : ║ ACTION: Aucune action caméra activée, exécution des actions pour l'équipement Events (ID: 80).
[2025-03-22 10:30:50] DEBUG  : ║ Evénement Frigate mis à jour et sauvegardé, event ID: 1742635813.300301-4lt938
[2025-03-22 10:30:50] DEBUG  : ╚════════════════════════ END EVENT ═══════════════════

Ok, je teste ça, je n’avais pas compris que ‹ type › servait à la chronologie du déclenchement des actions.
Si je comprends bien, « end » est par défaut ?

Du coup j’imagine que pour les messages qui contiennent les snapshots et preview il faut laisser « end » ?

Je vais améliorer la documentation cette semaine.

Pour le type si rien n’est renseigné je n’active que sur end, cela pour ne pas être spam par les actions.

Par contre je n’arrive pas a saisir a quel moment Frigate envoie type new ou type update, ce n’est pas toujours logique.

je viens de tester les différents types :

  • si je mets new, ça arrive environ 15 secondes après la détection
  • si je ne mets rien, c’est plutôt 30 sec à 1min, mais je pense que ça dépend si la détection est continue ou morcelée
  • si je mets update, rien ne se passe
  • j’ai oublié de tester end, mais a priori ça ne m’intéresse pas

Je vais essayer de tout renseigner et je mettrai « new » pour les actions de type allumage de lampes ou effaroucheur.
Par prudence je vais laisser un scenario déclenché en mqtt pour le héron et attendant de voir le temps de réaction en condition réelle via ton plug in

Merci pour ton aide en tout cas :+1:

Avec plaisir.

Je fais une maj de correction dans le week end pour la condition vide.

Dans les logs en filtrant tu peux voir les types que tu reçois.
image