<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Caméras De Sécurité | Antoine Weill--Duflos</title>
    <link>https://antoine.weill-duflos.fr/fr/tag/cam%C3%A9ras-de-s%C3%A9curit%C3%A9/</link>
      <atom:link href="https://antoine.weill-duflos.fr/fr/tag/cam%C3%A9ras-de-s%C3%A9curit%C3%A9/index.xml" rel="self" type="application/rss+xml" />
    <description>Caméras De Sécurité</description>
    <generator>Hugo Blox Builder (https://hugoblox.com)</generator><language>fr-fr</language><lastBuildDate>Sun, 12 Apr 2026 00:00:00 +0000</lastBuildDate>
    <image>
      <url>https://antoine.weill-duflos.fr/media/icon_hu_d686267daab28486.png</url>
      <title>Caméras De Sécurité</title>
      <link>https://antoine.weill-duflos.fr/fr/tag/cam%C3%A9ras-de-s%C3%A9curit%C3%A9/</link>
    </image>
    
    <item>
      <title>Adieu les caméras cloud : vidéosurveillance auto-hébergée avec Frigate, Tapo et un Intel Arc B580</title>
      <link>https://antoine.weill-duflos.fr/fr/post/frigate/</link>
      <pubDate>Sun, 12 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://antoine.weill-duflos.fr/fr/post/frigate/</guid>
      <description>&lt;h1&gt;&lt;/h1&gt;
&lt;p&gt;J&amp;rsquo;habite au Canada. À un moment j&amp;rsquo;ai commencé à remarquer des signes de passage dans mon jardin. Animal ? Personne ? Impossible à dire. Du coup j&amp;rsquo;ai décidé de mettre des caméras. Ce qui devait être un simple achat s&amp;rsquo;est transformé en un vrai setup auto-hébergé avec détection par IA. Voici l&amp;rsquo;histoire.&lt;/p&gt;
&lt;h2 id=&#34;le-point-de-départ--amazon-blink&#34;&gt;Le point de départ : Amazon Blink&lt;/h2&gt;
&lt;p&gt;J&amp;rsquo;ai commencé par des caméras &lt;strong&gt;Amazon Blink&lt;/strong&gt;. Pas cher, sur batterie, déclenchement par mouvement, et ça tient bien le climat canadien. Pas de câblage, pas de réseau à configurer. On les colle au mur et c&amp;rsquo;est parti.&lt;/p&gt;
&lt;p&gt;Le problème ? Les faux positifs. En permanence. Une branche qui bouge dans le vent, une ombre, de la neige qui tombe&amp;hellip; tout déclenche une alerte. Au bout de quelques semaines, soit on finit par ignorer toutes les notifications (ce qui rend les caméras inutiles), soit on perd du temps à regarder des clips de rien du tout. Pas idéal.&lt;/p&gt;
&lt;p&gt;C&amp;rsquo;est là que j&amp;rsquo;ai commencé à lire sur &lt;strong&gt;Frigate&lt;/strong&gt; et les caméras RTSP, et les choses sont devenues intéressantes.&lt;/p&gt;
&lt;h2 id=&#34;le-nouveau-setup&#34;&gt;Le nouveau setup&lt;/h2&gt;
&lt;h3 id=&#34;caméras-tapo&#34;&gt;Caméras Tapo&lt;/h3&gt;
&lt;p&gt;J&amp;rsquo;ai remplacé les Blink par des caméras &lt;strong&gt;Tapo&lt;/strong&gt;. L&amp;rsquo;intérêt principal : elles supportent le &lt;strong&gt;streaming RTSP&lt;/strong&gt; nativement et ont un slot &lt;strong&gt;carte micro SD&lt;/strong&gt; pour l&amp;rsquo;enregistrement local. Concrètement :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Un backup local sur la carte SD même si le réseau tombe&lt;/li&gt;
&lt;li&gt;Un flux vidéo direct en WiFi vers le NVR, sans passer par le cloud&lt;/li&gt;
&lt;li&gt;Des caméras qui fonctionnent à 100% sur le réseau local, sans compte ni abonnement&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;frigate&#34;&gt;Frigate&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://frigate.video/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Frigate&lt;/a&gt; est un NVR (enregistreur vidéo réseau) open source qui a vraiment beaucoup évolué. Il offre :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Un tableau de bord unique avec les vues en direct de toutes les caméras&lt;/li&gt;
&lt;li&gt;La détection de mouvement comme premier filtre&lt;/li&gt;
&lt;li&gt;La détection d&amp;rsquo;objets par IA qui identifie &lt;em&gt;ce qui&lt;/em&gt; a bougé (personne, animal, voiture&amp;hellip;)&lt;/li&gt;
&lt;li&gt;Des descriptions de scènes complètes qui expliquent ce qui se passe réellement dans le clip&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;C&amp;rsquo;est ce dernier point qui change tout. Au lieu de recevoir « mouvement détecté », on obtient quelque chose comme :&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Une personne ramasse une roue de vélo&lt;/strong&gt;
Une personne entre dans le cadre par le bas à droite et marche vers le centre de la zone où une roue de vélo est posée au sol. La personne se penche, ramasse la roue de vélo et se relève en la tenant. L&amp;rsquo;individu se retourne ensuite et repart vers la caméra, sortant du cadre par le bas.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Avec ce niveau de détail, je ne suis notifié que quand il se passe vraiment quelque chose.&lt;/p&gt;
&lt;h2 id=&#34;le-matériel--intel-arc-b580&#34;&gt;Le matériel : Intel Arc B580&lt;/h2&gt;
&lt;p&gt;J&amp;rsquo;ai ajouté une &lt;strong&gt;Intel Arc B580&lt;/strong&gt; (Battlemage) dans mon serveur. Cette carte fait le double travail :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Décodage vidéo&lt;/strong&gt; : décodage matériel accéléré de tous les flux RTSP&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Inférence IA&lt;/strong&gt; : exécution des modèles de détection et de description de scènes&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Le support de la B580 dans Frigate est franchement correct. Les deux charges tournent sur le GPU en même temps, ce qui laisse le CPU tranquille. Les descriptions ne sont pas toujours parfaites mais elles sont largement suffisantes pour filtrer le bruit et n&amp;rsquo;alerter que sur des événements réels.&lt;/p&gt;
&lt;p&gt;Une seule carte, une conso raisonnable, pas besoin d&amp;rsquo;une machine dédiée au ML. Ça fait le job.&lt;/p&gt;
&lt;h3 id=&#34;le-modele-de-description-de-scenes--llamacpp--vulkan&#34;&gt;Le modele de description de scenes : llama.cpp + Vulkan&lt;/h3&gt;
&lt;p&gt;Les descriptions IA ne viennent pas du cloud non plus. Je fais tourner un serveur LLM local avec &lt;a href=&#34;https://github.com/ggml-org/llama.cpp&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;llama.cpp&lt;/a&gt; et le backend Vulkan sur la B580. Frigate lui envoie des captures via une API compatible OpenAI, et le modele renvoie des descriptions de scene.&lt;/p&gt;
&lt;p&gt;Voici le docker-compose du serveur d&amp;rsquo;inference :&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;version&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;3.9&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;services&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;llama-server-intel&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;ghcr.io/ggml-org/llama.cpp:server-vulkan&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;container_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;llama-server-intel&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;restart&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;unless-stopped&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;devices&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;/dev/dri:/dev/dri&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;volumes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;/var/models:/models&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;ports&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;m&#34;&gt;4040&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;8080&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;environment&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# Workaround pour un bug fp16 du driver Mesa ANV sur les iGPU Intel.&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# Sans risque sur les dGPU (B580), ignore si pas necessaire.&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;GGML_VK_DISABLE_F16=${GGML_VK_DISABLE_F16:-0}&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;command&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&#34;sd&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sd&#34;&gt;      --model /models/Qwen3.5-9B-UD-Q4_K_XL.gguf
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sd&#34;&gt;      --mmproj /models/mmproj/mmproj9B-BF16.gguf
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sd&#34;&gt;      --n-gpu-layers 99
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sd&#34;&gt;      --ctx-size ${LLAMA_CTX_SIZE:-131072}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sd&#34;&gt;      --host 0.0.0.0
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sd&#34;&gt;      --port 8080&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Le modele utilise est Qwen3.5-9B avec un projecteur de vision, quantifie pour tenir dans les 12 Go de VRAM de la B580. Vulkan est 30-60% plus rapide que SYCL sur les GPU Intel Arc, c&amp;rsquo;est donc le bon backend pour cette carte.&lt;/p&gt;
&lt;h2 id=&#34;docker-compose-pour-frigate&#34;&gt;Docker-compose pour Frigate&lt;/h2&gt;
&lt;p&gt;Voici la config docker-compose de Frigate :&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;version&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;3.9&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;services&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;frigate&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;container_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;frigate&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;privileged&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;restart&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;unless-stopped&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;ghcr.io/blakeblackshear/frigate:stable&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;shm_size&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;512mb&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;volumes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;/etc/localtime:/etc/localtime:ro&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;./config:/config&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;./model:/model&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;./storage:/media/frigate&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;/dev/dri/renderD128:/dev/dri/renderD128&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;nt&#34;&gt;type&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;tmpfs&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;target&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;/tmp/cache&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;tmpfs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;          &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;size&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1000000000&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;ports&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;m&#34;&gt;5005&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;5000&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;m&#34;&gt;8971&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;8971&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;m&#34;&gt;8554&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;8554&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# Flux RTSP&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;m&#34;&gt;8555&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;8555&lt;/span&gt;&lt;span class=&#34;l&#34;&gt;/tcp&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# WebRTC over tcp&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;m&#34;&gt;8555&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;8555&lt;/span&gt;&lt;span class=&#34;l&#34;&gt;/udp&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# WebRTC over udp&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;m&#34;&gt;1984&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1984&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;environment&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;PLUS_API_KEY&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;${PLUS_API_KEY}&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# optionnel, pour Frigate+&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;FRIGATE_RTSP_PASSWORD&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;${FRIGATE_RTSP_PASSWORD}&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;OPENAI_BASE_URL&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;http://llama-server-intel:8080/v1&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# pointe vers le LLM local&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Quelques notes :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;/dev/dri/renderD128&lt;/code&gt; donne a Frigate l&amp;rsquo;acces a la B580 pour le decodage video materiel&lt;/li&gt;
&lt;li&gt;Le montage &lt;code&gt;tmpfs&lt;/code&gt; sert de cache rapide pour les clips en cours de traitement&lt;/li&gt;
&lt;li&gt;&lt;code&gt;shm_size&lt;/code&gt; depend du nombre de flux camera (512 Mo suffit pour quelques cameras)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;OPENAI_BASE_URL&lt;/code&gt; pointe vers le serveur llama.cpp pour les descriptions de scenes. Frigate utilise l&amp;rsquo;API compatible OpenAI, donc n&amp;rsquo;importe quel serveur local qui parle ce protocole fonctionne&lt;/li&gt;
&lt;li&gt;Mettez vos secrets dans un fichier &lt;code&gt;.env&lt;/code&gt; a cote du docker-compose, pas dans le YAML&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;home-assistant&#34;&gt;Home Assistant&lt;/h2&gt;
&lt;p&gt;Tout se branche sur &lt;strong&gt;Home Assistant&lt;/strong&gt; :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Les flux caméra et les événements Frigate apparaissent sur le dashboard HA&lt;/li&gt;
&lt;li&gt;Les notifications passent par le moteur d&amp;rsquo;automatisation de HA&lt;/li&gt;
&lt;li&gt;L&amp;rsquo;accès à distance se fait via la connexion sécurisée intégrée à HA&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Les caméras détectent, Frigate analyse, Home Assistant notifie. Tout en local.&lt;/p&gt;
&lt;h2 id=&#34;pourquoi-auto-héberger-ses-caméras-&#34;&gt;Pourquoi auto-héberger ses caméras ?&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Vos données restent chez vous.&lt;/strong&gt; Aucune image ne quitte votre réseau. Aucun fournisseur cloud ne stocke ou traite vos flux vidéo&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pas d&amp;rsquo;abonnement.&lt;/strong&gt; Les caméras cloud adorent facturer au mois pour des fonctions &amp;ldquo;premium&amp;rdquo; comme la détection de personnes. Ici, zéro coût récurrent après le matériel&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Beaucoup moins de faux positifs.&lt;/strong&gt; La détection IA vs. la simple détection de mouvement, c&amp;rsquo;est le jour et la nuit&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Des alertes vraiment utiles.&lt;/strong&gt; Vous savez ce qui s&amp;rsquo;est passé, pas juste qu&amp;rsquo;il y a eu du mouvement&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fonctionne hors ligne.&lt;/strong&gt; Le backup sur carte SD + NVR local fait que le système continue d&amp;rsquo;enregistrer même sans Internet&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;résumé&#34;&gt;Résumé&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Composant&lt;/th&gt;
          &lt;th&gt;Ce qu&amp;rsquo;il fait&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Caméras Tapo&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;Flux RTSP + enregistrement local sur carte SD&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Frigate&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;NVR open source avec détection d&amp;rsquo;objets par IA&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Intel Arc B580&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;Décodage vidéo + inférence IA sur une seule carte&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Home Assistant&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;Dashboard, notifications, accès distant&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Serveur local&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;Fait tourner Frigate et Home Assistant&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;pour-conclure&#34;&gt;Pour conclure&lt;/h2&gt;
&lt;p&gt;Ça m&amp;rsquo;a pris un peu de temps à mettre en place, mais je suis vraiment content du résultat. Plus de dépendance au cloud, pas d&amp;rsquo;abonnement, et le problème des faux positifs est réglé. Les descriptions IA sont étonnamment bonnes et la B580 gère tout sans broncher.&lt;/p&gt;
&lt;p&gt;Si vous en avez marre de recevoir des notifications pour des branches d&amp;rsquo;arbre, jetez un œil à Frigate. Le projet a beaucoup mûri et avec Home Assistant ça fait un système solide et fiable.&lt;/p&gt;
&lt;p&gt;Et surtout : je peux enfin arrêter de vérifier mon téléphone à chaque coup de vent.&lt;/p&gt;
</description>
    </item>
    
  </channel>
</rss>
