Guida Home Assistant + Gemini: Analisi Video AI per Telecamere IP

Guida Home Assistant + Gemini: Analisi Video AI per Telecamere IP

di Vincenzo Caputo

06 Gennaio 2026

Home Assistant

Vincenzo Caputo

Amici smanettoni, bentornati!

Oggi parliamo di videosorveglianza, ma quella vera. Solitamente, quando si vuole fare "analisi intelligente" delle immagini (riconoscere persone, oggetti, animali), la risposta standard nei forum è una sola: "Installa Frigate NVR".

Non fraintendetemi, Frigate è fantastico, ma è un sistema complesso: richiede un server dedicato o container Docker pesanti, spesso necessita di hardware aggiuntivo costoso (come le Google Coral TPU) e una configurazione non proprio immediata. Insomma, per sapere se c'è il gatto in giardino, spesso ci si ritrova a gestire una centrale nucleare.

Oggi cambiamo approccio. Faremo tutto direttamente dentro Home Assistant, senza hardware aggiuntivo e senza installare software NVR esterni. Sfrutteremo l'intelligenza artificiale di Google (Gemini) per trasformare le nostre semplici telecamere ONVIF in sentinelle in grado di descriverci la scena a parole.

Pre-requisiti: Cosa ti serve per iniziare

Prima di addentrarci nella configurazione, assicurati di avere tutto il necessario. Oltre alle telecamere già configurate, avrai bisogno di un "cervello" per gestire le conversazioni e le logiche AI.

Se non hai mai integrato un'intelligenza artificiale nel tuo sistema, ti consiglio vivamente di leggere la mia guida dedicata: ChatGPT (e Gemini) in Home Assistant per un Assistente Vocale con AI

In sintesi, avrai bisogno di:

  1. Home Assistant aggiornato all'ultima versione.

  2. HACS installato (fondamentale per caricare LLM Vision).

  3. Una API Key di Google AI Studio (per usare Gemini gratuitamente).

  4. Telecamere ONVIF già visibili nella tua dashboard. Se hai dubbi su come integrarle, ecco i miei tutorial per Sonoff e Imou.

Tutto pronto? Trasformiamole in occhi intelligenti.

La scelta dell'arma: LLM Vision

Per collegare le telecamere all'AI useremo LLM Vision. È un'integrazione custom (disponibile su HACS) che ho scelto per tre motivi fondamentali rispetto all'integrazione ufficiale:

  1. Privacy e Semplicità: Analizza le immagini salvate in locale sul disco, senza bisogno di esporre URL pubblici o avere abbonamenti Nabu Casa.

  2. Specializzazione: È nata per "guardare", quindi non si confonde provando a accendere luci a caso.

  3. Costo Zero: Supporta le API di Gemini (1.5 Flash) che sono gratuite ed estremamente veloci.

Step 1: Installazione del "Cervello"

  1. Andate su Google AI Studio e generatevi una API Key (è gratis).

  2. Aprite HACS su Home Assistant -> Integrazioni -> Cercate LLM Vision e installatelo.

  3. Riavviate Home Assistant.

  4. Andate in Impostazioni > Dispositivi > Aggiungi Integrazione > LLM Vision.

    • Nota: La prima volta installerà il "Core".

    • Subito dopo, cliccate di nuovo su Aggiungi Integrazione -> LLM Vision -> Scegliete Google Gemini e incollate la vostra API Key.

Step 2: Creiamo la Memoria (Helper)

Dove salviamo la descrizione che l'AI ci fornirà? Ci serve un contenitore di testo. Andate in Impostazioni > Dispositivi > Aiutanti > Crea Aiutante > Testo (Input Text).

  • Nome: Descrizione Giardino (o Soggiorno, Garage...)

  • Lunghezza massima: 255 caratteri.

Consiglio: Create un aiutante diverso per ogni telecamera che volete analizzare.

Step 3: L'Automazione (La Magia)

Qui avviene il miracolo. Creiamo un'automazione che scatta quando c'è movimento, invia la foto all'AI e ci restituisce il testo.

Ecco il codice YAML pronto (dovete solo inserire i vostri sensori):

alias: "AI Vision: Giardino"
description: "Analisi sicura con LLM Vision"
mode: single
trigger:
  - platform: state
    entity_id: binary_sensor.vostro_sensore_movimento # <--- CAMBIA QUESTO
    to: "on"
action:
  # 1. Scatta foto in locale (niente cloud!)
  - service: camera.snapshot
    target:
      entity_id: camera.vostra_camera_onvif # <--- CAMBIA QUESTO
    data:
      filename: /config/www/snap_giardino.jpg

  # 2. Pausa tecnica per scrittura file
  - delay: "00:00:02"

  # 3. Analisi con LLM Vision
  - action: llmvision.image_analyzer
    data:
      provider: Google Gemini
      image_file: /config/www/snap_giardino.jpg
      message: >-
        Rispondi in italiano. Analizza questa immagine.
        Descrivi brevemente chi c'è e cosa fa.
        Se non c'è nulla di rilevante o è vuoto, rispondi SOLO con "Nessuno".
        Sii sintetico (max 20 parole).
      include_filename: false
      max_tokens: 100
    response_variable: response

  # 4. Scrive il risultato nel box di testo
  - service: input_text.set_value
    target:
      entity_id: input_text.descrizione_giardino
    data:
      value: "{{ as_timestamp(now()) | timestamp_custom('%H:%M') }} - {{ response.response_text | truncate(240, true) }}"

  # 5. Notifica intelligente (Solo se c'è qualcuno)
  - if:
      - condition: template
        value_template: "{{ 'Nessuno' not in response.response_text }}"
    then:
      - service: notify.mobile_app_vostro_telefono
        data:
          title: "Movimento in Giardino"
          message: "{{ response.response_text }}"
          data:
            image: /local/snap_giardino.jpg
            clickAction: /lovelace/security

IMPORTANTE: Se copiate questo codice e vi dà errore "Provider not found", aprite l'automazione nell'editor visivo, andate all'azione "LLM Vision" e riselezionate "Google Gemini" dal menu a tendina. È un piccolo bug dell'integrazione che si risolve con un click.

A questo punto, se tutto è filato liscio dovreste già ottenere delle notifiche sul vostro smartphone con l'immagine che ha fatto scattare la rilevazione e la descrizione dell'AI.

Guida Home Assistant + Gemini: Analisi Video AI per Telecamere IP

Step 4: Creiamo la Card Definitiva in Dashboard

Ora vogliamo vedere tutto in un unico posto. L'obiettivo è creare una "Card di Controllo" che contenga:

  1. Lo stato dei sensori.

  2. Il flusso video Live.

  3. Il box di testo con la descrizione dell'AI.

  4. L'immagine statica analizzata dall'AI (per vedere cosa ha visto esattamente).

Il problema della cache: Se proviamo a visualizzare semplicemente il file snap_giardino.jpg, il browser tenderà a salvarlo in cache e vi mostrerà sempre la vecchia immagine. Per risolvere questo problema in modo elegante, creiamo una "Telecamera Generica" virtuale che punta a quel file.

La Soluzione:

  1. Impostazioni -> Dispositivi -> Aggiungi Integrazione -> Generic Camera.

  2. URL Immagine: http://127.0.0.1:8123/local/snap_giardino.jpg (usiamo l'IP locale 127.0.0.1 così funziona sempre).

  3. Togliete la spunta da "Verifica certificato SSL" (Fondamentale!).

  4. Chiamatela "Ultimo Scatto Giardino".

Ora possiamo assemblare la Card perfetta (usiamo una Grid Card):

type: grid
square: false
columns: 1
cards:
  - type: entities
    title: Stato Giardino
    show_header_toggle: false
    entities:
      - entity: binary_sensor.vostro_sensore_movimento
      - entity: binary_sensor.vostro_allarme

  # Box Testo Markdown: Il testo va a capo ed è ben leggibile
  - type: markdown
    content: >
      ##  Analisi AI
      {{ states('input_text.descrizione_giardino') }}
    card_mod:
      style: |
        ha-card { border-width: 0px; background: none; }

  # La Cam Live
  - type: picture-entity
    entity: camera.vostra_camera_live
    camera_view: live

  # Lo Snapshot analizzato (tramite la Generic Camera creata prima)
  - type: picture-entity
    entity: camera.ultimo_scatto_giardino
    name: Ultimo Scatto Analizzato
    show_state: false
    show_name: false
    aspect_ratio: 16:9

Il risultato sarà qualcosa di simile

Guida Home Assistant + Gemini: Analisi Video AI per Telecamere IP

La card propone (in ordine a cominciare dall'alto):

  • i sensori di allarme e movimento,
  • l'analisi AI dell'ultimo fotogramma che ha fatto scattare la rilevazione movimento,
  • la vista live della camera e infine il fotogramma che ha fatto scattare la rilevazione per un raffronto visivo. 

Come potete notare si vede un gatto sulla sinistra che cammina. L'analisi dell'AI riporta "Un animale cammina sul patio vicino alla vegetazione".

Naturalmente possiamo modificare l'automazione chiedendo una descrizione più dettagliata.

Step 5: "Hei Jarvis, cosa succede fuori?"

Visto che abbiamo salvato la descrizione in un'entità di testo (input_text.descrizione_giardino), possiamo usarla con Assist, l'assistente vocale di Home Assistant.

Basta andare nelle impostazioni dell'Helper (icona ingranaggio) -> Assistenti Vocali -> Attivare Assist. Datele un nome chiaro come "Ultimo Rilevamento Giardino".

Ora, grazie all'integrazione con Gemini, potete chiedere in linguaggio naturale: "Cosa c'è in giardino?" o "Fammi un report della sicurezza". Lui leggerà l'entità e vi risponderà:

"Ho controllato l'ultimo rilevamento delle 17:45: c'era un corriere che suonava il citofono."

Conclusioni

Abbiamo ottenuto un sistema di sorveglianza AI avanzato:

  • Senza hardware costoso (niente Coral).

  • Senza software complessi (niente Frigate).

  • Tutto integrato nella Dashboard di Home Assistant.

Se volete vedere la dimostrazione pratica di come ho configurato tutto questo e vedere la velocità di risposta in tempo reale, vi lascio al video sul mio canale YouTube MissingTech.

Fatemi sapere nei commenti se vi è piaciuta questa soluzione "Leggera ma Potente"! Alla prossima!

Produrre e aggiornare contenuti su vincenzocaputo.com richiede molto tempo e lavoro. Se il contenuto che hai appena letto è di tuo gradimento e vuoi supportarmi, clicca uno dei link qui sotto per fare una donazione.

Vincenzo Caputo

Vincenzo Caputo

Nato a Matera, il 1° novembre 1977. Sono da sempre appassionato di tecnologia e ho un'esperienza lavorativa ventennale nel settore IT. Mi piace sperimentare e cercare sempre nuove soluzioni e soprattutto mi piace comunicare le mie esperienze agli altri.

Disqus loading...