Home Assistant raccoglie quotidianamente una quantità enorme di dati sulla tua casa: temperature, consumi energetici, utilizzo degli elettrodomestici, accessi e molto altro. Ma quanti di noi si prendono realmente il tempo di analizzare questi dati in modo sistematico? La maggior parte delle volte guardiamo un grafico, lo troviamo interessante e lo dimentichiamo immediatamente. La soluzione è creare report settimanali automatici che arrivano direttamente nella tua casella email, su Telegram o come notifica vocale, offrendoti un riepilogo strutturato delle tue abitudini e dei trend della tua smart home.
Perché Creare Report Settimanali
I report automatici trasformano i dati grezzi di Home Assistant in informazioni actionable che puoi utilizzare per ottimizzare la tua casa. Ricevere un riepilogo settimanale ti permette di identificare pattern di consumo anomali, scoprire elettrodomestici lasciati accesi troppo a lungo, monitorare l’efficienza del riscaldamento e confrontare settimana dopo settimana come cambiano le tue abitudini. Un report ben strutturato può farti risparmiare denaro evidenziando sprechi energetici, migliorare la sicurezza segnalando comportamenti insoliti e darti piena consapevolezza di come funziona realmente la tua smart home.
Cosa Monitorare nei Report Settimanali
Consumi Energetici
Il monitoraggio dei consumi è probabilmente l’utilizzo più pratico dei report settimanali. Puoi tracciare il consumo totale settimanale in kWh, identificare picchi anomali di consumo, confrontare settimana su settimana l’andamento e verificare l’efficacia di eventuali ottimizzazioni energetiche che hai implementato.
Utilizzo Elettrodomestici
Quanto tempo è rimasta accesa la TV questa settimana? Quante ore ha funzionato la lavatrice? Il forno è stato utilizzato più o meno rispetto alla settimana scorsa? Questi dati possono rivelare abitudini interessanti e aiutarti a identificare elettrodomestici obsoleti che consumano troppo.
Temperature e Riscaldamento
Monitorare le temperature medie giornaliere, le ore di funzionamento del riscaldamento o climatizzazione, confrontare temperatura esterna vs interna e calcolare l’efficienza del sistema HVAC sono informazioni preziose per ottimizzare i consumi.
Sicurezza e Accessi
Quante volte è stata aperta la porta d’ingresso? Ci sono stati movimenti rilevati dai sensori quando non eri in casa? L’allarme ha generato alert? Questi dati ti danno un quadro completo della sicurezza settimanale.
Qualità dell’Aria
Se hai sensori di qualità dell’aria, umidità o CO2, un report settimanale può mostrarti i valori medi, i picchi raggiunti e le ore in cui la qualità è stata scarsa, aiutandoti a migliorare il comfort abitativo.
Presenza e Automazioni
Quanto tempo hai trascorso in casa? Quante automazioni si sono attivate? Quali luci sono state le più utilizzate? Questi dati ti aiutano a ottimizzare le automazioni e a capire meglio i tuoi pattern di vita.
Componenti Necessari
Il componente history_stats di Home Assistant è fondamentale per creare report statistici. Questo sensore calcola quanto tempo un’entità è rimasta in un determinato stato durante un periodo specifico. Ad esempio, puoi calcolare quante ore la TV è stata accesa ieri, quanti minuti il riscaldamento ha funzionato la scorsa settimana, o quante volte la porta è stata aperta nel mese.
Esempio di configurazione base:
sensor:
- platform: history_stats
name: TV Ieri
entity_id: media_player.tv_soggiorno
state: 'playing'
type: time
end: '{{ now().replace(hour=0, minute=0, second=0) }}'
duration:
hours: 24
Questo sensore tiene traccia del tempo in cui la TV era in stato “playing” nelle ultime 24 ore.
utility_meter – Statistiche Periodiche
Il componente utility_meter permette di creare contatori che si resettano automaticamente ogni giorno, settimana o mese. È perfetto per tracciare consumi energetici con periodi definiti:
utility_meter:
consumo_energia_settimanale:
source: sensor.energia_totale
cycle: weekly
Template Sensors – Calcoli Personalizzati
I sensori template ti permettono di creare statistiche complesse combinando dati da più sensori:
sensor:
- platform: template
sensors:
temperatura_media_settimanale:
friendly_name: "Temperatura Media Settimana"
unit_of_measurement: "°C"
value_template: >
{% set temps = states.sensor.temperatura_soggiorno.history(days=7) %}
{{ (temps | map(attribute='state') | map('float') | average) | round(1) }}
Metodi per Generare i Report
Metodo 1: Notifiche Telegram con Markdown
La soluzione più semplice e immediata è inviare un report formattato su Telegram. Telegram supporta la formattazione Markdown che rende i report leggibili e ben strutturati:
automation:
- alias: "Report Settimanale Casa"
trigger:
- platform: time
at: "20:00:00"
condition:
- condition: time
weekday:
- sun
action:
- service: notify.telegram
data:
message: |
📊 *REPORT SETTIMANALE CASA SMART*
⚡ *CONSUMI ENERGETICI*
Consumo totale: {{ states('sensor.consumo_energia_settimanale') }} kWh
Costo stimato: {{ (states('sensor.consumo_energia_settimanale') | float * 0.25) | round(2) }}€
📺 *UTILIZZO TV*
Ore totali: {{ states('sensor.tv_settimanale') }}h
Media giornaliera: {{ (states('sensor.tv_settimanale') | float / 7) | round(1) }}h
🌡️ *TEMPERATURE*
Media interna: {{ states('sensor.temperatura_media_settimanale') }}°C
Media esterna: {{ states('sensor.temp_esterna_media') }}°C
🔥 *RISCALDAMENTO*
Ore funzionamento: {{ states('sensor.riscaldamento_settimanale') }}h
Costo stimato: {{ (states('sensor.consumo_riscaldamento') | float * 0.25) | round(2) }}€
🚪 *SICUREZZA*
Aperture porta: {{ states('sensor.aperture_porta_settimanale') }}
Allarmi attivati: {{ states('sensor.allarmi_settimana') }}
Buona domenica! 🏠
parse_mode: markdown
Questo approccio è immediato, non richiede configurazioni esterne e puoi personalizzare completamente il formato.
Metodo 2: Email HTML con IFTTT
Per report più elaborati con grafici e formattazione avanzata, puoi usare IFTTT per inviare email HTML:
Step 1 – Configurazione IFTTT:
-
Crea un nuovo Applet su IFTTT
-
Come trigger scegli “Webhooks” → “Receive a web request”
-
Assegna un nome evento, es. “weekly_report”
-
Come azione scegli “Gmail” o “Email”
-
Configura l’email con
{{Value1}}per il titolo e{{Value2}}per il corpo HTML
Step 2 – Configurazione Home Assistant:
notify:
- name: report_settimanale
platform: rest
resource: https://maker.ifttt.com/trigger/weekly_report/with/key/YOUR_KEY
method: POST_JSON
data:
value1: "Report Settimanale Casa Smart"
value2_template: >
<html>
<body>
<h2>Report Settimanale</h2>
<table border="1">
<tr><th>Metrica</th><th>Valore</th></tr>
<tr><td>Consumo Energia</td><td>{{ states('sensor.consumo_energia_settimanale') }} kWh</td></tr>
<tr><td>Ore TV</td><td>{{ states('sensor.tv_settimanale') }}h</td></tr>
<tr><td>Temperatura Media</td><td>{{ states('sensor.temperatura_media_settimanale') }}°C</td></tr>
</table>
</body>
</html>
Step 3 – Automazione di invio:
automation:
- alias: "Invia Report Email"
trigger:
- platform: time
at: "09:00:00"
condition:
- condition: time
weekday:
- mon
action:
- service: notify.report_settimanale
data:
message: ""
Questo metodo produce email ben formattate con tabelle e grafici.
Metodo 3: Notifiche Vocali con Google Home
Per chi preferisce ascoltare il report invece che leggerlo, puoi configurare un annuncio vocale ogni domenica sera:
automation:
- alias: "Report Vocale Settimanale"
trigger:
- platform: time
at: "20:00:00"
condition:
- condition: time
weekday:
- sun
action:
- service: tts.google_translate_say
target:
entity_id: media_player.google_home_soggiorno
data:
message: >
Ecco il report settimanale della casa.
Questa settimana hai consumato {{ states('sensor.consumo_energia_settimanale') }} kilowattora di energia elettrica,
per un costo stimato di {{ (states('sensor.consumo_energia_settimanale') | float * 0.25) | round(2) }} euro.
La TV è stata utilizzata per {{ states('sensor.tv_settimanale') }} ore in totale.
La temperatura media in casa è stata di {{ states('sensor.temperatura_media_settimanale') }} gradi.
Il riscaldamento ha funzionato per {{ states('sensor.riscaldamento_settimanale') }} ore.
La porta d'ingresso è stata aperta {{ states('sensor.aperture_porta_settimanale') }} volte.
Buona serata!
Questo metodo è perfetto per avere un riepilogo veloce mentre si è impegnati in altre attività.
Metodo 4: Dashboard PDF con AppDaemon
Per report più professionali in formato PDF, puoi usare AppDaemon con librerie Python come ReportLab o matplotlib:
Step 1 – Installazione AppDaemon:
Installa l’addon AppDaemon da Home Assistant (Supervisor → Add-on Store)
Step 2 – Crea script Python:
import appdaemon.plugins.hass.hassapi as hass
import datetime
from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas
class WeeklyReport(hass.Hass):
def initialize(self):
# Trigger ogni lunedì alle 8:00
self.run_weekly(self.generate_report, 1, datetime.time(8, 0, 0))
def generate_report(self, kwargs):
# Raccogli dati
consumo = float(self.get_state("sensor.consumo_energia_settimanale"))
tv_hours = float(self.get_state("sensor.tv_settimanale"))
temp_media = float(self.get_state("sensor.temperatura_media_settimanale"))
# Genera PDF
c = canvas.Canvas("/config/www/report_settimanale.pdf", pagesize=letter)
c.drawString(100, 750, "REPORT SETTIMANALE CASA SMART")
c.drawString(100, 700, f"Consumo Energia: {consumo} kWh")
c.drawString(100, 680, f"Ore TV: {tv_hours}h")
c.drawString(100, 660, f"Temperatura Media: {temp_media}°C")
c.save()
# Invia notifica con link PDF
self.call_service("notify/telegram",
message="Report settimanale generato!",
data={"document": {"file": "/config/www/report_settimanale.pdf"}})
Questo approccio è il più professionale ma richiede competenze Python.
Report Specifici per Casistiche Comuni
Report Consumi Energetici
Un report dedicato ai consumi è fondamentale per risparmiare in bolletta:
sensor:
- platform: history_stats
name: Ore Lavatrice Settimana
entity_id: switch.lavatrice
state: 'on'
type: time
start: '{{ as_timestamp(now()) - (7*86400) }}'
end: '{{ now() }}'
- platform: template
sensors:
costo_energia_settimanale:
friendly_name: "Costo Energia Settimana"
unit_of_measurement: "€"
value_template: >
{{ (states('sensor.consumo_energia_settimanale') | float * 0.25) | round(2) }}
Report Presenza e Assenze
Monitora quando sei stato in casa e per quanto tempo:
sensor:
- platform: history_stats
name: Ore in Casa Settimana
entity_id: person.nome
state: 'home'
type: time
start: '{{ as_timestamp(now()) - (7*86400) }}'
end: '{{ now() }}'
Report Qualità Aria
Analizza la qualità dell’aria settimanale:
sensor:
- platform: template
sensors:
co2_media_settimanale:
friendly_name: "CO2 Media Settimana"
unit_of_measurement: "ppm"
value_template: >
{% set history = states.sensor.co2_soggiorno.history(days=7) %}
{{ (history | map(attribute='state') | map('float') | average) | round(0) }}
Report Riscaldamento/Climatizzazione
Ottimizza i costi di riscaldamento con statistiche dettagliate:
sensor:
- platform: history_stats
name: Ore Riscaldamento Settimana
entity_id: climate.termostato
state: 'heat'
type: time
start: '{{ as_timestamp(now()) - (7*86400) }}'
end: '{{ now() }}'
- platform: template
sensors:
efficienza_riscaldamento:
friendly_name: "Efficienza Riscaldamento"
unit_of_measurement: "°C/h"
value_template: >
{% set ore = states('sensor.ore_riscaldamento_settimana') | float %}
{% set temp_gain = states('sensor.temperatura_media_settimanale') | float - 10 %}
{{ (temp_gain / ore) | round(2) if ore > 0 else 0 }}
Visualizzazione Dati Storici
Grafici Settimanali con History Graph
Crea card Lovelace con grafici degli ultimi 7 giorni:
type: history-graph
title: Consumi Settimanali
hours_to_show: 168 # 7 giorni
entities:
- entity: sensor.consumo_giornaliero
name: Consumo Energia
- entity: sensor.temperatura_media_giornaliera
name: Temperatura Media
Statistiche con Mini Graph Card
Per visualizzazioni più compatte:
type: custom:mini-graph-card entities: - sensor.consumo_energia_settimanale name: Consumo Settimana hours_to_show: 168 points_per_hour: 0.14 aggregate_func: max group_by: date
Tabelle Comparative con Markdown Card
Confronta dati settimana corrente vs precedente:
type: markdown
content: |
## 📊 Confronto Settimanale
| Metrica | Questa Settimana | Settimana Scorsa | Variazione |
|---------|------------------|-------------------|------------|
| Energia | {{ states('sensor.consumo_energia_settimanale') }} kWh | {{ states('sensor.consumo_energia_settimana_precedente') }} kWh | {{ ((states('sensor.consumo_energia_settimanale') | float - states('sensor.consumo_energia_settimana_precedente') | float) / states('sensor.consumo_energia_settimana_precedente') | float * 100) | round(1) }}% |
| TV | {{ states('sensor.tv_settimanale') }}h | {{ states('sensor.tv_settimana_precedente') }}h | {{ ((states('sensor.tv_settimanale') | float - states('sensor.tv_settimana_precedente') | float) / states('sensor.tv_settimana_precedente') | float * 100) | round(1) }}% |
Programmazione Report: Quando Inviarli
Report Domenicale Serale
Perfetto per chiudere la settimana con un bilancio:
automation:
- alias: "Report Domenica Sera"
trigger:
- platform: time
at: "20:00:00"
condition:
- condition: time
weekday:
- sun
Report Lunedì Mattina
Inizia la settimana con i dati della settimana precedente:
automation:
- alias: "Report Lunedì Mattina"
trigger:
- platform: time
at: "08:00:00"
condition:
- condition: time
weekday:
- mon
Report Bi-settimanale
Per chi non vuole report troppo frequenti:
automation:
- alias: "Report Bi-settimanale"
trigger:
- platform: time
at: "09:00:00"
condition:
- condition: template
value_template: "{{ (now().isocalendar()[1] % 2) == 0 }}"
- condition: time
weekday:
- mon
Report Mensile
Riepilogo mensile il primo del mese:
automation:
- alias: "Report Mensile"
trigger:
- platform: time
at: "10:00:00"
condition:
- condition: template
value_template: "{{ now().day == 1 }}"
Best Practices per Report Efficaci
Mantieni i report concisi: Troppi dati rendono il report difficile da leggere. Concentrati sulle 5-7 metriche più importanti.
Usa comparazioni: Confronta sempre i dati con la settimana/mese precedente per dare contesto ai numeri.
Evidenzia anomalie: Usa emoji o formattazione per evidenziare valori fuori norma (🔴 consumo alto, 🟢 consumo basso).
Includi azioni suggerite: Non limitarti a mostrare dati, suggerisci azioni concrete (“Considera di ridurre l’uso della TV di 2 ore per risparmiare X€”).
Testa il formato: Prova diversi formati (Telegram, email, vocale) e scegli quello che consulti più volentieri.
Programma l’invio strategico: Scegli un momento in cui hai tempo di leggere il report, non quando sei di fretta.
Troubleshooting Problemi Comuni
Sensori history_stats non aggiornati: Assicurati che il database recorder di Home Assistant stia effettivamente tracciando le entità che vuoi monitorare. Verifica in configuration.yaml le impostazioni del recorder.
Report vuoti o con dati mancanti: Controlla che i template abbiano accesso ai dati storici. Usa states.sensor.nome.history(days=7) nei template per verificare la disponibilità dei dati.
Notifiche non arrivano: Verifica che il servizio di notifica sia configurato correttamente. Testa manualmente dal pannello Sviluppatore → Servizi.
Template troppo complessi: Se i template diventano troppo lunghi, considera di creare sensori template separati e poi usarli nel report.
IFTTT non riceve i webhook: Controlla che la chiave API sia corretta e che l’applet IFTTT sia attivo. Verifica i log di Home Assistant per errori di connessione.
I report settimanali automatici trasformano Home Assistant da semplice sistema di automazione a vero assistente intelligente che ti aiuta a comprendere e ottimizzare la tua casa. Con un investimento minimo di tempo nella configurazione iniziale, riceverai ogni settimana insight preziosi su consumi, abitudini e trend che altrimenti rimarrebbero nascosti nei database. Che tu scelga notifiche Telegram per la semplicità, email HTML per la completezza o annunci vocali per la praticità, l’importante è iniziare a monitorare sistematicamente i dati raccolti. I risparmi economici derivanti dall’ottimizzazione dei consumi energetici ripagheranno ampiamente il tempo dedicato alla configurazione, e avrai la soddisfazione di conoscere davvero come funziona la tua smart home.
