Système de vidéosurveillance avec frégate et Home Assistant
Si vous disposez d’un assistant à domicile et que vous souhaitez mettre en place un système de vidéosurveillance, vous pouvez (pour la maison ou l’entreprise), Eh bien, il n’y a pas d’autre choix que de monter Frégate, Qu’est-ce que l’Open Source ?. Nous pourrons recevoir des messages dans Telegram (avec photos et vidéos), Quand les caméras détectent les gens, Chiens, Chats, oiseaux, Chevaux…
Puits, L’idée est simple, Nous avons ou voulons avoir des caméras de sécurité, vidéosurveillance, caméras IP de bonne qualité mais bon marché et gérer le système nous-mêmes. Où Frégate Cela nous aidera à centraliser chaque caméra et à configurer ce dont nous avons besoin. La frégate sera chargée de détecter le Objets que nous avons dit, Comment les personnes sont détectées, tout type d’animal, Voitures, Inscription… Si nous le souhaitons, il stockera les clips et les vidéos pendant le temps que nous indiquons.. Ensuite, les événements générés peuvent être envoyés à Home Assistant et, en fonction d’une série de facteurs (Nous sommes en déplacement, Nous dormons…) qui nous alerte via Telegram ou ce que nous voulons.
Frigate fonctionnera sur un conteneur Docker, et en fonction du nombre de caméras dont nous disposons, il faudra utiliser beaucoup de CPU et il est même conseillé d’utiliser du matériel d’accélération qui améliore les performances des détections. Tout dépendra de nombreux facteurs, S’il y a beaucoup de pixels qui changent dans les caméras, nous pouvons toujours créer des zones pour éviter leur analyse; le nombre de caméras ou le décompte que nous lui donnons, puisqu’il peut fonctionner sur un Raspberry Pi. Pour 4-5 appareils photo avec le Accélérateur USB Google Coral Nous nous en sortons bien, Il s’agit d’un coprocesseur, un TPU externe qui nous aidera à déplacer la charge.
Accélérateur USB Coral,
Puits, car avec cela, plus ou moins le poisson est vendu, Commençons si vous le souhaitez 🙂. La première chose à faire sera d’avoir une machine avec Docker, Cet article est basé sur un Raspberry Pi 4, et le second installe les pilotes de l’accélérateur USB Google Coral (ou celui que nous utilisons). Pour ce faire,, nous téléchargeons le référentiel Google:
ÉCHO "Deb https://packages.cloud.google.com/apt Coral-edgeTpu-stable" | sudo tee /etc/apt/sources.list.d/coral-edgetpu.list curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | Sudo apt-key add - Sudo apt-get update
Nous avons installé le runtime et la bibliothèque PyCoral:
SUDO apt-get install libedgetpu1-std #Para performances maximales --> sudo apt-get install libedgetpu1-max sudo apt-get install python3-pycoral -y
Ya estamos listos para probar si la Raspberry Pi ya reconoce al dispositivo, podremos bajarnos un modelo de ejemplo y validarlo:
Corail MKDIR && cd corail git clone https://github.com/google-coral/pycoral.git cd pycoral bash exemples/install_requirements.sh classify_image.py exemples python3/classify_image.py \ --Modèle test_data/mobilenet_v2_1.0_224_inat_bird_quant_edgetpu.tflite \ --Étiquettes test_data/inat_bird_labels.txt \ --test_data/parrot.jpg d’entrée
Y si va todo bien recibiremos algo como esto:
----TEMPS D’INFÉRENCE ---- Note: La première inférence sur Edge TPU est lente car elle inclut le chargement du modèle dans la mémoire Edge TPU. 11.8ms 3.0ms 2.8ms 2.9ms 2.9ms -------RÉSULTATS-------- Ara macao (Ara écarlate): 0.75781
Frégate Desplegar,
Como hemos comentado anteriormente Frégate no se instala, Nous allons le déployer dans un conteneur, n’oubliez donc pas que nous devons avoir installé Docker au préalable. Et avant de commencer, nous devons créer le fichier de configuration de la frégate. Dans mon cas, je vais le laisser à '/mnt/config.yml’ Et il s’agit d’un exemple minime, où je vous dis qui est le serveur MQTT pour envoyer les événements, Le parcours BD, Journaux, (optionnellement) nous indiquons si nous avons un accélérateur Coral puis nous ajoutons les caméras, J’insiste sur un exemple minimum:
MQTT: hôte: DIRECCIÓN_IP_MQTT port: 1883 utilisateur: USUARIO_MQTT mot de passe: Base de données CONTRASEÑA_MQTT: Chemin: /Média/Frégate/frigate.db Logger: faire défaut: Journaux d’informations: frégate.event: Déboguer
Détecteurs:
corail:
type: Bord en tpu
appareil: USB
Caméras: NOMBRE_DE_LA_CAMARA: ffmpeg: Entrées: - Chemin: RTSP://USUARIO_RTS:CONTRASEÑA@DIRECCION_IP_CAMARA:554/av_stream/ch0 détecter: Largeur: 1280 hauteur: 720
Actuellement, la frégate est dans le 0.10.1, Et ce sont les différentes images qu’ils nous donnent en fonction de la machine que nous avons:
- x86: BlakeBlackshear/Frégate:0.10.1-AMD64
- x86 avec nvidia (Pour ffmpeg uniquement): BlakeBlackshear/Frégate:0.10.1-amd64nvidia
- Raspberry Pi 3/4 (32mors): BlakeBlackshear/Frégate:0.10.1-Armv7
- Raspberry Pi 4 (64mors): BlakeBlackshear/Frégate:0.10.1-aarch64
Nous devons créer et démarrer le conteneur, nous vous passerons le périphérique USB, nous augmentons la taille de la Mémoire partagée, Nous vous transmettons le répertoire où vous sauvegarderez toutes les données dont Frigate a besoin (Clips, Enregistrements…), Nous vous transmettons le fichier de configuration, heure, Mot de passe RTSP et le port que nous utiliserons pour sa gestion (5000TCP), suivi de cela, L’image que nous voulons; à partir d’un Raspberry Pi 4 Exécuter:
sudo docker run -d --name frégate --restart=Sauf si arrêté --mount type=tmpfs,target=/tmp/cache,tmpfs-size=10000000000 --device /dev/bus/usb:/dev/bus/usb --shm-size=128m -v /media/frégate:/media/frégate -v /mnt/config.yml:/config/config.yml:ro -v /etc/heurelocale:/etc/heure locale:ro -e FRIGATE_RTSP_PASSWORD='CONTRASEÑA' -p 5000:5000 -p 1935:1935 BlakeBlackshear/Frégate:0.10.1-aarch64
Et après quelques minutes que tout est déchargé et que le conteneur démarre, nous pouvons nous connecter à la frégate, Via un navigateur, nous accédons à HTTP://DIRECCION_IP_DOCKER:5000 Et nous aurons quelque chose comme cette image ci-dessus.
Permettez-moi de vous laisser quelques commandes Docker dont vous pourriez avoir besoin pour la R+D:
Sudo Docker PS -a # Lista contenedores sudo docker stop ID_CONT # Apaga contenedores sudo docker start ID_CONT # Arranca contenedores sudo docker restart ID_CONT # Reinicia contenedores sudo docker rm ID_CONT # Elimina contenedores sudo docker system prune -a # Supprimez les caches et autres déchets, soyez prudent! Sudo Docker Logs ID_CONT -f # Afficher les journaux générés par le conteneur
Et puis chacun devra faire évoluer sa frégate à son goût, Je vous laisse le lien avec le fichier de configuration et toutes ses possibilités. Nous pourrons voir toutes les caméras de la frégate, ou utilisez le Birdeye, qui est un écran éteint et qui s’allume lorsqu’il y a du mouvement dans une caméra, ou afficher les événements que vous avez collectés…
Nous avons tellement de possibilités, Dans chaque caméra, nous pouvons créer des masques pour l’empêcher de scanner des zones inintéressantes qui peuvent avoir un certain mouvement, pour minimiser les faux positifs, parce qu’il est inutile de détecter une personne à l’extérieur, Dans la rue, ou un pot mobile qui génère des calculs inutiles… Ou créez des zones pour unifier différentes caméras… a pas mal de possibilités. Je vous laisse au cas où la configuration que j’utilise avec mes appareils photo me sert de guide, et vous pouvez voir les rôles de chaque caméra, Quel type d’objets suivre, La résolution, FPS, Temps de stockage des images, Les vidéos… :
CAMARA03: ffmpeg: output_args: enregistrer: -segment f -segment_time 10 -segment_format mp4 -reset_timestamps 1 -strftime 1 -c:v copie -c:A entrées aac: - Chemin: RTSP://USUARIO_RTSP:CONTRASEÑA@DIRECCION_IP_CAMARA:554//h264Preview_01_main rôles: - détecter - Clips - Rtmp - enregistrer - Instantanés de mouvement: Masque: - 1136,79,1045,62,683,33,576,55,484,69,213,114,30,161,129,278,221,370,238,673,145,709,187,834,253,960,0,960,0,0,954,0,1040,0,1280,0,1280,122 - 1280,402,901,274,708,224,491,191,473,50,503,53,511,159,690,186,692,149,777,156,789,87,893,120,1083,156,1280,224 détecter: Largeur: 1280 hauteur: 960 Images/s: 5 Objets: piste: - personne - Chat - chien #- Enregistrement d’oiseaux: Activé: Véritable retain_days: 0 Épreuves: retenir: faire défaut: 10 Snapshots: bounding_box: true activé: horodatage réel: Véritable rétention: faire défaut: 10
Intégration de la frégate avec Home Assistant
Comme vous avez pu le voir, Je n’ai pas installé Frégate directement sur Home Assistant, Ce qui pourrait être fait, mais je pense que cela dépend de l’environnement et pour des raisons de performance, il est préférable de séparer les composants. Alors Frégate de son côté et Home Assistant du leur, d’autant plus que Frégate demande beaucoup de calcul.
Pour installer l’intégration de la frégate avec Home Assistant, la chose la plus pratique à faire est d’utiliser HACKS. “HACKS” > “Intégrations” > “Frégate” >Téléchargez-le et installez-le et redémarrez Home Assistant après. S’il n’est pas répertorié, Nous allons ajouter ce dépôt 'https://github.com/blakeblackshear/frigate-hass-integration ».
Une fois l’intégration installée, nous la configurons, Passons aux intégrations, et cliquez sur Ajouter une nouvelle intégration, nous avons écrit 'Frégate'…
Et rien, tout ce que nous avons à faire est d’indiquer l’URL de Frégate, Cliquez sur “Envoyer”. Cela créera déjà toutes les Entités avec les caméras que nous avons définies dans Frégate, Et il ne vous reste plus qu’à faire de nous notre panneau de contrôle!
Je suis sûr que dans peu de temps tu feras quelque chose de mieux que moi, Ceci est un exemple de 4 Caméras, où nous pouvons voir en temps réel ce qui se passe, Si nous cliquons sur la caméra et qu’elle a un microphone, nous pouvons également l’écouter sans problème. On peut ajouter quelques clips avec les dernières détections effectuées par chaque caméra, que lorsque vous appuyez sur l’un d’entre eux, la vidéo sera lue…
Et voici un exemple d’automatisation de la maison, que s’il détecte un chat la nuit, Prenez une photo de lui, Je nous l’ai envoyé sur Telegram et un lien vers la vidéo au cas où nous voudrions la voir. L’automatisation écoutera un événement MQTT et avec un modèle, nous définissons l’objet que nous attendons, dans ce cas, un chat. Et puis l’action que nous voulons, Je vous laisse un exemple en YAML que vous pouvez utiliser pour recevoir une photo et un lien vers la vidéo:
service: telegram_bot.send_photo données: URL: >- HTTP://DIRECCION_IP_FRIGATE:5000/API/Événements/{{trigger.payload_json["après"]["Id"]}}/snapshot.jpg?bbox=0&recadrage = 1 légende: >- {{trigger.payload_json["après"]["caméra"]|Remplacer("frégate_","") | Supérieur }} {{trigger.payload_json["après"]["étiquette"] | Supérieur }} [VOIR LA VIDÉO](https://DIRECCION_IP_FRIGATE/api/events/{{trigger.payload_json["après"]["Id"]}}/clip.mp4) Timeout: 1000
Si tout s’est bien passé, Le résultat serait quelque chose comme ceci, parce qu’à un moment donné pour connaître les visites que nous recevons, Évidemment, cela peut s’appliquer à des personnes ou à d’autres types d’objets, animaux…
Comme vous pouvez le constater, tout ce que nous pouvons faire est assez malléable, Chacun dépendra de leurs particularités ou de ce qu’ils veulent compliquer… J’espère que vous l’avez trouvé intéressant, Il n’est vraiment pas très coûteux de mettre en place son propre système, sans emporter d’images privées à l’extérieur ou qu’un tiers puisse les manipuler. Je suis également sûr que nous obtenons de meilleures performances qu’avec n’importe quelle solution commerciale.
La frégate est la poire et l’assistant à domicile un Dieu tout-puissant, rien, J’espère que, qui vous ont plu, Essayer, Soyez heureux et remerciez comme toujours ceux d’entre vous qui déplacent ce type de contenu à travers les réseaux sociaux. Un câlin à tod@s!