Home Assistant et UniFi Protect : construire une surveillance résidentielle locale et sécurisée

Reliez Home Assistant à UniFi Protect sans exposer vos caméras : VLAN, compte local, API, notifications, rétention, sauvegarde et accès distant sécurisés.

01

Protect enregistre; Home Assistant donne du contexte

Une surveillance résidentielle fiable ne devrait pas dépendre d’un nuage pour enregistrer ce qui se passe à la porte. UniFi Protect conserve les vidéos sur la console locale et exécute aussi localement les fonctions de détection prises en charge. Home Assistant ajoute la logique : croiser un événement avec l’état de l’alarme, allumer une lumière, afficher une caméra ou envoyer une notification utile.

Cette séparation des rôles évite de transformer Home Assistant en enregistreur vidéo improvisé. Protect demeure responsable des flux, de la rétention et de la consultation des événements; Home Assistant consomme l’API et les flux RTSPS nécessaires aux tableaux de bord et automatisations. Une panne de Home Assistant ne doit donc pas arrêter l’enregistrement, et une panne Internet ne doit pas empêcher Protect de filmer localement.

L’objectif de ce guide est une architecture locale d’abord, segmentée et récupérable. Aucun port entrant n’est ouvert vers les caméras ou la console Protect. L’accès à distance passe par un service conçu pour ce rôle, et les notifications utilisent les points d’accès authentifiés de Home Assistant plutôt qu’un répertoire public.

Architecture logique
Caméras UniFi ──> Console Protect / NVR ──> Enregistrements locaux
                           │
                           ├── API locale + RTSPS ──> Home Assistant
                           │                         ├── Tableaux de bord
                           │                         ├── Automatisations
                           │                         └── Notifications mobiles
                           │
Internet ──> Aucun accès entrant direct aux caméras ou au NVR
02

Dimensionner l’enregistrement avant les automatisations

Commencez par les besoins de preuve : quelles zones filmer, pendant combien de jours et avec quel niveau de détail? Le nombre de caméras, leur résolution, le débit, le mode d’enregistrement et la capacité des disques déterminent la rétention réelle. L’estimation du contrôleur est un point de départ; un essai avec les réglages de production permet de confirmer la croissance quotidienne.

Protect permet d’appliquer des périodes de rétention et, sur les versions compatibles, de conserver les images récentes en haute qualité puis de réduire la qualité des plus anciennes. Une vidéo rétrogradée ne retrouve pas ensuite sa qualité initiale. Les séquences importantes doivent donc être exportées avant l’expiration ou la réduction de qualité.

Prévoyez aussi l’alimentation. Une console, un commutateur PoE et Home Assistant soutenus par un onduleur peuvent continuer pendant une brève panne. Testez toutefois l’arrêt propre, le redémarrage et le retour des flux; une autonomie théorique ne remplace pas un exercice.

DécisionQuestion à trancherValidation pratique
CouvertureEntrées, garage, cour et zones privées à exclureVérifier le cadrage de jour, de nuit et sous la pluie
RétentionNombre de jours utile pour constater un incidentMesurer la consommation réelle sur une semaine représentative
ModeContinu, détections ou horaireSimuler une journée occupée et une panne réseau
QualitéRésolution, images/s et débitConfirmer que visages et détails requis restent lisibles
ÉnergieConsole, stockage, réseau et Home Assistant sur UPSCouper l’alimentation et chronométrer la reprise
03

Séparer caméras, gestion et appareils personnels

Placez les caméras dans un VLAN dédié et gardez les interfaces de gestion sur un réseau d’administration. Le serveur Home Assistant peut vivre dans un VLAN de services : il initie les connexions nécessaires vers Protect, mais le VLAN des caméras ne reçoit pas pour autant un accès général vers les postes, le NAS ou les sauvegardes.

Pour l’adoption, Ubiquiti recommande le même VLAN entre les appareils Protect et la console. Une adoption inter-VLAN est possible dans certains scénarios, mais elle exige les ports et l’adresse de console appropriés. Le choix le plus simple consiste à adopter dans le segment prévu, puis à appliquer des règles explicites basées sur la référence de ports de la version déployée.

Évitez une liste copiée sans observation. Autorisez les flux par source et destination, activez les journaux de refus pendant le pilote et confirmez les connexions réelles. Les ports Protect évoluent avec les fonctions; une règle « caméras vers tous les réseaux privés » masque les dépendances au lieu de les documenter.

SourceDestinationPolitique de départBut
CamérasConsole ProtectAutoriser seulement les flux Protect requisAdoption, vidéo et état des appareils
Home AssistantConsole ProtectAutoriser HTTPS/API locale et RTSPS requisEntités, événements, vignettes et vidéo
Poste d’administrationProtect et Home AssistantAutoriser la gestion HTTPSConfiguration et dépannage
CamérasDNS, NTP et mises à jour approuvésAutoriser au besoinHeure, résolution et cycle de vie
CamérasAutres VLAN privésRefuser et journaliserLimiter les mouvements latéraux
InternetCaméras et consoleRefuser tout accès entrantÉliminer l’exposition directe
04

Créer une identité locale dédiée à Home Assistant

L’intégration n’utilise pas le compte Ubiquiti infonuagique. Dans la console UniFi OS accessible par son adresse locale, créez un utilisateur local réservé à Home Assistant et limitez-le à l’accès local. Ne réutilisez pas le compte d’administration quotidien ni son mot de passe.

Les permissions Protect déterminent les entités et les actions visibles dans Home Assistant. Le rôle Full Management donne la fonctionnalité complète, mais il accorde aussi des capacités sensibles. Si le besoin se limite à lire les caméras, les capteurs et les événements, commencez avec les droits minimaux compatibles, puis ajoutez une permission seulement lorsqu’une fonction précise l’exige.

Créez ensuite une clé API dans les paramètres d’intégration du plan de contrôle. La création de la clé demande actuellement un administrateur, mais la clé devrait appartenir à l’identité de service prévue. Conservez-la comme un secret, ne l’insérez pas dans un dépôt et révoquez-la lors d’un changement de serveur ou d’un incident. L’intégration exige UniFi Protect 7.1.0 ou une version plus récente et ne prend pas en charge les versions Early Access.

  • Nommer clairement le compte, par exemple ha-protect, et documenter son propriétaire.
  • Interdire l’accès infonuagique à ce compte local.
  • Accorder seulement les caméras, événements et actions nécessaires.
  • Créer une clé API distincte et enregistrer sa procédure de révocation.
  • Garder un compte d’administration séparé pour les changements de configuration.
05

Ajouter l’intégration et valider les flux un par un

Dans Home Assistant, ajoutez UniFi Protect depuis Paramètres, Appareils et services. Indiquez l’adresse IP locale de la console, le compte local et la clé API. Utilisez une adresse stable réservée par DHCP ou configurée selon les recommandations de la plateforme; un nom DNS interne fonctionne aussi si sa résolution demeure disponible pendant une panne Internet.

Validez d’abord une caméra, un capteur de mouvement et un événement avant de créer des automatisations. Home Assistant consomme les flux RTSPS activés par l’API publique de Protect et choisit la qualité la plus élevée par défaut. Les flux moyen et faible existent comme entités désactivées : activez-les seulement si un tableau de bord ou un appareil à faible bande passante en a besoin.

Si un flux n’est pas disponible, l’intégration peut retomber sur des instantanés répétés, ce qui augmente la charge de la console. Un tableau de bord affichant plusieurs caméras en direct peut aussi consommer beaucoup de décodage et de réseau. Commencez avec une vue principale, utilisez des vignettes pour les autres caméras et ouvrez le direct à la demande.

ContrôleRésultat attenduSi le test échoue
ConnexionIntégration chargée sans nouvelle authentificationVérifier compte local, clé API, DNS et heure
CaméraEntité disponible et image récenteVérifier permission de la caméra et flux activé
DirectRTSPS stable pendant plusieurs minutesVérifier pare-feu, MTU, qualité et charge du NVR
ÉvénementMouvement ou détection remonte une seule foisVérifier type d’entité, attributs et disponibilité
RepriseEntités reviennent après redémarrage du NVRExaminer les journaux et l’ordre de démarrage
06

Envoyer une notification avec une vignette protégée

Une notification utile dit quelle caméra a réagi et montre l’événement. L’intégration fournit des points d’accès mandataires pour les vignettes, vidéos et instantanés. Home Assistant signe les URL utilisées par les automatisations; la console Protect n’a donc pas besoin d’être exposée à Internet.

L’exemple suivant attend deux secondes pour laisser l’image d’événement se produire, puis transmet la vignette. Remplacez l’entité et le service mobile. Testez sur le téléphone verrouillé, en Wi-Fi et en réseau cellulaire. Si les notifications sont nombreuses, ajoutez ensuite une condition d’occupation, un horaire ou une temporisation plutôt que de désactiver les événements à la source.

Pour une pièce jointe conservée par Home Assistant, préférez la source média authentifiée. Le répertoire /www est servi publiquement sous /local et convient mal aux images de surveillance. Évitez aussi de recopier chaque événement sur le disque de Home Assistant : conservez seulement ce qui répond à une politique explicite.

Automatisation Home Assistant — mouvement avec vignette
alias: Mouvement à la porte avec image
description: Envoie la vignette Protect lorsqu’un mouvement commence
triggers:
  - trigger: state
    entity_id: binary_sensor.g4_instant_motion
    from: "off"
    to: "on"
actions:
  - delay:
      seconds: 2
  - action: notify.mobile_app_votre_telephone
    data:
      title: "Mouvement à la porte"
      message: "UniFi Protect a détecté un mouvement."
      data:
        image: >-
          /api/unifiprotect/thumbnail/{{ config_entry_id(trigger.entity_id) }}/{{ trigger.to_state.attributes.event_id }}
mode: single
07

Transformer les détections en contexte, pas en décisions irréversibles

Les événements de personne, véhicule, colis ou plaque peuvent réduire le bruit, mais ils demeurent des observations probabilistes. Utilisez-les pour choisir un message, allumer une zone ou demander une confirmation. Ne déverrouillez jamais une porte ou un portail uniquement à partir d’une plaque, d’un visage ou d’un numéro NFC : une image, une plaque imprimée ou un identifiant copié peut tromper le mécanisme.

Une automatisation sensible devrait combiner plusieurs signaux indépendants et garder une action humaine. Par exemple : personne détectée à la porte, téléphone du résident présent, alarme désarmée et confirmation dans une notification actionnable. Même dans ce cas, l’ouverture doit expirer rapidement et produire un journal.

Préparez aussi les états indisponibles. Après un redémarrage, certains événements peuvent être rejoués ou changer d’état. Utilisez un délai maximal, vérifiez l’horodatage de l’événement et rendez les actions idempotentes : une deuxième exécution ne devrait jamais ouvrir deux fois, prolonger une minuterie sans limite ou envoyer une rafale de messages.

  • Notification et éclairage : risque faible, automatisation directe raisonnable.
  • Sirène ou appel : exiger plusieurs signaux et une fenêtre temporelle courte.
  • Déverrouillage : confirmation humaine et second facteur de contexte.
  • Suppression d’une vidéo : ne jamais automatiser à partir d’une détection.
  • Mode vie privée : protéger le changement par des droits et un journal.
08

Accéder à distance sans publier les caméras

Ne transférez pas les ports des caméras, de Protect ou de Home Assistant directement sur le routeur. Pour Home Assistant, le service Home Assistant Cloud est l’option la plus simple pour la majorité des foyers; un VPN comme Tailscale ou un VPN sur le routeur convient aussi. Un mandataire inverse peut fonctionner, mais il exige TLS, une configuration correcte des mandataires de confiance, des mises à jour et une surveillance continue.

UniFi Site Manager établit la gestion à distance à l’aide de connexions sortantes, sans exiger de port entrant. Ubiquiti indique que les enregistrements demeurent sur la console locale et que les connexions distantes sont chiffrées de bout en bout. Cela ne remplace pas le contrôle des comptes : activez l’authentification multifacteur sur les comptes interactifs, retirez les anciens appareils et examinez les sessions.

Dans Home Assistant, activez aussi la MFA, utilisez un mot de passe unique et révoquez les jetons qui ne sont plus nécessaires depuis la page de sécurité du profil. La clé API Protect appartient au serveur, pas au téléphone; elle ne devrait jamais être utilisée comme raccourci d’accès distant.

MéthodeAvantageResponsabilité
Home Assistant CloudAucun port de routeur à ouvrirProtéger le compte et tester les notifications
VPNAccès privé à plusieurs servicesMaintenir les clés, routes et clients
Mandataire inverseContrôle fin du domaine et du TLSDurcissement, mises à jour, en-têtes et journaux
UniFi Site ManagerAccès Protect sans port entrantMFA, rôles et retrait des sessions
09

Sauvegarder la configuration et archiver les preuves séparément

Une sauvegarde de configuration Protect accélère la reconstruction de la console, mais elle ne transporte pas les enregistrements vers une nouvelle console. Ubiquiti précise que les vidéos restent sur l’hôte d’origine et que la réutilisation des disques peut les reformater. Exportez donc les séquences importantes vers un emplacement protégé avant une migration, une intervention sur les disques ou l’expiration de la rétention.

Pour Home Assistant, configurez des sauvegardes automatiques vers au moins un emplacement indépendant et téléchargez la trousse d’urgence contenant la clé de chiffrement. Une copie chiffrée sur un NAS, un support hors ligne ou un espace infonuagique réduit le risque qu’une panne du même serveur emporte à la fois le système et sa sauvegarde.

Documentez deux procédures distinctes : restaurer l’automatisation et préserver une preuve vidéo. La première vise les tableaux de bord, secrets, appareils et scénarios; la seconde vise la chaîne de possession, l’horodatage et un fichier exporté lisible. Testez les deux sans effacer la production.

ÉlémentProtectionTest
Configuration ProtectSauvegarde automatique et copie hors consoleRestaurer sur une plateforme de laboratoire compatible
Enregistrements courantsRétention locale dimensionnée et état des disquesRetrouver un événement ancien et lire le clip
Séquences critiquesExport immédiat vers stockage protégéLire le fichier sur un autre appareil
Home AssistantSauvegardes chiffrées sur emplacement indépendantRestaurer une sauvegarde récente en laboratoire
Clé de sauvegarde HATrousse d’urgence hors ligneConfirmer qu’elle est accessible au propriétaire autorisé
10

Recette de mise en service

Mettez le système en production par scénarios, pas seulement parce que toutes les entités sont vertes. Marchez devant chaque caméra de jour et de nuit, coupez Internet, redémarrez Home Assistant, redémarrez la console, simulez un téléphone absent et vérifiez la récupération d’un ancien événement. Une notification doit arriver au bon destinataire sans exposer une image à une URL publique.

Le bon résultat est simple à expliquer : Protect continue d’enregistrer localement; Home Assistant ajoute des réactions utiles; les caméras ne peuvent pas parcourir le réseau; l’accès distant n’ouvre pas le NVR; une panne ou un faux positif ne déclenche pas une action dangereuse. Conservez la matrice de flux, les comptes de service, la rétention et les tests avec la documentation de la maison.

  • Confirmer l’heure, le DNS et les mises à jour sur Protect, Home Assistant et les caméras.
  • Tester chaque zone de jour, de nuit et avec un mouvement réel.
  • Valider le direct, la vignette, le clip et la fin d’un événement.
  • Couper Internet et confirmer l’enregistrement local.
  • Redémarrer Protect puis Home Assistant et surveiller la reprise.
  • Tester les règles de pare-feu depuis un appareil du VLAN caméra.
  • Révoquer un jeton de test et confirmer que l’accès cesse.
  • Restaurer une sauvegarde et lire un clip exporté sur un autre appareil.
  • Réviser les permissions, la rétention et les destinataires après tout changement majeur.