Report Settimanali Automatici

Report Settimanali Automatici: Come Va la Tua Casa Smart?

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.