Tutorial Automazioni

Notifiche Smart Avanzate in Home Assistant: Oltre il Semplice Messaggio

avatar di max novadi

Max Novadi

Pubblicato 4 Febbraio 2026

Notifiche Avanzate Home Assistant - Guida Completa

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:

YAML Esempio configurazione
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)

YAML Esempio configurazione
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

YAML Esempio configurazione
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)

YAML Esempio configurazione
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

YAML Esempio configurazione
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

YAML Esempio configurazione
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:

YAML Esempio configurazione
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

YAML Esempio configurazione
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

YAML Esempio configurazione
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)

YAML Esempio configurazione
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)

YAML Esempio configurazione
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.

avatar di max novadi

Max Novadi

Blog writer specializzato in tecnologia e domotica.

Max si occupa di tendenze tecnologiche da oltre un decennio, con un'attenzione particolare alle automazioni domestiche e alla smart home, ambiti che ha approfondito in particolare con Home Assistant. Si interessa anche di intelligenza artificiale e delle sue applicazioni nella tecnologia consumer.

Home Assistant Notifiche Automazioni YAML iOS Android