altert batterie scariche smart home

Alert Batterie Scariche: Mai Più Dispositivi Smart Morti

Uno dei problemi più comuni nelle smart home moderne è la gestione delle batterie dei dispositivi wireless. Sensori di movimento, contatti porta, pulsanti intelligenti e termostati: tutti funzionano con batterie che si scaricano silenziosamente fino a quando il dispositivo smette improvvisamente di funzionare, compromettendo le automazioni. Questa guida ti mostra come creare un sistema di monitoraggio automatico che ti avvisa prima che sia troppo tardi.

Perché monitorare le batterie è fondamentale

Con l’espansione del numero di dispositivi IoT alimentati a batteria, diventa essenziale implementare un sistema di allerta proattivo. Le batterie dei sensori Zigbee possono durare oltre un anno, ma tendono a scaricarsi rapidamente verso la fine del loro ciclo di vita. Senza un sistema di monitoraggio, rischi di trovarti con sensori inattivi che causano malfunzionamenti nelle automazioni critiche come allarmi, illuminazione o controllo accessi.​

Un sistema di alert automatico elimina la necessità di controllare manualmente una dashboard, trasformando la manutenzione preventiva in un processo completamente automatizzato. Invece di scoprire che la serratura smart ha la batteria scarica quando torni a casa, ricevi una notifica con giorni di anticipo per sostituirla comodament​

Soluzione 1: Automazione singola per tutti i sensori

La soluzione più elegante consiste nel creare un’unica automazione che monitora automaticamente tutte le entità batteria presenti in Home Assistant. Questo approccio scalabile funziona indipendentemente dal numero di dispositivi e si aggiorna automaticamente quando aggiungi nuovi sensori.

Automazione con trigger template

Questa automazione utilizza un trigger template che monitora continuamente tutte le entità il cui ID contiene “battery” e si attiva quando una di esse scende sotto la soglia definita.

Codice YAML completo:

automation:
  - alias: "Alert Batterie Scariche Globale"
    description: "Notifica quando qualsiasi dispositivo ha la batteria sotto il 20%"
    trigger:
      - platform: template
        value_template: >-
          {% set threshold = 20 %}
          {{ expand(states.sensor)
            | selectattr('attributes.device_class', 'defined')
            | selectattr('attributes.device_class', '==', 'battery')
            | selectattr('state', 'is_number')
            | selectattr('state', 'lt', threshold)
            | list | count > 0 }}
    condition: []
    action:
      - service: notify.mobile_app_iphone
        data:
          title: "⚠️ Batterie Scariche"
          message: >-
            {% set threshold = 20 %}
            {% set low_batteries = expand(states.sensor)
              | selectattr('attributes.device_class', 'defined')
              | selectattr('attributes.device_class', '==', 'battery')
              | selectattr('state', 'is_number')
              | selectattr('state', 'lt', threshold)
              | map(attribute='name')
              | list %}
            Le seguenti batterie sono sotto il {{ threshold }}%:
            {{ low_batteries | join(', ') }}
      - service: persistent_notification.create
        data:
          title: "Batterie Scariche"
          message: >-
            {% set threshold = 20 %}
            {% set low_batteries = expand(states.sensor)
              | selectattr('attributes.device_class', 'defined')
              | selectattr('attributes.device_class', '==', 'battery')
              | selectattr('state', 'is_number')
              | selectattr('state', 'lt', threshold)
              | map(attribute='name')
              | list %}
            Batterie sotto il {{ threshold }}%:
            {% for battery in low_batteries %}
            - {{ battery }}
            {% endfor %}
    mode: single

Questo codice identifica automaticamente tutti i sensori con device_class “battery”, controlla il loro stato numerico e genera una notifica persistente più una notifica mobile con l’elenco completo dei dispositivi che necessitano sostituzione.

Automazione con trigger individuale e Trigger ID

Un approccio alternativo crea trigger separati per ogni sensore batteria utilizzando i Trigger ID per consolidare tutto in una singola automazione. Questo metodo offre maggiore controllo sulle soglie personalizzate per dispositivo.

Esempio YAML con Trigger ID:

automation:
  - alias: "Alert Batterie con Trigger ID"
    trigger:
      - platform: numeric_state
        entity_id: sensor.sensore_porta_ingresso_battery
        below: 20
        id: "porta_ingresso"
      
      - platform: numeric_state
        entity_id: sensor.sensore_movimento_soggiorno_battery
        below: 20
        id: "movimento_soggiorno"
      
      - platform: numeric_state
        entity_id: sensor.termostato_camera_battery
        below: 15
        id: "termostato_camera"
      
      - platform: numeric_state
        entity_id: sensor.pulsante_smart_cucina_battery
        below: 20
        id: "pulsante_cucina"
    
    action:
      - choose:
          - conditions:
              - condition: trigger
                id: "porta_ingresso"
            sequence:
              - service: notify.mobile_app_iphone
                data:
                  title: "🔋 Batteria Scarica"
                  message: "Sensore Porta Ingresso: {{ states('sensor.sensore_porta_ingresso_battery') }}%"
          
          - conditions:
              - condition: trigger
                id: "movimento_soggiorno"
            sequence:
              - service: notify.mobile_app_iphone
                data:
                  title: "🔋 Batteria Scarica"
                  message: "Sensore Movimento Soggiorno: {{ states('sensor.sensore_movimento_soggiorno_battery') }}%"
          
          - conditions:
              - condition: trigger
                id: "termostato_camera"
            sequence:
              - service: notify.mobile_app_iphone
                data:
                  title: "🔋 Batteria Critica"
                  message: "Termostato Camera sotto 15%: {{ states('sensor.termostato_camera_battery') }}%"
          
          - conditions:
              - condition: trigger
                id: "pulsante_cucina"
            sequence:
              - service: notify.mobile_app_iphone
                data:
                  title: "🔋 Batteria Scarica"
                  message: "Pulsante Smart Cucina: {{ states('sensor.pulsante_smart_cucina_battery') }}%"
    
    mode: queued

Questo approccio permette di personalizzare messaggi e azioni specifiche per ogni dispositivo, ideale quando vuoi soglie diverse o notifiche prioritarie per sensori critici come serrature o allarmi.

Soluzione 2: Blueprint per installazione rapida

Se preferisci una soluzione preconfezionata, puoi utilizzare blueprint della community che automatizzano completamente il rilevamento delle batterie. Il blueprint “Low Battery Notifications & Actions” è uno dei più completi e aggiornati.

Il Blueprint su Home Assistant è essenzialmente un modello predefinito e riutilizzabile per la creazione di automazioni, script o entità template (entità basate su un template).

Ti consente di creare una configurazione generica, come ad esempio un’automazione “Accendi la luce al rilevamento di movimento”, e di esporre alcune parti come configurabili (gli input), ad esempio il sensore di movimento specifico e la luce da controllare.

Ecco i punti chiave:

  • Riutilizzo: Permette di creare rapidamente diverse automazioni basate sulla stessa logica senza dover ricopiare ogni volta l’intero codice YAML.
  • Condivisione: I blueprint possono essere facilmente condivisi con la community di Home Assistant, consentendo agli utenti meno esperti di importare e utilizzare automazioni complesse con una configurazione minima (spesso solo selezionando i dispositivi/entità da usare).
  • Aggiornamento: Le automazioni create da un blueprint ereditano le modifiche dal modello originale. Se l’autore del blueprint lo aggiorna, le tue automazioni basate su di esso si aggiorneranno automaticamente (al riavvio di Home Assistant o al ricaricamento delle automazioni).

In sostanza, un blueprint è un file YAML che definisce la struttura di un’automazione/script e i parametri che l’utente deve fornire per renderla specifica per il proprio ambiente.

Installazione del Blueprint

1: Importa il blueprint da GitHub copiando questo URL nella sezione Blueprint di Home Assistant:

https://gist.github.com/Blackshome/4010fb83bb8c19b5fa1425526c6ff0e2

 

2: Naviga in Impostazioni > Automazioni e Scene > Blueprint > Importa Blueprint.​

3: Incolla l’URL e premi “Anteprima importazione”.

4: Conferma l’importazione del blueprint.

Configurazione dell’automazione da Blueprint

Una volta importato il blueprint, crea una nuova automazione basata su di esso:

Parametri principali da configurare:

# Trigger temporale
time: "19:00:00"  # Controlla ogni giorno alle 19:00

# Soglia batteria scarica
threshold: 20  # Percentuale sotto la quale notificare

# Esclusioni (facoltativo)
exclude:
  - sensor.telefono_battery  # Escludi smartphone
  - sensor.tablet_battery

# Servizio di notifica
actions:
  - service: notify.mobile_app_iphone
    data:
      title: "🔋 Batterie Scariche"
      message: "{{ sensors }}"

Il blueprint rileva automaticamente tutti i sensori batteria nel sistema, controlla quotidianamente il loro livello e invia notifiche personalizzate. Supporta esclusioni per dispositivi come smartphone che gestisci separatamente.​

Soluzione 3: Controllo manuale con pulsante helper

Per chi preferisce controllare manualmente lo stato delle batterie senza attendere il check automatico, puoi configurare un pulsante helper che esegue la verifica on-demand.

Creazione del pulsante helper:

1: Vai in Impostazioni > Dispositivi e Servizi > Helper.

2: Crea un nuovo helper di tipo “Pulsante”.

3: Nominalo “Controllo Batterie Manuale”.

Automazione collegata al pulsante:

automation:
  - alias: "Controllo Batterie Manuale"
    trigger:
      - platform: state
        entity_id: input_button.controllo_batterie_manuale
    action:
      - service: notify.mobile_app_iphone
        data:
          title: "📊 Report Batterie"
          message: >-
            {% set threshold = 20 %}
            {% set low_batteries = expand(states.sensor)
              | selectattr('attributes.device_class', 'defined')
              | selectattr('attributes.device_class', '==', 'battery')
              | selectattr('state', 'is_number')
              | selectattr('state', 'lt', threshold)
              | list %}
            {% if low_batteries | count > 0 %}
              Batterie sotto {{ threshold }}%:
              {% for battery in low_batteries %}
              - {{ battery.name }}: {{ battery.state }}%
              {% endfor %}
            {% else %}
              ✅ Tutte le batterie sono OK!
            {% endif %}

Questo approccio è perfetto per verifiche pre-viaggio o prima di lunghi periodi di assenza.

Creazione di una dashboard per monitoraggio visivo

Oltre alle notifiche automatiche, una dashboard dedicata permette di visualizzare rapidamente lo stato di tutte le batterie. Questo approccio combina monitoraggio passivo e alert attivi.

Dashboard con custom card “Battery State Card”

La custom card “Battery State Card” disponibile tramite HACS offre una visualizzazione compatta e intuitiva.

Installazione via HACS:

  1. Apri HACS > Frontend

  2. Cerca “Battery State Card”

  3. Installa la card

  4. Riavvia Home Assistant

Configurazione della card:

type: custom:battery-state-card
title: "Stato Batterie Dispositivi"
sort_by_level: "asc"  # Ordina dal livello più basso
collapse: 5  # Mostra solo le prime 5
filter:
  include:
    - name: entity_id
      value: "*battery*"
  exclude:
    - name: entity_id
      value: "*phone*"
    - name: entity_id
      value: "*tablet*"

Questa card mostra automaticamente tutti i sensori batteria ordinati per livello crescente, evidenziando quelli critici.

Dashboard nativa con card Entità

Per chi preferisce componenti nativi senza custom card, ecco una configurazione con la card Entità standard:

type: entities
title: "🔋 Monitor Batterie"
state_color: true
show_header_toggle: false
entities:
  - type: section
    label: "Batterie Critiche (< 20%)"
  - entity: sensor.sensore_porta_ingresso_battery
    name: "Porta Ingresso"
    secondary_info: last-changed
  - entity: sensor.sensore_movimento_soggiorno_battery
    name: "Movimento Soggiorno"
    secondary_info: last-changed
  - type: section
    label: "Batterie OK (> 20%)"
  - entity: sensor.termostato_camera_battery
    name: "Termostato Camera"
  - entity: sensor.pulsante_smart_cucina_battery
    name: "Pulsante Cucina"
card_mod:
  style: |
    ha-card {
      --paper-item-icon-color: 
        {% if states('sensor.sensore_porta_ingresso_battery') | int < 20 %}
          red
        {% elif states('sensor.sensore_porta_ingresso_battery') | int < 50 %}
          orange
        {% else %}
          green
        {% endif %};
    }

Gestione avanzata: gruppi di batterie personalizzati

Per installazioni complesse con molti dispositivi, puoi creare gruppi tematici di batterie con soglie personalizzate.

Esempio: batterie critiche vs standard

# configuration.yaml
input_number:
  soglia_batterie_critiche:
    name: "Soglia Batterie Critiche"
    min: 10
    max: 30
    step: 5
    initial: 15
    unit_of_measurement: "%"
  
  soglia_batterie_standard:
    name: "Soglia Batterie Standard"
    min: 15
    max: 40
    step: 5
    initial: 20
    unit_of_measurement: "%"

# Gruppo sensori critici
group:
  batterie_critiche:
    name: "Batterie Dispositivi Critici"
    entities:
      - sensor.serratura_smart_ingresso_battery
      - sensor.allarme_perimetrale_battery
      - sensor.rilevatore_fumo_cucina_battery
      - sensor.sensore_allagamento_bagno_battery

# Gruppo sensori standard
group:
  batterie_standard:
    name: "Batterie Dispositivi Standard"
    entities:
      - sensor.sensore_temperatura_soggiorno_battery
      - sensor.pulsante_scene_camera_battery
      - sensor.sensore_luminosita_esterno_battery

Automazione con soglie differenziate:

automation:
  - alias: "Alert Batterie Critiche"
    trigger:
      - platform: numeric_state
        entity_id: 
          - sensor.serratura_smart_ingresso_battery
          - sensor.allarme_perimetrale_battery
          - sensor.rilevatore_fumo_cucina_battery
          - sensor.sensore_allagamento_bagno_battery
        below: input_number.soglia_batterie_critiche
    action:
      - service: notify.mobile_app_iphone
        data:
          title: "🚨 BATTERIA CRITICA"
          message: "{{ trigger.to_state.name }} al {{ trigger.to_state.state }}% - SOSTITUZIONE URGENTE"
          data:
            push:
              sound: "US-EN-Alexa-Motion-Detected-Generic.wav"
              interruption-level: critical
      - service: notify.telegram
        data:
          message: "⚠️ BATTERIA CRITICA: {{ trigger.to_state.name }} ({{ trigger.to_state.state }}%)"

  - alias: "Alert Batterie Standard"
    trigger:
      - platform: numeric_state
        entity_id: 
          - sensor.sensore_temperatura_soggiorno_battery
          - sensor.pulsante_scene_camera_battery
          - sensor.sensore_luminosita_esterno_battery
        below: input_number.soglia_batterie_standard
    action:
      - service: notify.mobile_app_iphone
        data:
          title: "🔋 Batteria Bassa"
          message: "{{ trigger.to_state.name }}: {{ trigger.to_state.state }}%"

Questa configurazione differenzia i dispositivi critici per la sicurezza (serrature, allarmi, rilevatori) da quelli standard, applicando soglie più alte e notifiche prioritarie ai primi.

Notifiche avanzate con action buttons

Le notifiche iOS e Android moderne supportano pulsanti d’azione che permettono di aggiungere rapidamente le batterie scariche a una lista della spesa o a un promemoria.

Esempio con action buttons per iOS:

automation:
  - alias: "Alert Batterie con Action Buttons"
    trigger:
      - platform: numeric_state
        entity_id: sensor.sensore_porta_ingresso_battery
        below: 20
    action:
      - service: notify.mobile_app_iphone
        data:
          title: "🔋 Batteria Scarica"
          message: "{{ trigger.to_state.name }}: {{ trigger.to_state.state }}%"
          data:
            actions:
              - action: "AGGIUNGI_LISTA_SPESA"
                title: "Aggiungi a lista spesa"
              - action: "RICORDA_DOMANI"
                title: "Ricordamelo domani"
              - action: "IGNORA"
                title: "Ignora"
            push:
              interruption-level: time-sensitive

  - alias: "Gestione Action Buttons Batterie"
    trigger:
      - platform: event
        event_type: mobile_app_notification_action
        event_data:
          action: "AGGIUNGI_LISTA_SPESA"
    action:
      - service: todo.add_item
        target:
          entity_id: todo.lista_spesa
        data:
          item: "Batterie CR2032 per {{ trigger.event.data.device_name }}"
      - service: notify.mobile_app_iphone
        data:
          message: "✅ Batteria aggiunta alla lista spesa"

  - alias: "Ricorda Batteria Domani"
    trigger:
      - platform: event
        event_type: mobile_app_notification_action
        event_data:
          action: "RICORDA_DOMANI"
    action:
      - delay:
          hours: 24
      - service: notify.mobile_app_iphone
        data:
          title: "🔔 Promemoria Batteria"
          message: "Ricorda di sostituire la batteria in {{ trigger.event.data.device_name }}"

Questa funzionalità trasforma le notifiche passive in azioni concrete, integrando direttamente il sistema di alert con le tue liste To-Do e promemoria.

Monitoraggio batterie unavailable e unknown

I dispositivi Zigbee possono occasionalmente risultare “unavailable” o “unknown” a causa di problemi di rete o batterie completamente esaurite. Un’automazione dedicata identifica questi casi critici.

Automazione per stati anomali:

automation:
  - alias: "Alert Batterie Unavailable/Unknown"
    trigger:
      - platform: state
        entity_id:
          - sensor.sensore_porta_ingresso_battery
          - sensor.sensore_movimento_soggiorno_battery
          - sensor.termostato_camera_battery
        to:
          - "unavailable"
          - "unknown"
        for:
          minutes: 30
    action:
      - service: notify.mobile_app_iphone
        data:
          title: "⚠️ Dispositivo Non Disponibile"
          message: >
            {{ trigger.to_state.name }} non risponde da 30 minuti.
            Possibile batteria scarica o problema di connessione.
          data:
            push:
              interruption-level: time-sensitive
      - service: persistent_notification.create
        data:
          title: "Dispositivo Offline"
          message: "{{ trigger.to_state.name }} - Verifica batteria o connettività"

Questa automazione attende 30 minuti prima di notificare per evitare falsi positivi dovuti a temporanee perdite di connessione.

Report periodico completo

Oltre agli alert immediati, un report settimanale completo fornisce una panoramica dello stato generale delle batterie.

Automazione report settimanale:

automation:
  - alias: "Report Settimanale Batterie"
    trigger:
      - platform: time
        at: "19:00:00"
    condition:
      - condition: time
        weekday:
          - sun
    action:
      - service: notify.mobile_app_iphone
        data:
          title: "📊 Report Settimanale Batterie"
          message: >
            {% set threshold_critical = 15 %}
            {% set threshold_low = 30 %}
            {% set threshold_ok = 50 %}
            
            {% set critical = expand(states.sensor)
              | selectattr('attributes.device_class', 'defined')
              | selectattr('attributes.device_class', '==', 'battery')
              | selectattr('state', 'is_number')
              | selectattr('state', 'lt', threshold_critical)
              | list %}
            
            {% set low = expand(states.sensor)
              | selectattr('attributes.device_class', 'defined')
              | selectattr('attributes.device_class', '==', 'battery')
              | selectattr('state', 'is_number')
              | select('>=', threshold_critical)
              | selectattr('state', 'lt', threshold_low)
              | list %}
            
            {% set ok = expand(states.sensor)
              | selectattr('attributes.device_class', 'defined')
              | selectattr('attributes.device_class', '==', 'battery')
              | selectattr('state', 'is_number')
              | selectattr('state', '>=', threshold_ok)
              | list %}
            
            🔴 CRITICHE (< {{ threshold_critical }}%): {{ critical | count }}
            {% for battery in critical %}
            - {{ battery.name }}: {{ battery.state }}%
            {% endfor %}
            
            🟠 BASSE ({{ threshold_critical }}-{{ threshold_low }}%): {{ low | count }}
            {% for battery in low %}
            - {{ battery.name }}: {{ battery.state }}%
            {% endfor %}
            
            🟢 OK (> {{ threshold_ok }}%): {{ ok | count }}
            
            Totale dispositivi monitorati: {{ (critical | count) + (low | count) + (ok | count) }}

Questo report domenicale offre una visione completa dello stato del sistema, permettendo di pianificare le sostituzioni con anticipo.

Integrazione con Battery Notes

L’integrazione HACS “Battery Notes” permette di registrare informazioni dettagliate sulle batterie di ogni dispositivo, incluso tipo, data ultima sostituzione e vita media attesa.

Installazione Battery Notes:

  1. Installa tramite HACS

  2. Riavvia Home Assistant

  3. Configura i dispositivi indicando tipo di batteria (es. CR2032, AAA)

  4. Registra la data di installazione

Automazione con Battery Notes:

automation:
  - alias: "Alert Batteria con Info Tipo"
    trigger:
      - platform: numeric_state
        entity_id: sensor.sensore_porta_ingresso_battery
        below: 20
    action:
      - service: notify.mobile_app_iphone
        data:
          title: "🔋 Batteria da Sostituire"
          message: >
            {{ trigger.to_state.name }}: {{ trigger.to_state.state }}%
            Tipo batteria: {{ state_attr('sensor.sensore_porta_ingresso_battery', 'battery_type') }}
            Installata il: {{ state_attr('sensor.sensore_porta_ingresso_battery', 'battery_last_replaced') }}

Questa integrazione trasforma le notifiche da semplici alert a guide pratiche con tutte le informazioni necessarie per la sostituzione.

Implementare un sistema di monitoraggio delle batterie in Home Assistant non è solo una comodità, ma una vera e propria necessità per garantire l’affidabilità della tua smart home. Con le soluzioni presentate in questa guida, hai tutti gli strumenti per trasformare la gestione delle batterie da un’attività reattiva e problematica in un processo completamente automatizzato e proattivo.

Che tu scelga l’approccio dell’automazione unica basata su template, i blueprint pronti all’uso della community o una combinazione di dashboard e notifiche avanzate, l’importante è implementare almeno un sistema base di alert. Anche la soluzione più semplice, con una singola automazione che monitora tutte le batterie sotto il 20%, ti farà risparmiare ore di frustrazione e ti garantirà che i dispositivi critici non smettano mai di funzionare nei momenti meno opportuni.

Ricorda che il sistema di monitoraggio batterie migliora con l’uso: osserva quali soglie funzionano meglio per i tuoi dispositivi, personalizza i messaggi per renderli più informativi e integra le notifiche con i tuoi flussi di lavoro quotidiani utilizzando action buttons e liste To-Do. Con Battery Notes puoi tracciare la durata media delle batterie per ogni tipo di dispositivo, ottimizzando ulteriormente gli acquisti futuri.

La vera potenza di queste automazioni emerge quando combini alert immediati, report periodici e dashboard visuali: avrai sempre il controllo completo dello stato di salute della tua smart home, potrai pianificare le sostituzioni con anticipo e non dovrai mai più scoprire a posteriori che un sensore critico è rimasto spento per giorni.

Inizia oggi stesso implementando la soluzione che più si adatta alle tue esigenze e goditi la tranquillità di una casa intelligente davvero affidabile, dove le batterie scariche diventano un ricordo del passato.