Introduzione
Hai appena configurato Home Assistant e le tue prime notifiche funzionano: "Porta aperta", "Temperatura alta", "Lavatrice terminata". Ottimo inizio. Ma cosa succederebbe se potessi aprire direttamente la porta garage dalla notifica stessa, ricevere lo snapshot della telecamera quando suona il campanello, o far sì che solo chi è fuori casa riceva l'allarme antintrusione?
Le notifiche in Home Assistant possono fare molto di più del semplice avvisarti. In questa guida ti mostro come trasformarle in un vero centro di controllo mobile, con esempi pratici testati sul campo.
Perché le Notifiche Base Non Bastano
La maggior parte degli utenti Home Assistant si ferma a notifiche di questo tipo:
service: notify.mobile_app_iphone
data:
message: "La porta è aperta da 5 minuti"
Il problema? Devi aprire l'app, navigare fino al dispositivo, e agire manualmente. Quando ricevi 10-15 notifiche al giorno, diventa frustrante.
Le notifiche avanzate risolvono questo permettendoti di:
- Agire immediatamente con pulsanti interattivi
- Vedere cosa sta succedendo tramite immagini
- Ricevere informazioni contestuali dinamiche
- Bypassare il silenziatore quando davvero serve
Vediamo come implementarle.
Notifiche Actionable: Controllo Diretto dalla Notifica
Le notifiche actionable aggiungono pulsanti che eseguono azioni specifiche. Esempio pratico: ricevi notifica "Campanello suonato" con tre pulsanti: "Apri Porta", "Accendi Luce Esterna", "Ignora".
Esempio Base (iOS)
alias: Test Azioni con Notifica
description: Invia notifica e attende la pressione di un tasto per agire
triggers:
- trigger: state
entity_id:
- binary_sensor.0xa4c138dccb4cb231_contact
to: "on"
actions:
- action: notify.mobile_app_iphone_di_massimo
data:
title: Allarme Contatto!
message: Il sensore è stato attivato. Cosa vuoi fare?
data:
actions:
- action: APRI_PORTA
title: Apri Porta
- action: ACCENDI_LUCE
title: Accendi Luce
- action: IGNORA
title: Ignora
destructive: true
- wait_for_trigger:
- trigger: event
event_type: mobile_app_notification_action
event_data:
action: APRI_PORTA
- trigger: event
event_type: mobile_app_notification_action
event_data:
action: ACCENDI_LUCE
- trigger: event
event_type: mobile_app_notification_action
event_data:
action: IGNORA
timeout: "00:01:00"
continue_on_timeout: false
- choose:
- conditions:
- condition: template
value_template: "{{ wait.trigger.event.data.action == 'APRI_PORTA' }}"
sequence:
- action: lock.unlock
target:
entity_id: lock.tua_porta
- conditions:
- condition: template
value_template: "{{ wait.trigger.event.data.action == 'ACCENDI_LUCE' }}"
sequence:
- action: light.turn_on
target:
entity_id: light.tua_luce
- conditions:
- condition: template
value_template: "{{ wait.trigger.event.data.action == 'IGNORA' }}"
sequence:
- stop: Azione annullata dall'utente
mode: restart
Per Android
alias: "Test Azioni Android"
description: "Invia notifica e attende la pressione di un tasto (Versione Android)"
triggers:
- trigger: state
entity_id:
- binary_sensor.0xa4c138dccb4cb231_contact
to: "on"
actions:
- action: notify.mobile_app_tuo_android
data:
title: "Allarme Contatto!"
message: "Il sensore è stato attivato. Cosa vuoi fare?"
actions:
- action: APRI_PORTA
title: "Apri Porta"
- action: ACCENDI_LUCE
title: "Accendi Luce"
- action: IGNORA
title: "Ignora"
- wait_for_trigger:
- trigger: event
event_type: mobile_app_notification_action
event_data:
action: APRI_PORTA
- trigger: event
event_type: mobile_app_notification_action
event_data:
action: ACCENDI_LUCE
- trigger: event
event_type: mobile_app_notification_action
event_data:
action: IGNORA
timeout: "00:01:00"
continue_on_timeout: false
- choose:
- conditions:
- condition: template
value_template: "{{ wait.trigger.event.data.action == 'APRI_PORTA' }}"
sequence:
- action: lock.unlock
target:
entity_id: lock.tua_porta
- conditions:
- condition: template
value_template: "{{ wait.trigger.event.data.action == 'ACCENDI_LUCE' }}"
sequence:
- action: light.turn_on
target:
entity_id: light.tua_luce
- conditions:
- condition: template
value_template: "{{ wait.trigger.event.data.action == 'IGNORA' }}"
sequence:
- stop: "Azione annullata"
mode: restart
Immagini nelle Notifiche: Vedi Cosa Sta Succedendo
Ricevere "Movimento rilevato" è utile, ma ricevere lo snapshot della telecamera è molto meglio.
Snapshot Telecamera Diretta (iOS)
alias: Allarme Movimento con Foto
description: Scatta una foto quando viene rilevato movimento e invia notifica
triggers:
- trigger: state
entity_id: binary_sensor.movimento_giardino
to: "on"
actions:
- action: camera.snapshot
target:
entity_id: camera.giardino
data:
filename: /config/www/allarme/foto.jpg
- delay: "00:00:01"
- action: notify.mobile_app_iphone_di_massimo
data:
title: ⚠️ Movimento Rilevato!
message: "C'è qualcuno in giardino. Ore: {{ now().strftime('%H:%M:%S') }}"
data:
image: /local/allarme/foto.jpg
clickAction: /lovelace/telecamere
mode: restart
Per Android
alias: "Allarme Movimento con Foto (Multi-Platform)"
description: Scatta una foto e invia notifica con timestamp
triggers:
- trigger: state
entity_id: binary_sensor.movimento_giardino
to: "on"
actions:
- action: camera.snapshot
target:
entity_id: camera.giardino
data:
filename: /config/www/allarme/giardino_last.jpg
- delay: "00:00:01"
- action: notify.mobile_app_iphone_di_massimo
data:
title: "⚠️ Movimento Rilevato!"
message: "C'è qualcuno in giardino. Ore: {{ now().strftime('%H:%M:%S') }}"
data:
image: "/local/allarme/giardino_last.jpg?{{ as_timestamp(now()) }}"
clickAction: /lovelace/telecamere
url: /lovelace/telecamere
mode: restart
Nota importante:
Le immagini devono essere salvate nella cartella
/config/www/ e referenziate con
il percorso /local/. Il
parametro timestamp previene problemi di caching.
Notifiche Critiche: Quando Non Puoi Perdere un Avviso
Le notifiche critiche bypassano la modalità "Non Disturbare" e suonano sempre a volume alto. Usale con parsimonia.
iOS Critical Notifications
alias: "Allarme Critico iOS"
description: "Invia notifica critica con foto a iPhone"
triggers:
- trigger: state
entity_id: binary_sensor.movimento_giardino
to: "on"
actions:
- action: camera.snapshot
target:
entity_id: camera.giardino
data:
filename: /config/www/allarme/foto_giardino.jpg
- delay: "00:00:01"
- action: notify.mobile_app_iphone_di_massimo
data:
title: "🚨 INTRUSIONE RILEVATA!"
message: "Rilevato movimento in giardino alle {{ now().strftime('%H:%M:%S') }}"
data:
push:
sound:
name: "default"
critical: 1
volume: 1.0
image: "/local/allarme/foto_giardino.jpg?{{ as_timestamp(now()) }}"
url: "/lovelace/telecamere"
mode: restart
Android: Canale High Priority
Per Android devi creare un canale di notifica nell'app Companion:
alias: "Allarme Critico Android"
description: "Invia notifica alta priorità con foto a Android"
triggers:
- trigger: state
entity_id: binary_sensor.movimento_giardino
to: "on"
actions:
- action: camera.snapshot
target:
entity_id: camera.giardino
data:
filename: /config/www/allarme/foto_giardino.jpg
- delay: "00:00:01"
- action: notify.mobile_app_tuo_android
data:
title: "🚨 INTRUSIONE RILEVATA!"
message: "Rilevato movimento in giardino alle {{ now().strftime('%H:%M:%S') }}"
data:
ttl: 0
priority: high
channel: "alarm_stream"
importance: high
vibrationPattern: "100, 1000, 100, 1000"
ledColor: "red"
image: "/local/allarme/foto_giardino.jpg?{{ as_timestamp(now()) }}"
clickAction: "/lovelace/telecamere"
mode: restart
Casi d'uso reali:
- Allagamento o perdite acqua
- Fumo o gas rilevato
- Allarme intrusione attivato
- Frigorifero o congelatore sopra temperatura critica
Template Dinamici: Notifiche Personalizzate e Intelligenti
I template Jinja2 rendono le notifiche contestuali e ricche di informazioni.
Esempio: Previsioni Meteo Personalizzate
alias: "Meteo Mattutino Personalizzato"
triggers:
- trigger: time
at: "07:00:00"
actions:
- action: notify.mobile_app_iphone_di_massimo
data:
title: "☀️ Meteo Oggi"
message: >
Buongiorno! Temperatura attuale {{ states('sensor.temperatura_percepita_esterno') | default('N/D') }}°C.
{% set forecast = state_attr('weather.forecast_home', 'forecast') %}
{% if forecast %}
Massima prevista: {{ forecast[0].temperature }}°C.
{% endif %}
{% if states('sensor.probabilita_pioggia') | int(0) > 30 %}
☔ Porta l'ombrello ({{ states('sensor.probabilita_pioggia') }}% pioggia).
{% endif %}
{% if is_state('binary_sensor.0xa4c138dccb4cb231_contact', 'on') %}
⚠️ La finestra camera è ancora aperta.
{% endif %}
Ricorda:
Sostituisci tutte le entità con quelle presenti sul tuo Home Assistant. Il tutto è altamente personalizzabile secondo le tue esigenze.
Gruppi di Notifica Intelligenti: La Persona Giusta al Momento Giusto
Non tutti devono ricevere tutte le notifiche. Usa i gruppi dinamici basati su presenza.
Notifica Solo a Chi È Fuori Casa
alias: "Allarme - Solo Persone Fuori"
description: "Invia notifiche solo a chi non è in casa quando l'allarme scatta"
triggers:
- trigger: state
entity_id: alarm_control_panel.casa
to: "triggered"
actions:
# Azione per Mario
- if:
- condition: state
entity_id: person.mario
state: "not_home"
then:
- action: notify.mobile_app_iphone
data:
title: "🚨 ALLARME CASA!"
message: "Mario, l'allarme è scattato e tu non sei in casa!"
data:
push:
critical: 1
volume: 1.0
# Azione per Lucia
- if:
- condition: state
entity_id: person.lucia
state: "not_home"
then:
- action: notify.mobile_app_samsung
data:
title: "🚨 ALLARME CASA!"
message: "Lucia, l'allarme è scattato e tu non sei in casa!"
data:
ttl: 0
priority: high
channel: "alarm_stream"
TTS + Notifiche: Audio e Mobile Combinati
Le notifiche multicanale assicurano che il messaggio arrivi.
Annuncio Vocale + Notifica Mobile (Amazon Alexa)
alias: Lavatrice Finita - Solo Alexa
description: Notifica su iPhone e annuncio vocale solo su Amazon Alexa
triggers:
- trigger: state
entity_id: sensor.lavatrice
to: "on"
actions:
- action: notify.mobile_app_iphone
data:
title: 🧺 Lavatrice
message: Il lavaggio è terminato!
data:
actions:
- action: LAVATRICE_SVUOTATA
title: Svuotata ✅
- if:
- condition: state
entity_id: person.massimo
state: home
then:
- action: media_player.volume_set
target:
entity_id: media_player.echo_plus
data:
volume_level: 0.2
- action: notify.alexa_media_echo_plus
data:
message: >
<audio src='soundbank://soundlibrary/ui/gameshow/amzn_ui_sfx_gameshow_neutral_response_01'/>
data:
type: "tts"
- action: notify.alexa_media_echo_plus
data:
message: >-
La lavatrice ha terminato il lavaggio. Ricordati di stendere i
panni.
data:
type: tts
mode: single
Suggerimento:
Amazon mette a disposizione un'ampia libreria di suoni aggiuntivi che potete utilizzare. Trovate l'elenco completo nella documentazione ufficiale: https://developer.amazon.com/en-US/docs/alexa/custom-skills/ask-soundlibrary.html
Per Google Home (Android)
alias: "Lavatrice Finita - Voce solo se in casa"
description: "Annuncio vocale solo se qualcuno è presente, notifica sempre"
triggers:
- trigger: state
entity_id: binary_sensor.0xa4c138dccb4cb231_contact
to: "on"
actions:
# 1. NOTIFICA SMARTPHONE (Inviata sempre, ovunque tu sia)
- action: notify.mobile_app_iphone
data:
title: "🧺 Lavatrice Pronta"
message: "Terminata alle {{ now().strftime('%H:%M') }}"
data:
actions:
- action: "LAVATRICE_SVUOTATA"
title: "Svuotata ✅"
# 2. ANNUNCIO VOCALE (Solo se qualcuno è in casa)
- if:
- condition: or
conditions:
- condition: state
entity_id: person.massimo
state: "home"
- condition: state
entity_id: person.lucia
state: "home"
then:
- action: media_player.volume_set
target:
entity_id: media_player.google_home_cucina
data:
volume_level: 0.5
- action: tts.google_translate_say
target:
entity_id: media_player.google_home_cucina
data:
message: "La lavatrice ha terminato. È ora di stendere i panni!"
language: "it"
mode: single
Logica smart: TTS solo se qualcuno è a casa, notifica mobile sempre.
Troubleshooting
Notifiche non arrivano su iOS
- Verifica permessi in Impostazioni > Home Assistant > Notifiche
- Controlla mobile_app in Configurazione > Integrazioni
- Riavvia l'app
Immagini non si caricano
- Serve HTTPS (Nabu Casa o certificato valido)
- Percorsi /local/ devono essere in /config/www/
Azioni non funzionano
- action: deve coincidere esattamente in notifica e automazione
- Controlla log per mobile_app_notification_action
Conclusioni: Da Notifiche Passive a Centro di Controllo
Le notifiche avanzate trasformano Home Assistant da sistema di allerta passivo a interfaccia di controllo attiva. Inizia con notifiche actionable per le situazioni più frequenti (campanello, garage, luci), aggiungi immagini per sicurezza e monitoring, riserva le notifiche critiche per vere emergenze.
Il segreto è non esagerare: troppe notifiche portano a ignorarle tutte. Usa template per renderle informative, gruppi per targetizzare, e TTS come backup sonoro quando serve davvero.
Nei prossimi articoli approfondirò l'integrazione con Zigbee/Thread per sensori affidabili e come creare dashboard mobile ottimizzate per controllo rapido.
Condividi la tua esperienza:
Quali notifiche avanzate usi tu? Condividi nei commenti i tuoi use case più creativi.