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

# 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
```

Powered by TurnKey Linux.