Aller au contenu principal

Intégration domotique Frigate, gratuite et open source

Intégration Frigate pour Gladys Assistant

Caméras Frigate NVR : images, mouvement, objets, revues et déclencheurs de scène.

Intégrez les caméras de votre Frigate NVR dans Gladys Assistant : images, mouvement, objets détectés, alertes de revue, interrupteurs des caméras, et déclencheurs de scènes pour réagir quand une personne, une voiture ou un animal apparaît.

Prérequis​

  • Gladys Assistant 5.1 ou plus.
  • Frigate 0.16, 0.17 ou 0.18. L'intégration lit la version et la configuration de Frigate, et n'expose que ce que votre Frigate active réellement.
  • Recommandé : le broker MQTT sur lequel Frigate publie. Sans broker, l'intégration se rabat sur le WebSocket de Frigate.

Démarrage rapide​

  1. Dans Frigate, créez un compte dédié : Settings → Users → Add user, rôle viewer (suffisant avec un broker MQTT, voir plus bas).
  2. Dans Gladys, installez Frigate depuis le store des intégrations, puis ouvrez son onglet Configuration : URL de Frigate https://<ip-frigate>:8971, le compte, et le broker MQTT sur lequel Frigate publie. Enregistrez.
  3. Le statut en haut indique « Connecté à Frigate …, Flux temps réel : broker MQTT connecté ». Tester la connexion donne le détail.
  4. Dans l'onglet Découverte, cliquez sur Ajouter à Gladys pour vos caméras.
  5. Créez des scènes avec les déclencheurs Frigate (voir Scènes).

Connexion à Frigate​

ChampValeur
URL de Frigatehttps://<ip-frigate>:8971 (port authentifié, recommandé). Le port 5000 fonctionne mais n'a aucune authentification : un avertissement s'affiche dans le statut.
Utilisateur / mot de passeUn compte Frigate dédié. Le rôle viewer (ou un rôle personnalisé limité à vos caméras) suffit : les commandes des caméras passent par MQTT, pas par l'API Frigate.

Certificat : approuvé à la première connexion​

Le port 8971 de Frigate utilise par défaut un certificat auto-signé. Vous n'avez rien à faire :

  • un certificat signé par une autorité (Let's Encrypt, l'autorité de votre entreprise installée sur le système…) est vérifié normalement, et ses renouvellements continuent de fonctionner, à condition que l'URL de Frigate utilise un nom couvert par le certificat (joint par son adresse IP, il est traité comme un certificat auto-signé, et chaque renouvellement vous demande de l'approuver à nouveau) ;
  • un certificat auto-signé est approuvé à la première connexion, puis épinglé : s'il change ensuite (Frigate réinstallé, certificat régénéré… ou quelqu'un qui se fait passer pour Frigate), la connexion est refusée et le statut explique pourquoi.

Si vous savez que le certificat a changé pour une raison légitime, cliquez sur Faire confiance au nouveau certificat dans l'onglet Configuration : la connexion suivante approuve et épingle le nouveau certificat. Il en va de même pour le broker MQTT quand TLS est activé.

La première connexion est le seul moment où le certificat n'est pas vérifié : faites-la sur votre réseau local, pas à travers un réseau non maîtrisé.

Réglages experts (facultatif)​

En bas de l'onglet Configuration, renseignez un de ces champs pour remplacer l'approbation à la première connexion :

  • Empreinte SHA-256 du certificat épinglé : seul ce certificat exact est accepté. Pour la lire, depuis la machine de Frigate ou une machine de confiance :

    openssl s_client -connect <ip-frigate>:8971 </dev/null 2>/dev/null \
    | openssl x509 -noout -fingerprint -sha256
  • Autorité de certification (PEM) : votre propre autorité ; le certificat doit être signé par elle et correspondre au nom d'hôte.

Flux temps réel (MQTT)​

Renseignez l'hôte, le port, les identifiants du broker et le préfixe des topics Frigate (frigate par défaut). Donnez à l'intégration son propre compte sur le broker, avec cette ACL (syntaxe Mosquitto) :

user gladys-frigate
topic read frigate/#
topic write frigate/+/+/set

Laissez l'hôte du broker vide pour utiliser le WebSocket de Frigate à la place. Les commandes des caméras (les interrupteurs) demandent alors un compte Frigate admin : depuis Frigate 0.17, le WebSocket les refuse aux autres rôles.

Le statut de connexion indique l'état du flux (« Flux temps réel : broker MQTT connecté », ou pourquoi pas). Une panne réseau est réessayée toute seule ; un certificat ou un compte refusé arrête le flux jusqu'à ce que vous corrigiez le problème et cliquiez sur Tester la connexion (ou enregistriez la configuration). Quand Frigate s'annonce hors ligne (redémarrage), le statut le signale, et sa configuration est relue à son retour.

Chaque incident est aussi écrit dans les logs de l'intégration (Voir les logs) : front: person detected, 87 %, front: person entered porch, 87 %, front: review alert, person, car in porch.

Les caméras dans Gladys​

Ouvrez l'onglet Découverte de l'intégration : chaque caméra de Frigate y est listée (cliquez sur Scanner pour relire Frigate). Cliquez sur Ajouter à Gladys pour celles que vous voulez. Chaque appareil caméra porte ce que sa configuration Frigate active :

FonctionnalitéRôle
ImageRafraîchie chaque minute, prise à l'instant quand Gladys la demande (chat, scènes). Frigate la réduit sous les 150 Ko acceptés par Gladys.
Caméra activée (Camera enabled)Allume ou éteint la caméra dans Frigate (ni détection ni enregistrement quand elle est éteinte) ; Gladys n'en montre alors plus l'image.
Détection d'objets, instantanésLes interrupteurs de Frigate.
Enregistrements, détection audioSeulement s'ils sont activés dans le fichier de configuration de Frigate : sinon Frigate refuse de les allumer.
MouvementLe mouvement vu par Frigate.
Un capteur par objet suivi (Person…)Présent / absent, et son nombre. Plus le total des objets.
Statut de revuenone (aucune), detection ou alert.
Capteurs de zoneAvec l'option « Capteurs d'occupation par zone » : un capteur de présence par zone et par objet.

Un interrupteur n'est affiché comme changé qu'une fois confirmé par Frigate. Sans broker MQTT, le WebSocket de Frigate n'accepte les commandes que d'un compte admin (Frigate 0.17 et plus) : avec un autre rôle, la commande échoue avec cette explication.

Le badge de chaque caméra signale quand elle n'est pas nominale : injoignable quand Frigate ne répond pas, s'annonce hors ligne, ou que le flux de la caméra est perdu depuis 30 secondes ; dégradée quand son flux d'enregistrement est interrompu ou que le flux temps réel est coupé (les états peuvent alors être périmés).

Une caméra ajoutée avec une version précédente de l'intégration affiche Mettre à jour dans l'onglet Découverte : cliquez dessus pour ajouter les nouvelles fonctionnalités.

Scènes​

Trois déclencheurs, une fois par incident (jamais une fois par image), au-dessus de la confiance minimale et hors cooldown (voir Options). Les faux positifs et les objets immobiles ne déclenchent jamais.

DéclencheurSe déclenche quandFiltres
Frigate : nouvelle revueFrigate ouvre une revue (alerte ou détection) ; une fois de plus quand une détection devient une alertecaméra, sévérité, objet, zone
Frigate : objet détectéFrigate commence à suivre un objet (personne, voiture…)caméra, objet, zone
Frigate : objet entre dans une zoneUn objet suivi entre dans une zone définie dans Frigatecaméra, zone, objet

L'objet et la zone sont les noms utilisés dans Frigate, en minuscules (person, car, dog, cat, bicycle… pour les objets, ceux de objects.track ; porch… pour les zones) ; un champ vide accepte n'importe quelle valeur. Les objets suivis par une caméra sont aussi ses capteurs de présence (Person, Car…). « Objet détecté » ne se déclenche que sur un objet confirmé par la détection de Frigate, au-dessus de la confiance minimale : un simple mouvement ne le déclenche jamais (le mouvement est le capteur « Motion » de la caméra). Une revue est filtrée sur son objet principal (le premier des objets suivis par la caméra, dans l'ordre de la configuration Frigate) et sa première zone ; tous sont dans les variables objects et zones. Variables disponibles dans les actions suivantes : camera, camera_name, label, sub_label (visage ou plaque reconnus par Frigate), zone, zones, score (%), severity, objects, event_id, review_id.

Sur une alerte, l'intégration publie une image fraîche de la caméra avant de déclencher : l'action « Envoyer une image de caméra » placée juste après envoie bien l'alerte.

Action « Frigate : joindre l'image de l'événement » : publie l'instantané que Frigate a gardé pour un événement (avec ou sans son cadre de détection) comme image de la caméra (celle de l'événement par défaut). Utilisez {{triggerEvent.data.event_id}} comme identifiant, puis « Envoyer une image de caméra ». Pendant une minute, c'est aussi l'image que Gladys reçoit quand il demande une image en direct de cette caméra (« Envoyer une image de caméra », la vue en direct du tableau de bord). Quand Frigate ne garde pas d'instantané pour la caméra, ou en garde un trop lourd pour Gladys, sa miniature est utilisée. Une fois l'événement terminé, Frigate sert l'instantané qu'il a enregistré : le cadre suit alors son propre réglage snapshots.bounding_box.

Exemple — une photo sur votre téléphone quand quelqu'un vient à la porte :

  1. Déclencheur Frigate : nouvelle revue, caméra Porte d'entrée, sévérité Alerte, objet person.
  2. Action Frigate : joindre l'image de l'événement, identifiant {{triggerEvent.data.event_id}}.
  3. Action Envoyer une image de caméra Porte d'entrée à vous-même.

Options​

  • Confiance minimale (70 % par défaut) : les déclencheurs d'objets ne se déclenchent qu'au-dessus (les revues n'ont pas de score : les seuils de Frigate s'appliquent).
  • Cooldown des déclencheurs (30 s par défaut) : au plus un déclenchement par caméra et type d'objet (et par zone pour les déclencheurs de zone ; par caméra et sévérité pour les revues) et par période, pour qu'un incident n'inonde pas vos scènes. Les faux positifs et les objets immobiles (une voiture garée) ne déclenchent jamais.
  • Capteurs d'occupation par zone (désactivés par défaut) : un capteur de présence par zone et par objet suivi.

Vidéo en direct​

La vidéo en direct ne passe pas par cette intégration. Utilisez le service Caméra RTSP intégré à Gladys, pointé sur le restream go2rtc de Frigate : rtsp://<ip-frigate>:8554/<nom_camera>.

Boutons de la configuration​

  • Tester la connexion : la version et les caméras de Frigate, la façon dont son certificat est approuvé, le compte utilisé, et une connexion au broker MQTT (ou le rappel que le WebSocket de Frigate est utilisé sans broker).
  • Rafraîchir les caméras : relit la configuration de Frigate (après l'ajout d'une caméra, par exemple) et met à jour la liste de l'onglet Découverte.
  • Faire confiance au nouveau certificat : oublie les certificats épinglés de Frigate et du broker, se reconnecte et affiche l'empreinte désormais épinglée. En cas de doute, comparez-la à celle de votre Frigate (commande ci-dessus).

Quand Frigate est injoignable, l'intégration réessaie chaque minute. Un certificat ou des identifiants refusés attendent en revanche votre action : réessayer ne ferait que bloquer le compte (Frigate limite les connexions échouées).

Sécurité​

  • L'intégration ne parle qu'à Frigate et au broker, sur votre réseau ; elle tourne dans un conteneur isolé (lecture seule, sans privilèges, son seul dossier modifiable contient les certificats épinglés).
  • Un compte Frigate dédié de rôle viewer (ou un rôle limité à certaines caméras) ne peut pas modifier la configuration de Frigate. Avec MQTT, le compte du broker ci-dessus ne peut que lire les topics de Frigate et envoyer les commandes des caméras.
  • Certificats : vérifiés par une autorité, ou épinglés à la première connexion (voir plus haut) ; le jeton Frigate et le mot de passe du broker ne partent qu'une fois le certificat approuvé.
  • Les mots de passe, jetons et cookies n'apparaissent jamais dans les logs ni dans le statut.
  • Le port 5000 et MQTT sans TLS fonctionnent, avec un avertissement dans le statut : réservez-les à un réseau de confiance.

Dépannage​

Le statut de connexion en haut de l'onglet Configuration dit ce qui ne va pas ; Tester la connexion revérifie tout. Les logs de l'intégration (contrôles de supervision, Voir les logs) ne contiennent jamais de mot de passe ni de jeton.

SymptômeÀ vérifier
« Le certificat de … a changé »Frigate réinstallé ou certificat régénéré : cliquez sur Faire confiance au nouveau certificat. Sinon, quelqu'un se fait peut-être passer pour Frigate.
« Frigate a refusé l'utilisateur ou le mot de passe »Le compte de l'onglet Configuration. Après plusieurs échecs, Frigate bloque les connexions un moment : l'intégration ne réessaie pas d'elle-même.
L'onglet Découverte est videLe statut : Frigate doit être joignable. Puis Scanner.
Pas d'image sur le tableau de bordLa caméra est allumée dans Frigate et dans Gladys ; attendez une minute après l'avoir ajoutée.
Un interrupteur échoue (« did not confirm », « admin »)Sans broker, Frigate 0.17+ n'accepte les commandes que d'un compte admin ; avec un broker, son ACL doit autoriser frigate/+/+/set.
« Flux temps réel arrêté »Le broker a refusé le compte ou le certificat : corrigez, puis Tester la connexion.
Badge de caméra « injoignable »Frigate est arrêté ou redémarre, ou le flux de la caméra est perdu depuis 30 s (vérifiez la caméra dans Frigate).
Une scène ne se déclenche pasLa confiance minimale et le cooldown (Options) ; les noms d'objet et de zone sont ceux de Frigate (person, pas Personne) ; les logs montrent chaque incident.
Une caméra ajoutée avant une mise à jour n'a pas toutL'onglet Découverte affiche Mettre à jour à côté d'elle.

Paramètres de configuration​

Voici les paramètres demandés par Frigate dans son écran de configuration dans Gladys.

ParamètreTypeObligatoireDescription
Serveur FrigatesectionNonFrigate 0.16 ou plus. Utilisez le port authentifié (https://<ip>:8971) avec un compte Frigate dédié ; le rôle viewer suffit, les commandes des caméras passent par MQTT. Le certificat auto-signé de Frigate est approuvé à la première connexion, puis épinglé. Le port 5000 n'a aucune authentification.
URL de FrigatestringOui
Utilisateur FrigatestringNon
Mot de passe FrigatesecretNon
Flux temps réelsectionNonRenseignez le broker MQTT sur lequel Frigate publie (recommandé). Laissez l'hôte vide pour utiliser le WebSocket de Frigate, sans broker. Le compte du broker doit pouvoir lire <préfixe>/# et écrire sur <préfixe>/+/+/set.
Hôte du broker MQTTstringNon
Port du broker MQTTnumberNon
Utilisateur MQTTstringNon
Mot de passe MQTTsecretNon
MQTT sur TLSbooleanNonLe certificat du broker est vérifié comme celui de Frigate : approuvé s'il est signé par une autorité, sinon approuvé à la première connexion puis épinglé.
Préfixe des topics FrigatestringNon
OptionssectionNonLes déclencheurs de scène ne se déclenchent qu'au-dessus de la confiance minimale, et au plus une fois par caméra et par période de cooldown.
Confiance minimale (%)numberNon
Cooldown des déclencheurs (s)numberNon
Capteurs d'occupation par zonebooleanNonAjoute un capteur de présence par zone et par objet suivi.
Expert : certificat TLSsectionNonFacultatif. Par défaut, un certificat signé par une autorité est vérifié normalement, et un certificat auto-signé est approuvé à la première connexion puis épinglé : s'il change ensuite, la connexion est refusée jusqu'à ce que vous cliquiez sur « Faire confiance au nouveau certificat ». Renseignez UN des champs ci-dessous pour épingler un certificat connu ou utiliser votre propre autorité.
Empreinte SHA-256 du certificat épingléstringNon
Autorité de certification (PEM)stringNonCollez le certificat PEM de votre autorité ; une seule ligne suffit.

Comment installer Frigate dans Gladys​

  1. Dans Gladys, ouvrez Intégrations : Frigate apparaît dans le catalogue, aux côtés des intégrations natives, avec un badge communautaire.
  2. Cliquez sur Installer. Gladys télécharge l'image Docker (ghcr.io/lm1lc3n7/gladys-frigate:0.3.1), la démarre dans un bac à sable isolé du cœur, et génère l'interface de l'intégration (appareils, découverte et configuration).
  3. Ouvrez l'écran Configuration de l'intégration, remplissez les paramètres, puis enregistrez.
  4. Vous pouvez aussi l'installer directement depuis l'URL de son dépôt : https://github.com/LM1LC3N7/gladys-frigate.

Frigate nécessite Gladys >=5.1.0. Le catalogue dans Gladys se rafraîchit toutes les heures : une nouvelle version est donc disponible au plus tard une heure après sa sortie.

Vous n'utilisez pas encore Gladys ? C'est gratuit et open source : suivez le guide d'installation pour démarrer.

À propos des intégrations externes​

Frigate est une intégration externe : une intégration communautaire empaquetée dans un conteneur Docker et publiée sur GitHub, que Gladys installe en un clic et exécute dans un bac à sable isolé de son cœur. Elle est publiée et maintenue par LM1LC3N7, et non par l'équipe cœur de Gladys.

Inscrivez-vous à la newsletter Gladys Assistant

Quelques emails par mois sur les nouveautés et l'actualité du projet. Envoyés par Pierre-Gilles Leymarie, le fondateur du projet. Désinscription possible à tout moment 🙂