Compare commits

...

11 Commits

Author SHA1 Message Date
ce29e80330 Try to fix Tina Desk Switch weirdness 2025-04-02 15:53:12 -04:00
10deee4f04 Always play Emma wakeup announcement, and play it in common areas 2025-03-29 01:15:20 -04:00
6fa762a113 Adjust scheduling for ridiculously OP air conditioner 2025-03-29 01:10:58 -04:00
7b529895e5 Whole fuckload of changes for Emma's new air conditioner 2025-03-28 21:56:58 -04:00
bdb278dd28 Adjust TTS briefings for K riding the bus
#219
2025-03-24 18:38:55 -04:00
000efa7562 Adjust status macros for K riding the bus
#219
2025-03-24 18:38:54 -04:00
b6911a0f59 Rework scheduling for K riding the bus
#219
2025-03-24 18:38:53 -04:00
d49563435d Raise threshold to show computers on, ignore idle power spikes
This caused my computer to briefly register as on, and thus my Awake switch was turned on and prevented Emma's door alert from playing in the bedroom
2025-03-24 18:38:38 -04:00
1a89d088f6 Automations to deal with Emma Awake toggle 2025-03-24 03:00:13 -04:00
ee6499bec8 Add option for Adjustment request in reporting system 2025-03-22 20:50:01 -04:00
148f78aecd Update .HA_VERSION 2025-03-22 07:20:42 -04:00
15 changed files with 212 additions and 195 deletions

View File

@ -1 +1 @@
2025.3.3
2025.3.4

View File

@ -1310,10 +1310,23 @@
input:
dimmer_device: 40c14ccfe958d21d75888a968bbbf908
on_short_action:
- data: {}
target:
- if:
- condition: state
entity_id: light.tina_desk_lights
action: light.turn_on
state: 'off'
then:
- action: input_select.select_option
metadata: {}
data:
option: Reset
target:
entity_id: input_select.tina_desk_scenes
else:
- action: light.turn_off
metadata: {}
data: {}
target:
entity_id: light.tina_desk_lights
on_long_action:
- data:
option: Reset
@ -5030,38 +5043,6 @@
alias: Update Notification
mode: parallel
max: 10
- id: '1714595577405'
alias: Emma Bedroom Cooling
description: ''
trigger:
- platform: time
at: input_datetime.emma_bedroom_cooling
alias: At the scheduled cooling time
condition:
- condition: state
entity_id: input_boolean.emma_sleeping
state: 'off'
alias: If Emma is not already asleep
- condition: state
entity_id: input_select.scheduled_climate_mode_emma_bedroom
state: AC
alias: If the AC is scheduled to run
action:
- service: fan.turn_on
metadata: {}
data: {}
target:
entity_id: fan.emma_air_conditioner
alias: Turn on Emma's air conditioner
- service: script.text_notify
data:
who: parents
title: Emma Climate Schedule
message: The air conditioner in Emma's Bedroom has been activated.
type: normal
tag: emma-climate
alias: Send AC notification
mode: restart
- id: '1716497196985'
alias: Emma Bedtime Rescheduler
description: Keeps Emma's bedtime up-to-date with reality
@ -6097,3 +6078,30 @@
action: script.tina_tylenol
mode: parallel
max: 10
- id: '1742799079017'
alias: Emma Sleep Handling
description: Awareness of when Emma is asleep or wakes up
triggers:
- trigger: state
entity_id:
- input_boolean.emma_sleeping
from: 'on'
to: 'off'
id: sleep-off
alias: Sleep Off
- trigger: state
entity_id:
- binary_sensor.family_home
from: 'on'
to: 'off'
id: family-left
alias: Family Left
conditions: []
actions:
- action: input_boolean.turn_on
metadata: {}
data: {}
target:
entity_id: input_boolean.emma_awake
alias: Turn on Emma Awake
mode: restart

View File

@ -473,12 +473,11 @@
Collin has Beyond The Bells today after school.
{% endif %}
{% if is_state('input_boolean.kallen_alternate_pickup','on') %}
{{ states('input_text.kallen_pickup') }} will be picking Collin up from school today.
{% else %}
Pickup today will be at {{ input_datetime_read('input_datetime.kallen_school_day_end') | trim }}.
{{ states('input_text.kallen_pickup') }} will be picking Collin up from school today.
{% if is_state('input_boolean.kallen_school_early_release','on') %}
And It is early release!
Today is an early release day!
{% endif %}
Pickup today will be at {{ input_datetime_read('input_datetime.kallen_school_day_end') | trim }}.
{% endif %}
{% if states('sensor.windows_open') | int > 0 %}
'I detect that there are windows open. Make sure you close them before you leave, or else the security system will not arm. '
@ -544,10 +543,11 @@
{% endif %}
{% if is_state('input_boolean.kallen_alternate_pickup','on') %}
{{ states('input_text.kallen_pickup') }} will be picking him up from school today.
{% elif is_state('input_boolean.kallen_school_early_release','on') %}
The school is on an early release schedule, pickup is at {{ input_datetime_read('input_datetime.kallen_school_day_end') | trim }}.
{% else %}
His pickup time is {{ input_datetime_read('input_datetime.kallen_school_day_end') | trim }}.
{% if is_state('input_boolean.kallen_school_early_release','on') %}
The school is on an early release schedule, pickup is at {{ input_datetime_read('input_datetime.kallen_school_day_end') | trim }}.
{% else %}
His pickup time is {{ input_datetime_read('input_datetime.kallen_school_day_end') | trim }}.
{% endif %}
{% endif %}
{% else %}
{{ identKallen }} has school at {{ input_datetime_read('input_datetime.kallen_school_day_start') | trim }} today.

View File

@ -11,6 +11,7 @@ report_type:
options:
- Bug Report
- New Idea
- Adjustment
initial: Bug Report
icon: mdi:bug
select_testing:

View File

@ -1,14 +1,14 @@
template:
- binary_sensor:
- name: Emma Aircon - Compressor
- name: Emma Bedroom Aircon - Compressor
unique_id: 21bcbb62-823c-43ff-8c2c-26e940324ee6
state: "{{ states('sensor.emma_air_conditioner_power') | int > 150 }}"
availability: "{{ states('fan.emma_air_conditioner') not in ['unknown','unavailable'] }}"
state: "{{ states('sensor.emma_bedroom_aircon_power') | int > 150 }}"
availability: "{{ states('climate.emma_bedroom_aircon') not in ['unknown','unavailable'] }}"
device_class: running
- name: Emma Aircon - Fan
- name: Emma Bedroom Aircon - Fan
unique_id: 9e3054cf-8f7e-4fef-9da4-5b2f2bc99c9d
state: "{{ states('sensor.emma_air_conditioner_power') | int > 20 }}"
availability: "{{ states('fan.emma_air_conditioner') not in ['unknown','unavailable'] }}"
state: "{{ states('sensor.emma_bedroom_aircon_power') | int > 20 }}"
availability: "{{ states('climate.emma_bedroom_aircon') not in ['unknown','unavailable'] }}"
device_class: running
- name: Master Bedroom Aircon - Compressor
unique_id: 87051957-1dbc-4d65-b138-e8469728f58f
@ -142,6 +142,36 @@ template:
mdi:fan-off
{% endif %}
availability: "{{ states('climate.master_bedroom_aircon') not in ['unavailable','unknown'] }}"
- name: "Emma Bedroom Target Temp"
unique_id: b81152a1-d4d9-4e3e-8a78-6039de2884ad
state: "{{ state_attr('climate.emma_bedroom_aircon','temperature') | float }}"
availability: "{{ states('climate.emma_bedroom_aircon') not in ['unavailable','unknown'] }}"
- name: "Emma Bedroom Eco Mode"
unique_id: 4b6fc8fc-4152-4d8b-ad8d-80f97fcabe44
state: "{{ is_state_attr('climate.emma_bedroom_aircon','preset_mode','eco') }}"
icon: >-
{% if is_state_attr('climate.emma_bedroom_aircon','preset_mode','eco') %}
mdi:home-lightning-bolt
{% else %}
mdi:home-lightning-bolt-outline
{% endif %}
availability: "{{ states('climate.emma_bedroom_aircon') not in ['unavailable','unknown'] }}"
- name: "Emma Bedroom Aircon Fan Mode"
unique_id: d678eb2e-be5b-4626-913d-fc1e32941ead
state: "{{ state_attr('climate.emma_bedroom_aircon','fan_mode') }}"
icon: >
{% if is_state_attr('climate.emma_bedroom_aircon','fan_mode','Auto') %}
mdi:fan-auto
{% elif is_state_attr('climate.emma_bedroom_aircon','fan_mode','Low') %}
mdi:fan-speed-1
{% elif is_state_attr('climate.emma_bedroom_aircon','fan_mode','Medium') %}
mdi:fan-speed-2
{% elif is_state_attr('climate.emma_bedroom_aircon','fan_mode','High') %}
mdi:fan-speed-3
{% else %}
mdi:fan-off
{% endif %}
availability: "{{ states('climate.emma_bedroom_aircon') not in ['unavailable','unknown'] }}"
- name: Living Room Average Temperature
unique_id: c4a901a6-87e2-4257-b60b-2944be8fdf04
state: >
@ -187,16 +217,17 @@ input_boolean:
master_bedroom_climate_protocol:
name: Master Bedroom Climate Protocol
icon: mdi:lightbulb-night
emma_bedroom_climate_protocol:
name: Emma Bedroom Climate Protocol
icon: mdi:lightbulb-night
kallen_bedtime_protocol:
name: Kallen Bedtime Protocol
icon: mdi:lightbulb-night
# Turn on when master bedroom air conditioner is installed, turn off in winter when we take it out, for smarter automations
# Turn on when air conditioners are installed, turn off in winter when we take them out
master_bedroom_aircon_installed:
name: Master Bedroom Aircon Installed
icon: mdi:tools
# Same thing, but for Emma's bedroom air conditioner
emma_bedroom_aircon_installed:
name: Emma Bedroom Aircon Installed
icon: mdi:tools
@ -205,6 +236,9 @@ input_boolean:
master_bedroom_cooling_on:
name: Master Bedroom Cooling On
icon: mdi:snowflake
emma_bedroom_cooling_on:
name: Emma Bedroom Cooling On
icon: mdi:snowflake
# Activated if the day will be excessively hot. For use with automations for daytime climate control.
hot_day:
@ -247,6 +281,7 @@ input_select:
name: Scheduled Climate Mode - Emma Bedroom
options:
- AC
- Fan
- Heat
- White Noise
- N/A
@ -309,13 +344,55 @@ input_number:
step: 1
unit_of_measurement: °F
icon: mdi:thermometer
emma_aircon_threshold:
name: Emma Aircon Threshold
emma_bedroom_daytime_temp:
name: Emma Bedroom Daytime Temp
min: 65
max: 80
step: 1
unit_of_measurement: °F
icon: mdi:thermometer
emma_bedroom_night_temp:
name: Emma Bedroom Night Temp
min: 65
max: 80
step: 1
unit_of_measurement: °F
icon: mdi:thermometer
emma_bedroom_bedtime_temp:
name: Emma Bedroom Bedtime Temp
min: 65
max: 80
step: 1
unit_of_measurement: °F
icon: mdi:thermometer
emma_bedroom_aircon_run_threshold:
name: Emma Bedroom Aircon Run Threshold
min: 40
max: 80
step: 1
unit_of_measurement: °F
icon: mdi:thermometer
emma_bedroom_aircon_mode_threshold:
name: Emma Bedroom Aircon Mode Threshold
min: 40
max: 80
step: 1
unit_of_measurement: °F
icon: mdi:thermometer
emma_bedroom_fan_threshold:
name: Emma Bedroom Fan Threshold
min: 30
max: 70
step: 1
unit_of_measurement: °F
icon: mdi:thermometer
emma_bedroom_auto_cooling_threshold:
name: Emma Bedroom Auto Cooling Threshold
min: 70
max: 90
step: 1
unit_of_measurement: °F
icon: mdi:thermometer
kallen_fan_threshold:
name: Kallen Fan Threshold
min: 40

View File

@ -257,6 +257,9 @@ automation:
time: >
{% from 'time.jinja' import current_time %}
{{ current_time('time',24) }}
- service: input_boolean.turn_off
target:
entity_id: input_boolean.emma_awake
- conditions:
- condition: trigger
id: bedtime-timer-finished
@ -281,6 +284,9 @@ automation:
datetime: >
{% from 'time.jinja' import current_time %}
{{ current_time('time',24) }}
- service: input_boolean.turn_off
target:
entity_id: input_boolean.emma_awake
- id: e59f638a-519f-4619-bf7d-b13251b3a374
alias: Emma Meds Handler
@ -804,16 +810,11 @@ script:
datetime: >
{% from 'time.jinja' import set_datetime %}
{{ set_datetime(0,5) }}
- if:
- condition: state
entity_id: binary_sensor.basement_occupied
state: 'on'
then:
- service: script.speech_engine
data:
who: basement
type: normal
message: Emma has awoken, so it is time to make your way upstairs now
- service: script.speech_engine
data:
who: common
type: normal
message: Emma has awoken, so it is time to make your way upstairs now
- service: input_datetime.set_datetime
target:
entity_id: input_datetime.emma_awake_at
@ -898,26 +899,3 @@ script:
- service: input_boolean.turn_off
target:
entity_id: input_boolean.white_noise_emma_bedroom
- if:
- condition: state
entity_id: fan.emma_air_conditioner
state: 'on'
then:
- service: script.turn_on
target:
entity_id: script.emma_aircon_shutoff
emma_aircon_shutoff:
alias: 'Emma Air Conditioner Shutoff'
mode: restart
description: 'Attempt to shut off air conditioner after compressor stops running'
sequence:
- wait_template: "{{ is_state('binary_sensor.emma_aircon_compressor','off') }}"
timeout:
minutes: 15
continue_on_timeout: true
- delay:
seconds: 5
- service: fan.turn_off
target:
entity_id: fan.emma_air_conditioner

View File

@ -17,8 +17,8 @@ sensor:
entity_id: switch.tina_desktop
power_sensor_id: sensor.tina_desktop_power
- platform: powercalc
entity_id: fan.emma_air_conditioner
power_sensor_id: sensor.emma_air_conditioner_power
entity_id: switch.emma_bedroom_aircon
power_sensor_id: sensor.emma_bedroom_aircon_power
- platform: powercalc
entity_id: switch.master_bedroom_aircon
power_sensor_id: sensor.master_bedroom_aircon_power

View File

@ -613,7 +613,6 @@ automation:
target:
entity_id:
- fan.kallen_bedroom_fan
- fan.emma_air_conditioner
- service: button.press
target:
entity_id: button.master_bedroom_climate_reset

View File

@ -418,21 +418,14 @@ script:
entity_id: input_datetime.daily_briefing
data:
time: >
{% from 'time.jinja' import time_from_calendar %}
{% if is_state('input_boolean.kallen_school_today','on') %}
{% if is_state('input_boolean.kallen_alternate_pickup','on') or is_state('input_boolean.kallen_btb','on') %}
15:30
{% else %}
{{ time_from_calendar('calendar.kallen_school_days','end_time','set','subtract',1) }}
{% endif %}
{% elif is_state('input_boolean.kallen_school_today','off') and is_state('input_boolean.work_today','off') %}
15:30
{% else %}
{% if is_state('input_boolean.kallen_school_today','off') and is_state('input_boolean.work_today','on') %}
{% if (state_attr('input_datetime.tina_workday_end','timestamp')) > 61200 %}
16:00
{% else %}
{{ (state_attr('input_datetime.tina_workday_end', 'timestamp') + 3600) | timestamp_custom('%H:%M', false) }}
{% endif %}
{% else %}
15:30
{% endif %}
- if:
- condition: state
@ -561,18 +554,7 @@ script:
- service: input_datetime.set_datetime
entity_id: input_datetime.master_bedroom_wakeup
data:
time: >
{% if is_state('input_boolean.kallen_school_today','on') %}
{% if is_state('input_boolean.kallen_alternate_pickup','on') or is_state('input_boolean.kallen_btb','on') %}
16:30
{% elif is_state('input_boolean.kallen_school_early_release','on') %}
12:30
{% else %}
13:00
{% endif %}
{% else %}
16:30
{% endif %}
time: "16:30"
- delay:
milliseconds: 500
- service: input_datetime.set_datetime
@ -750,11 +732,11 @@ script:
{% set low = states('sensor.overnight_lowest_temperature') | int %}
{% set bedtime = state_attr('input_datetime.emma_bedtime','timestamp') | int %}
{% if is_state('input_boolean.hot_day','on') %}
{{ (bedtime - 7200) | timestamp_custom('%H:%M',false) }}
{% elif high >= 80 or low >= 60 %}
{{ (bedtime - 5400) | timestamp_custom('%H:%M',false) }}
{% else %}
{% elif high >= 80 or low >= 60 %}
{{ (bedtime - 3600) | timestamp_custom('%H:%M',false) }}
{% else %}
{{ (bedtime - 1800) | timestamp_custom('%H:%M',false) }}
{% endif %}
- service: input_boolean.turn_on
target:

View File

@ -63,25 +63,25 @@ template:
- binary_sensor:
- name: Tony Desktop On
unique_id: 82ce673a-96ad-4af5-a8d1-be9ca9fa9c36
state: "{{ states('sensor.tony_desktop_power') | int > 10 }}"
state: "{{ states('sensor.tony_desktop_power') | int > 25 }}"
device_class: running
attributes:
power_usage: "{{ states('sensor.tony_desktop_power') | int }}W"
- name: Tina Desktop On
unique_id: 8484dbd4-2fae-4368-a4bc-d1bdc09e003f
state: "{{ states('sensor.tina_desktop_power') | int > 10 }}"
state: "{{ states('sensor.tina_desktop_power') | int > 25 }}"
device_class: running
attributes:
power_usage: "{{ states('sensor.tina_desktop_power') | int }}W"
- name: Kallen Desktop On
unique_id: ccc25d75-4915-449d-9b2e-09ad14ffac29
state: "{{ states('sensor.kallen_desktop_power') | int > 10 }}"
state: "{{ states('sensor.kallen_desktop_power') | int > 25 }}"
device_class: running
attributes:
power_usage: "{{ states('sensor.kallen_desktop_power') | int }}W"
- name: Basement Server On
unique_id: e6df7d98-d3ba-4e01-bae2-2ebafc8d78d6
state: "{{ states('sensor.basement_server_power') | int > 10 }}"
state: "{{ states('sensor.basement_server_power') | int > 25 }}"
device_class: running
attributes:
power_usage: "{{ states('sensor.basement_server_power') | int }}W"

View File

@ -2972,69 +2972,33 @@ emma_sleep:
option: Adaptive
alias: Set lights to adaptive
action: input_select.select_option
- alias: Select climate mode
choose:
- conditions:
- alias: AC
condition: and
conditions:
- condition: state
entity_id: input_select.scheduled_climate_mode_emma_bedroom
state: AC
alias: Scheduled mode is AC
- condition: state
entity_id: fan.emma_air_conditioner
state: 'off'
alias: Air conditioner is not already on
sequence:
- target:
entity_id: fan.emma_air_conditioner
data: {}
alias: Turn on air conditioner
action: fan.turn_on
- data:
who: parents
title: Emma Climate Schedule
message: The air conditioner in Emma's Bedroom has been activated.
type: normal
tag: emma-climate
alias: Send AC notification
action: script.text_notify
- conditions:
- alias: White Noise
condition: and
conditions:
- condition: state
entity_id: input_select.scheduled_climate_mode_emma_bedroom
state: White Noise
alias: Scheduled mode is White Noise
- condition: state
entity_id: input_boolean.white_noise_emma_bedroom
state: 'off'
alias: White Noise is not already on
sequence:
- target:
entity_id: input_boolean.white_noise_emma_bedroom
data: {}
alias: Turn on white noise
action: input_boolean.turn_on
- data:
who: parents
title: Emma Climate Schedule
message: White noise has been activated in Emma's Bedroom.
type: normal
tag: emma-climate
alias: Send white noise notification
action: script.text_notify
default:
- if:
- alias: White Noise
condition: and
conditions:
- condition: state
entity_id: input_select.scheduled_climate_mode_emma_bedroom
state: White Noise
alias: Scheduled mode is White Noise
- condition: state
entity_id: input_boolean.white_noise_emma_bedroom
state: 'off'
alias: White Noise is not already on
then:
- target:
entity_id: input_boolean.white_noise_emma_bedroom
data: {}
alias: Turn on white noise
action: input_boolean.turn_on
- data:
who: parents
title: Emma Climate Schedule
message: No option selected for Emma's climate mode. No devices will be activated.
message: White noise has been activated in Emma's Bedroom.
type: normal
tag: emma-climate
alias: Send notification that no climate mode is selected
alias: Send white noise notification
action: script.text_notify
alias: Select climate mode
icon: mdi:lightbulb-night
mode: restart
tina_morning_meds:

View File

@ -168,7 +168,7 @@
unit_of_measurement: ''
state: >-
{% set compressors = [
states.binary_sensor.emma_aircon_compressor,
states.binary_sensor.emma_bedroom_aircon_compressor,
states.binary_sensor.master_bedroom_aircon_compressor
] %}
{{ compressors | selectattr('state','eq','on') | list | count | int }}
@ -177,7 +177,7 @@
unit_of_measurement: ''
state: >-
{% set fans = [
states.binary_sensor.emma_aircon_fan,
states.binary_sensor.emma_bedroom_aircon_fan,
states.binary_sensor.master_bedroom_aircon_fan
] %}
{{ fans | selectattr('state','eq','on') | list | count | int }}
@ -196,11 +196,7 @@
unit_of_measurement: ''
state: >-
{% set climate = states.climate | selectattr('state','ne','off') | rejectattr('state','eq','unavailable') | rejectattr('state','eq','unknown') | list | count | int %}
{% set fans = [
states.fan.emma_air_conditioner
] %}
{% set fans_on = fans | selectattr('state','eq','on') | list | count | int %}
{{ climate + fans_on | int }}
{{ climate | int }}
- name: Climate Devices Running
unique_id: 3c61c756-2934-4294-8085-7d3855b692dd
unit_of_measurement: ''

View File

@ -98,12 +98,7 @@
{% endif %}
{% if is_state('input_boolean.kallen_alternate_pickup','on') %}
Today, you will be picked up from school by {{ states('input_text.kallen_pickup') }}.
{% elif is_state('input_boolean.work_today','off') %}
Today, you will be picked up from school by your parents.
{% else %}
Today, you will be picked up from school by your dad.
{% endif %}
<s>Pickup today will be at {{ input_datetime_read('input_datetime.kallen_school_day_end') }}</s>
{% if count_the_days('input_datetime.school_last_day') | int == 0 -%}
But today is the last day of School!
{%- endif %}

View File

@ -71,9 +71,13 @@
{% else %}
"Collin's room will be left alone, as he is spending the night elsewhere tonight. "
{% endif %}
{% if states('input_select.scheduled_climate_mode_emma_bedroom') != 'N/A' %}
{% if is_state('input_select.scheduled_climate_mode_emma_bedroom','AC') and is_state('fan.emma_air_conditioner','off') %}
"Emma's air conditioner will be activated at {{ input_datetime_read('input_datetime.emma_bedroom_cooling') }}. "
{% if states('input_select.scheduled_climate_mode_emma_bedroom_aircon') != 'N/A' %}
{% if is_state('input_select.scheduled_climate_mode_emma_bedroom_aircon','AC') and is_state('input_boolean.hot_day','on') %}
"Today was a hot day, so Emma's bedroom air conditioner will start cooling a bit earlier tonight at {{ input_datetime_read('input_datetime.emma_bedroom_cooling') }}. "
{% elif is_state('input_select.scheduled_climate_mode_emma_bedroom_aircon','AC') %}
"Emma's bedroom air conditioner will start cooling at {{ input_datetime_read('input_datetime.emma_bedroom_cooling') }}. "
{% elif is_state('input_select.scheduled_climate_mode_emma_bedroom_aircon','Fan') %}
"Emma's bedroom air conditioner will activate fan only mode at {{ input_datetime_read('input_datetime.emma_bedroom_cooling') }}. "
{% elif is_state('input_select.scheduled_climate_mode_emma_bedroom','White Noise') and is_state('input_boolean.white_noise_emma_bedroom','off') %}
"Emma's white noise generator will activate at {{ input_datetime_read('input_datetime.emma_bedtime') }}. "
{% endif %}

View File

@ -91,8 +91,21 @@
{% endif %}
{% endif %}
{% endif %}
{% if is_state('input_boolean.emma_bedroom_aircon_installed','on') and is_state('fan.emma_air_conditioner','on') %}
"Emma's air conditioner is {{ states('fan.emma_air_conditioner') }}. "
{% if is_state('input_boolean.emma_bedroom_aircon_installed','on') %}
"the temperature in Emma's bedroom is {{ states('sensor.emma_bedroom_temperature') | int }} degrees. "
{% if not is_state('climate.emma_bedroom_aircon','off') %}
{% if is_state('climate.emma_bedroom_aircon','cool') %}
"and Emma's bedroom air conditioner is set for cooling to {{ state_attr('climate.emma_bedroom_aircon','temperature') }} degrees. "
{% elif is_state('climate.emma_bedroom_aircon','fan_only') %}
"and Emma's bedroom air conditioner is in fan only mode. "
{% elif is_state('climate.emma_bedroom_aircon','dry') %}
"and Emma's bedroom air conditioner is moonlighting as a dehumidifier. "
{% elif is_state('climate.emma_bedroom_aircon','auto') %}
"and Emma's bedroom air conditioner is making its own decisions. Be afraid, be very afraid. "
{% else %}
"and Emma's bedroom air conditioner is currently not speaking to me. Was it something I said? "
{% endif %}
{% endif %}
{% endif %}
{% endif %}
</p>
@ -115,7 +128,7 @@
"Tina has work today. "
{% endif %}
{% if is_state('input_boolean.kallen_at_school','on') %}
"Collin is at school right now. His pickup time will be at {{ input_datetime_read('input_datetime.kallen_school_day_end') }}. "
"Collin is at school right now. His school day ends at {{ input_datetime_read('input_datetime.kallen_school_day_end') }}. "
{% elif is_state('input_boolean.kallen_school_today','on') %}
"Collin has school today. "
{% endif %}