Guida Home Assistant + Gemini: Analisi Video AI per Telecamere IP
di Vincenzo Caputo
06 Gennaio 2026
Home Assistant
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:
Home Assistant aggiornato all'ultima versione.
HACS installato (fondamentale per caricare LLM Vision).
Una API Key di Google AI Studio (per usare Gemini gratuitamente).
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:
Privacy e Semplicità: Analizza le immagini salvate in locale sul disco, senza bisogno di esporre URL pubblici o avere abbonamenti Nabu Casa.
Specializzazione: È nata per "guardare", quindi non si confonde provando a accendere luci a caso.
Costo Zero: Supporta le API di Gemini (1.5 Flash) che sono gratuite ed estremamente veloci.
Step 1: Installazione del "Cervello"
Andate su Google AI Studio e generatevi una API Key (è gratis).
Aprite HACS su Home Assistant -> Integrazioni -> Cercate LLM Vision e installatelo.
Riavviate Home Assistant.
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.
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:
Lo stato dei sensori.
Il flusso video Live.
Il box di testo con la descrizione dell'AI.
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:
Impostazioni -> Dispositivi -> Aggiungi Integrazione -> Generic Camera.
URL Immagine: http://127.0.0.1:8123/local/snap_giardino.jpg (usiamo l'IP locale 127.0.0.1 così funziona sempre).
Togliete la spunta da "Verifica certificato SSL" (Fondamentale!).
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
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.