How can I create a "daily report" using data I collect via HA?

I want to create a daily report of data I graph using HA.

Imagine this: at 5pm my wall tablet beeps. It displays a series of graphs each for a time. For example house power usage, and next the data from a smart scale, et cetera, then my Google calendar.

The key question is how to do this automatically.

Creating the graphs is easy. The issue is programming the tablet to display the relevant graph from HA. How can I do that?

Hi,

Ideas:

  • Create a HA view specifically for devices with graphs and the layout you want.
  • For text, create a Template entities and populate the values in automations using Templating (not the same).

As an example, here is the contents of my alarm clock which uses TTS to broadcast to a Google Next hub (or any other audio sink):

Good morning. It is {{ now().hour}} {{ now().minute }} on {{
    states('sensor.date_in_text') }}. 
    The temperature is {{
    states('sensor.a_temperature') }} outside and {{
    states('sensor.b_temperature') }} inside.  The overnight
    minimum was {{ states('sensor.a_minimum_temperature') }}. 
    The forecast is
    {{ forecast_daily['weather.home']['forecast'][0].condition }}. With a
    temperature of {{
    forecast_daily['weather.home']['forecast'][0].temperature|round(1) }},  wind
    speed of {{
    forecast_daily['weather.home']['forecast'][0].wind_speed|round(0) }},  and
    precip of {{
    forecast_daily['weather.home']['forecast'][0].precipitation|round(0) }}  At
    {{ as_timestamp(forecast_daily['weather.home']['forecast'][0].datetime) |
    timestamp_custom('%H %M %A') }}

Although template entities can be updated whenever another entity changes, to reduce system load, I’d suggest firing an automation to update the text, then use that in a View.

Here’s another example which defines a template entity which is updated on reboot or at 05:05. It is how the above TTS speaks the time in a sensible format.

# templates.yaml
# no "template:" here as in configuration.yaml

- trigger:
    - event: start
      platform: homeassistant
    - platform: event
      event_type: event_template_reloaded
    - platform: time_pattern
      # only needs to change once a day
      hours:   05
      minutes: 05
  unique_id: 1234567890
  sensor:
    - name: Date in Text
      #description: "Date in text format suitable for TTS"
      state: >
          {% set dayofweek = ['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday'][now().weekday()] %}
          {% set day = ['1st','2nd','3rd','4th','5th','6th','7th','8th','9th','10th','11th','12th','13th','14th','15th','16th','17th','18th','19th','20th','21th','22th','23th','24th','25th','26th','27th','28th','29th','30th','31th' ][ now().day-1] %}
          {% set month = ['January','February','March','April','May','June','July','August','September','October','November','December'][now().month-1] %}
          {{ dayofweek +', '+ day + ' ' + month + ' '+ now().strftime('%Y') }}
      icon: "mdi:CalendarRange"

If this helps, :heart: this post!