You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
2.6 KiB
73 lines
2.6 KiB
# Home Assistant Jinja 2 Templating to announce some inside Temperatures
|
|
|
|
[Back to README](./README.md)
|
|
|
|
|
|
This process is fairly simple. We don't need to iterate over arrays or anything like that unless we want to get complicated.
|
|
|
|
|
|
For my use case and for the YouTube Video, I chose to read out the temperatures in 4 rooms:
|
|
This table shows the rooms and the sensor ID's I chose, your smart home will differ.
|
|
| | | |
|
|
|--|--|--|
|
|
|Dining Room| sensor.temperature_dining| Aqara Temperature and Humidity Sensor
|
|
|Lounge Room| sensor.lounge_ac_inside_temperature| Temperature Sensor built into my Loungeroom Air Conditioner
|
|
|Office | sensor.temperature_office| Aqara Temperature and Humidity Sensor
|
|
|Master Bedroom| sensor.master_bedroom_purifier_temperature| Temp and Humidity Sensor built into my XiaoMi Air Purifier
|
|
|
|
You should choose the data points that matter the most to you.
|
|
You can add humidity data if you want
|
|
|
|
### The code to announce the states.
|
|
```jinja
|
|
Inside it's currently {{ states('sensor.temperature_dining') }} °C in the Dining Room,
|
|
{{ states('sensor.lounge_ac_inside_temperature') }} °C in the Lounge,
|
|
{{ states('sensor.temperature_office')}} °C in the office,
|
|
and {{ states('sensor.master_bedroom_purifier_temperature') }} °C in the Master Bedroom.
|
|
```
|
|
|
|
### But there's a better way!
|
|
We're going to crate an Array of Dictionaries, and iterate through the array.
|
|
The Dictionary Key is the `entity_id` of the temperature sensor in Home Assistant.
|
|
The Dictionary Value is the Name of the room we want our TTS engine to say.
|
|
For the TTS to sound more 'natural' I've added ", and" to the `name` of the second last item in the array
|
|
|
|
```jinja
|
|
|
|
{% set inside_temps = {
|
|
'sensor.temperature_dining': 'Dining Room',
|
|
'sensor.lounge_ac_inside_temperature': 'Lounge Room',
|
|
'sensor.temperature_office': 'Office, and',
|
|
'sensor.master_bedroom_purifier_temperature': 'Master Bedroom'
|
|
|
|
} %}
|
|
|
|
Inside it's currently
|
|
{% for sensor, room in inside_temps.items() %}
|
|
{{ states(sensor) }} °C in the {{ room }}
|
|
{% endfor %}
|
|
```
|
|
|
|
## And in a script:
|
|
|
|
```yaml
|
|
alias: Announce Inside Temperatures
|
|
sequence:
|
|
- service: notify.alexa_media
|
|
data:
|
|
message: >_
|
|
{% set inside_temps = {
|
|
'sensor.temperature_dining': 'Dining Room',
|
|
'sensor.lounge_ac_inside_temperature': 'Lounge Room',
|
|
'sensor.temperature_office': 'Office, and',
|
|
'sensor.master_bedroom_purifier_temperature': 'Master Bedroom'
|
|
|
|
} %}
|
|
|
|
Inside it's currently
|
|
{% for sensor, room in inside_temps.items() %}
|
|
{{ states(sensor) }} °C in the {{ room }}
|
|
{% endfor %}
|
|
- media_player.dining_room_echo_plus
|
|
mode: single
|
|
``` |