IA in Home Assistant: Cosa puoi davvero fare oggi

SINTESI:

Cinque livelli di intelligenza artificiale integrabili in Home Assistant, dal più invisibile (statistiche e Bayesian sensor) al più ambizioso (agentic AI). Nessuno è “migliore” degli altri: servono cose diverse. La regola d’oro è costruire prima il livello 1 (le fondamenta statistiche) e poi salire in base ai casi d’uso reali, non al marketing.

Nota di accompagnamento al video pubblicato sul canale @alessandrosimonitto. Questa pagina ne è la versione approfondita: gli stessi cinque livelli, ma con la matematica spiegata semplice, configurazioni di esempio e gli errori più comuni che ho visto fare (e fatto io stesso).


I 5 LIVELLI IN SINTESI

LivelloCos’èCosto indicativoPrivacyComplessità
1. IA invisibileBayesian, statistiche, trend, template0 €TotaleBassa
2. Vision AIFrigate, edge AI cam con NPU50, 500 €Totale (se locale)Media-alta
3. Voce e audioWyoming stack, HA Voice PE, audio classification60 € +Totale (locale)Media
4. LLMHA Conversation + provider cloud o localeda pochi €/mese a 400 €+Parziale o totaleMedia-alta
5. Agentic AIDispositivi/loop autonomi (es. SenseCAP Watcher)25, 100 €Parziale (cloud LLM)Media + tolleranza all’immaturo

PRINCIPIO CHIAVE:

I livelli non sono gerarchici. Un setup con solo livello 1 ben fatto è più solido di un setup con LLM di ultima generazione ma senza fondamenta. La domanda giusta è “cosa mi serve davvero a casa mia”, non “a che livello sono”.


LIVELLO 1: L’IA CHE GIÀ HAI (E NON SAPEVI)

È il livello più sottovalutato e quello che, secondo me, vale di più investire prima di tutti gli altri. Niente NPU, niente cloud, niente nuovi acquisti: tutto è già in Home Assistant core.

Cosa rientra in questo livello

  • Bayesian sensor, sensori probabilistici che combinano più segnali
  • Statistics platform, medie, deviazioni standard, percentili, valori min/max su finestre temporali
  • Trend sensor, rileva direzione (in salita / in discesa) di un valore
  • Filter sensor, smoothing, outlier removal, low-pass
  • History stats, quanto tempo un’entità è stata in un certo stato
  • Derivative sensor, tasso di variazione di una grandezza
  • Threshold dinamici, soglie calcolate da medie storiche, non hardcoded

Approfondimento: Bayesian sensor

PERCHÉ SONO BELLISSIMI:

Risolvono in modo elegante il problema “voglio sapere se A è vero, ma non ho un sensore diretto per A, solo segnali indiretti”. È esattamente ciò che ti serve per occupazione casa, qualcuno sta dormendo, qualcuno sta cucinando, sta piovendo davvero.

La matematica spiegata semplice

Il teorema di Bayes:

P(A|B) = P(B|A) × P(A) / P(B)

Tradotto in italiano normale:

La probabilità che A sia vero, dato che ho osservato B, è uguale alla probabilità di osservare B se A è vero, moltiplicata per la probabilità iniziale di A, divisa per la probabilità complessiva di osservare B.

In Home Assistant questo si traduce in tre parametri per ogni osservazione:

  • prior, probabilità iniziale che lo stato sia true prima di guardare qualunque segnale
  • prob_given_true, probabilità di vedere l’osservazione se lo stato è vero
  • prob_given_false, probabilità di vedere l’osservazione se lo stato è falso

HA itera su tutte le osservazioni: il posterior di un’osservazione diventa il prior della successiva. Il risultato finale è una probabilità globale; se supera la probability_threshold, il sensore va in on.

Esempio reale e calibrato: “Casa occupata”

binary_sensor:
  - platform: bayesian
    name: "Casa occupata"
    prior: 0.5                      # 50% di partenza neutro
    probability_threshold: 0.8      # soglia di attivazione
    observations:
 
      # Segnale 1: cellulare di Ale in WiFi di casa
      - platform: state
        entity_id: device_tracker.iphone_ale
        to_state: 'home'
        prob_given_true: 0.95       # se casa occupata, cell connesso 95%
        prob_given_false: 0.05      # se casa vuota, cell connesso 5% (resta a casa a volte)
 
      # Segnale 2: movimento rilevato negli ultimi 10 minuti
      - platform: state
        entity_id: binary_sensor.movimento_salotto_10min
        to_state: 'on'
        prob_given_true: 0.7        # se occupata, c'è movimento il 70%
        prob_given_false: 0.02      # se vuota, falsi positivi 2% (tende, gatto, sole)
 
      # Segnale 3: consumo elettrico sopra il baseline notturno
      - platform: numeric_state
        entity_id: sensor.consumo_istantaneo
        above: 250                  # W
        prob_given_true: 0.85
        prob_given_false: 0.1       # frigo + standby a volte sforano
 
      # Segnale 4: TV o impianto audio acceso
      - platform: template
        value_template: >
          {{ is_state('media_player.tv_salotto', 'on') or
             is_state('media_player.sonos', 'playing') }}
        prob_given_true: 0.5
        prob_given_false: 0.01

COME SI INTERPRETA:

Più segnali confermano “casa occupata”, più la probabilità sale. Se manca uno o due segnali, gli altri compensano. Se nessuno conferma, il sensore va off in modo naturale. Niente if-else che si rompe al primo edge case.

Come calibrare le probabilità (la parte che nessuno spiega)

Non si tirano a indovinare. Si misurano. La procedura che uso:

  1. Crea il Bayesian sensor con valori iniziali ragionevoli (i miei sopra vanno bene come baseline)
  2. Lascialo girare due o tre settimane con probability_threshold: 0.5 (così vedi i valori intermedi)
  3. Estrai dalle long-term statistics le frequenze osservate
  4. Calcola prob_given_true come (volte segnale on quando casa effettivamente occupata) / (totale momenti casa occupata)
  5. Stessa cosa per prob_given_false
  6. Aggiorna i valori in configuration.yaml

ERRORE COMUNE:

prob_given_false non è 1 - prob_given_true. Sono due numeri indipendenti, calcolati da due popolazioni diverse. Confonderli è il singolo errore che vedo più spesso nei Bayesian mal funzionanti.

Tranelli e antipattern

OSSERVAZIONI CORRELATE:

Se metti due sensori di movimento nella stessa stanza come osservazioni separate, stai contando lo stesso segnale due volte. Il Bayesian non sa che sono correlati: aggregali prima in un template, poi passa il template come singola osservazione.

PROBABILITÀ ESTREME:

Mettere prob_given_true: 0.99 significa “se casa è occupata, questo segnale è ON quasi sempre”. Se non hai dati per giustificarlo, lo stai bluffando, e il sensore diventa fragile. Resta sotto 0.95 quasi sempre.

PRIOR FUORI CONTESTO:

Il prior dovrebbe rispecchiare la realtà media nelle 24h. Se sei single e fuori tutto il giorno, un prior 0.5 è sbagliato: meglio 0.3 o 0.35. Se hai famiglia in smart working, sale a 0.7.

Approfondimento: Statistics platform

Spesso ignorata, è la cugina del Bayesian per chi vuole risposte quantitative invece che probabilistiche. Esempio: vuoi sapere se la temperatura del frigo è “anomala” senza definire una soglia rigida.

sensor:
  - platform: statistics
    name: "Temperatura frigo media 24h"
    entity_id: sensor.temp_frigo
    state_characteristic: mean
    max_age:
      hours: 24
 
  - platform: statistics
    name: "Deviazione standard frigo 24h"
    entity_id: sensor.temp_frigo
    state_characteristic: standard_deviation
    max_age:
      hours: 24

Poi un binary sensor template che scatta se il valore istantaneo si allontana di più di 2 deviazioni standard dalla media. È un anomaly detector in 20 righe di YAML.

A chi serve il livello 1

A chiunque abbia Home Assistant. Senza eccezioni. Le automazioni costruite su segnali probabilistici sono statisticamente più robuste di quelle a regola fissa, e non costano niente.


LIVELLO 2: PERCEZIONE VISIVA

La casa che vede. Due categorie ben distinte.

Categoria A: Frigate (l’NVR open con IA integrata)

Architettura logica:

  • Detector: il modulo di inferenza IA che processa i frame
  • Recorder, registra continuamente o solo agli eventi
  • MQTT, pubblica gli eventi (oggetti, snapshot, statistiche)
  • Web UI, review, ricerca, gestione

Detector supportati:

  • CPU, lento, da evitare se non per test
  • Google Coral USB / M.2: il gold standard a basso costo, ~75 € per la USB
  • Intel OpenVINO, usa la iGPU dei mini PC Intel recenti, gratis se hai l’hardware
  • NVIDIA TensorRT: il top in prestazioni, ma alimentazione e costi salgono
  • Hailo-8, recente, ottimo rapporto perf/watt, ancora poco diffuso

Modelli:

  • SSD MobileNet, default, leggero, buono per persone/auto
  • YOLOv5 / v7 / v8, più accurati, richiedono detector capace
  • Custom, addestrabili su Frigate+ (servizio a pagamento) o esternamente

Frigate richiede flusso RTSP H.264 (raramente H.265) e un main+sub stream per essere usato bene: il sub per la detection continua, il main solo per registrazione/snapshot.

SETUP MINIMO PER PARTIRE:

Mini PC con iGPU Intel (per OpenVINO) o Coral USB su Raspberry Pi 5, due camere PoE con dual stream RTSP, Frigate in Docker, broker MQTT (es. EMQX o Mosquitto) già presente, integrazione Frigate in HA. Lo stack mio attuale (NiPoGi AM06PRO + Coral) gestisce 13 stream senza fatica.

Categoria B: Edge AI camera con NPU on-board

Dispositivi piccoli e relativamente economici che fanno inferenza direttamente sul chip. Comunicano a HA solo il risultato testuale (oggetto rilevato, conteggio, ecc.), non lo stream completo.

Esempi:

  • Grove Vision AI Module V2, chip Himax WiseEye2 HX6538 (Cortex-M55 + Ethos-U55 NPU), modelli scaricati via SenseCraft AI in no-code
  • XIAO Vision AI Camera, kit pronto con XIAO ESP32C3 + Grove Vision AI V2 + camera OV5647 5MP
  • Kendryte K210 / K230, alternativa cinese, ecosistema MaixPy
  • Sipeed MaixCam, varianti più potenti
  • SenseCAP Watcher W1-A, categoria a sé, sconfina nell’agentic (livello 5)

DIFFERENZA FONDAMENTALE CON FRIGATE:

Frigate vede e registra tutto, decide a posteriori cosa è rilevante. Le edge cam vedono solo quello per cui sono state programmate, e non registrano. Sono trigger device, non NVR. L’errore tipico è trattarle come “Frigate economico”: non lo sono.

Anti-marketing

  • 5 MP non significa qualità: dipende dal sensore, dall’ottica e dal codec
  • AI on-device non significa che gira un GPT: girano modelli da pochi MB con compiti specifici (es. classificazione persona/non-persona)
  • Edge inference non significa zero cloud: alcuni dispositivi mandano i risultati a un loro server come parte del flusso

LIVELLO 3: PERCEZIONE AUDIO E VOCE

Due cose distinte, spesso confuse.

Audio classification

Modelli IA piccoli che riconoscono pattern sonori specifici. In HA si integrano via:

  • Wyoming satellite + custom model, modello dedicato per evento
  • Frigate audio detection (limitato), riconosce alcune classi di suono predefinite (es. cane che abbaia, allarme)
  • BirdNET-Pi, fuori HA ma facilmente integrabile via MQTT, classifica oltre 3000 specie di uccelli dal canto

Casi d’uso tipici: vetro rotto, pianto di bambino, allarme antincendio, sirene esterne, cane che abbaia.

Voice assistant locale

Lo stack Wyoming ha tre componenti principali in pipeline:

microfono → openWakeWord → Whisper (STT) → HA Intent → Piper (TTS) → speaker
  • openWakeWord, riconosce la parola di attivazione (es. “OK Nabu”). Modelli leggeri, addestrabili in modo custom.
  • Whisper, Speech-To-Text. Varianti: tiny, base, small, medium, large. Più grande = più preciso ma più lento. Per uso locale su CPU il sweet spot è base o small.
  • Intent: il motore di HA che mappa il testo a un’azione (turn_on, set_temperature, ecc.)
  • Piper, Text-To-Speech. Voci italiane di qualità sufficiente (es. it_IT-paola-medium)

Hardware di ingresso:

  • Home Assistant Voice Preview Edition: il prodotto ufficiale, ESP32-S3 + microfoni + ring LED
  • XMOS-based satellites, qualità microfonica superiore, costo maggiore
  • ESP32-S3 BOX-3, opzione DIY

LIMITI HONESTI:

La latenza di un voice locale completo (wake → comando → risposta vocale) è tipicamente 1.5-3 secondi su hardware modesto. Alexa lo fa in 0.5s perché ha datacenter dietro. Se il tuo metro è Alexa, ti deluderai. Se il tuo metro è la privacy, è una rivoluzione.


LIVELLO 4: IL RAGIONAMENTO LLM

Qui Home Assistant ha investito molto nell’ultimo anno. L’integrazione si chiama Conversation e accetta un agent configurabile.

Provider cloud

  • OpenAI Conversation, integrazione nativa, modelli GPT-4o, GPT-4o mini
  • Anthropic. Claude, integrazione community matura
  • Google Generative AI. Gemini, integrazione ufficiale
  • Extended OpenAI Conversation, community, sostituto avanzato con function calling più potente

Costi indicativi (2026): da pochi centesimi al giorno con GPT-4o-mini, a euro al giorno con GPT-4o se usato intensivamente.

Provider locali

  • Ollama: il modo più semplice. Installa, scarica un modello (ollama pull llama3.2:3b), espone API. Integrazione Ollama Conversation in HA.
  • LocalAI, alternativa più flessibile, drop-in replacement per OpenAI API
  • llama.cpp server, controllo massimo, per chi smanetta

Modelli consigliati per uso domestico (2026):

  • Llama 3.2 3B, leggero, basta CPU decente o iGPU
  • Qwen 2.5 7B, buon rapporto qualità/dimensione
  • Mistral 7B Instruct, alternativa solida

HARDWARE MINIMO PER LOCALE:

Per un 7B usabile: 16 GB di RAM, idealmente una GPU con 8 GB di VRAM o una NPU (Intel iGPU recente / Apple Silicon). Senza GPU, conta circa 3-5 token/secondo: utilizzabile ma lento.

Cosa cambia rispetto al voice tradizionale

Un LLM comprende intenti flessibili e ragiona su entità multiple. Esempi tipici di cose che il voice tradizionale non fa e che un LLM sì:

  • “fa freddo in salotto” → comprende che vuoi alzare il riscaldamento
  • “metti la casa in modalità film” → riconosce che è uno scenario complesso (luci basse, TV on, riscaldamento 21°)
  • “perché si è acceso il riscaldamento stamattina?” → consulta lo storico e risponde
  • “spegni quello che ho lasciato acceso in cucina” → identifica le entità rilevanti e agisce

Function calling / tool exposure

L’LLM da solo non agisce: ha bisogno di sapere quali entità può controllare e quali domande può fare. In HA si configura attraverso:

  • Expose entities: il toggle che dice “questo dispositivo è visibile all’LLM”
  • Custom prompt: il system prompt che istruisce l’LLM su come comportarsi
  • Intents, l’elenco delle azioni che l’LLM può triggerare

ALLUCINAZIONI:

Gli LLM sbagliano. A volte ti dicono di aver acceso una luce che non hanno acceso. Non sono deterministici per loro natura. Mai usarli per automazioni critiche (sicurezza, riscaldamento di neonati, dispositivi medici). Ottimi per use case morbidi: musica, luci scenografiche, riassunto meteo, controllo elettrodomestici non critici.


LIVELLO 5: AGENTIC AI

Il livello più recente e meno consolidato. Un agente non aspetta comandi: osserva, decide, agisce in autonomia.

Pattern architetturali

Tre approcci principali oggi:

  • Loop LLM continuo, un’automazione che ogni N secondi/minuti invia uno screenshot + contesto a un LLM e chiede “succede qualcosa di rilevante?“. Costoso in token, raramente sostenibile in cloud, fattibile in locale.
  • Trigger AI + reasoning: un sensore IA tradizionale (es. vision detector) scatta su un evento, e l’LLM viene chiamato solo allora per ragionare su cosa fare. Molto più sostenibile.
  • Dispositivi fisici dedicati, hardware che incorpora il loop osservare-decidere-agire on-device. Es. SenseCAP Watcher.

SenseCAP Watcher come caso paradigmatico

Piccolo agente fisico con camera, microfono, speaker, schermo. Si imposta a voce o da app: “avvisami se vedi qualcuno fumare in cucina”, “controlla che il gatto non salga sul tavolo”. Esegue inferenza visiva locale (object detection), si appoggia a un LLM cloud per i task più complessi (scene understanding), e pubblica eventi a HA via MQTT attraverso un’integrazione HACS dedicata.

Lo testo nel video successivo, insieme alla XIAO Vision AI Camera.

COSTI NASCOSTI:

Il piano SenseCraft Pro è a request: le funzioni LLM/scene-understanding consumano richieste a pagamento. L’on-device object detection è gratis, ma le features più “wow” pesano sul portafogli. Da verificare bene prima dell’acquisto.


NOTE CRITICHE E ANTIPATTERN

ANTIPATTERN 1. Saltare il livello 1:

Comprare hardware AI fancy senza avere prima Bayesian e statistiche solide è come mettere il tetto senza fondamenta. Le automazioni diventano spettacolari ma fragili.

ANTIPATTERN 2. Trattare le edge cam come Frigate:

Sono trigger device, non NVR. Aspettarsi registrazione 24/7 e ricerca eventi è frustrante per il dispositivo e per l’utente.

ANTIPATTERN 3. LLM in automazioni critiche:

Allucinano per design. Mai metterli a controllo di riscaldamento di un neonato, dispositivi medici, sistemi di sicurezza che richiedono determinismo.

ANTIPATTERN 4. Cloud LLM senza budgeting:

Un’automazione che chiama l’LLM ogni 30 secondi su GPT-4o ti svuota il portafogli in pochi giorni. Va sempre messo un rate limiter o uno short-circuit su evento.

ANTIPATTERN 5. Voce locale come "Alexa gratis":

Lo stack Wyoming è meraviglioso ma ha una sua latenza e una sua robustezza limitata. Se il tuo metro è “come Alexa” sarai deluso. Il metro giusto è “tutto sotto il mio controllo”.


DA DOVE INIZIARE: GRIGLIA PRATICA

Situazione tuaDa dove partire
Ho HA da poco, nessun sensore AILivello 1: configura un Bayesian per occupancy, gioca con statistics
Ho già camere PoE e voglio sicurezza intelligenteLivello 2A: Frigate + Coral o iGPU Intel
Ho una zona singola da monitorare a basso costoLivello 2B: una edge AI cam come trigger
Voglio comandare la casa a voce in modo privatoLivello 3: HA Voice PE + Whisper + Piper
Voglio comandi più “naturali” e ragionatiLivello 4 cloud: HA Conversation + GPT-4o-mini o Claude Haiku
Voglio privacy massima anche sull’LLMLivello 4 locale: Ollama con Llama 3.2 3B su mini PC
Voglio sperimentare la frontieraLivello 5: SenseCAP Watcher o loop LLM su evento

RISORSE

  • Documentazione Bayesian sensor: https://www.home-assistant.io/integrations/bayesian/
  • Wyoming protocol: https://github.com/rhasspy/wyoming
  • Frigate NVR: https://docs.frigate.video/
  • Ollama: https://ollama.com/
  • SenseCraft AI: https://sensecraft.seeed.cc/ai/
  • Plugin SenseCraft-HomeAssistant (HACS): https://github.com/Seeed-Solution/SenseCraft-HomeAssistant

SPUNTI VIDEO COLLEGATI

  • spunto: video su come calibrare un Bayesian sensor nella vita reale, con dati estratti dalle long-term statistics
  • spunto: confronto pratico Whisper tiny vs base vs small su un mini PC Intel N100
  • spunto: 5 antipattern in automazioni con LLM (e come evitarli)
  • spunto: serie “dal livello 1 al 5”: un video per livello con setup completo
  • spunto: come costruire un anomaly detector per il frigo con statistics in 20 righe

CHANGELOG

DataVersioneModificaNote
2026-05-130.1Prima stesura completaSunto + approfondimento Bayesian esteso