Whole fuckload of changes for Emma's new air conditioner

This commit is contained in:
2025-03-28 21:56:58 -04:00
parent bdb278dd28
commit 7b529895e5
9 changed files with 136 additions and 138 deletions

View File

@ -5030,38 +5030,6 @@
alias: Update Notification alias: Update Notification
mode: parallel mode: parallel
max: 10 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' - id: '1716497196985'
alias: Emma Bedtime Rescheduler alias: Emma Bedtime Rescheduler
description: Keeps Emma's bedtime up-to-date with reality description: Keeps Emma's bedtime up-to-date with reality

View File

@ -1,14 +1,14 @@
template: template:
- binary_sensor: - binary_sensor:
- name: Emma Aircon - Compressor - name: Emma Bedroom Aircon - Compressor
unique_id: 21bcbb62-823c-43ff-8c2c-26e940324ee6 unique_id: 21bcbb62-823c-43ff-8c2c-26e940324ee6
state: "{{ states('sensor.emma_air_conditioner_power') | int > 150 }}" state: "{{ states('sensor.emma_bedroom_aircon_power') | int > 150 }}"
availability: "{{ states('fan.emma_air_conditioner') not in ['unknown','unavailable'] }}" availability: "{{ states('climate.emma_bedroom_aircon') not in ['unknown','unavailable'] }}"
device_class: running device_class: running
- name: Emma Aircon - Fan - name: Emma Bedroom Aircon - Fan
unique_id: 9e3054cf-8f7e-4fef-9da4-5b2f2bc99c9d unique_id: 9e3054cf-8f7e-4fef-9da4-5b2f2bc99c9d
state: "{{ states('sensor.emma_air_conditioner_power') | int > 20 }}" state: "{{ states('sensor.emma_bedroom_aircon_power') | int > 20 }}"
availability: "{{ states('fan.emma_air_conditioner') not in ['unknown','unavailable'] }}" availability: "{{ states('climate.emma_bedroom_aircon') not in ['unknown','unavailable'] }}"
device_class: running device_class: running
- name: Master Bedroom Aircon - Compressor - name: Master Bedroom Aircon - Compressor
unique_id: 87051957-1dbc-4d65-b138-e8469728f58f unique_id: 87051957-1dbc-4d65-b138-e8469728f58f
@ -142,6 +142,36 @@ template:
mdi:fan-off mdi:fan-off
{% endif %} {% endif %}
availability: "{{ states('climate.master_bedroom_aircon') not in ['unavailable','unknown'] }}" 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 - name: Living Room Average Temperature
unique_id: c4a901a6-87e2-4257-b60b-2944be8fdf04 unique_id: c4a901a6-87e2-4257-b60b-2944be8fdf04
state: > state: >
@ -187,16 +217,17 @@ input_boolean:
master_bedroom_climate_protocol: master_bedroom_climate_protocol:
name: Master Bedroom Climate Protocol name: Master Bedroom Climate Protocol
icon: mdi:lightbulb-night icon: mdi:lightbulb-night
emma_bedroom_climate_protocol:
name: Emma Bedroom Climate Protocol
icon: mdi:lightbulb-night
kallen_bedtime_protocol: kallen_bedtime_protocol:
name: Kallen Bedtime Protocol name: Kallen Bedtime Protocol
icon: mdi:lightbulb-night 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: master_bedroom_aircon_installed:
name: Master Bedroom Aircon Installed name: Master Bedroom Aircon Installed
icon: mdi:tools icon: mdi:tools
# Same thing, but for Emma's bedroom air conditioner
emma_bedroom_aircon_installed: emma_bedroom_aircon_installed:
name: Emma Bedroom Aircon Installed name: Emma Bedroom Aircon Installed
icon: mdi:tools icon: mdi:tools
@ -205,6 +236,9 @@ input_boolean:
master_bedroom_cooling_on: master_bedroom_cooling_on:
name: Master Bedroom Cooling On name: Master Bedroom Cooling On
icon: mdi:snowflake 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. # Activated if the day will be excessively hot. For use with automations for daytime climate control.
hot_day: hot_day:
@ -247,6 +281,7 @@ input_select:
name: Scheduled Climate Mode - Emma Bedroom name: Scheduled Climate Mode - Emma Bedroom
options: options:
- AC - AC
- Fan
- Heat - Heat
- White Noise - White Noise
- N/A - N/A
@ -309,13 +344,55 @@ input_number:
step: 1 step: 1
unit_of_measurement: °F unit_of_measurement: °F
icon: mdi:thermometer icon: mdi:thermometer
emma_aircon_threshold: emma_bedroom_daytime_temp:
name: Emma Aircon Threshold 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 min: 40
max: 80 max: 80
step: 1 step: 1
unit_of_measurement: °F unit_of_measurement: °F
icon: mdi:thermometer 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: kallen_fan_threshold:
name: Kallen Fan Threshold name: Kallen Fan Threshold
min: 40 min: 40

View File

@ -904,26 +904,3 @@ script:
- service: input_boolean.turn_off - service: input_boolean.turn_off
target: target:
entity_id: input_boolean.white_noise_emma_bedroom 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 entity_id: switch.tina_desktop
power_sensor_id: sensor.tina_desktop_power power_sensor_id: sensor.tina_desktop_power
- platform: powercalc - platform: powercalc
entity_id: fan.emma_air_conditioner entity_id: switch.emma_bedroom_aircon
power_sensor_id: sensor.emma_air_conditioner_power power_sensor_id: sensor.emma_bedroom_aircon_power
- platform: powercalc - platform: powercalc
entity_id: switch.master_bedroom_aircon entity_id: switch.master_bedroom_aircon
power_sensor_id: sensor.master_bedroom_aircon_power power_sensor_id: sensor.master_bedroom_aircon_power

View File

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

View File

@ -2972,69 +2972,33 @@ emma_sleep:
option: Adaptive option: Adaptive
alias: Set lights to adaptive alias: Set lights to adaptive
action: input_select.select_option action: input_select.select_option
- alias: Select climate mode - if:
choose: - alias: White Noise
- conditions: condition: and
- alias: AC conditions:
condition: and - condition: state
conditions: entity_id: input_select.scheduled_climate_mode_emma_bedroom
- condition: state state: White Noise
entity_id: input_select.scheduled_climate_mode_emma_bedroom alias: Scheduled mode is White Noise
state: AC - condition: state
alias: Scheduled mode is AC entity_id: input_boolean.white_noise_emma_bedroom
- condition: state state: 'off'
entity_id: fan.emma_air_conditioner alias: White Noise is not already on
state: 'off' then:
alias: Air conditioner is not already on - target:
sequence: entity_id: input_boolean.white_noise_emma_bedroom
- target: data: {}
entity_id: fan.emma_air_conditioner alias: Turn on white noise
data: {} action: input_boolean.turn_on
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:
- data: - data:
who: parents who: parents
title: Emma Climate Schedule 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 type: normal
tag: emma-climate tag: emma-climate
alias: Send notification that no climate mode is selected alias: Send white noise notification
action: script.text_notify action: script.text_notify
alias: Select climate mode
icon: mdi:lightbulb-night icon: mdi:lightbulb-night
mode: restart mode: restart
tina_morning_meds: tina_morning_meds:

View File

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

View File

@ -71,9 +71,13 @@
{% else %} {% else %}
"Collin's room will be left alone, as he is spending the night elsewhere tonight. " "Collin's room will be left alone, as he is spending the night elsewhere tonight. "
{% endif %} {% endif %}
{% if states('input_select.scheduled_climate_mode_emma_bedroom') != 'N/A' %} {% if states('input_select.scheduled_climate_mode_emma_bedroom_aircon') != 'N/A' %}
{% if is_state('input_select.scheduled_climate_mode_emma_bedroom','AC') and is_state('fan.emma_air_conditioner','off') %} {% if is_state('input_select.scheduled_climate_mode_emma_bedroom_aircon','AC') and is_state('input_boolean.hot_day','on') %}
"Emma's air conditioner will be activated at {{ input_datetime_read('input_datetime.emma_bedroom_cooling') }}. " "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') %} {% 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') }}. " "Emma's white noise generator will activate at {{ input_datetime_read('input_datetime.emma_bedtime') }}. "
{% endif %} {% endif %}

View File

@ -91,8 +91,21 @@
{% endif %} {% endif %}
{% endif %} {% endif %}
{% endif %} {% endif %}
{% if is_state('input_boolean.emma_bedroom_aircon_installed','on') and is_state('fan.emma_air_conditioner','on') %} {% if is_state('input_boolean.emma_bedroom_aircon_installed','on') %}
"Emma's air conditioner is {{ states('fan.emma_air_conditioner') }}. " "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 %}
{% endif %} {% endif %}
</p> </p>