tags : Frigate, domotique, Jeedom
0. Contexte
Salut à tous, comme beaucoup, je cherche à faire fonctionner ma domotique un maximum en local et pour cela, j’ai décidé de laisser gérer mes caméras par Frigate. On récupérait jusqu’alors les topics MQTT avec JMQTT ou Mqtt manager et on devait tout faire à sa sauce. Puis l’incroyable Sagitaz nous a offert la possibilité de tout faire via son plugin qui plus est gratuit ! Un énorme merci à lui.
1. Installation
Commencer par installer le plugin Frigate
Puis renseigner votre configuration

1.1 Générale
Exclure les clips et snapshot est interessant car il évite d’etre présent dans vos sauvegardes jeedom ce qui est plutôt une bonne idée aux vus de la taille que cela peut représenter
Vous pouvez également choisir une pièce par défaut pour les nouveaux équipements, moi, j’ai une pièce test qui me permet de tester certains devices directement sur la VM jeedom en production.
1.2 Paramétrage Frigate
- URL : l’url de votre serveur Frigate (ex: 192.168.0.142)
- Port : le port du serveur Frigate (5000 par défaut)
- Adresse externe : Fonctionnant en local, je n’ai pas besoin de renseigner d’adresse externe, mais cela peut être intéressant si vous voulez accéder à frigate depuis l’extérieur via jeedom par exemple.
- Topic MQTT : le topic de votre serveur Frigate (frigate par défaut)
- Preset : Pour les caméras avec PTZ, définir le nombre de positions que vous souhaitez récupérer.
- Pause action : Pause à effectuer sur les actions PTZ. Par exemple, après avoir appuyé sur move up, un stop est automatiquement effectué : vous pouvez définir le temps avant cette action stop de 0 à 10, correspondant à une pause de 0 à 1 seconde (0, 0.1, 0.2, etc…). Cela permet aux caméras les plus lentes de recevoir l’ordre en temps et en heure.
1.3 Gestion des évènements
- Récupération des évènements : Vous pouvez avoir 30 jours d’évènements sur votre serveur Frigate mais vouloir en importer que 7 sur Jeedom. Indiquez ici le nombre de jours souhaités. Si le nombre de jours est 0, alors le processus est arrêté et aucun appel à l’API Frigate n’est effectué.
- Suppression des évènements : Les évènements plus anciens que le nombre de jours indiqués seront supprimés de la database Jeedom (pas du serveur Frigate). Moi j’ai mis une semaine, car je consulte plus les notifications que les évent et donc si quelque chose devait se passer, j’ai assez de temps pour réagir
Le nombre de jours de suppression ne peut pas être plus petit que le nombre de jours de récupération. Dans le cas contraire, ce sera alors le nombre de jours de récupération qui sera utilisé.
- Taille des dossiers : Taille maximum du dossier data sur jeedom . Chez moi j’ai limité a 500 mo
- Durée de rafraîchissement : En secondes, durée de rafraîchissement des snapshots de vos caméras. (5 secondes par défaut)
- Vidéos en vignette : Au passage de la souris sur une vignette de la page évènement, la vidéo sera jouée.
- Confirmation avant suppression : Affiche une alerte avant la suppression d’un évènement.
- Pause création fichiers (en secondes) : Délai d’attente avant de créer le fichier (clip / snapshot) (5 s par défaut). Suivant les serveurs, cela peut être nécessaire pour laisser le temps à Frigate de créer le fichier.
1.4 Paramétrage par défaut d’un évènement créé manuellement
- Label : le nom de l’évènement créé (manuel par défaut).
- Enregistrer une vidéo : oui par défaut.
- Durée de la vidéo : 40 secondes par défaut.
- Score : 0 par défaut.
1.5 importation des caméras

Cliquer sur rechercher et hop cela vous ajoute automatiquement vos caméras
1.6 Option
1.6.1 Events
Tout est classé par caméra et vous donne un visuel, le type de détection, la date et le score

1.6.2 Redémarrer Frigate
Un simple bouton qui permet de redémarrer votre serveur frigate sans avoir besoin de s’y connecter
1.6.3 Serveur frigate
Permet simplement d’accéder à votre serveur frigate en locale ou en accès externe selon votre configuration
1.6.4 Aide Discord
permet de demander de l’assistance sur le discord de Sagitaz (jeemate)
1.6.5 Configuration
permet de modifier vos configurations.yaml ATTENTION À VOS MODIFICATIONS !!!

1.6.6 Logs
Permet de visualiser en directe vos logs directement sur le plugin

2. Exemple d’une caméra
Prenons l’exemple de ma caméra Cartport qui doit détecter les personnes et les voitures dans ma configuration Frigate
Carport:
ffmpeg:
inputs:
- path: rtsp://USER:MOTDEPASSE@192.168.0.46:554/live/ch1
roles:
- detect
detect:
width: 640
height: 360
fps: 3
objects:
track:
- person
- car

Je peux ici choisir plusieurs options comme afficher cette caméra sur le panel (à conditions que j’ai bien activé celui-ci dans les options), afficher mes masques, les mouvements via des carrés rouges, etc.).
Créons des actions sur détection
2.1 Condition générale
La condition générale bizarrement, on indique ici dans quel cas les actions NE DOIVENT PAS être exécutées.
Par exemple, vous configurez la condition comme ceci : #[Maison][Mode maison][Mode]# == “présent” Les actions ne seront exécutées que si le mode est tout autre que présent.
Quand on ajoute une action, on obtient donc les options suivantes :

2.2 Label
Pour rappel, le label est ce qui déclenche la détection (person, vehicle, animal, etc…) Dans la case label, il vous suffit d’indiquer le(s) label(s) pour lesquels vous souhaitez que l’action soit exécutée. Si ce champ est vide ou que vous mettez all, alors l’action sera exécutée pour tous les nouveaux évènements. Vous pouvez indiquer plusieurs labels en les séparant par des virgules. Les majuscules et les accents sont ignorés, donc si vous indiquez “Vélo” ou “velo”, les deux seront considérées comme identiques.
Par exemple dans notre cas, nous mettrons person ou car
2.3 Type
Avec MQTT, ils peuvent être de type new, update et end. Sans MQTT, il sera toujours de type end. Dans la case type, il vous suffit d’indiquer le type pour lequel vous souhaitez que l’action soit exécutée. Vous pourvez en mettre plusieurs en les séparant par des virgules. Si aucun type n’est spécifié, l’action sera exécutée seulement pour les évènements de type end. les majuscules et les accents sont ignorés, donc si vous indiquez “update” ou “UPDATE”, les deux seront considérées comme identiques.
Il est important de bien définir le type sinon vous ne recevrez des actions ou notifications que si le type est end donc a la fin de la détection.
Par exemple si je veux etre averti quand quelqu’un arrive dans mon carport le type sera new, en rajoutant update je peux avoir la mise a jour de la détection et end la fin de l’évènement

2.4 Zones
Dans la case zone d’entrée, il vous suffit d’indiquer la ou les zones pour lesquelles vous souhaitez que l’action soit exécutée. Vous pouvez indiquer plusieurs zones en les séparant par des virgules.
La case zone de sortie permet de gérer le sens de la détection. Cela ne fonctionne qu’avec une zone d’entrée définie. Si la zone d’entrée est déclenchée avant la zone de sortie alors l’action sera exécutée.
Je n’ai pas défini de zone chez moi donc cela ne me sert pas
2.5 Condition de l’action
Indiquer ici dans quel cas les actions DOIVENT être exécutées.
Par exemple, vous configurez la condition comme ceci : #[Maison][Mode maison][Mode]# == “absent” Les actions ne seront exécutées que si le mode est configuré comme absent.
Si aucune condition n’est spécifiée, l’action sera réalisée.
Je peux par exemple vérifier que le mode de ma maison soit Absent et que le score de détection d’une personne soit supérieur à 80 via #[Domotique][Attitude maison][Mode]#== »Absent » et #score# >80

2.6 Action
Je peux alors déclenché une action ou une notification
Exemple d’action
Ici dès qu’une détection voiture a lieu alors je passe mon virtuel voiture sur 1

Exemple avec une notification dans jeedom connect :
Plugin JeedomConnect
- snapshot : dans le champ titre : title=votre titre | files=#snapshot_path#
- clip : dans le champ titre : title=votre titre | files=#clip_path#
- Preview gif : title=votre titre | files=#preview_path#

Par exemple : title=#camera# | files=#preview_path# et le message Présence sonnette à #start# va me donner

Dans les autres programme de notification voici les suggestion :
Plugin JeeMate
- snapshot : dans le champ titre : title=votre titre;;bigPicture=#snapshot#
- preview : dans le champ titre : title=votre titre;;bigPicture=#preview#
- thumbnail : dans le champ titre : title=votre titre;;bigPicture=#thumbnail#
- clip : dans le champ titre : title=votre titre;;bigPicture=#clip#
Pour une notification automatique, ajouter frigate=#jeemate#, disponible avec la future v3 de JeeMate
- snapshot : dans le champ titre : title=votre titre;;bigPicture=#snapshot#;;frigate=#jeemate#
- clip : dans le champ titre : title=votre titre;;bigPicture=#clip#;;frigate=#jeemate#
Plugin Telegram
Testez les 2 commandes snapshot. Selon les configurations, il se peut qu’une des deux ne fonctionne pas.
- snapshot : dans le champ options : title=votre titre | snapshot=#snapshot#
- snapshot : dans le champ options : title=votre titre | file=#snapshot_path#
- clip : dans le champ options : title=votre titre | file=#clip_path#
- preview : dans le champ message : #preview#
Plugin Mobile v2
- snapshot : dans le champ message : votre message | file=#snapshot_path#
- clip : aucune idée
Plugin NTFY
- snapshot : dans le champ options : Title:votre titre;Attach:#snapshot#
- clip : dans le champ options : Title:votre titre;Attach:#clip#
Pour la suite a vous de laisser parler votre imagination :
Exemple dès qu’un chat est repéré et que je suis absent alors je m’envoie une photo

2.7 Info

Nous avons ici beaucoup d’information exploitable via les actions sur valeurs ou via un scénario
Par exemple dès que la détection car est a 0 alors je passe mon virtuel voiture a 0

2.8 Commande
Commande permet d’agir sur les configuration de la caméra dans frigate

2.9 Création d’une capture instantanée
J’ai besoin de déclenché une capture directement sans passer la détection ia de friagte par exemple une porte qui s’ouvre, de la fumée etc …
Je crée dans mon scénario l’action suivantes :

Puis je vais dans ma camera frigate en question dans la partie info
Je cherche url image et je vais dans la roue cranté

Il me suffit alors d’aller la partie configuration et dans arrondi d’insérer la formule suivante
L’URL est de la forme /plugins/frigate/data/caméra/id_snapshot.jpg afin de s’adapter au maximum de plugins de communication.
Par exemple si vous souhaitez une URL complète, vous pouvez mettre ceci dans configuration, calcul et arrondi de la commande info : str_replace(‘ »‘, », »https://monjeedom.eu.jeedom.link »#value#)
Ou bien pour ceux ayant besoin du path comme jeedom connect :
str_replace(‘ »‘, », »/var/www/html »#value#)

Et cela vous donne

3. Exemple de scénario
Par exemple lorsque l’on sonne chez moi j’utilise ce scénario

J’espère que cette présentation de plugin vous aura plus
Belle journée et surtout n’oubliez pas que la vie est fête
Loïc

