Zoneminder, home assistant et Machinelearning
Cet Article a été vu ... fois
Sommaire
Dlandon a sorti cette année une image Docker complète avec Zoneminder et le Machinelearning, l’intégration dans home assistant est complète. C’est pourqoui cet article devait absolument voir le jour. Depuis moins d’un an l’installation sous docker a été largement simplifié. De plus le machinelearning est très complet grâce à la détection d’objets, détection faciale, reconnaissance faciale, reconnaissance de plaques, etc… .
Prérequis:
- Home assistant core ou HAOS d’installé et fonctionnel
- Ordinateur traditionnel avec DD ou de type NAS
- Docker installé et fonctionnel sur l’ordinateur
- Savoir utiliser l’environnement docker pour installer et configurer Zoneminder
L’environnement d’installation:
Zoneminder va être installé sur un NAS qui tourne sous Openmediavault avec docker. Ce choix est presque indispensable, d’une part le processeur CPU/GPU est relativement puissant, de plus le stockage des vidéos peut devenir très envahissant. Je déconseille l’installation de Zoneminder sur un Raspberry pi, pas assez puissant pour zm et le Machinelearning actif.
quand à home assistant OS, il est installé sur un Raspberry pi depuis peut, avant j’utilisais home-assistant core qui tournait dans un container sur le NAS.
ci-dessous on retrouve la commande docker que l’on retrouve dans la documentation du dépôt github.
Exemple de configurations personnalisés “celle que j’utilise” pour Openmediavault, il faut penser à personnaliser le timezone TZ ainsi que tout volume de montage. Tu peux installer ZM non sécurisé avec le port -p 8080:80, cependant je conseil vivement de faire l’installation en ssl, letsencrypt fait partie du container. Un plus !
Après lancement de l’image l’installation se fait rapidement grâce au travail de dlandon sur l’image. Auparavant avec l’ancienne image de Zoneminder il fallait patienter 20 à 40 minutes, la partie ES et ML prenait pas mal de temps. Maintenant Zoneminder et Le paquet ZMEventnotification s’installent en moins de 5 minutes.
PS: Si tu veux utiliser une installation sous docker-compose tu trouvera le code ici.
1 - Préparation de Zoneminder pour Home assistant et Machinelearning ML
Protection par mot de passe de Zoneminder
Modifier l’utilisateur par défaut Admin dan options »> utilisateurs et paramétrez un mot de passe
Ensuite dans Options »> Systèmes
Cochez les cases comme l’image ci-dessous et rentrez un code Hashsecret pour plus de sécurité
- OPT-USE_AUTH: authentification par mot de passe
- AUTH_HASH_SECRET: Code supplémentaire ( tu peux générer un code ici )
- AUTH_HASH_LOGINS: prendre en compte la double sécurisation
- OPT_USE_API: Activer l’API Zoneminder
- OPT_USE_LEGACI_API_AUTH: activer l’uthentification API
- OPT_USE_EVENTNOTIFICATION: Prise en compte du machine learning
Mise en place pour Home Assistant
Ensuite il faut créer un utilisateur dédié à Homeassistant avec une ouverture aux API Zoneminder:
Options »> Utilisateurs » Ajouter utilisateurs
2 - Paramétrage du Machinelearning ( ZMEVENTNOTIFICATION )
Pour commencer l’intégralité de la documentation est disponible à cette adresse https://zmeventnotification.readthedocs.io/
Pour le machinelearning nous avons 3 fichiers à personnaliser pour ces 3 fichiers il existe d’ailleurs un doublon en exemple. Donc il s’agit des fichiers secret.ini qui contien tous les mots de passes et objectconfig.ini contient chaque paramétrage pour chaque caméra en gros on indique ce que l’on veut que Zmeventnotification analyse en fonction de chaque caméra.
secrets.ini doit ressembler à ça ( dans ma config je n’utilise pas l’api ML, OpenAlpr, Escontrol, Mqtt et Pushover )
Au tour de objectconfig.ini qui doit ressembler au code ci-dessous. Avec la nouvelle version de ZMeventnotification, le paramétrage des moniteurs à été très simplifié
Clic ici si tu veux lire la doc officielle.
Pour ces paramétrages n’hésitez pas à m’écrire mais dans premier lieu il s’agit de modifier les [monitor-x] en effet on ne met pas le nom de sa caméra mais si celle-ci est en première position on l’appellera monitor-1 et ainsi de suite, ci-dessous un exemple de monitoring de garage.
afin de pouvoir utiliser la capture d’images par personne il faut crée un dossier s’il n’existe pas dans … nommé known_faces et intégrer à l’intérieur un sous dossier nommé nicolas ensuite intégrer des photos de vous qui serons nommé 1.png, 2.png, etc. lien direct de l’architecture zmeventnotification known-faces
Une fois toutes les images insérées ou dès que tu ajoutes une nouvelle image, il faudra générer le train_face, donc rentrons dans le docker zoneminder:
Une fois toutes les images intégrées dans le dossier ou en cas de rajout d’images lance la commande suivante afin de générer le trainface:
redémarre les service
et voilà si tout s’est bien passé Zmeventnotification devrait être fonctionnel.
3 - Intégration de Zoneminder dans Home Assistant
les lignes de codes ci-dessous sont à rentrer dans la configuration.yaml de home-assistant pour connaître tous les paramètres consulte cette page officielle: Intégration Zoneminder et Homeassistant.
interface complète de zoneminder dans home assistant
En plus de cette intégration dans home-assistant Zoneminder permet de faire remonter un service appelé zoneminder.set_run_state. Permet de Changer l’état de Zoneminder.
Qu’est-ce qu’un état dans Zoneminder:
Un état dans Zoneminder permet de gérer les Modes des caméras comme bon nous semble juste en basculant sur cet état.
Par défaut il existe 3 états dans Zm:
- Arrêté: il désactive toutes les caméras
- Redémarré: il redémarre les caméras
- Défaut, EN MARCHE: réglage par défaut
Pour Home Assistant j’ai créé deux nouveaux états, HOME c’est un état quand je suis au domicile, et AWAY quand je suis absent, ces états sont utilisés dans le cadre d’une automatisation par gestion d’alarme.
- HOME: quand je suis à la maison les caméras intérieurs sont en mode Monitor et les extérieurs en Modect
- AWAY: quand je suis absent elles passent toutes en Modect.
IMPORTANT ! les modes des caméras sont à paramétrer avant l’enregistrement d’un nouvel état voir le Gif ci-dessous.
AVANTAGE: Par rapport au binary-sensor Zm qui permet de passer d’un mode à l’autre dans HA, le changement d’état est très pratique lorsque l’on veut choisir un autre mode, lorsqu’on à pleins de caméra et surtout simplifie les automatisations dans HA appel à un service sans avoir besoin de faire appel à chaque caméra ou de créer un groupe binary_sensor Home ou Away dans group.yaml de HA.
4 - Fonctionnement des Modes dans Zoneminder:
- Aucun: Moniteur désactivé. Aucun flux visualisé ni aucun événement généré.
- Nodect: Il s’agit d’un mode spécial conçu pour travailler avec des déclencheurs externes. Dans Nodect, aucune détection de mouvement n’a lieu mais les événements sont enregistrés sur déclencheurs externes
- Monitor: Le moniteur n’est disponible que pour la diffusion en direct. Sans analyse d’images ou évènements.
- Mocord: Le moniteur enregistre en continu, tout mouvement étant mis en évidence dans ces événements.
- Modect: Le moniteur analyse les images et génère des événements. La vidéo enregistre sur mouvement durant un temps déterminé.
- Record: Le moniteur enregistre en continu. Des événements d’une durée fixe se génèrent quel que soit le mouvement, de la même manière qu’un enregistrement vidéo à intervalle de temps conventionnel. Aucune détection de mouvement n’a lieu dans ce mode.
Fonctionnement des Zones dans Zoneminder
Un article est dédié aux zones et préréglages, clic ici !
Fonctionnement de Filtres dans Zoneminder
Un article est dédié aux filtres, clic ici !
En Conclusion
Pour finir Zoneminder n’a peut être pas l’interface la plus belle mais par sa gratuité et la stabilité il est certainement le meilleur outil de gestion de caméra du moment. Une fois que l’on maîtrise bien les différents aspects, il devient alors pratique intuitif et indispensable du point de vue sécurité, l’intégration dans Home assistant est un plus non négligeable.
commentaires