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,
this post!