mirror of
https://github.com/CeeWeasel/fresh-home.git
synced 2026-08-10 02:50:12 -04:00
spelling mistakes mostly
This commit is contained in:
@@ -13,7 +13,7 @@ trigger:
|
|||||||
- input_boolean.home_occupied
|
- input_boolean.home_occupied
|
||||||
- binary_sensor.front_room_occupied
|
- binary_sensor.front_room_occupied
|
||||||
to: 'off'
|
to: 'off'
|
||||||
for: '00:05:00'
|
for: '00:15:00'
|
||||||
|
|
||||||
# - platform: time_pattern
|
# - platform: time_pattern
|
||||||
# minutes: "/5"
|
# minutes: "/5"
|
||||||
|
|||||||
@@ -179,7 +179,7 @@ sensors:
|
|||||||
# delay_off:
|
# delay_off:
|
||||||
# seconds: 30
|
# seconds: 30
|
||||||
# icon_template: mdi:washing-machine
|
# icon_template: mdi:washing-machine
|
||||||
# availability_template: "{{ states('sensor.pm_laundry_plug_w') not in ['unkown', 'unavailable'] }}"
|
# availability_template: "{{ states('sensor.pm_laundry_plug_w') not in ['unknown', 'unavailable'] }}"
|
||||||
# value_template: "{{ states('sensor.pm_laundry_plug_w')|float(default=0) >= states('input_number.washing_machine_on')|float(default=0) }}"
|
# value_template: "{{ states('sensor.pm_laundry_plug_w')|float(default=0) >= states('input_number.washing_machine_on')|float(default=0) }}"
|
||||||
# attribute_templates:
|
# attribute_templates:
|
||||||
# model_number: 'WF45R6100AW/US'
|
# model_number: 'WF45R6100AW/US'
|
||||||
@@ -187,14 +187,13 @@ sensors:
|
|||||||
# power: "{{ states('sensor.pm_laundry_plug_w') | float(default=0)}}"
|
# power: "{{ states('sensor.pm_laundry_plug_w') | float(default=0)}}"
|
||||||
# target: "{{ states('input_number.washing_machine_on') | float(default=0)}}"
|
# target: "{{ states('input_number.washing_machine_on') | float(default=0)}}"
|
||||||
|
|
||||||
|
|
||||||
# tumble_dryer:
|
# tumble_dryer:
|
||||||
# unique_id: binary-sensor-tumble-dryer
|
# unique_id: binary-sensor-tumble-dryer
|
||||||
# friendly_name: Tumble Dryer
|
# friendly_name: Tumble Dryer
|
||||||
# delay_off:
|
# delay_off:
|
||||||
# seconds: 30
|
# seconds: 30
|
||||||
# icon_template: mdi:tumble-dryer
|
# icon_template: mdi:tumble-dryer
|
||||||
# availability_template: "{{ states('sensor.pm_dryer_w') not in ['unkown', 'unavailable'] }}"
|
# availability_template: "{{ states('sensor.pm_dryer_w') not in ['unknown', 'unavailable'] }}"
|
||||||
# value_template: "{{ states('sensor.pm_dryer_w')|float(default=0) >= states('input_number.tumble_dryer_on')|float(default=0) }}"
|
# value_template: "{{ states('sensor.pm_dryer_w')|float(default=0) >= states('input_number.tumble_dryer_on')|float(default=0) }}"
|
||||||
# attribute_templates:
|
# attribute_templates:
|
||||||
# model_number: 'DVE45R6100W/A3'
|
# model_number: 'DVE45R6100W/A3'
|
||||||
@@ -210,7 +209,7 @@ sensors:
|
|||||||
# delay_off:
|
# delay_off:
|
||||||
# seconds: 30
|
# seconds: 30
|
||||||
# icon_template: mdi:dishwasher
|
# icon_template: mdi:dishwasher
|
||||||
# availability_template: "{{ states('sensor.pm_dishwasher_w') not in ['unkown', 'unavailable'] }}"
|
# availability_template: "{{ states('sensor.pm_dishwasher_w') not in ['unknown', 'unavailable'] }}"
|
||||||
# value_template: "{{ states('sensor.pm_dishwasher_w')|float(default=0) >= states('input_number.dishwasher_on')|float(default=0) }}"
|
# value_template: "{{ states('sensor.pm_dishwasher_w')|float(default=0) >= states('input_number.dishwasher_on')|float(default=0) }}"
|
||||||
# attribute_templates:
|
# attribute_templates:
|
||||||
# model_number: 'MDB6769PAS1'
|
# model_number: 'MDB6769PAS1'
|
||||||
@@ -226,20 +225,19 @@ sensors:
|
|||||||
value_template: "{{ states('sensor.pm_stove_w') | float(default=0) > states('input_number.stove_on') | float(default=0) }}"
|
value_template: "{{ states('sensor.pm_stove_w') | float(default=0) > states('input_number.stove_on') | float(default=0) }}"
|
||||||
icon_template: mdi:stove
|
icon_template: mdi:stove
|
||||||
attribute_templates:
|
attribute_templates:
|
||||||
model_number: 'WFE505W0JS3'
|
model_number: "WFE505W0JS3"
|
||||||
serial_number: 'RB4659869'
|
serial_number: "RB4659869"
|
||||||
power: "{{ states('sensor.pm_stove_w') | float(default=0)}}"
|
power: "{{ states('sensor.pm_stove_w') | float(default=0)}}"
|
||||||
oven_temperature: "{{ iif(is_state('sensor.oven_temperature', 'unavailable'), 'unavailable', states('sensor.oven_temperature') | float(default=0)) }}"
|
oven_temperature: "{{ iif(is_state('sensor.oven_temperature', 'unavailable'), 'unavailable', states('sensor.oven_temperature') | float(default=0)) }}"
|
||||||
|
|
||||||
|
|
||||||
microwave:
|
microwave:
|
||||||
unique_id: binary-sensor-microwave
|
unique_id: binary-sensor-microwave
|
||||||
friendly_name: Microwave
|
friendly_name: Microwave
|
||||||
value_template: "{{ states('sensor.pm_microwave_plug_w') | float(default=0) > states('input_number.microwave_on') | float(default=0) }}"
|
value_template: "{{ states('sensor.pm_microwave_plug_w') | float(default=0) > states('input_number.microwave_on') | float(default=0) }}"
|
||||||
icon_template: mdi:microwave
|
icon_template: mdi:microwave
|
||||||
attribute_templates:
|
attribute_templates:
|
||||||
model_number: 'testmodel'
|
model_number: "testmodel"
|
||||||
serial_number: 'testserial'
|
serial_number: "testserial"
|
||||||
power: "{{ states('sensor.pm_microwave_plug_w') | float(default=0)}}"
|
power: "{{ states('sensor.pm_microwave_plug_w') | float(default=0)}}"
|
||||||
|
|
||||||
furnace:
|
furnace:
|
||||||
@@ -248,8 +246,8 @@ sensors:
|
|||||||
value_template: "{{ states('sensor.pm_furnace_w') | float(default=0) > states('input_number.furnace_on') | float(default=0) }}"
|
value_template: "{{ states('sensor.pm_furnace_w') | float(default=0) > states('input_number.furnace_on') | float(default=0) }}"
|
||||||
icon_template: mdi:radiator
|
icon_template: mdi:radiator
|
||||||
attribute_templates:
|
attribute_templates:
|
||||||
model_number: 'testmodel'
|
model_number: "testmodel"
|
||||||
serial_number: 'testserial'
|
serial_number: "testserial"
|
||||||
power: "{{ states('sensor.pm_furnace_w') | float(default=0)}}"
|
power: "{{ states('sensor.pm_furnace_w') | float(default=0)}}"
|
||||||
|
|
||||||
heat_pump:
|
heat_pump:
|
||||||
@@ -258,8 +256,8 @@ sensors:
|
|||||||
value_template: "{{ states('sensor.pm_heat_pump_w') | float(default=0) > states('input_number.heat_pump_on') | float(default=0) }}"
|
value_template: "{{ states('sensor.pm_heat_pump_w') | float(default=0) > states('input_number.heat_pump_on') | float(default=0) }}"
|
||||||
icon_template: mdi:air-filter
|
icon_template: mdi:air-filter
|
||||||
attribute_templates:
|
attribute_templates:
|
||||||
model_number: 'testmodel'
|
model_number: "testmodel"
|
||||||
serial_number: 'testserial'
|
serial_number: "testserial"
|
||||||
power: "{{ states('sensor.pm_heat_pump_w') | float(default=0)}}"
|
power: "{{ states('sensor.pm_heat_pump_w') | float(default=0)}}"
|
||||||
|
|
||||||
sump_pump:
|
sump_pump:
|
||||||
@@ -268,8 +266,8 @@ sensors:
|
|||||||
value_template: "{{ states('sensor.pm_sump_pump_plug_w') | float(default=0) > states('input_number.sump_pump_on') | float(default=0) }}"
|
value_template: "{{ states('sensor.pm_sump_pump_plug_w') | float(default=0) > states('input_number.sump_pump_on') | float(default=0) }}"
|
||||||
icon_template: mdi:pump
|
icon_template: mdi:pump
|
||||||
attribute_templates:
|
attribute_templates:
|
||||||
model_number: 'testmodel'
|
model_number: "testmodel"
|
||||||
serial_number: 'testserial'
|
serial_number: "testserial"
|
||||||
power: "{{ states('sensor.pm_sump_pump_plug_w') | float(default=0)}}"
|
power: "{{ states('sensor.pm_sump_pump_plug_w') | float(default=0)}}"
|
||||||
|
|
||||||
something_open_hvac_on:
|
something_open_hvac_on:
|
||||||
@@ -371,7 +369,6 @@ sensors:
|
|||||||
{{ 'false' }}
|
{{ 'false' }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
|
||||||
# Moved to temperature_management.yaml
|
# Moved to temperature_management.yaml
|
||||||
# Is it more than 5 degrees warmer outside?
|
# Is it more than 5 degrees warmer outside?
|
||||||
# warmer_outside:
|
# warmer_outside:
|
||||||
@@ -396,7 +393,6 @@ sensors:
|
|||||||
# {{ 'false' }}
|
# {{ 'false' }}
|
||||||
# {% endif %}
|
# {% endif %}
|
||||||
|
|
||||||
|
|
||||||
is_dark:
|
is_dark:
|
||||||
unique_id: templatebinarysensor.is_dark
|
unique_id: templatebinarysensor.is_dark
|
||||||
friendly_name: Is Dark
|
friendly_name: Is Dark
|
||||||
@@ -410,11 +406,11 @@ sensors:
|
|||||||
is_daylight:
|
is_daylight:
|
||||||
unique_id: templatebinarysensor.is_daylight
|
unique_id: templatebinarysensor.is_daylight
|
||||||
friendly_name: Is Daylight
|
friendly_name: Is Daylight
|
||||||
value_template: "{{ states('sensor.front_porch_light_level') | int(0) >= states('input_number.is_daylight') | int(0) }}"
|
value_template: "{{ states('sensor.front_porch_light_level') | int(0) >= states('input_number.is_daylight') | int(0) }}"
|
||||||
|
|
||||||
garage_open_nobody_home:
|
garage_open_nobody_home:
|
||||||
unique_id: templatebinarysensor.garage_open_nobody_home
|
unique_id: templatebinarysensor.garage_open_nobody_home
|
||||||
friendly_name: 'Garage Open Nobody Home'
|
friendly_name: "Garage Open Nobody Home"
|
||||||
value_template: >-
|
value_template: >-
|
||||||
{% if is_state('cover.garage_door', 'open') %}
|
{% if is_state('cover.garage_door', 'open') %}
|
||||||
{% if is_state('input_boolean.home_occupied', 'off') %}
|
{% if is_state('input_boolean.home_occupied', 'off') %}
|
||||||
@@ -704,7 +700,7 @@ sensors:
|
|||||||
|
|
||||||
take_trash_out:
|
take_trash_out:
|
||||||
unique_id: templatesensor.take_trash_out
|
unique_id: templatesensor.take_trash_out
|
||||||
friendly_name: 'Take Trash Out'
|
friendly_name: "Take Trash Out"
|
||||||
icon_template: mdi:trash-can
|
icon_template: mdi:trash-can
|
||||||
value_template: "{{ is_state('calendar.trash_schedule','on') or state_attr('calendar.trash_schedule','offset_reached') and is_state('input_boolean.trash_out','off') }}"
|
value_template: "{{ is_state('calendar.trash_schedule','on') or state_attr('calendar.trash_schedule','offset_reached') and is_state('input_boolean.trash_out','off') }}"
|
||||||
|
|
||||||
|
|||||||
@@ -1,42 +1,42 @@
|
|||||||
template:
|
template:
|
||||||
- binary_sensor:
|
- binary_sensor:
|
||||||
- name: Dishwasher
|
- name: Dishwasher
|
||||||
unique_id: templatebinarysensor.dishwasher
|
unique_id: templatebinarysensor.dishwasher
|
||||||
icon: mdi:dishwasher
|
icon: mdi:dishwasher
|
||||||
delay_on: "{{states('input_number.dishwasher_delay_on') | float(default=0) }}"
|
delay_on: "{{states('input_number.dishwasher_delay_on') | float(default=0) }}"
|
||||||
delay_off: "{{states('input_number.dishwasher_delay_off') | float(default=0) }}"
|
delay_off: "{{states('input_number.dishwasher_delay_off') | float(default=0) }}"
|
||||||
availability: "{{ states('sensor.pm_dishwasher_w') not in ['unkown', 'unavailable'] }}"
|
availability: "{{ states('sensor.pm_dishwasher_w') not in ['unknown', 'unavailable'] }}"
|
||||||
attributes:
|
attributes:
|
||||||
model_number: 'MDB6769PAS1'
|
model_number: "MDB6769PAS1"
|
||||||
serial_number: 'F24407234'
|
serial_number: "F24407234"
|
||||||
power: "{{ states('sensor.pm_dishwasher_w') | float(default=0)}}"
|
power: "{{ states('sensor.pm_dishwasher_w') | float(default=0)}}"
|
||||||
target: "{{ states('input_number.dishwasher_on') | float(default=0)}}"
|
target: "{{ states('input_number.dishwasher_on') | float(default=0)}}"
|
||||||
state: "{{ states('sensor.pm_dishwasher_w')|float(default=0) >= states('input_number.dishwasher_on')|float(default=0) }}"
|
state: "{{ states('sensor.pm_dishwasher_w')|float(default=0) >= states('input_number.dishwasher_on')|float(default=0) }}"
|
||||||
|
|
||||||
- sensor:
|
- sensor:
|
||||||
- name: Dishwasher
|
- name: Dishwasher
|
||||||
unique_id: templatesensor_dishwasher
|
unique_id: templatesensor_dishwasher
|
||||||
state: >
|
state: >
|
||||||
{% if is_state('binary_sensor.dishwasher','on')%}
|
{% if is_state('binary_sensor.dishwasher','on')%}
|
||||||
running
|
running
|
||||||
{% elif is_state('binary_sensor.dishwasher','off') and is_state('input_boolean.empty_dishwasher','on') %}
|
{% elif is_state('binary_sensor.dishwasher','off') and is_state('input_boolean.empty_dishwasher','on') %}
|
||||||
pending
|
pending
|
||||||
{% else %}
|
{% else %}
|
||||||
idle
|
idle
|
||||||
{% endif %}
|
{% endif %}
|
||||||
icon: >
|
icon: >
|
||||||
{% if is_state('sensor.dishwasher','idle') %}
|
{% if is_state('sensor.dishwasher','idle') %}
|
||||||
mdi:dishwasher-off
|
mdi:dishwasher-off
|
||||||
{% elif is_state('sensor.dishwasher','pending') %}
|
{% elif is_state('sensor.dishwasher','pending') %}
|
||||||
mdi:dishwasher-alert
|
mdi:dishwasher-alert
|
||||||
{% else %}
|
{% else %}
|
||||||
mdi:dishwasher
|
mdi:dishwasher
|
||||||
{% endif %}
|
{% endif %}
|
||||||
attributes:
|
attributes:
|
||||||
model_number: 'MDB6769PAS1'
|
model_number: "MDB6769PAS1"
|
||||||
serial_number: 'F24407234'
|
serial_number: "F24407234"
|
||||||
power: "{{ states('sensor.pm_dishwasher_w') | float(default=0)}}"
|
power: "{{ states('sensor.pm_dishwasher_w') | float(default=0)}}"
|
||||||
target: "{{ states('input_number.dishwasher_on') | float(default=0)}}"
|
target: "{{ states('input_number.dishwasher_on') | float(default=0)}}"
|
||||||
|
|
||||||
input_boolean:
|
input_boolean:
|
||||||
empty_dishwasher:
|
empty_dishwasher:
|
||||||
@@ -46,7 +46,7 @@ input_boolean:
|
|||||||
input_number:
|
input_number:
|
||||||
dishwasher_on:
|
dishwasher_on:
|
||||||
# was 4
|
# was 4
|
||||||
name: 'Dishwasher On'
|
name: "Dishwasher On"
|
||||||
icon: mdi:dishwasher
|
icon: mdi:dishwasher
|
||||||
min: 0
|
min: 0
|
||||||
max: 1000
|
max: 1000
|
||||||
@@ -55,7 +55,7 @@ input_number:
|
|||||||
unit_of_measurement: W
|
unit_of_measurement: W
|
||||||
|
|
||||||
dishwasher_off:
|
dishwasher_off:
|
||||||
name: 'Dishwasher Off'
|
name: "Dishwasher Off"
|
||||||
icon: mdi:dishwasher-off
|
icon: mdi:dishwasher-off
|
||||||
min: 0
|
min: 0
|
||||||
max: 1000
|
max: 1000
|
||||||
@@ -64,7 +64,7 @@ input_number:
|
|||||||
unit_of_measurement: W
|
unit_of_measurement: W
|
||||||
|
|
||||||
dishwasher_delay_on:
|
dishwasher_delay_on:
|
||||||
name: 'Dishwasher Delay On'
|
name: "Dishwasher Delay On"
|
||||||
icon: mdi:clock
|
icon: mdi:clock
|
||||||
min: 0
|
min: 0
|
||||||
max: 900
|
max: 900
|
||||||
@@ -73,7 +73,7 @@ input_number:
|
|||||||
|
|
||||||
dishwasher_delay_off:
|
dishwasher_delay_off:
|
||||||
# was 600
|
# was 600
|
||||||
name: 'Dishwasher Delay Off'
|
name: "Dishwasher Delay Off"
|
||||||
icon: mdi:clock-alert
|
icon: mdi:clock-alert
|
||||||
min: 0
|
min: 0
|
||||||
max: 900
|
max: 900
|
||||||
@@ -87,84 +87,84 @@ automation:
|
|||||||
- id: dishwasher_off
|
- id: dishwasher_off
|
||||||
platform: state
|
platform: state
|
||||||
entity_id: binary_sensor.dishwasher
|
entity_id: binary_sensor.dishwasher
|
||||||
from: 'on'
|
from: "on"
|
||||||
to: 'off'
|
to: "off"
|
||||||
|
|
||||||
- id: dishwasher_on
|
- id: dishwasher_on
|
||||||
platform: state
|
platform: state
|
||||||
entity_id: binary_sensor.dishwasher
|
entity_id: binary_sensor.dishwasher
|
||||||
from: 'off'
|
from: "off"
|
||||||
to: 'on'
|
to: "on"
|
||||||
|
|
||||||
- id: door_open
|
- id: door_open
|
||||||
platform: state
|
platform: state
|
||||||
entity_id: binary_sensor.dishwasher_door_contact
|
entity_id: binary_sensor.dishwasher_door_contact
|
||||||
from: 'off'
|
from: "off"
|
||||||
to: 'on'
|
to: "on"
|
||||||
for:
|
for:
|
||||||
seconds: 5
|
seconds: 5
|
||||||
|
|
||||||
condition: []
|
condition: []
|
||||||
action:
|
action:
|
||||||
- choose:
|
- choose:
|
||||||
- alias: "Dishwasher is running. No need to empty it yet"
|
- alias: "Dishwasher is running. No need to empty it yet"
|
||||||
conditions:
|
conditions:
|
||||||
- condition: trigger
|
- condition: trigger
|
||||||
id: dishwasher_on
|
id: dishwasher_on
|
||||||
|
|
||||||
- condition: state
|
- condition: state
|
||||||
entity_id: input_boolean.empty_dishwasher
|
|
||||||
state: 'on'
|
|
||||||
|
|
||||||
sequence:
|
|
||||||
- service: logbook.log
|
|
||||||
data_template:
|
|
||||||
name: Empty Dishwasher - Load Started
|
|
||||||
entity_id: automation.empty_dishwasher
|
|
||||||
message: Dishwasher just turned on. Turning off input_boolean in case it got left on
|
|
||||||
|
|
||||||
- service: homeassistant.turn_off
|
|
||||||
target:
|
|
||||||
entity_id: input_boolean.empty_dishwasher
|
entity_id: input_boolean.empty_dishwasher
|
||||||
|
state: "on"
|
||||||
|
|
||||||
- alias: "Dishwasher finished while door was shut"
|
sequence:
|
||||||
conditions:
|
- service: logbook.log
|
||||||
- condition: trigger
|
data_template:
|
||||||
id: dishwasher_off
|
name: Empty Dishwasher - Load Started
|
||||||
|
entity_id: automation.empty_dishwasher
|
||||||
|
message: Dishwasher just turned on. Turning off input_boolean in case it got left on
|
||||||
|
|
||||||
- condition: state
|
- service: homeassistant.turn_off
|
||||||
entity_id: binary_sensor.dishwasher_door_contact
|
target:
|
||||||
state: 'off'
|
entity_id: input_boolean.empty_dishwasher
|
||||||
|
|
||||||
sequence:
|
- alias: "Dishwasher finished while door was shut"
|
||||||
- service: logbook.log
|
conditions:
|
||||||
data_template:
|
- condition: trigger
|
||||||
name: Empty Dishwasher - Load finished
|
id: dishwasher_off
|
||||||
entity_id: automation.empty_dishwasher
|
|
||||||
message: Dishwasher just turned off while the door was shut. Assuming dishes need to be put away
|
|
||||||
|
|
||||||
- service: homeassistant.turn_on
|
- condition: state
|
||||||
target:
|
entity_id: binary_sensor.dishwasher_door_contact
|
||||||
entity_id: input_boolean.empty_dishwasher
|
state: "off"
|
||||||
|
|
||||||
- alias: "Door was opened for 30 seconds while dishwasher was off"
|
sequence:
|
||||||
conditions:
|
- service: logbook.log
|
||||||
- condition: trigger
|
data_template:
|
||||||
id: door_open
|
name: Empty Dishwasher - Load finished
|
||||||
|
entity_id: automation.empty_dishwasher
|
||||||
|
message: Dishwasher just turned off while the door was shut. Assuming dishes need to be put away
|
||||||
|
|
||||||
- condition: state
|
- service: homeassistant.turn_on
|
||||||
entity_id: binary_sensor.dishwasher
|
target:
|
||||||
state: 'off'
|
entity_id: input_boolean.empty_dishwasher
|
||||||
|
|
||||||
sequence:
|
- alias: "Door was opened for 30 seconds while dishwasher was off"
|
||||||
- service: logbook.log
|
conditions:
|
||||||
data_template:
|
- condition: trigger
|
||||||
name: Empty Dishwasher - Dishes put away
|
id: door_open
|
||||||
entity_id: automation.empty_dishwasher
|
|
||||||
message: Dishwasher door was opened while the dishwasher was off. Assuming dishes don't need to be put away.
|
|
||||||
|
|
||||||
- service: homeassistant.turn_off
|
- condition: state
|
||||||
target:
|
entity_id: binary_sensor.dishwasher
|
||||||
entity_id: input_boolean.empty_dishwasher
|
state: "off"
|
||||||
|
|
||||||
|
sequence:
|
||||||
|
- service: logbook.log
|
||||||
|
data_template:
|
||||||
|
name: Empty Dishwasher - Dishes put away
|
||||||
|
entity_id: automation.empty_dishwasher
|
||||||
|
message: Dishwasher door was opened while the dishwasher was off. Assuming dishes don't need to be put away.
|
||||||
|
|
||||||
|
- service: homeassistant.turn_off
|
||||||
|
target:
|
||||||
|
entity_id: input_boolean.empty_dishwasher
|
||||||
|
|
||||||
mode: single
|
mode: single
|
||||||
|
|||||||
@@ -1,83 +1,83 @@
|
|||||||
template:
|
template:
|
||||||
- trigger:
|
- trigger:
|
||||||
- platform: state
|
- platform: state
|
||||||
entity_id:
|
entity_id:
|
||||||
- sensor.pm_dryer_w
|
- sensor.pm_dryer_w
|
||||||
- input_number.tumble_dryer_delay_on
|
- input_number.tumble_dryer_delay_on
|
||||||
- input_number.tumble_dryer_delay_off
|
- input_number.tumble_dryer_delay_off
|
||||||
not_to:
|
not_to:
|
||||||
- "unknown"
|
- "unknown"
|
||||||
- "unavailable"
|
- "unavailable"
|
||||||
|
|
||||||
- platform: event
|
- platform: event
|
||||||
event_type: event_template_reloaded
|
event_type: event_template_reloaded
|
||||||
id: "reload"
|
id: "reload"
|
||||||
|
|
||||||
- platform: homeassistant
|
- platform: homeassistant
|
||||||
event: start
|
event: start
|
||||||
|
|
||||||
binary_sensor:
|
binary_sensor:
|
||||||
- name: Tumble Dryer
|
- name: Tumble Dryer
|
||||||
unique_id: binary-sensor-tumble-dryer
|
unique_id: binary-sensor-tumble-dryer
|
||||||
delay_on: "{{states('input_number.tumble_dryer_delay_on') | float(default=0)}}"
|
delay_on: "{{states('input_number.tumble_dryer_delay_on') | float(default=0)}}"
|
||||||
delay_off: "{{states('input_number.tumble_dryer_delay_off') | float(default=0)}}"
|
delay_off: "{{states('input_number.tumble_dryer_delay_off') | float(default=0)}}"
|
||||||
icon: mdi:tumble-dryer
|
icon: mdi:tumble-dryer
|
||||||
availability: "{{ states('sensor.pm_dryer_w') not in ['unkown', 'unavailable'] }}"
|
availability: "{{ states('sensor.pm_dryer_w') not in ['unknown', 'unavailable'] }}"
|
||||||
attributes:
|
attributes:
|
||||||
model_number: 'DVE45R6100W/A3'
|
model_number: "DVE45R6100W/A3"
|
||||||
serial_number: '0AY95BBM605793X'
|
serial_number: "0AY95BBM605793X"
|
||||||
power: "{{ states('sensor.pm_dryer_w') | float(default=0)}}"
|
power: "{{ states('sensor.pm_dryer_w') | float(default=0)}}"
|
||||||
target: "{{ states('input_number.tumble_dryer_on') | float(default=0)}}"
|
target: "{{ states('input_number.tumble_dryer_on') | float(default=0)}}"
|
||||||
state: "{{ states('sensor.pm_dryer_w')|float(default=0) >= states('input_number.tumble_dryer_on')|float(default=0) }}"
|
state: "{{ states('sensor.pm_dryer_w')|float(default=0) >= states('input_number.tumble_dryer_on')|float(default=0) }}"
|
||||||
|
|
||||||
- trigger:
|
- trigger:
|
||||||
- platform: state
|
- platform: state
|
||||||
entity_id: sensor.pm_dryer_w
|
entity_id: sensor.pm_dryer_w
|
||||||
not_to:
|
not_to:
|
||||||
- "unknown"
|
- "unknown"
|
||||||
- "unavailable"
|
- "unavailable"
|
||||||
- platform: state
|
- platform: state
|
||||||
entity_id: input_number.tumble_dryer_delay_on
|
entity_id: input_number.tumble_dryer_delay_on
|
||||||
not_to:
|
not_to:
|
||||||
- "unknown"
|
- "unknown"
|
||||||
- "unavailable"
|
- "unavailable"
|
||||||
- platform: state
|
- platform: state
|
||||||
entity_id: input_number.tumble_dryer_delay_off
|
entity_id: input_number.tumble_dryer_delay_off
|
||||||
not_to:
|
not_to:
|
||||||
- "unknown"
|
- "unknown"
|
||||||
- "unavailable"
|
- "unavailable"
|
||||||
|
|
||||||
- platform: event
|
- platform: event
|
||||||
event_type: event_template_reloaded
|
event_type: event_template_reloaded
|
||||||
id: "reload"
|
id: "reload"
|
||||||
|
|
||||||
- platform: homeassistant
|
- platform: homeassistant
|
||||||
event: start
|
event: start
|
||||||
|
|
||||||
sensor:
|
sensor:
|
||||||
- name: Tumble Dryer
|
- name: Tumble Dryer
|
||||||
unique_id: templatesensor_tumble_dryer
|
unique_id: templatesensor_tumble_dryer
|
||||||
state: >
|
state: >
|
||||||
{% if is_state('binary_sensor.tumble_dryer','on') %}
|
{% if is_state('binary_sensor.tumble_dryer','on') %}
|
||||||
running
|
running
|
||||||
{% elif is_state('binary_sensor.tumble_dryer','off') and is_state('input_boolean.fold_clothes','on') %}
|
{% elif is_state('binary_sensor.tumble_dryer','off') and is_state('input_boolean.fold_clothes','on') %}
|
||||||
pending
|
pending
|
||||||
{% else %}
|
{% else %}
|
||||||
idle
|
idle
|
||||||
{% endif %}
|
{% endif %}
|
||||||
icon: >
|
icon: >
|
||||||
{% if is_state('sensor.tumble_dryer','idle') %}
|
{% if is_state('sensor.tumble_dryer','idle') %}
|
||||||
mdi:tumble-dryer-off
|
mdi:tumble-dryer-off
|
||||||
{% elif is_state('sensor.tumble_dryer','pending') %}
|
{% elif is_state('sensor.tumble_dryer','pending') %}
|
||||||
mdi:tumble-dryer-alert
|
mdi:tumble-dryer-alert
|
||||||
{% else %}
|
{% else %}
|
||||||
mdi:tumble-dryer
|
mdi:tumble-dryer
|
||||||
{% endif %}
|
{% endif %}
|
||||||
attributes:
|
attributes:
|
||||||
model_number: 'DVE45R6100W/A3'
|
model_number: "DVE45R6100W/A3"
|
||||||
serial_number: '0AY95BBM605793X'
|
serial_number: "0AY95BBM605793X"
|
||||||
power: "{{ states('sensor.pm_dryer_w') | float(default=0)}}"
|
power: "{{ states('sensor.pm_dryer_w') | float(default=0)}}"
|
||||||
target: "{{ states('input_number.tumble_dryer_on') | float(default=0)}}"
|
target: "{{ states('input_number.tumble_dryer_on') | float(default=0)}}"
|
||||||
|
|
||||||
input_boolean:
|
input_boolean:
|
||||||
fold_clothes:
|
fold_clothes:
|
||||||
@@ -87,7 +87,7 @@ input_boolean:
|
|||||||
input_number:
|
input_number:
|
||||||
tumble_dryer_on:
|
tumble_dryer_on:
|
||||||
# was 10
|
# was 10
|
||||||
name: 'Tumble Dryer On'
|
name: "Tumble Dryer On"
|
||||||
icon: mdi:tumble-dryer
|
icon: mdi:tumble-dryer
|
||||||
min: 0
|
min: 0
|
||||||
max: 1000
|
max: 1000
|
||||||
@@ -96,7 +96,7 @@ input_number:
|
|||||||
unit_of_measurement: W
|
unit_of_measurement: W
|
||||||
|
|
||||||
tumble_dryer_off:
|
tumble_dryer_off:
|
||||||
name: 'Tumble Dryer Off'
|
name: "Tumble Dryer Off"
|
||||||
icon: mdi:tumble-dryer-off
|
icon: mdi:tumble-dryer-off
|
||||||
min: 0
|
min: 0
|
||||||
max: 1000
|
max: 1000
|
||||||
@@ -105,7 +105,7 @@ input_number:
|
|||||||
unit_of_measurement: W
|
unit_of_measurement: W
|
||||||
|
|
||||||
tumble_dryer_delay_on:
|
tumble_dryer_delay_on:
|
||||||
name: 'Tumble Dryer Delay On'
|
name: "Tumble Dryer Delay On"
|
||||||
icon: mdi:clock
|
icon: mdi:clock
|
||||||
min: 0
|
min: 0
|
||||||
max: 900
|
max: 900
|
||||||
@@ -114,7 +114,7 @@ input_number:
|
|||||||
|
|
||||||
tumble_dryer_delay_off:
|
tumble_dryer_delay_off:
|
||||||
# was 10
|
# was 10
|
||||||
name: 'Tumble Dryer Delay Off'
|
name: "Tumble Dryer Delay Off"
|
||||||
icon: mdi:clock-alert
|
icon: mdi:clock-alert
|
||||||
min: 0
|
min: 0
|
||||||
max: 900
|
max: 900
|
||||||
@@ -128,88 +128,87 @@ automation:
|
|||||||
- id: tumble_dryer_off
|
- id: tumble_dryer_off
|
||||||
platform: state
|
platform: state
|
||||||
entity_id: binary_sensor.tumble_dryer
|
entity_id: binary_sensor.tumble_dryer
|
||||||
from: 'on'
|
from: "on"
|
||||||
to: 'off'
|
to: "off"
|
||||||
|
|
||||||
- id: tumble_dryer_on
|
- id: tumble_dryer_on
|
||||||
platform: state
|
platform: state
|
||||||
entity_id: binary_sensor.tumble_dryer
|
entity_id: binary_sensor.tumble_dryer
|
||||||
from: 'off'
|
from: "off"
|
||||||
to: 'on'
|
to: "on"
|
||||||
|
|
||||||
- id: door_open
|
- id: door_open
|
||||||
platform: state
|
platform: state
|
||||||
entity_id: binary_sensor.tumble_dryer_door_contact
|
entity_id: binary_sensor.tumble_dryer_door_contact
|
||||||
from: 'off'
|
from: "off"
|
||||||
to: 'on'
|
to: "on"
|
||||||
for:
|
for:
|
||||||
seconds: 5
|
seconds: 5
|
||||||
|
|
||||||
condition: []
|
condition: []
|
||||||
action:
|
action:
|
||||||
- choose:
|
- choose:
|
||||||
- alias: "Dryer is running. No need to fold clothes yet"
|
- alias: "Dryer is running. No need to fold clothes yet"
|
||||||
conditions:
|
conditions:
|
||||||
- condition: trigger
|
- condition: trigger
|
||||||
id: tumble_dryer_on
|
id: tumble_dryer_on
|
||||||
|
|
||||||
- condition: state
|
- condition: state
|
||||||
entity_id: input_boolean.fold_clothes
|
|
||||||
state: 'on'
|
|
||||||
sequence:
|
|
||||||
- service: logbook.log
|
|
||||||
data_template:
|
|
||||||
name: Fold Clothes - Load started
|
|
||||||
entity_id: automation.fold_clothes
|
|
||||||
message: Dryer turned on. No need to fold clothes yet. Turning off input_boolean in case it got left on
|
|
||||||
|
|
||||||
|
|
||||||
- service: homeassistant.turn_off
|
|
||||||
target:
|
|
||||||
entity_id: input_boolean.fold_clothes
|
entity_id: input_boolean.fold_clothes
|
||||||
|
state: "on"
|
||||||
|
sequence:
|
||||||
|
- service: logbook.log
|
||||||
|
data_template:
|
||||||
|
name: Fold Clothes - Load started
|
||||||
|
entity_id: automation.fold_clothes
|
||||||
|
message: Dryer turned on. No need to fold clothes yet. Turning off input_boolean in case it got left on
|
||||||
|
|
||||||
- alias: "Dryer finished while door was shut"
|
- service: homeassistant.turn_off
|
||||||
conditions:
|
target:
|
||||||
- condition: trigger
|
entity_id: input_boolean.fold_clothes
|
||||||
id: tumble_dryer_off
|
|
||||||
|
|
||||||
- condition: state
|
- alias: "Dryer finished while door was shut"
|
||||||
entity_id: binary_sensor.tumble_dryer_door_contact
|
conditions:
|
||||||
state: 'off'
|
- condition: trigger
|
||||||
|
id: tumble_dryer_off
|
||||||
|
|
||||||
sequence:
|
- condition: state
|
||||||
- service: logbook.log
|
entity_id: binary_sensor.tumble_dryer_door_contact
|
||||||
data_template:
|
state: "off"
|
||||||
name: Fold Clothes - Load finished
|
|
||||||
entity_id: automation.fold_clothes
|
|
||||||
message: Dryer just turned off. Assuming clothes need to be folded
|
|
||||||
|
|
||||||
- service: homeassistant.turn_on
|
sequence:
|
||||||
target:
|
- service: logbook.log
|
||||||
|
data_template:
|
||||||
|
name: Fold Clothes - Load finished
|
||||||
|
entity_id: automation.fold_clothes
|
||||||
|
message: Dryer just turned off. Assuming clothes need to be folded
|
||||||
|
|
||||||
|
- service: homeassistant.turn_on
|
||||||
|
target:
|
||||||
|
entity_id: input_boolean.fold_clothes
|
||||||
|
|
||||||
|
- alias: "Door was opened while dryer was off"
|
||||||
|
conditions:
|
||||||
|
- condition: trigger
|
||||||
|
id: door_open
|
||||||
|
|
||||||
|
- condition: state
|
||||||
|
entity_id: binary_sensor.tumble_dryer
|
||||||
|
state: "off"
|
||||||
|
|
||||||
|
- condition: state
|
||||||
entity_id: input_boolean.fold_clothes
|
entity_id: input_boolean.fold_clothes
|
||||||
|
state: "on"
|
||||||
|
|
||||||
- alias: "Door was opened while dryer was off"
|
sequence:
|
||||||
conditions:
|
- service: logbook.log
|
||||||
- condition: trigger
|
data_template:
|
||||||
id: door_open
|
name: Fold Clothes - Clothes folded
|
||||||
|
entity_id: automation.fold_clothes
|
||||||
|
message: Door was opened while dryer was off. Assuming clothes are now folded
|
||||||
|
|
||||||
- condition: state
|
- service: homeassistant.turn_off
|
||||||
entity_id: binary_sensor.tumble_dryer
|
target:
|
||||||
state: 'off'
|
entity_id: input_boolean.fold_clothes
|
||||||
|
|
||||||
- condition: state
|
|
||||||
entity_id: input_boolean.fold_clothes
|
|
||||||
state: 'on'
|
|
||||||
|
|
||||||
sequence:
|
|
||||||
- service: logbook.log
|
|
||||||
data_template:
|
|
||||||
name: Fold Clothes - Clothes folded
|
|
||||||
entity_id: automation.fold_clothes
|
|
||||||
message: Door was opened while dryer was off. Assuming clothes are now folded
|
|
||||||
|
|
||||||
- service: homeassistant.turn_off
|
|
||||||
target:
|
|
||||||
entity_id: input_boolean.fold_clothes
|
|
||||||
|
|
||||||
mode: single
|
mode: single
|
||||||
|
|||||||
@@ -1,42 +1,42 @@
|
|||||||
template:
|
template:
|
||||||
- binary_sensor:
|
- binary_sensor:
|
||||||
- name: Washing Machine
|
- name: Washing Machine
|
||||||
unique_id: templatebinarysensor.washing_machine
|
unique_id: templatebinarysensor.washing_machine
|
||||||
delay_on: "{{states('input_number.washing_machine_delay_on') | float(default=0)}}"
|
delay_on: "{{states('input_number.washing_machine_delay_on') | float(default=0)}}"
|
||||||
delay_off: "{{states('input_number.washing_machine_delay_off') | float(default=0)}}"
|
delay_off: "{{states('input_number.washing_machine_delay_off') | float(default=0)}}"
|
||||||
icon: mdi:washing-machine
|
icon: mdi:washing-machine
|
||||||
availability: "{{ states('sensor.pm_laundry_plug_w') not in ['unkown', 'unavailable'] }}"
|
availability: "{{ states('sensor.pm_laundry_plug_w') not in ['unknown', 'unavailable'] }}"
|
||||||
attributes:
|
attributes:
|
||||||
model_number: 'WF45R6100AW/US'
|
model_number: "WF45R6100AW/US"
|
||||||
serial_number: '01FY57AM802740X'
|
serial_number: "01FY57AM802740X"
|
||||||
power: "{{ states('sensor.pm_laundry_plug_w') | float(default=0)}}"
|
power: "{{ states('sensor.pm_laundry_plug_w') | float(default=0)}}"
|
||||||
target: "{{ states('input_number.washing_machine_on') | float(default=0)}}"
|
target: "{{ states('input_number.washing_machine_on') | float(default=0)}}"
|
||||||
state: "{{ states('sensor.pm_laundry_plug_w')|float(default=0) >= states('input_number.washing_machine_on')|float(default=0) }}"
|
state: "{{ states('sensor.pm_laundry_plug_w')|float(default=0) >= states('input_number.washing_machine_on')|float(default=0) }}"
|
||||||
|
|
||||||
- sensor:
|
- sensor:
|
||||||
- name: Washing Machine
|
- name: Washing Machine
|
||||||
unique_id: templatesensor_washing_machine
|
unique_id: templatesensor_washing_machine
|
||||||
state: >
|
state: >
|
||||||
{% if is_state('binary_sensor.washing_machine','on') %}
|
{% if is_state('binary_sensor.washing_machine','on') %}
|
||||||
running
|
running
|
||||||
{% elif is_state('binary_sensor.washing_machine','off') and is_state('input_boolean.swap_laundry','on') %}
|
{% elif is_state('binary_sensor.washing_machine','off') and is_state('input_boolean.swap_laundry','on') %}
|
||||||
pending
|
pending
|
||||||
{% else %}
|
{% else %}
|
||||||
idle
|
idle
|
||||||
{% endif %}
|
{% endif %}
|
||||||
icon: >
|
icon: >
|
||||||
{% if is_state('sensor.washing_machine','idle') %}
|
{% if is_state('sensor.washing_machine','idle') %}
|
||||||
mdi:washing-machine-off
|
mdi:washing-machine-off
|
||||||
{% elif is_state('sensor.washing_machine','pending') %}
|
{% elif is_state('sensor.washing_machine','pending') %}
|
||||||
mdi:washing-machine-alert
|
mdi:washing-machine-alert
|
||||||
{% else %}
|
{% else %}
|
||||||
mdi:washing-machine
|
mdi:washing-machine
|
||||||
{% endif %}
|
{% endif %}
|
||||||
attributes:
|
attributes:
|
||||||
model_number: 'WF45R6100AW/US'
|
model_number: "WF45R6100AW/US"
|
||||||
serial_number: '01FY57AM802740X'
|
serial_number: "01FY57AM802740X"
|
||||||
power: "{{ states('sensor.pm_laundry_plug_w') | float(default=0)}}"
|
power: "{{ states('sensor.pm_laundry_plug_w') | float(default=0)}}"
|
||||||
target: "{{ states('input_number.washing_machine_on') | float(default=0)}}"
|
target: "{{ states('input_number.washing_machine_on') | float(default=0)}}"
|
||||||
|
|
||||||
input_boolean:
|
input_boolean:
|
||||||
swap_laundry:
|
swap_laundry:
|
||||||
@@ -46,7 +46,7 @@ input_boolean:
|
|||||||
input_number:
|
input_number:
|
||||||
washing_machine_on:
|
washing_machine_on:
|
||||||
# was 5
|
# was 5
|
||||||
name: 'Washing Machine On'
|
name: "Washing Machine On"
|
||||||
icon: mdi:washing-machine
|
icon: mdi:washing-machine
|
||||||
min: 0
|
min: 0
|
||||||
max: 20
|
max: 20
|
||||||
@@ -55,7 +55,7 @@ input_number:
|
|||||||
unit_of_measurement: W
|
unit_of_measurement: W
|
||||||
|
|
||||||
washing_machine_off:
|
washing_machine_off:
|
||||||
name: 'Washing Machine Off'
|
name: "Washing Machine Off"
|
||||||
icon: mdi:washing-machine-off
|
icon: mdi:washing-machine-off
|
||||||
min: 0
|
min: 0
|
||||||
max: 20
|
max: 20
|
||||||
@@ -64,7 +64,7 @@ input_number:
|
|||||||
unit_of_measurement: W
|
unit_of_measurement: W
|
||||||
|
|
||||||
washing_machine_delay_on:
|
washing_machine_delay_on:
|
||||||
name: 'Washing Machine Delay On'
|
name: "Washing Machine Delay On"
|
||||||
icon: mdi:clock
|
icon: mdi:clock
|
||||||
min: 0
|
min: 0
|
||||||
max: 900
|
max: 900
|
||||||
@@ -73,7 +73,7 @@ input_number:
|
|||||||
|
|
||||||
washing_machine_delay_off:
|
washing_machine_delay_off:
|
||||||
# was 10
|
# was 10
|
||||||
name: 'Washing Machine Delay Off'
|
name: "Washing Machine Delay Off"
|
||||||
icon: mdi:clock-alert
|
icon: mdi:clock-alert
|
||||||
min: 0
|
min: 0
|
||||||
max: 900
|
max: 900
|
||||||
@@ -87,86 +87,86 @@ automation:
|
|||||||
- id: washing_machine_off
|
- id: washing_machine_off
|
||||||
platform: state
|
platform: state
|
||||||
entity_id: binary_sensor.washing_machine
|
entity_id: binary_sensor.washing_machine
|
||||||
from: 'on'
|
from: "on"
|
||||||
to: 'off'
|
to: "off"
|
||||||
|
|
||||||
- id: washing_machine_on
|
- id: washing_machine_on
|
||||||
platform: state
|
platform: state
|
||||||
entity_id: binary_sensor.washing_machine
|
entity_id: binary_sensor.washing_machine
|
||||||
from: 'off'
|
from: "off"
|
||||||
to: 'on'
|
to: "on"
|
||||||
|
|
||||||
- id: door_open
|
- id: door_open
|
||||||
platform: state
|
platform: state
|
||||||
entity_id: binary_sensor.washing_machine_door_contact
|
entity_id: binary_sensor.washing_machine_door_contact
|
||||||
from: 'off'
|
from: "off"
|
||||||
to: 'on'
|
to: "on"
|
||||||
for:
|
for:
|
||||||
seconds: 5
|
seconds: 5
|
||||||
|
|
||||||
condition: []
|
condition: []
|
||||||
action:
|
action:
|
||||||
- choose:
|
- choose:
|
||||||
- alias: "Washing machine is running. No need to swap laundry yet"
|
- alias: "Washing machine is running. No need to swap laundry yet"
|
||||||
conditions:
|
conditions:
|
||||||
- condition: trigger
|
- condition: trigger
|
||||||
id: washing_machine_on
|
id: washing_machine_on
|
||||||
|
|
||||||
- condition: state
|
- condition: state
|
||||||
entity_id: input_boolean.swap_laundry
|
|
||||||
state: 'on'
|
|
||||||
sequence:
|
|
||||||
- service: logbook.log
|
|
||||||
data_template:
|
|
||||||
name: Swap Laundry - Load started
|
|
||||||
entity_id: automation.swap_laundry
|
|
||||||
message: Washing machine is running. No need to swap laundry yet. Turning off input_boolean.swap_laundry, in case it was left on
|
|
||||||
|
|
||||||
- service: homeassistant.turn_off
|
|
||||||
target:
|
|
||||||
entity_id: input_boolean.swap_laundry
|
entity_id: input_boolean.swap_laundry
|
||||||
|
state: "on"
|
||||||
|
sequence:
|
||||||
|
- service: logbook.log
|
||||||
|
data_template:
|
||||||
|
name: Swap Laundry - Load started
|
||||||
|
entity_id: automation.swap_laundry
|
||||||
|
message: Washing machine is running. No need to swap laundry yet. Turning off input_boolean.swap_laundry, in case it was left on
|
||||||
|
|
||||||
- alias: "Washing machine finished while door was shut"
|
- service: homeassistant.turn_off
|
||||||
conditions:
|
target:
|
||||||
- condition: trigger
|
entity_id: input_boolean.swap_laundry
|
||||||
id: washing_machine_off
|
|
||||||
|
|
||||||
- condition: state
|
- alias: "Washing machine finished while door was shut"
|
||||||
entity_id: binary_sensor.washing_machine_door_contact
|
conditions:
|
||||||
state: 'off'
|
- condition: trigger
|
||||||
|
id: washing_machine_off
|
||||||
|
|
||||||
sequence:
|
- condition: state
|
||||||
- service: logbook.log
|
entity_id: binary_sensor.washing_machine_door_contact
|
||||||
data_template:
|
state: "off"
|
||||||
name: Swap Laundry - Load needs to be swapped
|
|
||||||
entity_id: automation.swap_laundry
|
sequence:
|
||||||
message: Washing machine turned off while the door was shut. Assuming that a load needs to be swapped
|
- service: logbook.log
|
||||||
- service: homeassistant.turn_on
|
data_template:
|
||||||
target:
|
name: Swap Laundry - Load needs to be swapped
|
||||||
|
entity_id: automation.swap_laundry
|
||||||
|
message: Washing machine turned off while the door was shut. Assuming that a load needs to be swapped
|
||||||
|
- service: homeassistant.turn_on
|
||||||
|
target:
|
||||||
|
entity_id: input_boolean.swap_laundry
|
||||||
|
|
||||||
|
- alias: "Door was opened while washing machine was off"
|
||||||
|
conditions:
|
||||||
|
- condition: trigger
|
||||||
|
id: door_open
|
||||||
|
|
||||||
|
- condition: state
|
||||||
|
entity_id: binary_sensor.washing_machine
|
||||||
|
state: "off"
|
||||||
|
|
||||||
|
- condition: state
|
||||||
entity_id: input_boolean.swap_laundry
|
entity_id: input_boolean.swap_laundry
|
||||||
|
state: "on"
|
||||||
|
|
||||||
- alias: "Door was opened while washing machine was off"
|
sequence:
|
||||||
conditions:
|
- service: logbook.log
|
||||||
- condition: trigger
|
data_template:
|
||||||
id: door_open
|
name: Swap Laundry - Load swapped
|
||||||
|
entity_id: automation.swap_laundry
|
||||||
|
message: Door was opened while washing machine was off. Assuming a load just got swapped
|
||||||
|
|
||||||
- condition: state
|
- service: homeassistant.turn_off
|
||||||
entity_id: binary_sensor.washing_machine
|
target:
|
||||||
state: 'off'
|
entity_id: input_boolean.swap_laundry
|
||||||
|
|
||||||
- condition: state
|
|
||||||
entity_id: input_boolean.swap_laundry
|
|
||||||
state: 'on'
|
|
||||||
|
|
||||||
sequence:
|
|
||||||
- service: logbook.log
|
|
||||||
data_template:
|
|
||||||
name: Swap Laundry - Load swapped
|
|
||||||
entity_id: automation.swap_laundry
|
|
||||||
message: Door was opened while washing machine was off. Assuming a load just got swapped
|
|
||||||
|
|
||||||
- service: homeassistant.turn_off
|
|
||||||
target:
|
|
||||||
entity_id: input_boolean.swap_laundry
|
|
||||||
|
|
||||||
mode: single
|
mode: single
|
||||||
|
|||||||
@@ -247,7 +247,7 @@ template:
|
|||||||
unique_id: "custom_sensor.sprinkler_total_rain_fallen_plus_expected"
|
unique_id: "custom_sensor.sprinkler_total_rain_fallen_plus_expected"
|
||||||
icon: mdi:weather-pouring
|
icon: mdi:weather-pouring
|
||||||
unit_of_measurement: mm
|
unit_of_measurement: mm
|
||||||
availability: "{{ states('sensor.sprinkler_recent_rain_precipitation') not in ['unkown', 'unavailable'] }}"
|
availability: "{{ states('sensor.sprinkler_recent_rain_precipitation') not in ['unknown', 'unavailable'] }}"
|
||||||
state: >
|
state: >
|
||||||
{{ (states('sensor.sprinkler_recent_rain_precipitation') | float + states('sensor.sprinkler_total_expected_precipitation') | float(default=100.0) ) | round(2) }}
|
{{ (states('sensor.sprinkler_recent_rain_precipitation') | float + states('sensor.sprinkler_total_expected_precipitation') | float(default=100.0) ) | round(2) }}
|
||||||
|
|
||||||
@@ -293,12 +293,12 @@ template:
|
|||||||
icon: mdi:clock
|
icon: mdi:clock
|
||||||
unit_of_measurement: seconds
|
unit_of_measurement: seconds
|
||||||
availability: >
|
availability: >
|
||||||
{{ states('sensor.opensprinkler_water_level') not in ['unkown', 'unavailable'] and
|
{{ states('sensor.opensprinkler_water_level') not in ['unknown', 'unavailable'] and
|
||||||
states('input_number.front_yard_station_minutes') not in ['unkown', 'unavailable'] and
|
states('input_number.front_yard_station_minutes') not in ['unknown', 'unavailable'] and
|
||||||
states('input_number.east_side_station_minutes') not in ['unkown', 'unavailable'] and
|
states('input_number.east_side_station_minutes') not in ['unknown', 'unavailable'] and
|
||||||
states('input_number.back_yard_station_minutes') not in ['unkown', 'unavailable'] and
|
states('input_number.back_yard_station_minutes') not in ['unknown', 'unavailable'] and
|
||||||
states('input_number.west_side_station_minutes') not in ['unkown', 'unavailable'] and
|
states('input_number.west_side_station_minutes') not in ['unknown', 'unavailable'] and
|
||||||
states('input_number.sprinkler_repeat_program_amount') not in ['unkown', 'unavailable'] }}
|
states('input_number.sprinkler_repeat_program_amount') not in ['unknown', 'unavailable'] }}
|
||||||
state: >
|
state: >
|
||||||
{{ states("sensor.opensprinkler_water_level")| float(default=0) | multiply(0.01) | multiply(states("input_number.front_yard_station_minutes") | multiply(60)) | float(default=0) +
|
{{ states("sensor.opensprinkler_water_level")| float(default=0) | multiply(0.01) | multiply(states("input_number.front_yard_station_minutes") | multiply(60)) | float(default=0) +
|
||||||
states("sensor.opensprinkler_water_level")| float(default=0) | multiply(0.01) | multiply(states("input_number.east_side_station_minutes") | multiply(60)) | float(default=0) +
|
states("sensor.opensprinkler_water_level")| float(default=0) | multiply(0.01) | multiply(states("input_number.east_side_station_minutes") | multiply(60)) | float(default=0) +
|
||||||
@@ -352,22 +352,22 @@ template:
|
|||||||
device_class: moisture
|
device_class: moisture
|
||||||
delay_off:
|
delay_off:
|
||||||
minutes: 15
|
minutes: 15
|
||||||
# availability: "{{ states('sensor.rain_quarter_hourly_precipitation') not in ['unkown', 'unavailable'] }}"
|
# availability: "{{ states('sensor.rain_quarter_hourly_precipitation') not in ['unknown', 'unavailable'] }}"
|
||||||
# state: >
|
# state: >
|
||||||
# {{ states('sensor.rain_quarter_hourly_precipitation') | float(default=0) > 0.0 }}
|
# {{ states('sensor.rain_quarter_hourly_precipitation') | float(default=0) > 0.0 }}
|
||||||
availability: "{{ states('binary_sensor.is_raining') not in ['unkown', 'unavailable'] }}"
|
availability: "{{ states('binary_sensor.is_raining') not in ['unknown', 'unavailable'] }}"
|
||||||
state: >
|
state: >
|
||||||
{{ states('binary_sensor.is_raining') }}
|
{{ states('binary_sensor.is_raining') }}
|
||||||
|
|
||||||
- trigger:
|
- trigger:
|
||||||
# - platform: homeassistant
|
# - platform: homeassistant
|
||||||
# event: start
|
# event: start
|
||||||
|
|
||||||
# - platform: time
|
# - platform: time
|
||||||
# at: '01:00:00'
|
# at: '01:00:00'
|
||||||
|
|
||||||
# - platform: state
|
# - platform: state
|
||||||
# entity_id: input_boolean.sprinkler_is_winterized
|
# entity_id: input_boolean.sprinkler_is_winterized
|
||||||
|
|
||||||
binary_sensor:
|
binary_sensor:
|
||||||
- name: "Sprinkler: In Season"
|
- name: "Sprinkler: In Season"
|
||||||
@@ -378,37 +378,28 @@ template:
|
|||||||
# - trigger:
|
# - trigger:
|
||||||
# - platform: homeassistant
|
# - platform: homeassistant
|
||||||
# event: start
|
# event: start
|
||||||
|
|
||||||
# - platform: time
|
# - platform: time
|
||||||
# at: '01:00:00'
|
# at: '01:00:00'
|
||||||
|
|
||||||
# - platform: state
|
# - platform: state
|
||||||
# entity_id: input_boolean.sprinkler_is_winterized
|
# entity_id: input_boolean.sprinkler_is_winterized
|
||||||
|
|
||||||
# - platform: event
|
# - platform: event
|
||||||
# event_type: event_template_reloaded
|
# event_type: event_template_reloaded
|
||||||
# id: "reload"
|
# id: "reload"
|
||||||
|
|
||||||
# binary_sensor:
|
# binary_sensor:
|
||||||
# - name: "Sprinkler: Should Winterize"
|
# - name: "Sprinkler: Should Winterize"
|
||||||
# unique_id: "custom_binary_sensor.sprinkler_should_winterize"
|
# unique_id: "custom_binary_sensor.sprinkler_should_winterize"
|
||||||
# device_class: problem
|
# device_class: problem
|
||||||
# state: "{{ iif(is_state('binary_sensor.sprinkler_in_season', 'off'), iif(is_state('input_boolean.sprinkler_is_winterized', 'off'), 'on', 'off'), 'off') }}"
|
# state: "{{ iif(is_state('binary_sensor.sprinkler_in_season', 'off'), iif(is_state('input_boolean.sprinkler_is_winterized', 'off'), 'on', 'off'), 'off') }}"
|
||||||
|
|
||||||
# - trigger:
|
# - trigger:
|
||||||
# - platform: homeassistant
|
# - platform: homeassistant
|
||||||
# event: start
|
# event: start
|
||||||
|
|
||||||
# - platform: time
|
# - platform: time
|
||||||
# at: '01:00:00'
|
# at: '01:00:00'
|
||||||
|
|
||||||
# - platform: state
|
# - platform: state
|
||||||
# entity_id: input_boolean.sprinkler_is_winterized
|
# entity_id: input_boolean.sprinkler_is_winterized
|
||||||
|
|
||||||
# - platform: event
|
# - platform: event
|
||||||
# event_type: event_template_reloaded
|
# event_type: event_template_reloaded
|
||||||
# id: "reload"
|
# id: "reload"
|
||||||
|
|
||||||
# binary_sensor:
|
# binary_sensor:
|
||||||
# - name: "Sprinkler: Should Dewinterize"
|
# - name: "Sprinkler: Should Dewinterize"
|
||||||
# unique_id: "custom_binary_sensor.sprinkler_should_dewinterize"
|
# unique_id: "custom_binary_sensor.sprinkler_should_dewinterize"
|
||||||
@@ -444,7 +435,6 @@ automation:
|
|||||||
data:
|
data:
|
||||||
message: "{{now().strftime('%Y-%m-%d')}}T{{now().strftime('%H:%M:%S.%f')}},{{states('sensor.ecowitt_wh40_21917_precipitation')}},{{states('binary_sensor.is_raining')}},{{state_attr('binary_sensor.is_raining','sample_count')}},{{state_attr('binary_sensor.is_raining','sample_duration')}},{{state_attr('binary_sensor.is_raining','min_gradient')}},{{state_attr('binary_sensor.is_raining','gradient')}}"
|
message: "{{now().strftime('%Y-%m-%d')}}T{{now().strftime('%H:%M:%S.%f')}},{{states('sensor.ecowitt_wh40_21917_precipitation')}},{{states('binary_sensor.is_raining')}},{{state_attr('binary_sensor.is_raining','sample_count')}},{{state_attr('binary_sensor.is_raining','sample_duration')}},{{state_attr('binary_sensor.is_raining','min_gradient')}},{{state_attr('binary_sensor.is_raining','gradient')}}"
|
||||||
|
|
||||||
|
|
||||||
- alias: "Log Soil Moisture"
|
- alias: "Log Soil Moisture"
|
||||||
id: 362fbc8d-64f1-47dd-a686-e460e9c18690
|
id: 362fbc8d-64f1-47dd-a686-e460e9c18690
|
||||||
trigger:
|
trigger:
|
||||||
@@ -503,7 +493,7 @@ automation:
|
|||||||
trigger:
|
trigger:
|
||||||
- platform: state
|
- platform: state
|
||||||
entity_id: sensor.sun_next_dawn
|
entity_id: sensor.sun_next_dawn
|
||||||
condition: "{{ states('sensor.sun_next_dawn') not in ['unkown', 'unavailable'] }}"
|
condition: "{{ states('sensor.sun_next_dawn') not in ['unknown', 'unavailable'] }}"
|
||||||
action:
|
action:
|
||||||
- service: input_datetime.set_datetime
|
- service: input_datetime.set_datetime
|
||||||
target:
|
target:
|
||||||
@@ -532,7 +522,7 @@ automation:
|
|||||||
trigger:
|
trigger:
|
||||||
- platform: state
|
- platform: state
|
||||||
entity_id: binary_sensor.is_raining
|
entity_id: binary_sensor.is_raining
|
||||||
to: 'on'
|
to: "on"
|
||||||
|
|
||||||
condition:
|
condition:
|
||||||
condition: or
|
condition: or
|
||||||
|
|||||||
@@ -178,12 +178,12 @@ automation:
|
|||||||
- platform: event
|
- platform: event
|
||||||
event_type: automation_reloaded
|
event_type: automation_reloaded
|
||||||
|
|
||||||
condition: []
|
condition:
|
||||||
|
- "{{ states('camera.frigate_cam14') not in ['unknown', 'unavailable'] }}"
|
||||||
# - alias: "The input_boolean controlling the cycling of cam14 is on"
|
# - alias: "The input_boolean controlling the cycling of cam14 is on"
|
||||||
# condition: state
|
# condition: state
|
||||||
# entity_id: input_boolean.cycle_cam14
|
# entity_id: input_boolean.cycle_cam14
|
||||||
# state: "on"
|
# state: "on"
|
||||||
|
|
||||||
# - alias: "No people or animals detected by Frigate for the last 5 seconds"
|
# - alias: "No people or animals detected by Frigate for the last 5 seconds"
|
||||||
# condition: state
|
# condition: state
|
||||||
# entity_id: binary_sensor.frigate_cam14_all_occupancy
|
# entity_id: binary_sensor.frigate_cam14_all_occupancy
|
||||||
@@ -192,7 +192,6 @@ automation:
|
|||||||
# hours: 0
|
# hours: 0
|
||||||
# minutes: 0
|
# minutes: 0
|
||||||
# seconds: 5
|
# seconds: 5
|
||||||
|
|
||||||
# # Either the camera isn't looking at the deck
|
# # Either the camera isn't looking at the deck
|
||||||
# # or the camera is looking at the deck and the deck motion sensor has been off for at least 30 seconds
|
# # or the camera is looking at the deck and the deck motion sensor has been off for at least 30 seconds
|
||||||
# # or the camera is looking at the deck and the patio door has been closed for at least 30 seconds
|
# # or the camera is looking at the deck and the patio door has been closed for at least 30 seconds
|
||||||
@@ -245,39 +244,39 @@ automation:
|
|||||||
while: "{{ is_state('input_boolean.cycle_cam14', 'on') }}"
|
while: "{{ is_state('input_boolean.cycle_cam14', 'on') }}"
|
||||||
sequence:
|
sequence:
|
||||||
- choose:
|
- choose:
|
||||||
# If the camera is looking at the deck and the deck motion sensor is on, then wait 5 seconds.
|
# If the camera is looking at the deck and the deck motion sensor is on, then wait 5 seconds.
|
||||||
- conditions:
|
- conditions:
|
||||||
- condition: state
|
- condition: state
|
||||||
entity_id: input_select.camera14_preset
|
|
||||||
state: Deck
|
|
||||||
- condition: state
|
|
||||||
entity_id: binary_sensor.deck_motion
|
|
||||||
state: 'on'
|
|
||||||
sequence:
|
|
||||||
- service: input_text.set_value
|
|
||||||
target:
|
|
||||||
entity_id: input_text.camera14_status
|
|
||||||
data:
|
|
||||||
value: "Deck"
|
|
||||||
- delay: 5
|
|
||||||
|
|
||||||
# If a person is not found, cycle to the next preset, then wait 30 seconds.
|
|
||||||
- conditions:
|
|
||||||
- condition: template
|
|
||||||
value_template: "{{ is_state('binary_sensor.frigate_cam14_person_occupancy','off') }}"
|
|
||||||
sequence:
|
|
||||||
- service: input_text.set_value
|
|
||||||
target:
|
|
||||||
entity_id: input_text.camera14_status
|
|
||||||
data:
|
|
||||||
value: "Cycling"
|
|
||||||
- service: input_select.select_next
|
|
||||||
data:
|
|
||||||
cycle: true
|
|
||||||
target:
|
|
||||||
entity_id: input_select.camera14_preset
|
entity_id: input_select.camera14_preset
|
||||||
|
state: Deck
|
||||||
|
- condition: state
|
||||||
|
entity_id: binary_sensor.deck_motion
|
||||||
|
state: "on"
|
||||||
|
sequence:
|
||||||
|
- service: input_text.set_value
|
||||||
|
target:
|
||||||
|
entity_id: input_text.camera14_status
|
||||||
|
data:
|
||||||
|
value: "Deck"
|
||||||
|
- delay: 5
|
||||||
|
|
||||||
- delay: 30
|
# If a person is not found, cycle to the next preset, then wait 30 seconds.
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ is_state('binary_sensor.frigate_cam14_person_occupancy','off') }}"
|
||||||
|
sequence:
|
||||||
|
- service: input_text.set_value
|
||||||
|
target:
|
||||||
|
entity_id: input_text.camera14_status
|
||||||
|
data:
|
||||||
|
value: "Cycling"
|
||||||
|
- service: input_select.select_next
|
||||||
|
data:
|
||||||
|
cycle: true
|
||||||
|
target:
|
||||||
|
entity_id: input_select.camera14_preset
|
||||||
|
|
||||||
|
- delay: 30
|
||||||
|
|
||||||
# If a person is found, check if the person is still present every 5 seconds
|
# If a person is found, check if the person is still present every 5 seconds
|
||||||
default:
|
default:
|
||||||
@@ -312,6 +311,8 @@ automation:
|
|||||||
entity_id: sensor.frigate_cam14_all_count
|
entity_id: sensor.frigate_cam14_all_count
|
||||||
below: 2
|
below: 2
|
||||||
|
|
||||||
|
- "{{ states('camera.frigate_cam14') not in ['unknown', 'unavailable'] }}"
|
||||||
|
|
||||||
action:
|
action:
|
||||||
# We don't need to turn off cycling the back yard camera.
|
# We don't need to turn off cycling the back yard camera.
|
||||||
# - service: input_boolean.turn_off
|
# - service: input_boolean.turn_off
|
||||||
@@ -331,14 +332,11 @@ automation:
|
|||||||
entity_id: input_select.camera14_preset
|
entity_id: input_select.camera14_preset
|
||||||
|
|
||||||
# the Cycle cam 14 automation already checks if something is detected. All we need to do is force cam14 to look at the deck
|
# the Cycle cam 14 automation already checks if something is detected. All we need to do is force cam14 to look at the deck
|
||||||
|
|
||||||
# - delay: "00:00:05"
|
# - delay: "00:00:05"
|
||||||
|
|
||||||
# - repeat:
|
# - repeat:
|
||||||
# while: "{{ is_state('binary_sensor.frigate_cam14_all_occupancy', 'on')}}"
|
# while: "{{ is_state('binary_sensor.frigate_cam14_all_occupancy', 'on')}}"
|
||||||
# sequence:
|
# sequence:
|
||||||
# - delay: "00:00:05"
|
# - delay: "00:00:05"
|
||||||
|
|
||||||
# - service: input_boolean.turn_on
|
# - service: input_boolean.turn_on
|
||||||
# target:
|
# target:
|
||||||
# entity_id: input_boolean.cycle_cam14
|
# entity_id: input_boolean.cycle_cam14
|
||||||
@@ -406,6 +404,9 @@ automation:
|
|||||||
platform: state
|
platform: state
|
||||||
entity_id: input_button.cam14_ptz_preset_10
|
entity_id: input_button.cam14_ptz_preset_10
|
||||||
|
|
||||||
|
condition:
|
||||||
|
- "{{ states('camera.frigate_cam14') not in ['unknown', 'unavailable'] }}"
|
||||||
|
|
||||||
action:
|
action:
|
||||||
- choose:
|
- choose:
|
||||||
- conditions: >
|
- conditions: >
|
||||||
@@ -486,6 +487,10 @@ automation:
|
|||||||
event: start
|
event: start
|
||||||
- platform: time_pattern
|
- platform: time_pattern
|
||||||
minutes: /10
|
minutes: /10
|
||||||
|
|
||||||
|
condition:
|
||||||
|
- "{{ states('camera.frigate_cam14') not in ['unknown', 'unavailable'] }}"
|
||||||
|
|
||||||
action:
|
action:
|
||||||
- choose:
|
- choose:
|
||||||
- conditions:
|
- conditions:
|
||||||
@@ -552,7 +557,7 @@ template:
|
|||||||
- binary_sensor:
|
- binary_sensor:
|
||||||
- name: Deck Person Occupancy
|
- name: Deck Person Occupancy
|
||||||
unique_id: templatebinarysensor.deck_person_occupancy
|
unique_id: templatebinarysensor.deck_person_occupancy
|
||||||
availability: "{{ states('binary_sensor.possible_deck_person_occupancy') not in ['unkown', 'unavailable'] }}"
|
availability: "{{ states('binary_sensor.possible_deck_person_occupancy') not in ['unknown', 'unavailable'] }}"
|
||||||
state: "{{ is_state('binary_sensor.possible_deck_person_occupancy','on') and is_state('input_select.camera14_preset','Deck') }}"
|
state: "{{ is_state('binary_sensor.possible_deck_person_occupancy','on') and is_state('input_select.camera14_preset','Deck') }}"
|
||||||
icon: >
|
icon: >
|
||||||
{% if is_state('binary_sensor.deck_person_occupancy','on') %}
|
{% if is_state('binary_sensor.deck_person_occupancy','on') %}
|
||||||
@@ -563,14 +568,14 @@ template:
|
|||||||
|
|
||||||
- name: Deck Animal Motion
|
- name: Deck Animal Motion
|
||||||
unique_id: templatebinarysensor.deck_animal_occupancy
|
unique_id: templatebinarysensor.deck_animal_occupancy
|
||||||
availability: "{{ states('binary_sensor.possible_deck_animal_occupancy') not in ['unkown', 'unavailable'] }}"
|
availability: "{{ states('binary_sensor.possible_deck_animal_occupancy') not in ['unknown', 'unavailable'] }}"
|
||||||
state: "{{ is_state('binary_sensor.possible_deck_animal_occupancy','on') and is_state('input_select.camera14_preset','Deck') }}"
|
state: "{{ is_state('binary_sensor.possible_deck_animal_occupancy','on') and is_state('input_select.camera14_preset','Deck') }}"
|
||||||
icon: mdi:bird
|
icon: mdi:bird
|
||||||
|
|
||||||
- sensor:
|
- sensor:
|
||||||
- name: Deck Person Count
|
- name: Deck Person Count
|
||||||
unique_id: templatesensor.deck_person_count
|
unique_id: templatesensor.deck_person_count
|
||||||
availability: "{{ states('sensor.possible_deck_person_count') not in ['unkown', 'unavailable'] }}"
|
availability: "{{ states('sensor.possible_deck_person_count') not in ['unknown', 'unavailable'] }}"
|
||||||
unit_of_measurement: objects
|
unit_of_measurement: objects
|
||||||
state: >
|
state: >
|
||||||
{% if is_state('input_select.camera14_preset','Deck') %}
|
{% if is_state('input_select.camera14_preset','Deck') %}
|
||||||
@@ -582,7 +587,7 @@ template:
|
|||||||
|
|
||||||
- name: Deck Animal Count
|
- name: Deck Animal Count
|
||||||
unique_id: templatesensor.deck_animal_count
|
unique_id: templatesensor.deck_animal_count
|
||||||
availability: "{{ states('sensor.possible_deck_animal_count') not in ['unkown', 'unavailable'] }}"
|
availability: "{{ states('sensor.possible_deck_animal_count') not in ['unknown', 'unavailable'] }}"
|
||||||
unit_of_measurement: objects
|
unit_of_measurement: objects
|
||||||
state: >
|
state: >
|
||||||
{% if is_state('input_select.camera14_preset','Deck') %}
|
{% if is_state('input_select.camera14_preset','Deck') %}
|
||||||
|
|||||||
@@ -1,51 +1,51 @@
|
|||||||
template:
|
template:
|
||||||
# Watch Done Charging
|
# Watch Done Charging
|
||||||
- trigger:
|
- trigger:
|
||||||
- platform: state
|
- platform: state
|
||||||
entity_id: sensor.ticwatch_pro_3_gps_charger_type
|
entity_id: sensor.ticwatch_pro_3_gps_charger_type
|
||||||
|
|
||||||
- platform: state
|
- platform: state
|
||||||
entity_id: sensor.ticwatch_pro_3_gps_battery_level
|
entity_id: sensor.ticwatch_pro_3_gps_battery_level
|
||||||
|
|
||||||
- platform: event
|
- platform: event
|
||||||
event_type: event_template_reloaded
|
event_type: event_template_reloaded
|
||||||
id: "reload"
|
id: "reload"
|
||||||
|
|
||||||
- platform: homeassistant
|
- platform: homeassistant
|
||||||
event: start
|
event: start
|
||||||
|
|
||||||
binary_sensor:
|
binary_sensor:
|
||||||
- name: Clint's Watch Done Charging
|
- name: Clint's Watch Done Charging
|
||||||
unique_id: templatebinarysensor.clints_watch_done_charging
|
unique_id: templatebinarysensor.clints_watch_done_charging
|
||||||
icon: mdi:battery-charging-100
|
icon: mdi:battery-charging-100
|
||||||
availability: "{{ states('sensor.ticwatch_pro_3_gps_battery_level') not in ['unkown', 'unavailable'] }}"
|
availability: "{{ states('sensor.ticwatch_pro_3_gps_battery_level') not in ['unknown', 'unavailable'] }}"
|
||||||
state: "{{ states('sensor.ticwatch_pro_3_gps_battery_level')|int(default=0) >= states('input_number.clints_watch_charged')|int(default=0) and is_state('sensor.ticwatch_pro_3_gps_charger_type','ac') }}"
|
state: "{{ states('sensor.ticwatch_pro_3_gps_battery_level')|int(default=0) >= states('input_number.clints_watch_charged')|int(default=0) and is_state('sensor.ticwatch_pro_3_gps_charger_type','ac') }}"
|
||||||
|
|
||||||
# Watch Done Charging
|
# Watch Done Charging
|
||||||
- trigger:
|
- trigger:
|
||||||
- platform: state
|
- platform: state
|
||||||
entity_id: sensor.ticwatch_pro_3_gps_charger_type
|
entity_id: sensor.ticwatch_pro_3_gps_charger_type
|
||||||
|
|
||||||
- platform: state
|
- platform: state
|
||||||
entity_id: sensor.ticwatch_pro_3_gps_battery_level
|
entity_id: sensor.ticwatch_pro_3_gps_battery_level
|
||||||
|
|
||||||
- platform: event
|
- platform: event
|
||||||
event_type: event_template_reloaded
|
event_type: event_template_reloaded
|
||||||
id: "reload"
|
id: "reload"
|
||||||
|
|
||||||
- platform: homeassistant
|
- platform: homeassistant
|
||||||
event: start
|
event: start
|
||||||
|
|
||||||
binary_sensor:
|
binary_sensor:
|
||||||
- name: Clint's Watch Needs to Charge
|
- name: Clint's Watch Needs to Charge
|
||||||
unique_id: templatebinarysensor.clints_watch_needs_to_charge
|
unique_id: templatebinarysensor.clints_watch_needs_to_charge
|
||||||
icon: mdi:battery-20
|
icon: mdi:battery-20
|
||||||
availability: "{{ states('sensor.ticwatch_pro_3_gps_battery_level') not in ['unkown', 'unavailable'] }}"
|
availability: "{{ states('sensor.ticwatch_pro_3_gps_battery_level') not in ['unknown', 'unavailable'] }}"
|
||||||
state: "{{ states('sensor.ticwatch_pro_3_gps_battery_level')|int(default=0) <= states('input_number.clints_watch_low')|int(default=0) and is_state('sensor.ticwatch_pro_3_gps_charger_type','none') }}"
|
state: "{{ states('sensor.ticwatch_pro_3_gps_battery_level')|int(default=0) <= states('input_number.clints_watch_low')|int(default=0) and is_state('sensor.ticwatch_pro_3_gps_charger_type','none') }}"
|
||||||
|
|
||||||
input_number:
|
input_number:
|
||||||
clints_watch_charged:
|
clints_watch_charged:
|
||||||
name: 'Clints Watch Charged'
|
name: "Clints Watch Charged"
|
||||||
icon: mdi:battery
|
icon: mdi:battery
|
||||||
min: 0
|
min: 0
|
||||||
max: 100
|
max: 100
|
||||||
@@ -53,7 +53,7 @@ input_number:
|
|||||||
mode: box
|
mode: box
|
||||||
|
|
||||||
clints_watch_low:
|
clints_watch_low:
|
||||||
name: 'Clints Watch Low'
|
name: "Clints Watch Low"
|
||||||
icon: mdi:battery-20
|
icon: mdi:battery-20
|
||||||
min: 0
|
min: 0
|
||||||
max: 100
|
max: 100
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
template:
|
template:
|
||||||
- binary_sensor:
|
- binary_sensor:
|
||||||
- name: 'HACS Update Available'
|
- name: "HACS Update Available"
|
||||||
unique_id: binary_sensor.hacs_update_available
|
unique_id: binary_sensor.hacs_update_available
|
||||||
icon: mdi:alpha-c-box
|
icon: mdi:alpha-c-box
|
||||||
state: "{{ states('sensor.hacs') | float(default=0) > 0 }}"
|
state: "{{ states('sensor.hacs') | float(default=0) > 0 }}"
|
||||||
availability: "{{ states('sensor.hacs') not in ['unkown', 'unavailable'] }}"
|
availability: "{{ states('sensor.hacs') not in ['unknown', 'unavailable'] }}"
|
||||||
|
|||||||
@@ -11,15 +11,15 @@ notify:
|
|||||||
|
|
||||||
template:
|
template:
|
||||||
- trigger:
|
- trigger:
|
||||||
- platform: homeassistant
|
- platform: homeassistant
|
||||||
event: start
|
event: start
|
||||||
|
|
||||||
- platform: state
|
- platform: state
|
||||||
entity_id: sensor.dreambox_lastactive
|
entity_id: sensor.dreambox_lastactive
|
||||||
|
|
||||||
binary_sensor:
|
binary_sensor:
|
||||||
- name: DreamBox Recently Active
|
- name: DreamBox Recently Active
|
||||||
unique_id: templatebinarysensor.dreambox_recently_active
|
unique_id: templatebinarysensor.dreambox_recently_active
|
||||||
icon: mdi:desktop-tower-monitor
|
icon: mdi:desktop-tower-monitor
|
||||||
#availability: "{{ states('sensor.dreambox_lastactive') not in ['unkown', 'unavailable'] }}"
|
#availability: "{{ states('sensor.dreambox_lastactive') not in ['unknown', 'unavailable'] }}"
|
||||||
state: " {{ iif( states('sensor.dreambox_lastactive') == 'unknown' or is_state('sensor.dreambox_lastactive', 'unavailable'), false, as_timestamp(now()) - as_timestamp(states('sensor.dreambox_lastactive'),0) < 180 or is_state('sensor.dreambox_usernotification','Busy'))}}"
|
state: " {{ iif( states('sensor.dreambox_lastactive') == 'unknown' or is_state('sensor.dreambox_lastactive', 'unavailable'), false, as_timestamp(now()) - as_timestamp(states('sensor.dreambox_lastactive'),0) < 180 or is_state('sensor.dreambox_usernotification','Busy'))}}"
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ notify:
|
|||||||
platform: hass_agent_notifier
|
platform: hass_agent_notifier
|
||||||
resource: !secret dreamsurface_hassagent
|
resource: !secret dreamsurface_hassagent
|
||||||
|
|
||||||
|
|
||||||
mqtt:
|
mqtt:
|
||||||
light:
|
light:
|
||||||
- name: "DreamSurface: Screen Brightness"
|
- name: "DreamSurface: Screen Brightness"
|
||||||
@@ -13,7 +12,7 @@ mqtt:
|
|||||||
brightness_command_topic: "homeassistant/light/HASSAGENT/dreamsurface_monitor_brightness/action"
|
brightness_command_topic: "homeassistant/light/HASSAGENT/dreamsurface_monitor_brightness/action"
|
||||||
brightness_command_template: "%PROGRAMFILES(X86)%\\Monitorian\\Monitorian.exe /set {{ value }}"
|
brightness_command_template: "%PROGRAMFILES(X86)%\\Monitorian\\Monitorian.exe /set {{ value }}"
|
||||||
brightness_scale: 100
|
brightness_scale: 100
|
||||||
on_command_type: 'brightness'
|
on_command_type: "brightness"
|
||||||
icon: mdi:monitor-shimmer
|
icon: mdi:monitor-shimmer
|
||||||
|
|
||||||
# media_player:
|
# media_player:
|
||||||
@@ -24,15 +23,15 @@ mqtt:
|
|||||||
|
|
||||||
template:
|
template:
|
||||||
- trigger:
|
- trigger:
|
||||||
- platform: homeassistant
|
- platform: homeassistant
|
||||||
event: start
|
event: start
|
||||||
|
|
||||||
- platform: state
|
- platform: state
|
||||||
entity_id: sensor.dreamsurface_lastactive
|
entity_id: sensor.dreamsurface_lastactive
|
||||||
|
|
||||||
binary_sensor:
|
binary_sensor:
|
||||||
- name: DreamSurface Recently Active
|
- name: DreamSurface Recently Active
|
||||||
unique_id: templatebinarysensor.dreamsurface_recently_active
|
unique_id: templatebinarysensor.dreamsurface_recently_active
|
||||||
icon: mdi:tablet
|
icon: mdi:tablet
|
||||||
#availability: "{{ states('sensor.dreamsurface_lastactive') not in ['unkown', 'unavailable'] }}"
|
#availability: "{{ states('sensor.dreamsurface_lastactive') not in ['unknown', 'unavailable'] }}"
|
||||||
state: " {{ iif( states('sensor.dreamsurface_lastactive') == 'unknown' or is_state('sensor.dreamsurface_lastactive', 'unavailable'), false, as_timestamp(now()) - as_timestamp(states('sensor.dreamsurface_lastactive'),0) < 180 or is_state('sensor.dreamsurface_usernotification','Busy'))}}"
|
state: " {{ iif( states('sensor.dreamsurface_lastactive') == 'unknown' or is_state('sensor.dreamsurface_lastactive', 'unavailable'), false, as_timestamp(now()) - as_timestamp(states('sensor.dreamsurface_lastactive'),0) < 180 or is_state('sensor.dreamsurface_usernotification','Busy'))}}"
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ template:
|
|||||||
unique_id: "custom_binary_sensor.hvac_aux"
|
unique_id: "custom_binary_sensor.hvac_aux"
|
||||||
icon: mdi:fire
|
icon: mdi:fire
|
||||||
device_class: running
|
device_class: running
|
||||||
availability: "{{ states('climate.thermostat') not in ['unkown', 'unavailable'] }}"
|
availability: "{{ states('climate.thermostat') not in ['unknown', 'unavailable'] }}"
|
||||||
state: >
|
state: >
|
||||||
{% if 'aux' in state_attr('climate.thermostat','equipment_running') %}{{'true'}}{% else %}{{'false'}}{% endif %}
|
{% if 'aux' in state_attr('climate.thermostat','equipment_running') %}{{'true'}}{% else %}{{'false'}}{% endif %}
|
||||||
|
|
||||||
@@ -41,7 +41,7 @@ template:
|
|||||||
unique_id: "custom_binary_sensor.hvac_fan"
|
unique_id: "custom_binary_sensor.hvac_fan"
|
||||||
icon: mdi:fan
|
icon: mdi:fan
|
||||||
device_class: running
|
device_class: running
|
||||||
availability: "{{ states('climate.thermostat') not in ['unkown', 'unavailable'] }}"
|
availability: "{{ states('climate.thermostat') not in ['unknown', 'unavailable'] }}"
|
||||||
state: >
|
state: >
|
||||||
{% if 'fan' in state_attr('climate.thermostat','equipment_running') %}{{'true'}}{% else %}{{'false'}}{% endif %}
|
{% if 'fan' in state_attr('climate.thermostat','equipment_running') %}{{'true'}}{% else %}{{'false'}}{% endif %}
|
||||||
|
|
||||||
@@ -64,6 +64,6 @@ template:
|
|||||||
unique_id: "custom_binary_sensor.hvac_heatpump"
|
unique_id: "custom_binary_sensor.hvac_heatpump"
|
||||||
icon: mdi:hvac
|
icon: mdi:hvac
|
||||||
device_class: running
|
device_class: running
|
||||||
availability: "{{ states('climate.thermostat') not in ['unkown', 'unavailable'] }}"
|
availability: "{{ states('climate.thermostat') not in ['unknown', 'unavailable'] }}"
|
||||||
state: >
|
state: >
|
||||||
{% if 'heatPump' in state_attr('climate.thermostat','equipment_running') %}{{'true'}}{% else %}{{'false'}}{% endif %}
|
{% if 'heatPump' in state_attr('climate.thermostat','equipment_running') %}{{'true'}}{% else %}{{'false'}}{% endif %}
|
||||||
@@ -0,0 +1,118 @@
|
|||||||
|
# TODO
|
||||||
|
# Update to account for new get_weather_forcats BS a
|
||||||
|
|
||||||
|
template:
|
||||||
|
# - binary_sensor:
|
||||||
|
# - name: Precipitation Likely Soon
|
||||||
|
# unique_id: templatebinarysensor.precipitation_likely_soon
|
||||||
|
# icon: mdi:weather-rainy
|
||||||
|
# availability: "{{ states('sensor.openweathermap_hourly_forecast_precipitation_probability') not in ['unknown', 'unavailable'] }}"
|
||||||
|
# state: "{{ states('sensor.openweathermap_hourly_forecast_precipitation_probability')|float(default=0) >= 50.0 }}"
|
||||||
|
|
||||||
|
# - name: Precipitation Likely
|
||||||
|
# unique_id: templatebinarysensor.precipitation_likely
|
||||||
|
# icon: mdi:weather-rainy
|
||||||
|
# availability: "{{ states('sensor.openweathermap_daily_forecast_precipitation_probability') not in ['unknown', 'unavailable'] }}"
|
||||||
|
# state: "{{ states('sensor.openweathermap_daily_forecast_precipitation_probability')|float(default=0) >= 50.0 }}"
|
||||||
|
|
||||||
|
- trigger:
|
||||||
|
- platform: time_pattern
|
||||||
|
hours: /1
|
||||||
|
|
||||||
|
- platform: event
|
||||||
|
event_type: event_template_reloaded
|
||||||
|
id: "reload"
|
||||||
|
|
||||||
|
- platform: homeassistant
|
||||||
|
event: start
|
||||||
|
|
||||||
|
action:
|
||||||
|
- service: weather.get_forecasts
|
||||||
|
data:
|
||||||
|
type: daily
|
||||||
|
target:
|
||||||
|
entity_id: weather.forecast_home
|
||||||
|
response_variable: daily
|
||||||
|
|
||||||
|
- service: weather.get_forecasts
|
||||||
|
data:
|
||||||
|
type: hourly
|
||||||
|
target:
|
||||||
|
entity_id: weather.forecast_home
|
||||||
|
response_variable: hourly
|
||||||
|
|
||||||
|
binary_sensor:
|
||||||
|
- name: "Impending Rain"
|
||||||
|
unique_id: templatebinarysensor.impending_rain
|
||||||
|
availability: "{{ states('weather.forecast_home') not in ['unknown', 'unavailable'] }}"
|
||||||
|
icon: mdi:weather-rainy
|
||||||
|
# This looks too far into the future. Cutting it down a bit
|
||||||
|
state: >-
|
||||||
|
{%- set totalprecipitation = 0 | float -%}
|
||||||
|
{%- set upcoming_precipitation = 0 | float -%}
|
||||||
|
{%- set ns = namespace() -%}
|
||||||
|
{%- set ns.totalprecipitation = 0 -%}
|
||||||
|
{%- for daypart in range(0, 8) -%}
|
||||||
|
{%- set precipitation = hourly['weather.forecast_home'].forecast[daypart].precipitation -%}
|
||||||
|
{%- set wind_speed = hourly['weather.forecast_home'].forecast[daypart].wind_speed -%}
|
||||||
|
{% if wind_speed > states('input_number.wind_speed_blowing_rain') |float(default=0) %}
|
||||||
|
{%- set upcoming_precipitation = precipitation -%}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- set ns.totalprecipitation = ns.totalprecipitation + upcoming_precipitation -%}
|
||||||
|
{%- endfor %}
|
||||||
|
{{ ns.totalprecipitation / 100 | float | round(0) > 0.99 }}
|
||||||
|
|
||||||
|
sensor:
|
||||||
|
- name: "Sprinkler: Total Expected Precipitation"
|
||||||
|
unique_id: "custom_sensor.sprinkler_total_expected_precipitation"
|
||||||
|
icon: mdi:weather-pouring
|
||||||
|
unit_of_measurement: mm
|
||||||
|
availability: "{{ states('weather.forecast_home') not in ['unknown', 'unavailable'] }}"
|
||||||
|
state: >
|
||||||
|
{%- set totalprecipitation = 0 | float -%}
|
||||||
|
{%- set upcoming_precipitation = 0 | float -%}
|
||||||
|
{%- set ns = namespace() -%}
|
||||||
|
{%- set ns.totalprecipitation = 0 -%}
|
||||||
|
{%- for daypart in range(0, 5) -%}
|
||||||
|
{%- set precipitation = daily['weather.forecast_home'].forecast[daypart].precipitation * 25.4 -%}
|
||||||
|
{%- set upcoming_precipitation = precipitation -%}
|
||||||
|
{%- set ns.totalprecipitation = ns.totalprecipitation + upcoming_precipitation -%}
|
||||||
|
{%- endfor %}
|
||||||
|
{{ ns.totalprecipitation | float | round(0) }}
|
||||||
|
|
||||||
|
- name: "Today's Low Temperature"
|
||||||
|
unique_id: templatesensor.templow_today
|
||||||
|
unit_of_measurement: °F
|
||||||
|
availability: "{{ states('weather.forecast_home') not in ['unknown', 'unavailable'] }}"
|
||||||
|
state: "{{ daily['weather.forecast_home'].forecast[0].templow }}"
|
||||||
|
|
||||||
|
- name: "Today's High Temperature"
|
||||||
|
unique_id: templatesensor.temphigh_today
|
||||||
|
unit_of_measurement: °F
|
||||||
|
availability: "{{ states('weather.forecast_home') not in ['unknown', 'unavailable'] }}"
|
||||||
|
state: "{{ daily['weather.forecast_home'].forecast[0].temperature}}"
|
||||||
|
|
||||||
|
# - name: "Today's Chance of Precipitation"
|
||||||
|
# unique_id: templatesensor.precip_chance_today
|
||||||
|
# icon: mdi:cloud-percent
|
||||||
|
# unit_of_measurement: '%'
|
||||||
|
# availability: "{{ states('weather.forecast_home') not in ['unknown', 'unavailable'] }}"
|
||||||
|
# state: "{{ daily['weather.forecast_home'].forecast[0].precipitation_probability}}"
|
||||||
|
|
||||||
|
- name: "Tomorrow's Low Temperature"
|
||||||
|
unique_id: templatesensor.templow_tomorrow
|
||||||
|
unit_of_measurement: °F
|
||||||
|
availability: "{{ states('weather.forecast_home') not in ['unknown', 'unavailable'] }}"
|
||||||
|
state: "{{ daily['weather.forecast_home'].forecast[1].templow}}"
|
||||||
|
|
||||||
|
- name: "Tomorrow's High Temperature"
|
||||||
|
unique_id: templatesensor.temphigh_tomorrow
|
||||||
|
unit_of_measurement: °F
|
||||||
|
availability: "{{ states('weather.forecast_home') not in ['unknown', 'unavailable'] }}"
|
||||||
|
state: "{{ daily['weather.forecast_home'].forecast[1].temperature}}"
|
||||||
|
# - name: "Tomorrow's Chance of Precipitation"
|
||||||
|
# unique_id: templatesensor.precip_chance_tomorrow
|
||||||
|
# icon: mdi:cloud-percent
|
||||||
|
# unit_of_measurement: '%'
|
||||||
|
# availability: "{{ states('weather.forecast_home') not in ['unknown', 'unavailable'] }}"
|
||||||
|
# state: "{{ daily['weather.forecast_home'].forecast[1].precipitation_probability}}"
|
||||||
@@ -1,13 +1,13 @@
|
|||||||
template:
|
template:
|
||||||
- trigger:
|
- trigger:
|
||||||
- platform: homeassistant
|
- platform: homeassistant
|
||||||
event: start
|
event: start
|
||||||
|
|
||||||
- platform: state
|
- platform: state
|
||||||
entity_id: input_number.blue_room_light_level_trigger
|
entity_id: input_number.blue_room_light_level_trigger
|
||||||
|
|
||||||
- platform: state
|
- platform: state
|
||||||
entity_id: sensor.blue_room_multisensor_illuminance
|
entity_id: sensor.blue_room_multisensor_illuminance
|
||||||
|
|
||||||
binary_sensor:
|
binary_sensor:
|
||||||
- name: "Blue Room Naturally Lit"
|
- name: "Blue Room Naturally Lit"
|
||||||
@@ -29,14 +29,14 @@ template:
|
|||||||
trigger: "{{ states('input_number.blue_room_light_level_trigger') | float(default=0) }}"
|
trigger: "{{ states('input_number.blue_room_light_level_trigger') | float(default=0) }}"
|
||||||
|
|
||||||
- trigger:
|
- trigger:
|
||||||
- platform: homeassistant
|
- platform: homeassistant
|
||||||
event: start
|
event: start
|
||||||
|
|
||||||
- platform: state
|
- platform: state
|
||||||
entity_id: input_number.computer_area_light_level_trigger
|
entity_id: input_number.computer_area_light_level_trigger
|
||||||
|
|
||||||
- platform: state
|
- platform: state
|
||||||
entity_id: sensor.computer_area_multisensor_illuminance
|
entity_id: sensor.computer_area_multisensor_illuminance
|
||||||
|
|
||||||
binary_sensor:
|
binary_sensor:
|
||||||
- name: "Computer Area Naturally Lit"
|
- name: "Computer Area Naturally Lit"
|
||||||
@@ -58,14 +58,14 @@ template:
|
|||||||
trigger: "{{ states('input_number.computer_area_light_level_trigger') | float(default=0) }}"
|
trigger: "{{ states('input_number.computer_area_light_level_trigger') | float(default=0) }}"
|
||||||
|
|
||||||
- trigger:
|
- trigger:
|
||||||
- platform: homeassistant
|
- platform: homeassistant
|
||||||
event: start
|
event: start
|
||||||
|
|
||||||
- platform: state
|
- platform: state
|
||||||
entity_id: input_number.deck_light_level_trigger
|
entity_id: input_number.deck_light_level_trigger
|
||||||
|
|
||||||
- platform: state
|
- platform: state
|
||||||
entity_id: sensor.deck_light_level
|
entity_id: sensor.deck_light_level
|
||||||
|
|
||||||
binary_sensor:
|
binary_sensor:
|
||||||
- name: "Deck Naturally Lit"
|
- name: "Deck Naturally Lit"
|
||||||
@@ -87,23 +87,23 @@ template:
|
|||||||
trigger: "{{ states('input_number.deck_light_level_trigger') | float(default=0) }}"
|
trigger: "{{ states('input_number.deck_light_level_trigger') | float(default=0) }}"
|
||||||
|
|
||||||
- trigger:
|
- trigger:
|
||||||
- platform: homeassistant
|
- platform: homeassistant
|
||||||
event: start
|
event: start
|
||||||
|
|
||||||
- platform: state
|
- platform: state
|
||||||
entity_id: input_number.dining_room_light_level_trigger
|
entity_id: input_number.dining_room_light_level_trigger
|
||||||
|
|
||||||
- platform: state
|
- platform: state
|
||||||
entity_id: sensor.dining_room_multisensor_illuminance
|
entity_id: sensor.dining_room_multisensor_illuminance
|
||||||
to:
|
to:
|
||||||
|
|
||||||
- platform: event
|
- platform: event
|
||||||
event_type: event_template_reloaded
|
event_type: event_template_reloaded
|
||||||
|
|
||||||
binary_sensor:
|
binary_sensor:
|
||||||
- name: "Dining Room Naturally Lit"
|
- name: "Dining Room Naturally Lit"
|
||||||
unique_id: templatebinarysensor_diningroomnaturallylit
|
unique_id: templatebinarysensor_diningroomnaturallylit
|
||||||
availability: "{{ states('sensor.dining_room_multisensor_illuminance') not in ['unkown', 'unavailable'] }}"
|
availability: "{{ states('sensor.dining_room_multisensor_illuminance') not in ['unknown', 'unavailable'] }}"
|
||||||
delay_on:
|
delay_on:
|
||||||
seconds: 3
|
seconds: 3
|
||||||
delay_off:
|
delay_off:
|
||||||
@@ -121,14 +121,14 @@ template:
|
|||||||
trigger: "{{ states('input_number.dining_room_light_level_trigger') | float(default=0) }}"
|
trigger: "{{ states('input_number.dining_room_light_level_trigger') | float(default=0) }}"
|
||||||
|
|
||||||
- trigger:
|
- trigger:
|
||||||
- platform: homeassistant
|
- platform: homeassistant
|
||||||
event: start
|
event: start
|
||||||
|
|
||||||
- platform: state
|
- platform: state
|
||||||
entity_id: input_number.entryway_light_level_trigger
|
entity_id: input_number.entryway_light_level_trigger
|
||||||
|
|
||||||
- platform: state
|
- platform: state
|
||||||
entity_id: sensor.entryway_light_level
|
entity_id: sensor.entryway_light_level
|
||||||
|
|
||||||
binary_sensor:
|
binary_sensor:
|
||||||
- name: "Entryway Naturally Lit"
|
- name: "Entryway Naturally Lit"
|
||||||
@@ -150,14 +150,14 @@ template:
|
|||||||
trigger: "{{ states('input_number.entryway_light_level_trigger') | float(default=0) }}"
|
trigger: "{{ states('input_number.entryway_light_level_trigger') | float(default=0) }}"
|
||||||
|
|
||||||
- trigger:
|
- trigger:
|
||||||
- platform: homeassistant
|
- platform: homeassistant
|
||||||
event: start
|
event: start
|
||||||
|
|
||||||
- platform: state
|
- platform: state
|
||||||
entity_id: input_number.front_porch_light_level_trigger
|
entity_id: input_number.front_porch_light_level_trigger
|
||||||
|
|
||||||
- platform: state
|
- platform: state
|
||||||
entity_id: sensor.front_porch_light_level
|
entity_id: sensor.front_porch_light_level
|
||||||
|
|
||||||
binary_sensor:
|
binary_sensor:
|
||||||
- name: "Front Porch Naturally Lit"
|
- name: "Front Porch Naturally Lit"
|
||||||
@@ -179,14 +179,14 @@ template:
|
|||||||
trigger: "{{ states('input_number.front_porch_light_level_trigger') | float(default=0) }}"
|
trigger: "{{ states('input_number.front_porch_light_level_trigger') | float(default=0) }}"
|
||||||
|
|
||||||
- trigger:
|
- trigger:
|
||||||
- platform: homeassistant
|
- platform: homeassistant
|
||||||
event: start
|
event: start
|
||||||
|
|
||||||
- platform: state
|
- platform: state
|
||||||
entity_id: input_number.front_room_light_level_trigger
|
entity_id: input_number.front_room_light_level_trigger
|
||||||
|
|
||||||
- platform: state
|
- platform: state
|
||||||
entity_id: sensor.front_room_light_level
|
entity_id: sensor.front_room_light_level
|
||||||
|
|
||||||
binary_sensor:
|
binary_sensor:
|
||||||
- name: "Front Room Naturally Lit"
|
- name: "Front Room Naturally Lit"
|
||||||
@@ -208,14 +208,14 @@ template:
|
|||||||
trigger: "{{ states('input_number.front_room_light_level_trigger') | float(default=0) }}"
|
trigger: "{{ states('input_number.front_room_light_level_trigger') | float(default=0) }}"
|
||||||
|
|
||||||
- trigger:
|
- trigger:
|
||||||
- platform: homeassistant
|
- platform: homeassistant
|
||||||
event: start
|
event: start
|
||||||
|
|
||||||
- platform: state
|
- platform: state
|
||||||
entity_id: input_number.garage_overhead_light_level_trigger
|
entity_id: input_number.garage_overhead_light_level_trigger
|
||||||
|
|
||||||
- platform: state
|
- platform: state
|
||||||
entity_id: sensor.garage_multisensor_illuminance
|
entity_id: sensor.garage_multisensor_illuminance
|
||||||
|
|
||||||
binary_sensor:
|
binary_sensor:
|
||||||
- name: "Garage Naturally Lit"
|
- name: "Garage Naturally Lit"
|
||||||
@@ -237,14 +237,14 @@ template:
|
|||||||
trigger: "{{ states('input_number.garage_overhead_light_level_trigger') | float(default=0) }}"
|
trigger: "{{ states('input_number.garage_overhead_light_level_trigger') | float(default=0) }}"
|
||||||
|
|
||||||
- trigger:
|
- trigger:
|
||||||
- platform: homeassistant
|
- platform: homeassistant
|
||||||
event: start
|
event: start
|
||||||
|
|
||||||
- platform: state
|
- platform: state
|
||||||
entity_id: input_number.great_room_light_level_trigger
|
entity_id: input_number.great_room_light_level_trigger
|
||||||
|
|
||||||
- platform: state
|
- platform: state
|
||||||
entity_id: sensor.great_room_multisensor_illuminance
|
entity_id: sensor.great_room_multisensor_illuminance
|
||||||
|
|
||||||
binary_sensor:
|
binary_sensor:
|
||||||
- name: "Great Room Naturally Lit"
|
- name: "Great Room Naturally Lit"
|
||||||
@@ -266,14 +266,14 @@ template:
|
|||||||
trigger: "{{ states('input_number.great_room_light_level_trigger') | float(default=0) }}"
|
trigger: "{{ states('input_number.great_room_light_level_trigger') | float(default=0) }}"
|
||||||
|
|
||||||
- trigger:
|
- trigger:
|
||||||
- platform: homeassistant
|
- platform: homeassistant
|
||||||
event: start
|
event: start
|
||||||
|
|
||||||
- platform: state
|
- platform: state
|
||||||
entity_id: input_number.kitchen_light_level_trigger
|
entity_id: input_number.kitchen_light_level_trigger
|
||||||
|
|
||||||
- platform: state
|
- platform: state
|
||||||
entity_id: sensor.kitchen_multisensor_illuminance
|
entity_id: sensor.kitchen_multisensor_illuminance
|
||||||
|
|
||||||
binary_sensor:
|
binary_sensor:
|
||||||
- name: "Kitchen Naturally Lit"
|
- name: "Kitchen Naturally Lit"
|
||||||
@@ -295,13 +295,13 @@ template:
|
|||||||
trigger: "{{ states('input_number.kitchen_light_level_trigger') | float(default=0) }}"
|
trigger: "{{ states('input_number.kitchen_light_level_trigger') | float(default=0) }}"
|
||||||
|
|
||||||
- trigger:
|
- trigger:
|
||||||
- platform: homeassistant
|
- platform: homeassistant
|
||||||
event: start
|
event: start
|
||||||
|
|
||||||
- platform: state
|
- platform: state
|
||||||
entity_id:
|
entity_id:
|
||||||
- input_number.master_bedroom_light_level_trigger
|
- input_number.master_bedroom_light_level_trigger
|
||||||
- sensor.master_bedroom_multisensor_illuminance
|
- sensor.master_bedroom_multisensor_illuminance
|
||||||
|
|
||||||
binary_sensor:
|
binary_sensor:
|
||||||
- name: "Master Bedroom Naturally Lit"
|
- name: "Master Bedroom Naturally Lit"
|
||||||
@@ -323,13 +323,13 @@ template:
|
|||||||
trigger: "{{ states('input_number.master_bedroom_light_level_trigger') | float(default=0) }}"
|
trigger: "{{ states('input_number.master_bedroom_light_level_trigger') | float(default=0) }}"
|
||||||
|
|
||||||
- trigger:
|
- trigger:
|
||||||
- platform: homeassistant
|
- platform: homeassistant
|
||||||
event: start
|
event: start
|
||||||
|
|
||||||
- platform: state
|
- platform: state
|
||||||
entity_id:
|
entity_id:
|
||||||
- input_number.nursery_light_level_trigger
|
- input_number.nursery_light_level_trigger
|
||||||
- sensor.nursery_multisensor_illuminance
|
- sensor.nursery_multisensor_illuminance
|
||||||
|
|
||||||
binary_sensor:
|
binary_sensor:
|
||||||
- name: "Nursery Naturally Lit"
|
- name: "Nursery Naturally Lit"
|
||||||
|
|||||||
@@ -1,127 +1,127 @@
|
|||||||
# TODO
|
# # TODO
|
||||||
# Update to account for new get_weather_forcats BS a
|
# # Update to account for new get_weather_forcats BS a
|
||||||
|
|
||||||
template:
|
# template:
|
||||||
- binary_sensor:
|
# - binary_sensor:
|
||||||
- name: Precipitation Likely Soon
|
# - name: Precipitation Likely Soon
|
||||||
unique_id: templatebinarysensor.precipitation_likely_soon
|
# unique_id: templatebinarysensor.precipitation_likely_soon
|
||||||
icon: mdi:weather-rainy
|
# icon: mdi:weather-rainy
|
||||||
availability: "{{ states('sensor.openweathermap_hourly_forecast_precipitation_probability') not in ['unkown', 'unavailable'] }}"
|
# availability: "{{ states('sensor.openweathermap_hourly_forecast_precipitation_probability') not in ['unknown', 'unavailable'] }}"
|
||||||
state: "{{ states('sensor.openweathermap_hourly_forecast_precipitation_probability')|float(default=0) >= 50.0 }}"
|
# state: "{{ states('sensor.openweathermap_hourly_forecast_precipitation_probability')|float(default=0) >= 50.0 }}"
|
||||||
|
|
||||||
- name: Precipitation Likely
|
# - name: Precipitation Likely
|
||||||
unique_id: templatebinarysensor.precipitation_likely
|
# unique_id: templatebinarysensor.precipitation_likely
|
||||||
icon: mdi:weather-rainy
|
# icon: mdi:weather-rainy
|
||||||
availability: "{{ states('sensor.openweathermap_daily_forecast_precipitation_probability') not in ['unkown', 'unavailable'] }}"
|
# availability: "{{ states('sensor.openweathermap_daily_forecast_precipitation_probability') not in ['unknown', 'unavailable'] }}"
|
||||||
state: "{{ states('sensor.openweathermap_daily_forecast_precipitation_probability')|float(default=0) >= 50.0 }}"
|
# state: "{{ states('sensor.openweathermap_daily_forecast_precipitation_probability')|float(default=0) >= 50.0 }}"
|
||||||
|
|
||||||
- trigger:
|
# - trigger:
|
||||||
|
|
||||||
- platform: time_pattern
|
# - platform: time_pattern
|
||||||
hours: /1
|
# hours: /1
|
||||||
|
|
||||||
- platform: event
|
# - platform: event
|
||||||
event_type: event_template_reloaded
|
# event_type: event_template_reloaded
|
||||||
id: "reload"
|
# id: "reload"
|
||||||
|
|
||||||
- platform: homeassistant
|
# - platform: homeassistant
|
||||||
event: start
|
# event: start
|
||||||
|
|
||||||
action:
|
# action:
|
||||||
- service: weather.get_forecasts
|
# - service: weather.get_forecasts
|
||||||
data:
|
# data:
|
||||||
type: daily
|
# type: daily
|
||||||
target:
|
# target:
|
||||||
entity_id: weather.openweathermap_daily
|
# entity_id: weather.openweathermap_daily
|
||||||
response_variable: daily
|
# response_variable: daily
|
||||||
|
|
||||||
- service: weather.get_forecasts
|
# - service: weather.get_forecasts
|
||||||
data:
|
# data:
|
||||||
type: hourly
|
# type: hourly
|
||||||
target:
|
# target:
|
||||||
entity_id: weather.openweathermap_hourly
|
# entity_id: weather.openweathermap_hourly
|
||||||
response_variable: hourly
|
# response_variable: hourly
|
||||||
|
|
||||||
binary_sensor:
|
# binary_sensor:
|
||||||
- name: "Impending Rain"
|
# - name: "Impending Rain"
|
||||||
unique_id: templatebinarysensor.impending_rain
|
# unique_id: templatebinarysensor.impending_rain
|
||||||
availability: "{{ states('weather.openweathermap_hourly') not in ['unkown', 'unavailable'] }}"
|
# availability: "{{ states('weather.openweathermap_hourly') not in ['unknown', 'unavailable'] }}"
|
||||||
icon: mdi:weather-rainy
|
# icon: mdi:weather-rainy
|
||||||
# This looks too far into the future. Cutting it down a bit
|
# # This looks too far into the future. Cutting it down a bit
|
||||||
state: >-
|
# state: >-
|
||||||
{%- set totalprecipitation = 0 | float -%}
|
# {%- set totalprecipitation = 0 | float -%}
|
||||||
{%- set upcoming_precipitation = 0 | float -%}
|
# {%- set upcoming_precipitation = 0 | float -%}
|
||||||
{%- set ns = namespace() -%}
|
# {%- set ns = namespace() -%}
|
||||||
{%- set ns.totalprecipitation = 0 -%}
|
# {%- set ns.totalprecipitation = 0 -%}
|
||||||
{%- for daypart in range(0, 8) -%}
|
# {%- for daypart in range(0, 8) -%}
|
||||||
{%- set precipitation = hourly['weather.openweathermap_hourly'].forecast[daypart].precipitation -%}
|
# {%- set precipitation = hourly['weather.openweathermap_hourly'].forecast[daypart].precipitation -%}
|
||||||
{%- set wind_speed = hourly['weather.openweathermap_hourly'].forecast[daypart].wind_speed -%}
|
# {%- set wind_speed = hourly['weather.openweathermap_hourly'].forecast[daypart].wind_speed -%}
|
||||||
{%- set precipitation_probability = hourly['weather.openweathermap_hourly'].forecast[daypart].precipitation_probability %}
|
# {%- set precipitation_probability = hourly['weather.openweathermap_hourly'].forecast[daypart].precipitation_probability %}
|
||||||
|
|
||||||
{% if precipitation_probability > 0 -%}
|
# {% if precipitation_probability > 0 -%}
|
||||||
{% if wind_speed > states('input_number.wind_speed_blowing_rain') |float(default=0) %}
|
# {% if wind_speed > states('input_number.wind_speed_blowing_rain') |float(default=0) %}
|
||||||
{%- set upcoming_precipitation = precipitation * precipitation_probability -%}
|
# {%- set upcoming_precipitation = precipitation * precipitation_probability -%}
|
||||||
{%- endif -%}
|
# {%- endif -%}
|
||||||
{%- endif -%}
|
# {%- endif -%}
|
||||||
{%- set ns.totalprecipitation = ns.totalprecipitation + upcoming_precipitation -%}
|
# {%- set ns.totalprecipitation = ns.totalprecipitation + upcoming_precipitation -%}
|
||||||
{%- endfor %}
|
# {%- endfor %}
|
||||||
{{ ns.totalprecipitation / 100 | float | round(0) > 0.99 }}
|
# {{ ns.totalprecipitation / 100 | float | round(0) > 0.99 }}
|
||||||
|
|
||||||
sensor:
|
# sensor:
|
||||||
- name: "Sprinkler: Total Expected Precipitation"
|
# - name: "Sprinkler: Total Expected Precipitation"
|
||||||
unique_id: "custom_sensor.sprinkler_total_expected_precipitation"
|
# unique_id: "custom_sensor.sprinkler_total_expected_precipitation"
|
||||||
icon: mdi:weather-pouring
|
# icon: mdi:weather-pouring
|
||||||
unit_of_measurement: mm
|
# unit_of_measurement: mm
|
||||||
availability: "{{ states('weather.openweathermap_daily') not in ['unkown', 'unavailable'] }}"
|
# availability: "{{ states('weather.openweathermap_daily') not in ['unknown', 'unavailable'] }}"
|
||||||
state: >
|
# state: >
|
||||||
{%- set totalprecipitation = 0 | float -%}
|
# {%- set totalprecipitation = 0 | float -%}
|
||||||
{%- set upcoming_precipitation = 0 | float -%}
|
# {%- set upcoming_precipitation = 0 | float -%}
|
||||||
{%- set ns = namespace() -%}
|
# {%- set ns = namespace() -%}
|
||||||
{%- set ns.totalprecipitation = 0 -%}
|
# {%- set ns.totalprecipitation = 0 -%}
|
||||||
{%- for daypart in range(0, 8) -%}
|
# {%- for daypart in range(0, 8) -%}
|
||||||
{%- set precipitation = daily['weather.openweathermap_daily'].forecast[daypart].precipitation * 25.4 -%}
|
# {%- set precipitation = daily['weather.openweathermap_daily'].forecast[daypart].precipitation * 25.4 -%}
|
||||||
{%- set precipitation_probability = daily['weather.openweathermap_daily'].forecast[daypart].precipitation_probability / 100 %}
|
# {%- set precipitation_probability = daily['weather.openweathermap_daily'].forecast[daypart].precipitation_probability / 100 %}
|
||||||
{% if precipitation_probability >0 -%}
|
# {% if precipitation_probability >0 -%}
|
||||||
{%- set upcoming_precipitation = precipitation * precipitation_probability -%}
|
# {%- set upcoming_precipitation = precipitation * precipitation_probability -%}
|
||||||
{%- endif -%}
|
# {%- endif -%}
|
||||||
{%- set ns.totalprecipitation = ns.totalprecipitation + upcoming_precipitation -%}
|
# {%- set ns.totalprecipitation = ns.totalprecipitation + upcoming_precipitation -%}
|
||||||
{%- endfor %}
|
# {%- endfor %}
|
||||||
{{ ns.totalprecipitation | float | round(0) }}
|
# {{ ns.totalprecipitation | float | round(0) }}
|
||||||
|
|
||||||
- name: "Today's Low Temperature"
|
# - name: "Today's Low Temperature"
|
||||||
unique_id: templatesensor.templow_today
|
# unique_id: templatesensor.templow_today
|
||||||
unit_of_measurement: °F
|
# unit_of_measurement: °F
|
||||||
availability: "{{ states('weather.openweathermap_daily') not in ['unkown', 'unavailable'] }}"
|
# availability: "{{ states('weather.openweathermap_daily') not in ['unknown', 'unavailable'] }}"
|
||||||
state: "{{ daily['weather.openweathermap_daily'].forecast[0].templow }}"
|
# state: "{{ daily['weather.openweathermap_daily'].forecast[0].templow }}"
|
||||||
|
|
||||||
- name: "Today's High Temperature"
|
# - name: "Today's High Temperature"
|
||||||
unique_id: templatesensor.temphigh_today
|
# unique_id: templatesensor.temphigh_today
|
||||||
unit_of_measurement: °F
|
# unit_of_measurement: °F
|
||||||
availability: "{{ states('weather.openweathermap_daily') not in ['unkown', 'unavailable'] }}"
|
# availability: "{{ states('weather.openweathermap_daily') not in ['unknown', 'unavailable'] }}"
|
||||||
state: "{{ daily['weather.openweathermap_daily'].forecast[0].temperature}}"
|
# state: "{{ daily['weather.openweathermap_daily'].forecast[0].temperature}}"
|
||||||
|
|
||||||
- name: "Today's Chance of Precipitation"
|
# - name: "Today's Chance of Precipitation"
|
||||||
unique_id: templatesensor.precip_chance_today
|
# unique_id: templatesensor.precip_chance_today
|
||||||
icon: mdi:cloud-percent
|
# icon: mdi:cloud-percent
|
||||||
unit_of_measurement: '%'
|
# unit_of_measurement: '%'
|
||||||
availability: "{{ states('weather.openweathermap_daily') not in ['unkown', 'unavailable'] }}"
|
# availability: "{{ states('weather.openweathermap_daily') not in ['unknown', 'unavailable'] }}"
|
||||||
state: "{{ daily['weather.openweathermap_daily'].forecast[0].precipitation_probability}}"
|
# state: "{{ daily['weather.openweathermap_daily'].forecast[0].precipitation_probability}}"
|
||||||
|
|
||||||
- name: "Tomorrow's Low Temperature"
|
# - name: "Tomorrow's Low Temperature"
|
||||||
unique_id: templatesensor.templow_tomorrow
|
# unique_id: templatesensor.templow_tomorrow
|
||||||
unit_of_measurement: °F
|
# unit_of_measurement: °F
|
||||||
availability: "{{ states('weather.openweathermap_daily') not in ['unkown', 'unavailable'] }}"
|
# availability: "{{ states('weather.openweathermap_daily') not in ['unknown', 'unavailable'] }}"
|
||||||
state: "{{ daily['weather.openweathermap_daily'].forecast[1].templow}}"
|
# state: "{{ daily['weather.openweathermap_daily'].forecast[1].templow}}"
|
||||||
|
|
||||||
- name: "Tomorrow's High Temperature"
|
# - name: "Tomorrow's High Temperature"
|
||||||
unique_id: templatesensor.temphigh_tomorrow
|
# unique_id: templatesensor.temphigh_tomorrow
|
||||||
unit_of_measurement: °F
|
# unit_of_measurement: °F
|
||||||
availability: "{{ states('weather.openweathermap_daily') not in ['unkown', 'unavailable'] }}"
|
# availability: "{{ states('weather.openweathermap_daily') not in ['unknown', 'unavailable'] }}"
|
||||||
state: "{{ daily['weather.openweathermap_daily'].forecast[1].temperature}}"
|
# state: "{{ daily['weather.openweathermap_daily'].forecast[1].temperature}}"
|
||||||
|
|
||||||
- name: "Tomorrow's Chance of Precipitation"
|
# - name: "Tomorrow's Chance of Precipitation"
|
||||||
unique_id: templatesensor.precip_chance_tomorrow
|
# unique_id: templatesensor.precip_chance_tomorrow
|
||||||
icon: mdi:cloud-percent
|
# icon: mdi:cloud-percent
|
||||||
unit_of_measurement: '%'
|
# unit_of_measurement: '%'
|
||||||
availability: "{{ states('weather.openweathermap_daily') not in ['unkown', 'unavailable'] }}"
|
# availability: "{{ states('weather.openweathermap_daily') not in ['unknown', 'unavailable'] }}"
|
||||||
state: "{{ daily['weather.openweathermap_daily'].forecast[1].precipitation_probability}}"
|
# state: "{{ daily['weather.openweathermap_daily'].forecast[1].precipitation_probability}}"
|
||||||
|
|||||||
@@ -33,6 +33,8 @@ automation:
|
|||||||
state: "on"
|
state: "on"
|
||||||
|
|
||||||
action:
|
action:
|
||||||
- service: notify.pixel_7_coordinates
|
- service: notify.send_message
|
||||||
|
target:
|
||||||
|
entity_id: notify.pixel_7_coordinates
|
||||||
data:
|
data:
|
||||||
message: "{{now().strftime('%Y-%m-%d')}}T{{now().strftime('%H:%M:%S.%f')}},{{states('device_tracker.pixel_7')}},{{state_attr('device_tracker.pixel_7','latitude')}},{{state_attr('device_tracker.pixel_7','longitude')}}"
|
message: "{{now().strftime('%Y-%m-%d')}}T{{now().strftime('%H:%M:%S.%f')}},{{states('device_tracker.pixel_7')}},{{state_attr('device_tracker.pixel_7','latitude')}},{{state_attr('device_tracker.pixel_7','longitude')}}"
|
||||||
@@ -15,243 +15,242 @@ input_number:
|
|||||||
|
|
||||||
template:
|
template:
|
||||||
- binary_sensor:
|
- binary_sensor:
|
||||||
# This is ON when it is warmer outside than it is inside, as defined by input_number.warmer_outside_difference_trigger
|
# This is ON when it is warmer outside than it is inside, as defined by input_number.warmer_outside_difference_trigger
|
||||||
- name: Warmer Outside
|
- name: Warmer Outside
|
||||||
unique_id: templatebinarysensor.warmer_outside
|
unique_id: templatebinarysensor.warmer_outside
|
||||||
icon: mdi:sun-snowflake-variant
|
icon: mdi:sun-snowflake-variant
|
||||||
device_class: heat
|
device_class: heat
|
||||||
delay_on:
|
delay_on:
|
||||||
seconds: 15
|
seconds: 15
|
||||||
delay_off:
|
delay_off:
|
||||||
seconds: 15
|
seconds: 15
|
||||||
availability: "{{ (states('sensor.upstairs_mean_temperature') not in ['unkown', 'unavailable']) and (states('sensor.outdoors_mean_temperature') not in ['unkown', 'unavailable']) }}"
|
availability: "{{ (states('sensor.upstairs_mean_temperature') not in ['unknown', 'unavailable']) and (states('sensor.outdoors_mean_temperature') not in ['unknown', 'unavailable']) }}"
|
||||||
state: "{{ iif(states('sensor.outdoors_mean_temperature') | float(default=0) - states('input_number.warmer_outside_difference_trigger') | float(default=0) > states('sensor.upstairs_mean_temperature') | float(default=0) ) }}"
|
state: "{{ iif(states('sensor.outdoors_mean_temperature') | float(default=0) - states('input_number.warmer_outside_difference_trigger') | float(default=0) > states('sensor.upstairs_mean_temperature') | float(default=0) ) }}"
|
||||||
attributes:
|
attributes:
|
||||||
indoors: "{{ states('sensor.upstairs_mean_temperature') | float(default=0) }}"
|
indoors: "{{ states('sensor.upstairs_mean_temperature') | float(default=0) }}"
|
||||||
outdoors: "{{ states('sensor.outdoors_mean_temperature') | float(default=0) }}"
|
outdoors: "{{ states('sensor.outdoors_mean_temperature') | float(default=0) }}"
|
||||||
trigger: "{{ states('input_number.warmer_outside_difference_trigger') | float(default=0) }}"
|
trigger: "{{ states('input_number.warmer_outside_difference_trigger') | float(default=0) }}"
|
||||||
|
|
||||||
# This is ON when it is cooler outside than it is inside, as defined by input_number.cooler_outside_difference_trigger
|
# This is ON when it is cooler outside than it is inside, as defined by input_number.cooler_outside_difference_trigger
|
||||||
- name: Cooler Outside
|
- name: Cooler Outside
|
||||||
unique_id: templatebinarysensor.cooler_outside
|
unique_id: templatebinarysensor.cooler_outside
|
||||||
icon: mdi:sun-snowflake-variant
|
icon: mdi:sun-snowflake-variant
|
||||||
device_class: cold
|
device_class: cold
|
||||||
delay_on:
|
delay_on:
|
||||||
seconds: 15
|
seconds: 15
|
||||||
delay_off:
|
delay_off:
|
||||||
seconds: 15
|
seconds: 15
|
||||||
availability: "{{ (states('sensor.upstairs_mean_temperature') not in ['unkown', 'unavailable']) and (states('sensor.outdoors_mean_temperature') not in ['unkown', 'unavailable']) }}"
|
availability: "{{ (states('sensor.upstairs_mean_temperature') not in ['unknown', 'unavailable']) and (states('sensor.outdoors_mean_temperature') not in ['unknown', 'unavailable']) }}"
|
||||||
state: "{{ iif(states('sensor.outdoors_mean_temperature') | float(default=0) + states('input_number.cooler_outside_difference_trigger') | float(default=0) < states('sensor.upstairs_mean_temperature') | float(default=0) ) }}"
|
state: "{{ iif(states('sensor.outdoors_mean_temperature') | float(default=0) + states('input_number.cooler_outside_difference_trigger') | float(default=0) < states('sensor.upstairs_mean_temperature') | float(default=0) ) }}"
|
||||||
attributes:
|
attributes:
|
||||||
indoors: "{{ states('sensor.upstairs_mean_temperature') | float(default=0)}}"
|
indoors: "{{ states('sensor.upstairs_mean_temperature') | float(default=0)}}"
|
||||||
outdoors: "{{ states('sensor.outdoors_mean_temperature') | float(default=0)}}"
|
outdoors: "{{ states('sensor.outdoors_mean_temperature') | float(default=0)}}"
|
||||||
trigger: "{{ states('input_number.cooler_outside_difference_trigger') | float(default=0) }}"
|
trigger: "{{ states('input_number.cooler_outside_difference_trigger') | float(default=0) }}"
|
||||||
|
|
||||||
# This is ON when the temperature outside is hotter than the temp_high configured as part of the climate platform
|
# This is ON when the temperature outside is hotter than the temp_high configured as part of the climate platform
|
||||||
- name: Too Hot Outside
|
- name: Too Hot Outside
|
||||||
unique_id: templatebinarysensor.too_hot_outside
|
unique_id: templatebinarysensor.too_hot_outside
|
||||||
icon: mdi:weather-sunny
|
icon: mdi:weather-sunny
|
||||||
device_class: heat
|
device_class: heat
|
||||||
delay_on:
|
delay_on:
|
||||||
seconds: 15
|
seconds: 15
|
||||||
delay_off:
|
delay_off:
|
||||||
seconds: 15
|
seconds: 15
|
||||||
availability: "{{ (states('climate.thermostat') not in ['unkown', 'unavailable']) and (states('sensor.outdoors_mean_temperature') not in ['unkown', 'unavailable']) }}"
|
availability: "{{ (states('climate.thermostat') not in ['unknown', 'unavailable']) and (states('sensor.outdoors_mean_temperature') not in ['unknown', 'unavailable']) }}"
|
||||||
state: "{{states('sensor.outdoors_mean_temperature') | float(default=0) > states('sensor.hvac_target_temp_high') | float(default=0) - (states('input_number.warmer_outside_difference_trigger') | float(default=0) / 2) }}"
|
state: "{{states('sensor.outdoors_mean_temperature') | float(default=0) > states('sensor.hvac_target_temp_high') | float(default=0) - (states('input_number.warmer_outside_difference_trigger') | float(default=0) / 2) }}"
|
||||||
attributes:
|
attributes:
|
||||||
outdoor_temp: "{{ states('sensor.outdoors_mean_temperature') | float(default=0)}}"
|
outdoor_temp: "{{ states('sensor.outdoors_mean_temperature') | float(default=0)}}"
|
||||||
target_temp_high: "{{ state_attr('climate.thermostat','target_temp_high') | float(default=0)}}"
|
target_temp_high: "{{ state_attr('climate.thermostat','target_temp_high') | float(default=0)}}"
|
||||||
|
|
||||||
# This is ON when the thermostat is hotter than the temp_high configured as part of the climate platform
|
# This is ON when the thermostat is hotter than the temp_high configured as part of the climate platform
|
||||||
- name: Too Hot Inside
|
- name: Too Hot Inside
|
||||||
unique_id: templatebinarysensor.too_hot_inside
|
unique_id: templatebinarysensor.too_hot_inside
|
||||||
icon: mdi:weather-sunny
|
icon: mdi:weather-sunny
|
||||||
device_class: heat
|
device_class: heat
|
||||||
availability: "{{ (states('sensor.hvac_target_temp_high') not in ['unkown', 'unavailable']) and (states('sensor.upstairs_mean_temperature') not in ['unkown', 'unavailable']) }}"
|
availability: "{{ (states('sensor.hvac_target_temp_high') not in ['unknown', 'unavailable']) and (states('sensor.upstairs_mean_temperature') not in ['unknown', 'unavailable']) }}"
|
||||||
state: "{{states('sensor.upstairs_mean_temperature') | float(default=0) > states('sensor.hvac_target_temp_high') | float(default=(state_attr('climate.thermostat','temperature') |float(default=0))) - 1.0 }}"
|
state: "{{states('sensor.upstairs_mean_temperature') | float(default=0) > states('sensor.hvac_target_temp_high') | float(default=(state_attr('climate.thermostat','temperature') |float(default=0))) - 1.0 }}"
|
||||||
attributes:
|
attributes:
|
||||||
upstairs_mean_temp: "{{ states('sensor.upstairs_mean_temperature') | float(default=0)}}"
|
upstairs_mean_temp: "{{ states('sensor.upstairs_mean_temperature') | float(default=0)}}"
|
||||||
target_temp_high: "{{ states('sensor.hvac_target_temp_high') | float(default=0)}}"
|
target_temp_high: "{{ states('sensor.hvac_target_temp_high') | float(default=0)}}"
|
||||||
target_temperature: "{{ state_attr('climate.thermostat','temperature') |float(default=0) }}"
|
target_temperature: "{{ state_attr('climate.thermostat','temperature') |float(default=0) }}"
|
||||||
|
|
||||||
# This is ON when the temperature outside is colder than the temp_low configured as part of the climate platform
|
# This is ON when the temperature outside is colder than the temp_low configured as part of the climate platform
|
||||||
- name: Too Cold Outside
|
- name: Too Cold Outside
|
||||||
unique_id: templatebinarysensor.too_cold_outside
|
unique_id: templatebinarysensor.too_cold_outside
|
||||||
icon: mdi:snowflake
|
icon: mdi:snowflake
|
||||||
device_class: cold
|
device_class: cold
|
||||||
delay_on:
|
delay_on:
|
||||||
seconds: 15
|
seconds: 15
|
||||||
delay_off:
|
delay_off:
|
||||||
seconds: 15
|
seconds: 15
|
||||||
availability: "{{ (states('climate.thermostat') not in ['unkown', 'unavailable']) and (states('sensor.outdoors_mean_temperature') not in ['unkown', 'unavailable']) }}"
|
availability: "{{ (states('climate.thermostat') not in ['unknown', 'unavailable']) and (states('sensor.outdoors_mean_temperature') not in ['unknown', 'unavailable']) }}"
|
||||||
state: "{{states('sensor.outdoors_mean_temperature') | float(default=0) < states('sensor.hvac_target_temp_low') | float(default=0) - (states('input_number.cooler_outside_difference_trigger') | float(default=0) ) }}"
|
state: "{{states('sensor.outdoors_mean_temperature') | float(default=0) < states('sensor.hvac_target_temp_low') | float(default=0) - (states('input_number.cooler_outside_difference_trigger') | float(default=0) ) }}"
|
||||||
attributes:
|
attributes:
|
||||||
outdoor_temp: "{{ states('sensor.outdoors_mean_temperature') | float(default=0)}}"
|
outdoor_temp: "{{ states('sensor.outdoors_mean_temperature') | float(default=0)}}"
|
||||||
target_temp_low: "{{ state_attr('climate.thermostat','target_temp_low') | float(default=0)}}"
|
target_temp_low: "{{ state_attr('climate.thermostat','target_temp_low') | float(default=0)}}"
|
||||||
|
|
||||||
# This is ON when the thermostat is hotter than the temp_high configured as part of the climate platform
|
# This is ON when the thermostat is hotter than the temp_high configured as part of the climate platform
|
||||||
- name: Too Cold Inside
|
- name: Too Cold Inside
|
||||||
unique_id: templatebinarysensor.too_cold_inside
|
unique_id: templatebinarysensor.too_cold_inside
|
||||||
icon: mdi:snowflake
|
icon: mdi:snowflake
|
||||||
device_class: cold
|
device_class: cold
|
||||||
availability: "{{ (states('sensor.hvac_target_temp_low') not in ['unkown', 'unavailable']) and (states('sensor.upstairs_mean_temperature') not in ['unkown', 'unavailable']) }}"
|
availability: "{{ (states('sensor.hvac_target_temp_low') not in ['unknown', 'unavailable']) and (states('sensor.upstairs_mean_temperature') not in ['unknown', 'unavailable']) }}"
|
||||||
state: "{{states('sensor.upstairs_mean_temperature') | float(default=0) < states('sensor.hvac_target_temp_low') | float(default=(state_attr('climate.thermostat','temperature') |float(default=0))) + 1.0 }}"
|
state: "{{states('sensor.upstairs_mean_temperature') | float(default=0) < states('sensor.hvac_target_temp_low') | float(default=(state_attr('climate.thermostat','temperature') |float(default=0))) + 1.0 }}"
|
||||||
attributes:
|
attributes:
|
||||||
upstairs_mean_temp: "{{ states('sensor.upstairs_mean_temperature') | float(default=0)}}"
|
upstairs_mean_temp: "{{ states('sensor.upstairs_mean_temperature') | float(default=0)}}"
|
||||||
target_temp_low: "{{ states('sensor.hvac_target_temp_low') | float(default=0)}}"
|
target_temp_low: "{{ states('sensor.hvac_target_temp_low') | float(default=0)}}"
|
||||||
target_temperature: "{{ state_attr('climate.thermostat','temperature') |float(default=0) }}"
|
target_temperature: "{{ state_attr('climate.thermostat','temperature') |float(default=0) }}"
|
||||||
|
|
||||||
# This is ON when either the garage door or the exterior garage door is open while the inner garage door is open
|
# This is ON when either the garage door or the exterior garage door is open while the inner garage door is open
|
||||||
- name: Inner Garage Door Open to Outside
|
- name: Inner Garage Door Open to Outside
|
||||||
unique_id: templatebinarysensor.inner_garage_door_open_to_outside
|
unique_id: templatebinarysensor.inner_garage_door_open_to_outside
|
||||||
device_class: door
|
device_class: door
|
||||||
availability: "{{ (states('binary_sensor.inner_garage_door') not in ['unkown', 'unavailable']) and (states('binary_sensor.garage_door') not in ['unkown', 'unavailable']) and (states('binary_sensor.outer_garage_door') not in ['unkown', 'unavailable']) }}"
|
availability: "{{ (states('binary_sensor.inner_garage_door') not in ['unknown', 'unavailable']) and (states('binary_sensor.garage_door') not in ['unknown', 'unavailable']) and (states('binary_sensor.outer_garage_door') not in ['unknown', 'unavailable']) }}"
|
||||||
state: >-
|
state: >-
|
||||||
{% if is_state('binary_sensor.inner_garage_door', 'on') %}
|
{% if is_state('binary_sensor.inner_garage_door', 'on') %}
|
||||||
{% if is_state('binary_sensor.garage_door', 'on') or is_state('binary_sensor.outer_garage_door', 'on') %}
|
{% if is_state('binary_sensor.garage_door', 'on') or is_state('binary_sensor.outer_garage_door', 'on') %}
|
||||||
{{'true'}}
|
{{'true'}}
|
||||||
|
{% else %}
|
||||||
|
{{'false'}}
|
||||||
|
{% endif %}
|
||||||
{% else %}
|
{% else %}
|
||||||
{{'false'}}
|
{{'false'}}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% else %}
|
|
||||||
{{'false'}}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
# This is ON when an exterior door or window has been left open for more than 10 minutes
|
# This is ON when an exterior door or window has been left open for more than 10 minutes
|
||||||
- name: Something Open
|
- name: Something Open
|
||||||
unique_id: templatebinarysensor.something_open
|
unique_id: templatebinarysensor.something_open
|
||||||
icon: mdi:door-open
|
icon: mdi:door-open
|
||||||
device_class: opening
|
device_class: opening
|
||||||
state: "{{ iif(is_state('binary_sensor.patio_door_contact', 'on') or is_state('group.my_exterior_windows', 'on') or is_state('binary_sensor.front_door_contact', 'on') or is_state('binary_sensor.inner_garage_door_open_to_outside', 'on')) }}"
|
state: "{{ iif(is_state('binary_sensor.patio_door_contact', 'on') or is_state('group.my_exterior_windows', 'on') or is_state('binary_sensor.front_door_contact', 'on') or is_state('binary_sensor.inner_garage_door_open_to_outside', 'on')) }}"
|
||||||
|
|
||||||
- name: Something Open Too Warm or Cold
|
- name: Something Open Too Warm or Cold
|
||||||
unique_id: templatebinarysensor.something_open_too_warm_or_cold
|
unique_id: templatebinarysensor.something_open_too_warm_or_cold
|
||||||
device_class: problem
|
device_class: problem
|
||||||
delay_on:
|
delay_on:
|
||||||
minutes: 2
|
minutes: 2
|
||||||
state: >-
|
state: >-
|
||||||
{% if is_state('binary_sensor.something_open','on') %}
|
{% if is_state('binary_sensor.something_open','on') %}
|
||||||
{% if is_state('binary_sensor.too_cold_inside','on') and is_state('binary_sensor.cooler_outside', 'on') and is_state('binary_sensor.getting_warmer_outside', 'off') %}
|
{% if is_state('binary_sensor.too_cold_inside','on') and is_state('binary_sensor.cooler_outside', 'on') and is_state('binary_sensor.getting_warmer_outside', 'off') %}
|
||||||
{{'true'}}
|
{{'true'}}
|
||||||
{% elif is_state('binary_sensor.too_hot_inside','on') and is_state('binary_sensor.warmer_outside', 'on') and is_state('binary_sensor.getting_cooler_outside', 'off') %}
|
{% elif is_state('binary_sensor.too_hot_inside','on') and is_state('binary_sensor.warmer_outside', 'on') and is_state('binary_sensor.getting_cooler_outside', 'off') %}
|
||||||
{{'true'}}
|
{{'true'}}
|
||||||
|
{% else %}
|
||||||
|
{{'false'}}
|
||||||
|
{% endif %}
|
||||||
{% else %}
|
{% else %}
|
||||||
{{'false'}}
|
{{'false'}}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% else %}
|
attributes:
|
||||||
{{'false'}}
|
outdoor_temp: "{{ states('sensor.outdoors_mean_temperature') | float(default=0)}}"
|
||||||
{% endif %}
|
upstairs_mean_temp: "{{ states('sensor.upstairs_mean_temperature') | float(default=0)}}"
|
||||||
attributes:
|
target_temp_high: "{{ state_attr('climate.thermostat','target_temp_high') | float(default=0)}}"
|
||||||
outdoor_temp: "{{ states('sensor.outdoors_mean_temperature') | float(default=0)}}"
|
target_temp_low: "{{ state_attr('climate.thermostat','target_temp_low') | float(default=0)}}"
|
||||||
upstairs_mean_temp: "{{ states('sensor.upstairs_mean_temperature') | float(default=0)}}"
|
getting_warmer: "{{ states('binary_sensor.getting_warmer_outside') }}"
|
||||||
target_temp_high: "{{ state_attr('climate.thermostat','target_temp_high') | float(default=0)}}"
|
too_hot_inside: "{{ states('binary_sensor.too_hot_inside') }}"
|
||||||
target_temp_low: "{{ state_attr('climate.thermostat','target_temp_low') | float(default=0)}}"
|
warmer_outside: "{{ states('binary_sensor.warmer_outside') }}"
|
||||||
getting_warmer: "{{ states('binary_sensor.getting_warmer_outside') }}"
|
too_hot_outside: "{{ states('binary_sensor.too_hot_outside') }}"
|
||||||
too_hot_inside: "{{ states('binary_sensor.too_hot_inside') }}"
|
getting_cooler: "{{ states('binary_sensor.getting_cooler_outside') }}"
|
||||||
warmer_outside: "{{ states('binary_sensor.warmer_outside') }}"
|
too_cold_inside: "{{ states('binary_sensor.too_cold_inside') }}"
|
||||||
too_hot_outside: "{{ states('binary_sensor.too_hot_outside') }}"
|
cooler_outside: "{{ states('binary_sensor.cooler_outside') }}"
|
||||||
getting_cooler: "{{ states('binary_sensor.getting_cooler_outside') }}"
|
too_cold_outside: "{{ states('binary_sensor.too_cold_outside') }}"
|
||||||
too_cold_inside: "{{ states('binary_sensor.too_cold_inside') }}"
|
|
||||||
cooler_outside: "{{ states('binary_sensor.cooler_outside') }}"
|
|
||||||
too_cold_outside: "{{ states('binary_sensor.too_cold_outside') }}"
|
|
||||||
|
|
||||||
- name: Need to Open Something Too Warm or Cold
|
- name: Need to Open Something Too Warm or Cold
|
||||||
unique_id: templatebinarysensor.need_to_open_something_too_warm_or_cold
|
unique_id: templatebinarysensor.need_to_open_something_too_warm_or_cold
|
||||||
device_class: problem
|
device_class: problem
|
||||||
# delay_on:
|
# delay_on:
|
||||||
# minutes: 5
|
# minutes: 5
|
||||||
state: >-
|
state: >-
|
||||||
{% if is_state('binary_sensor.something_open','off') %}
|
{% if is_state('binary_sensor.something_open','off') %}
|
||||||
{% if is_state('binary_sensor.too_cold_inside','off') and is_state('binary_sensor.too_hot_inside','off') and is_state('binary_sensor.too_cold_outside','off') and is_state('binary_sensor.too_hot_outside','off') %}
|
{% if is_state('binary_sensor.too_cold_inside','off') and is_state('binary_sensor.too_hot_inside','off') and is_state('binary_sensor.too_cold_outside','off') and is_state('binary_sensor.too_hot_outside','off') %}
|
||||||
{{'true'}}
|
{{'true'}}
|
||||||
|
{% else %}
|
||||||
|
{{'false'}}
|
||||||
|
{% endif %}
|
||||||
{% else %}
|
{% else %}
|
||||||
{{'false'}}
|
{{'false'}}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% else %}
|
attributes:
|
||||||
{{'false'}}
|
outdoor_temp: "{{ states('sensor.outdoors_mean_temperature') | float(default=0)}}"
|
||||||
{% endif %}
|
upstairs_mean_temp: "{{ states('sensor.upstairs_mean_temperature') | float(default=0)}}"
|
||||||
attributes:
|
target_temp_high: "{{ state_attr('climate.thermostat','target_temp_high') | float(default=0)}}"
|
||||||
outdoor_temp: "{{ states('sensor.outdoors_mean_temperature') | float(default=0)}}"
|
target_temp_low: "{{ state_attr('climate.thermostat','target_temp_low') | float(default=0)}}"
|
||||||
upstairs_mean_temp: "{{ states('sensor.upstairs_mean_temperature') | float(default=0)}}"
|
getting_warmer: "{{ states('binary_sensor.getting_warmer_outside') }}"
|
||||||
target_temp_high: "{{ state_attr('climate.thermostat','target_temp_high') | float(default=0)}}"
|
too_hot_inside: "{{ states('binary_sensor.too_hot_inside') }}"
|
||||||
target_temp_low: "{{ state_attr('climate.thermostat','target_temp_low') | float(default=0)}}"
|
warmer_outside: "{{ states('binary_sensor.warmer_outside') }}"
|
||||||
getting_warmer: "{{ states('binary_sensor.getting_warmer_outside') }}"
|
too_hot_outside: "{{ states('binary_sensor.too_hot_outside') }}"
|
||||||
too_hot_inside: "{{ states('binary_sensor.too_hot_inside') }}"
|
getting_cooler: "{{ states('binary_sensor.getting_cooler_outside') }}"
|
||||||
warmer_outside: "{{ states('binary_sensor.warmer_outside') }}"
|
too_cold_inside: "{{ states('binary_sensor.too_cold_inside') }}"
|
||||||
too_hot_outside: "{{ states('binary_sensor.too_hot_outside') }}"
|
cooler_outside: "{{ states('binary_sensor.cooler_outside') }}"
|
||||||
getting_cooler: "{{ states('binary_sensor.getting_cooler_outside') }}"
|
too_cold_outside: "{{ states('binary_sensor.too_cold_outside') }}"
|
||||||
too_cold_inside: "{{ states('binary_sensor.too_cold_inside') }}"
|
|
||||||
cooler_outside: "{{ states('binary_sensor.cooler_outside') }}"
|
|
||||||
too_cold_outside: "{{ states('binary_sensor.too_cold_outside') }}"
|
|
||||||
|
|
||||||
|
|
||||||
- sensor:
|
- sensor:
|
||||||
- name: Outdoor Temperature Gradient
|
- name: Outdoor Temperature Gradient
|
||||||
unique_id: templatesensor.outdoor_temperature_gradient
|
unique_id: templatesensor.outdoor_temperature_gradient
|
||||||
state: "{{ (state_attr('binary_sensor.getting_warmer_outside','gradient') | float(default=0) * 10000) | round(2)}}"
|
state: "{{ (state_attr('binary_sensor.getting_warmer_outside','gradient') | float(default=0) * 10000) | round(2)}}"
|
||||||
availability: "{{ (states('binary_sensor.getting_warmer_outside') not in ['unkown', 'unavailable']) }}"
|
availability: "{{ (states('binary_sensor.getting_warmer_outside') not in ['unknown', 'unavailable']) }}"
|
||||||
icon: mdi:sun-thermometer
|
icon: mdi:sun-thermometer
|
||||||
state_class: measurement
|
state_class: measurement
|
||||||
unit_of_measurement: p
|
unit_of_measurement: p
|
||||||
attributes:
|
attributes:
|
||||||
outdoor_temp: "{{ states('sensor.outdoors_mean_temperature') | float(default=0)}}"
|
outdoor_temp: "{{ states('sensor.outdoors_mean_temperature') | float(default=0)}}"
|
||||||
target_temp_high: "{{ state_attr('climate.thermostat','target_temp_high') | float(default=0)}}"
|
target_temp_high: "{{ state_attr('climate.thermostat','target_temp_high') | float(default=0)}}"
|
||||||
target_temp_low: "{{ state_attr('climate.thermostat','target_temp_low') | float(default=0)}}"
|
target_temp_low: "{{ state_attr('climate.thermostat','target_temp_low') | float(default=0)}}"
|
||||||
getting_warmer: "{{ states('binary_sensor.getting_warmer_outside') }}"
|
getting_warmer: "{{ states('binary_sensor.getting_warmer_outside') }}"
|
||||||
warmer_outside: "{{ states('binary_sensor.warmer_outside') }}"
|
warmer_outside: "{{ states('binary_sensor.warmer_outside') }}"
|
||||||
too_hot_outside: "{{ states('binary_sensor.too_hot_outside') }}"
|
too_hot_outside: "{{ states('binary_sensor.too_hot_outside') }}"
|
||||||
getting_cooler: "{{ states('binary_sensor.getting_cooler_outside') }}"
|
getting_cooler: "{{ states('binary_sensor.getting_cooler_outside') }}"
|
||||||
cooler_outside: "{{ states('binary_sensor.cooler_outside') }}"
|
cooler_outside: "{{ states('binary_sensor.cooler_outside') }}"
|
||||||
too_cold_outside: "{{ states('binary_sensor.too_cold_outside') }}"
|
too_cold_outside: "{{ states('binary_sensor.too_cold_outside') }}"
|
||||||
|
|
||||||
- name: HVAC Target Temp Low
|
- name: HVAC Target Temp Low
|
||||||
unique_id: templatesensor_hvac_target_temp_low
|
unique_id: templatesensor_hvac_target_temp_low
|
||||||
state: "{{state_attr('climate.thermostat','target_temp_low')}}"
|
state: "{{state_attr('climate.thermostat','target_temp_low')}}"
|
||||||
availability: "{{ (states('climate.thermostat') not in ['unkown', 'unavailable']) }}"
|
availability: "{{ (states('climate.thermostat') not in ['unknown', 'unavailable']) }}"
|
||||||
device_class: temperature
|
device_class: temperature
|
||||||
unit_of_measurement: "°F"
|
unit_of_measurement: "°F"
|
||||||
attributes:
|
attributes:
|
||||||
hvac_action: "{{state_attr('climate.thermostat','hvac_action')}}"
|
hvac_action: "{{state_attr('climate.thermostat','hvac_action')}}"
|
||||||
preset_mode: "{{state_attr('climate.thermostat','preset_mode')}}"
|
preset_mode: "{{state_attr('climate.thermostat','preset_mode')}}"
|
||||||
climate_mode_mode: "{{state_attr('climate.thermostat','climate_mode')}}"
|
climate_mode_mode: "{{state_attr('climate.thermostat','climate_mode')}}"
|
||||||
|
|
||||||
- name: HVAC Target Temp High
|
- name: HVAC Target Temp High
|
||||||
unique_id: templatesensor_hvac_target_temp_high
|
unique_id: templatesensor_hvac_target_temp_high
|
||||||
state: "{{state_attr('climate.thermostat','target_temp_high')}}"
|
state: "{{state_attr('climate.thermostat','target_temp_high')}}"
|
||||||
availability: "{{ (states('climate.thermostat') not in ['unkown', 'unavailable']) }}"
|
availability: "{{ (states('climate.thermostat') not in ['unknown', 'unavailable']) }}"
|
||||||
device_class: temperature
|
device_class: temperature
|
||||||
unit_of_measurement: "°F"
|
unit_of_measurement: "°F"
|
||||||
attributes:
|
attributes:
|
||||||
hvac_action: "{{state_attr('climate.thermostat','hvac_action')}}"
|
hvac_action: "{{state_attr('climate.thermostat','hvac_action')}}"
|
||||||
preset_mode: "{{state_attr('climate.thermostat','preset_mode')}}"
|
preset_mode: "{{state_attr('climate.thermostat','preset_mode')}}"
|
||||||
climate_mode_mode: "{{state_attr('climate.thermostat','climate_mode')}}"
|
climate_mode_mode: "{{state_attr('climate.thermostat','climate_mode')}}"
|
||||||
|
|
||||||
- name: HVAC Target Temperature
|
- name: HVAC Target Temperature
|
||||||
unique_id: templatesensor_hvac_target_temperature
|
unique_id: templatesensor_hvac_target_temperature
|
||||||
state: "{{state_attr('climate.thermostat','temperature')}}"
|
state: "{{state_attr('climate.thermostat','temperature')}}"
|
||||||
availability: "{{ (states('climate.thermostat') not in ['unkown', 'unavailable']) }}"
|
availability: "{{ (states('climate.thermostat') not in ['unknown', 'unavailable']) }}"
|
||||||
device_class: temperature
|
device_class: temperature
|
||||||
unit_of_measurement: "°F"
|
unit_of_measurement: "°F"
|
||||||
attributes:
|
attributes:
|
||||||
hvac_action: "{{state_attr('climate.thermostat','hvac_action')}}"
|
hvac_action: "{{state_attr('climate.thermostat','hvac_action')}}"
|
||||||
preset_mode: "{{state_attr('climate.thermostat','preset_mode')}}"
|
preset_mode: "{{state_attr('climate.thermostat','preset_mode')}}"
|
||||||
climate_mode_mode: "{{state_attr('climate.thermostat','climate_mode')}}"
|
climate_mode_mode: "{{state_attr('climate.thermostat','climate_mode')}}"
|
||||||
|
|
||||||
- name: HVAC Current Temperature
|
- name: HVAC Current Temperature
|
||||||
unique_id: templatesensor_hvac_current_temperature
|
unique_id: templatesensor_hvac_current_temperature
|
||||||
icon: mdi:fan-clock
|
icon: mdi:fan-clock
|
||||||
state: "{{state_attr('climate.thermostat','current_temperature')}}"
|
state: "{{state_attr('climate.thermostat','current_temperature')}}"
|
||||||
availability: "{{ (states('climate.thermostat') not in ['unkown', 'unavailable']) }}"
|
availability: "{{ (states('climate.thermostat') not in ['unknown', 'unavailable']) }}"
|
||||||
device_class: temperature
|
device_class: temperature
|
||||||
unit_of_measurement: "°F"
|
unit_of_measurement: "°F"
|
||||||
attributes:
|
attributes:
|
||||||
hvac_action: "{{state_attr('climate.thermostat','hvac_action')}}"
|
hvac_action: "{{state_attr('climate.thermostat','hvac_action')}}"
|
||||||
preset_mode: "{{state_attr('climate.thermostat','preset_mode')}}"
|
preset_mode: "{{state_attr('climate.thermostat','preset_mode')}}"
|
||||||
climate_mode_mode: "{{state_attr('climate.thermostat','climate_mode')}}"
|
climate_mode_mode: "{{state_attr('climate.thermostat','climate_mode')}}"
|
||||||
|
|
||||||
- name: HVAC Fan Min On Time
|
- name: HVAC Fan Min On Time
|
||||||
unique_id: templatesensor_hvac_fan_min_on_time
|
unique_id: templatesensor_hvac_fan_min_on_time
|
||||||
state: "{{state_attr('climate.thermostat','fan_min_on_time')}}"
|
state: "{{state_attr('climate.thermostat','fan_min_on_time')}}"
|
||||||
availability: "{{ (states('climate.thermostat') not in ['unkown', 'unavailable']) }}"
|
availability: "{{ (states('climate.thermostat') not in ['unknown', 'unavailable']) }}"
|
||||||
device_class: duration
|
device_class: duration
|
||||||
unit_of_measurement: min
|
unit_of_measurement: min
|
||||||
|
|||||||
@@ -43,183 +43,182 @@ utility_meter:
|
|||||||
|
|
||||||
template:
|
template:
|
||||||
- sensor:
|
- sensor:
|
||||||
|
- unique_id: templatebinarysensor.hourly_energy_non_summer_cost
|
||||||
|
name: Hourly Energy Non-Summer Total Cost
|
||||||
|
device_class: monetary
|
||||||
|
state_class: total
|
||||||
|
unit_of_measurement: "$"
|
||||||
|
icon: mdi:currency-usd
|
||||||
|
availability: "{{ states('sensor.hourly_energy_non_summer') not in ['unknown', 'unavailable'] and states('sensor.nonsummer_per_kwh') not in ['unknown', 'unavailable'] }}"
|
||||||
|
state: "{{ states('sensor.hourly_energy_non_summer')|float(default=0) * states('sensor.nonsummer_per_kwh')|float(default=0) }}"
|
||||||
|
|
||||||
- unique_id: templatebinarysensor.hourly_energy_non_summer_cost
|
- unique_id: templatebinarysensor.hourly_energy_summer_peak_cost
|
||||||
name: Hourly Energy Non-Summer Total Cost
|
name: Hourly Energy Summer Peak Total Cost
|
||||||
device_class: monetary
|
device_class: monetary
|
||||||
state_class: total
|
state_class: total
|
||||||
unit_of_measurement: '$'
|
unit_of_measurement: "$"
|
||||||
icon: mdi:currency-usd
|
icon: mdi:currency-usd
|
||||||
availability: "{{ states('sensor.hourly_energy_non_summer') not in ['unkown', 'unavailable'] and states('sensor.nonsummer_per_kwh') not in ['unkown', 'unavailable'] }}"
|
availability: "{{ states('sensor.hourly_energy_summer_peak') not in ['unknown', 'unavailable'] and states('sensor.summerpeak_per_kwh') not in ['unknown', 'unavailable'] }}"
|
||||||
state: "{{ states('sensor.hourly_energy_non_summer')|float(default=0) * states('sensor.nonsummer_per_kwh')|float(default=0) }}"
|
state: "{{ states('sensor.hourly_energy_summer_peak')|float(default=0) * states('sensor.summerpeak_per_kwh')|float(default=0) }}"
|
||||||
|
|
||||||
- unique_id: templatebinarysensor.hourly_energy_summer_peak_cost
|
- unique_id: templatebinarysensor.hourly_energy_summer_non_peak_cost
|
||||||
name: Hourly Energy Summer Peak Total Cost
|
name: Hourly Energy Summer Non-Peak Total Cost
|
||||||
device_class: monetary
|
device_class: monetary
|
||||||
state_class: total
|
state_class: total
|
||||||
unit_of_measurement: '$'
|
unit_of_measurement: "$"
|
||||||
icon: mdi:currency-usd
|
icon: mdi:currency-usd
|
||||||
availability: "{{ states('sensor.hourly_energy_summer_peak') not in ['unkown', 'unavailable'] and states('sensor.summerpeak_per_kwh') not in ['unkown', 'unavailable'] }}"
|
availability: "{{ states('sensor.hourly_energy_summer_non_peak') not in ['unknown', 'unavailable'] and states('sensor.summernonpeak_per_kwh') not in ['unknown', 'unavailable'] }}"
|
||||||
state: "{{ states('sensor.hourly_energy_summer_peak')|float(default=0) * states('sensor.summerpeak_per_kwh')|float(default=0) }}"
|
state: "{{ states('sensor.hourly_energy_summer_non_peak')|float(default=0) * states('sensor.summernonpeak_per_kwh')|float(default=0) }}"
|
||||||
|
|
||||||
- unique_id: templatebinarysensor.hourly_energy_summer_non_peak_cost
|
- unique_id: templatebinarysensor.daily_energy_non_summer_cost
|
||||||
name: Hourly Energy Summer Non-Peak Total Cost
|
name: Daily Energy Non-Summer Total Cost
|
||||||
device_class: monetary
|
device_class: monetary
|
||||||
state_class: total
|
state_class: total
|
||||||
unit_of_measurement: '$'
|
unit_of_measurement: "$"
|
||||||
icon: mdi:currency-usd
|
icon: mdi:currency-usd
|
||||||
availability: "{{ states('sensor.hourly_energy_summer_non_peak') not in ['unkown', 'unavailable'] and states('sensor.summernonpeak_per_kwh') not in ['unkown', 'unavailable'] }}"
|
availability: "{{ states('sensor.daily_energy_non_summer') not in ['unknown', 'unavailable'] and states('sensor.nonsummer_per_kwh') not in ['unknown', 'unavailable'] }}"
|
||||||
state: "{{ states('sensor.hourly_energy_summer_non_peak')|float(default=0) * states('sensor.summernonpeak_per_kwh')|float(default=0) }}"
|
state: "{{ states('sensor.daily_energy_non_summer')|float(default=0) * states('sensor.nonsummer_per_kwh')|float(default=0) }}"
|
||||||
|
|
||||||
- unique_id: templatebinarysensor.daily_energy_non_summer_cost
|
- unique_id: templatebinarysensor.daily_energy_summer_peak_cost
|
||||||
name: Daily Energy Non-Summer Total Cost
|
name: Daily Energy Summer Peak Total Cost
|
||||||
device_class: monetary
|
device_class: monetary
|
||||||
state_class: total
|
state_class: total
|
||||||
unit_of_measurement: '$'
|
unit_of_measurement: "$"
|
||||||
icon: mdi:currency-usd
|
icon: mdi:currency-usd
|
||||||
availability: "{{ states('sensor.daily_energy_non_summer') not in ['unkown', 'unavailable'] and states('sensor.nonsummer_per_kwh') not in ['unkown', 'unavailable'] }}"
|
availability: "{{ states('sensor.daily_energy_summer_peak') not in ['unknown', 'unavailable'] and states('sensor.summerpeak_per_kwh') not in ['unknown', 'unavailable'] }}"
|
||||||
state: "{{ states('sensor.daily_energy_non_summer')|float(default=0) * states('sensor.nonsummer_per_kwh')|float(default=0) }}"
|
state: "{{ states('sensor.daily_energy_summer_peak')|float(default=0) * states('sensor.summerpeak_per_kwh')|float(default=0) }}"
|
||||||
|
|
||||||
- unique_id: templatebinarysensor.daily_energy_summer_peak_cost
|
- unique_id: templatebinarysensor.daily_energy_summer_non_peak_cost
|
||||||
name: Daily Energy Summer Peak Total Cost
|
name: Daily Energy Summer Non-Peak Total Cost
|
||||||
device_class: monetary
|
device_class: monetary
|
||||||
state_class: total
|
state_class: total
|
||||||
unit_of_measurement: '$'
|
unit_of_measurement: "$"
|
||||||
icon: mdi:currency-usd
|
icon: mdi:currency-usd
|
||||||
availability: "{{ states('sensor.daily_energy_summer_peak') not in ['unkown', 'unavailable'] and states('sensor.summerpeak_per_kwh') not in ['unkown', 'unavailable'] }}"
|
availability: "{{ states('sensor.daily_energy_summer_non_peak') not in ['unknown', 'unavailable'] and states('sensor.summernonpeak_per_kwh') not in ['unknown', 'unavailable'] }}"
|
||||||
state: "{{ states('sensor.daily_energy_summer_peak')|float(default=0) * states('sensor.summerpeak_per_kwh')|float(default=0) }}"
|
state: "{{ states('sensor.daily_energy_summer_non_peak')|float(default=0) * states('sensor.summernonpeak_per_kwh')|float(default=0) }}"
|
||||||
|
|
||||||
- unique_id: templatebinarysensor.daily_energy_summer_non_peak_cost
|
- unique_id: templatebinarysensor.weekly_energy_non_summer_cost
|
||||||
name: Daily Energy Summer Non-Peak Total Cost
|
name: Weekly Energy Non-Summer Total Cost
|
||||||
device_class: monetary
|
device_class: monetary
|
||||||
state_class: total
|
state_class: total
|
||||||
unit_of_measurement: '$'
|
unit_of_measurement: "$"
|
||||||
icon: mdi:currency-usd
|
icon: mdi:currency-usd
|
||||||
availability: "{{ states('sensor.daily_energy_summer_non_peak') not in ['unkown', 'unavailable'] and states('sensor.summernonpeak_per_kwh') not in ['unkown', 'unavailable'] }}"
|
availability: "{{ states('sensor.weekly_energy_non_summer') not in ['unknown', 'unavailable'] and states('sensor.nonsummer_per_kwh') not in ['unknown', 'unavailable'] }}"
|
||||||
state: "{{ states('sensor.daily_energy_summer_non_peak')|float(default=0) * states('sensor.summernonpeak_per_kwh')|float(default=0) }}"
|
state: "{{ states('sensor.weekly_energy_non_summer')|float(default=0) * states('sensor.nonsummer_per_kwh')|float(default=0) }}"
|
||||||
|
|
||||||
- unique_id: templatebinarysensor.weekly_energy_non_summer_cost
|
- unique_id: templatebinarysensor.weekly_energy_summer_peak_cost
|
||||||
name: Weekly Energy Non-Summer Total Cost
|
name: Weekly Energy Summer Peak Total Cost
|
||||||
device_class: monetary
|
device_class: monetary
|
||||||
state_class: total
|
state_class: total
|
||||||
unit_of_measurement: '$'
|
unit_of_measurement: "$"
|
||||||
icon: mdi:currency-usd
|
icon: mdi:currency-usd
|
||||||
availability: "{{ states('sensor.weekly_energy_non_summer') not in ['unkown', 'unavailable'] and states('sensor.nonsummer_per_kwh') not in ['unkown', 'unavailable'] }}"
|
availability: "{{ states('sensor.weekly_energy_summer_peak') not in ['unknown', 'unavailable'] and states('sensor.summerpeak_per_kwh') not in ['unknown', 'unavailable'] }}"
|
||||||
state: "{{ states('sensor.weekly_energy_non_summer')|float(default=0) * states('sensor.nonsummer_per_kwh')|float(default=0) }}"
|
state: "{{ states('sensor.weekly_energy_summer_peak')|float(default=0) * states('sensor.summerpeak_per_kwh')|float(default=0) }}"
|
||||||
|
|
||||||
- unique_id: templatebinarysensor.weekly_energy_summer_peak_cost
|
- unique_id: templatebinarysensor.weekly_energy_summer_non_peak_cost
|
||||||
name: Weekly Energy Summer Peak Total Cost
|
name: Weekly Energy Summer Non-Peak Total Cost
|
||||||
device_class: monetary
|
device_class: monetary
|
||||||
state_class: total
|
state_class: total
|
||||||
unit_of_measurement: '$'
|
unit_of_measurement: "$"
|
||||||
icon: mdi:currency-usd
|
icon: mdi:currency-usd
|
||||||
availability: "{{ states('sensor.weekly_energy_summer_peak') not in ['unkown', 'unavailable'] and states('sensor.summerpeak_per_kwh') not in ['unkown', 'unavailable'] }}"
|
availability: "{{ states('sensor.weekly_energy_summer_non_peak') not in ['unknown', 'unavailable'] and states('sensor.summernonpeak_per_kwh') not in ['unknown', 'unavailable'] }}"
|
||||||
state: "{{ states('sensor.weekly_energy_summer_peak')|float(default=0) * states('sensor.summerpeak_per_kwh')|float(default=0) }}"
|
state: "{{ states('sensor.weekly_energy_summer_non_peak')|float(default=0) * states('sensor.summernonpeak_per_kwh')|float(default=0) }}"
|
||||||
|
|
||||||
- unique_id: templatebinarysensor.weekly_energy_summer_non_peak_cost
|
- unique_id: templatebinarysensor.monthly_energy_non_summer_cost
|
||||||
name: Weekly Energy Summer Non-Peak Total Cost
|
name: Monthly Energy Non-Summer Total Cost
|
||||||
device_class: monetary
|
device_class: monetary
|
||||||
state_class: total
|
state_class: total
|
||||||
unit_of_measurement: '$'
|
unit_of_measurement: "$"
|
||||||
icon: mdi:currency-usd
|
icon: mdi:currency-usd
|
||||||
availability: "{{ states('sensor.weekly_energy_summer_non_peak') not in ['unkown', 'unavailable'] and states('sensor.summernonpeak_per_kwh') not in ['unkown', 'unavailable'] }}"
|
availability: "{{ states('sensor.monthly_energy_non_summer') not in ['unknown', 'unavailable'] and states('sensor.nonsummer_per_kwh') not in ['unknown', 'unavailable'] }}"
|
||||||
state: "{{ states('sensor.weekly_energy_summer_non_peak')|float(default=0) * states('sensor.summernonpeak_per_kwh')|float(default=0) }}"
|
state: "{{ states('sensor.monthly_energy_non_summer')|float(default=0) * states('sensor.nonsummer_per_kwh')|float(default=0) }}"
|
||||||
|
|
||||||
- unique_id: templatebinarysensor.monthly_energy_non_summer_cost
|
- unique_id: templatebinarysensor.monthly_energy_summer_peak_cost
|
||||||
name: Monthly Energy Non-Summer Total Cost
|
name: Monthly Energy Summer Peak Total Cost
|
||||||
device_class: monetary
|
device_class: monetary
|
||||||
state_class: total
|
state_class: total
|
||||||
unit_of_measurement: '$'
|
unit_of_measurement: "$"
|
||||||
icon: mdi:currency-usd
|
icon: mdi:currency-usd
|
||||||
availability: "{{ states('sensor.monthly_energy_non_summer') not in ['unkown', 'unavailable'] and states('sensor.nonsummer_per_kwh') not in ['unkown', 'unavailable'] }}"
|
availability: "{{ states('sensor.monthly_energy_summer_peak') not in ['unknown', 'unavailable'] and states('sensor.summerpeak_per_kwh') not in ['unknown', 'unavailable'] }}"
|
||||||
state: "{{ states('sensor.monthly_energy_non_summer')|float(default=0) * states('sensor.nonsummer_per_kwh')|float(default=0) }}"
|
state: "{{ states('sensor.monthly_energy_summer_peak')|float(default=0) * states('sensor.summerpeak_per_kwh')|float(default=0) }}"
|
||||||
|
|
||||||
- unique_id: templatebinarysensor.monthly_energy_summer_peak_cost
|
- unique_id: templatebinarysensor.monthly_energy_summer_non_peak_cost
|
||||||
name: Monthly Energy Summer Peak Total Cost
|
name: Monthly Energy Summer Non-Peak Total Cost
|
||||||
device_class: monetary
|
device_class: monetary
|
||||||
state_class: total
|
state_class: total
|
||||||
unit_of_measurement: '$'
|
unit_of_measurement: "$"
|
||||||
icon: mdi:currency-usd
|
icon: mdi:currency-usd
|
||||||
availability: "{{ states('sensor.monthly_energy_summer_peak') not in ['unkown', 'unavailable'] and states('sensor.summerpeak_per_kwh') not in ['unkown', 'unavailable'] }}"
|
availability: "{{ states('sensor.monthly_energy_summer_non_peak') not in ['unknown', 'unavailable'] and states('sensor.summernonpeak_per_kwh') not in ['unknown', 'unavailable'] }}"
|
||||||
state: "{{ states('sensor.monthly_energy_summer_peak')|float(default=0) * states('sensor.summerpeak_per_kwh')|float(default=0) }}"
|
state: "{{ states('sensor.monthly_energy_summer_non_peak')|float(default=0) * states('sensor.summernonpeak_per_kwh')|float(default=0) }}"
|
||||||
|
|
||||||
- unique_id: templatebinarysensor.monthly_energy_summer_non_peak_cost
|
- unique_id: templatebinarysensor.hourly_energy_total_cost
|
||||||
name: Monthly Energy Summer Non-Peak Total Cost
|
name: Hourly Energy Total Cost
|
||||||
device_class: monetary
|
device_class: monetary
|
||||||
state_class: total
|
state_class: total
|
||||||
unit_of_measurement: '$'
|
unit_of_measurement: "$"
|
||||||
icon: mdi:currency-usd
|
icon: mdi:currency-usd
|
||||||
availability: "{{ states('sensor.monthly_energy_summer_non_peak') not in ['unkown', 'unavailable'] and states('sensor.summernonpeak_per_kwh') not in ['unkown', 'unavailable'] }}"
|
availability: "{{ states('sensor.hourly_energy_non_summer_total_cost') not in ['unknown', 'unavailable'] and states('sensor.hourly_energy_summer_non_peak_total_cost') not in ['unknown', 'unavailable'] and states('sensor.hourly_energy_summer_peak_total_cost') not in ['unknown', 'unavailable'] }}"
|
||||||
state: "{{ states('sensor.monthly_energy_summer_non_peak')|float(default=0) * states('sensor.summernonpeak_per_kwh')|float(default=0) }}"
|
state: "{{ states('sensor.hourly_energy_non_summer_total_cost')|float(default=0) + states('sensor.hourly_energy_summer_non_peak_total_cost')|float(default=0) + states('sensor.hourly_energy_summer_peak_total_cost')|float(default=0) }}"
|
||||||
|
|
||||||
- unique_id: templatebinarysensor.hourly_energy_total_cost
|
- unique_id: templatebinarysensor.daily_energy_total_cost
|
||||||
name: Hourly Energy Total Cost
|
name: Daily Energy Total Cost
|
||||||
device_class: monetary
|
device_class: monetary
|
||||||
state_class: total
|
state_class: total
|
||||||
unit_of_measurement: '$'
|
unit_of_measurement: "$"
|
||||||
icon: mdi:currency-usd
|
icon: mdi:currency-usd
|
||||||
availability: "{{ states('sensor.hourly_energy_non_summer_total_cost') not in ['unkown', 'unavailable'] and states('sensor.hourly_energy_summer_non_peak_total_cost') not in ['unkown', 'unavailable'] and states('sensor.hourly_energy_summer_peak_total_cost') not in ['unkown', 'unavailable'] }}"
|
availability: "{{ states('sensor.daily_energy_non_summer_total_cost') not in ['unknown', 'unavailable'] and states('sensor.daily_energy_summer_non_peak_total_cost') not in ['unknown', 'unavailable'] and states('sensor.daily_energy_summer_peak_total_cost') not in ['unknown', 'unavailable'] }}"
|
||||||
state: "{{ states('sensor.hourly_energy_non_summer_total_cost')|float(default=0) + states('sensor.hourly_energy_summer_non_peak_total_cost')|float(default=0) + states('sensor.hourly_energy_summer_peak_total_cost')|float(default=0) }}"
|
state: "{{ states('sensor.daily_energy_non_summer_total_cost')|float(default=0) + states('sensor.daily_energy_summer_non_peak_total_cost')|float(default=0) + states('sensor.daily_energy_summer_peak_total_cost')|float(default=0) }}"
|
||||||
|
|
||||||
- unique_id: templatebinarysensor.daily_energy_total_cost
|
- unique_id: templatebinarysensor.weekly_energy_total_cost
|
||||||
name: Daily Energy Total Cost
|
name: Weekly Energy Total Cost
|
||||||
device_class: monetary
|
device_class: monetary
|
||||||
state_class: total
|
state_class: total
|
||||||
unit_of_measurement: '$'
|
unit_of_measurement: "$"
|
||||||
icon: mdi:currency-usd
|
icon: mdi:currency-usd
|
||||||
availability: "{{ states('sensor.daily_energy_non_summer_total_cost') not in ['unkown', 'unavailable'] and states('sensor.daily_energy_summer_non_peak_total_cost') not in ['unkown', 'unavailable'] and states('sensor.daily_energy_summer_peak_total_cost') not in ['unkown', 'unavailable'] }}"
|
availability: "{{ states('sensor.weekly_energy_non_summer_total_cost') not in ['unknown', 'unavailable'] and states('sensor.weekly_energy_summer_non_peak_total_cost') not in ['unknown', 'unavailable'] and states('sensor.weekly_energy_summer_peak_total_cost') not in ['unknown', 'unavailable'] }}"
|
||||||
state: "{{ states('sensor.daily_energy_non_summer_total_cost')|float(default=0) + states('sensor.daily_energy_summer_non_peak_total_cost')|float(default=0) + states('sensor.daily_energy_summer_peak_total_cost')|float(default=0) }}"
|
state: "{{ states('sensor.weekly_energy_non_summer_total_cost')|float(default=0) + states('sensor.weekly_energy_summer_non_peak_total_cost')|float(default=0) + states('sensor.weekly_energy_summer_peak_total_cost')|float(default=0) }}"
|
||||||
|
|
||||||
- unique_id: templatebinarysensor.weekly_energy_total_cost
|
- unique_id: templatebinarysensor.monthly_energy_total_cost
|
||||||
name: Weekly Energy Total Cost
|
name: Monthly Energy Total Cost
|
||||||
device_class: monetary
|
device_class: monetary
|
||||||
state_class: total
|
state_class: total
|
||||||
unit_of_measurement: '$'
|
unit_of_measurement: "$"
|
||||||
icon: mdi:currency-usd
|
icon: mdi:currency-usd
|
||||||
availability: "{{ states('sensor.weekly_energy_non_summer_total_cost') not in ['unkown', 'unavailable'] and states('sensor.weekly_energy_summer_non_peak_total_cost') not in ['unkown', 'unavailable'] and states('sensor.weekly_energy_summer_peak_total_cost') not in ['unkown', 'unavailable'] }}"
|
availability: "{{ states('sensor.monthly_energy_non_summer_total_cost') not in ['unknown', 'unavailable'] and states('sensor.monthly_energy_summer_non_peak_total_cost') not in ['unknown', 'unavailable'] and states('sensor.monthly_energy_summer_peak_total_cost') not in ['unknown', 'unavailable'] }}"
|
||||||
state: "{{ states('sensor.weekly_energy_non_summer_total_cost')|float(default=0) + states('sensor.weekly_energy_summer_non_peak_total_cost')|float(default=0) + states('sensor.weekly_energy_summer_peak_total_cost')|float(default=0) }}"
|
state: "{{ states('sensor.monthly_energy_non_summer_total_cost')|float(default=0) + states('sensor.monthly_energy_summer_non_peak_total_cost')|float(default=0) + states('sensor.monthly_energy_summer_peak_total_cost')|float(default=0) }}"
|
||||||
|
|
||||||
- unique_id: templatebinarysensor.monthly_energy_total_cost
|
- unique_id: templatebinarysensor.hourly_energy_total
|
||||||
name: Monthly Energy Total Cost
|
name: Hourly Energy Total
|
||||||
device_class: monetary
|
device_class: energy
|
||||||
state_class: total
|
state_class: total
|
||||||
unit_of_measurement: '$'
|
unit_of_measurement: kWh
|
||||||
icon: mdi:currency-usd
|
icon: mdi:flash
|
||||||
availability: "{{ states('sensor.monthly_energy_non_summer_total_cost') not in ['unkown', 'unavailable'] and states('sensor.monthly_energy_summer_non_peak_total_cost') not in ['unkown', 'unavailable'] and states('sensor.monthly_energy_summer_peak_total_cost') not in ['unkown', 'unavailable'] }}"
|
availability: "{{ states('sensor.hourly_energy_non_summer') not in ['unknown', 'unavailable'] and states('sensor.hourly_energy_summer_non_peak') not in ['unknown', 'unavailable'] and states('sensor.hourly_energy_summer_peak') not in ['unknown', 'unavailable'] }}"
|
||||||
state: "{{ states('sensor.monthly_energy_non_summer_total_cost')|float(default=0) + states('sensor.monthly_energy_summer_non_peak_total_cost')|float(default=0) + states('sensor.monthly_energy_summer_peak_total_cost')|float(default=0) }}"
|
state: "{{ states('sensor.hourly_energy_non_summer')|float(default=0) + states('sensor.hourly_energy_summer_non_peak')|float(default=0) + states('sensor.hourly_energy_summer_peak')|float(default=0) }}"
|
||||||
|
|
||||||
- unique_id: templatebinarysensor.hourly_energy_total
|
- unique_id: templatebinarysensor.daily_energy_total
|
||||||
name: Hourly Energy Total
|
name: Daily Energy Total
|
||||||
device_class: energy
|
device_class: energy
|
||||||
state_class: total
|
state_class: total
|
||||||
unit_of_measurement: kWh
|
unit_of_measurement: kWh
|
||||||
icon: mdi:flash
|
icon: mdi:flash
|
||||||
availability: "{{ states('sensor.hourly_energy_non_summer') not in ['unkown', 'unavailable'] and states('sensor.hourly_energy_summer_non_peak') not in ['unkown', 'unavailable'] and states('sensor.hourly_energy_summer_peak') not in ['unkown', 'unavailable'] }}"
|
availability: "{{ states('sensor.daily_energy_non_summer') not in ['unknown', 'unavailable'] and states('sensor.daily_energy_summer_non_peak') not in ['unknown', 'unavailable'] and states('sensor.daily_energy_summer_peak') not in ['unknown', 'unavailable'] }}"
|
||||||
state: "{{ states('sensor.hourly_energy_non_summer')|float(default=0) + states('sensor.hourly_energy_summer_non_peak')|float(default=0) + states('sensor.hourly_energy_summer_peak')|float(default=0) }}"
|
state: "{{ states('sensor.daily_energy_non_summer')|float(default=0) + states('sensor.daily_energy_summer_non_peak')|float(default=0) + states('sensor.daily_energy_summer_peak')|float(default=0) }}"
|
||||||
|
|
||||||
- unique_id: templatebinarysensor.daily_energy_total
|
- unique_id: templatebinarysensor.weekly_energy_total
|
||||||
name: Daily Energy Total
|
name: Weekly Energy Total
|
||||||
device_class: energy
|
device_class: energy
|
||||||
state_class: total
|
state_class: total
|
||||||
unit_of_measurement: kWh
|
unit_of_measurement: kWh
|
||||||
icon: mdi:flash
|
icon: mdi:flash
|
||||||
availability: "{{ states('sensor.daily_energy_non_summer') not in ['unkown', 'unavailable'] and states('sensor.daily_energy_summer_non_peak') not in ['unkown', 'unavailable'] and states('sensor.daily_energy_summer_peak') not in ['unkown', 'unavailable'] }}"
|
availability: "{{ states('sensor.weekly_energy_non_summer') not in ['unknown', 'unavailable'] and states('sensor.weekly_energy_summer_non_peak') not in ['unknown', 'unavailable'] and states('sensor.weekly_energy_summer_peak') not in ['unknown', 'unavailable'] }}"
|
||||||
state: "{{ states('sensor.daily_energy_non_summer')|float(default=0) + states('sensor.daily_energy_summer_non_peak')|float(default=0) + states('sensor.daily_energy_summer_peak')|float(default=0) }}"
|
state: "{{ states('sensor.weekly_energy_non_summer')|float(default=0) + states('sensor.weekly_energy_summer_non_peak')|float(default=0) + states('sensor.weekly_energy_summer_peak')|float(default=0) }}"
|
||||||
|
|
||||||
- unique_id: templatebinarysensor.weekly_energy_total
|
- unique_id: templatebinarysensor.monthly_energy_total
|
||||||
name: Weekly Energy Total
|
name: Monthly Energy Total
|
||||||
device_class: energy
|
device_class: energy
|
||||||
state_class: total
|
state_class: total
|
||||||
unit_of_measurement: kWh
|
unit_of_measurement: kWh
|
||||||
icon: mdi:flash
|
icon: mdi:flash
|
||||||
availability: "{{ states('sensor.weekly_energy_non_summer') not in ['unkown', 'unavailable'] and states('sensor.weekly_energy_summer_non_peak') not in ['unkown', 'unavailable'] and states('sensor.weekly_energy_summer_peak') not in ['unkown', 'unavailable'] }}"
|
availability: "{{ states('sensor.monthly_energy_non_summer') not in ['unknown', 'unavailable'] and states('sensor.monthly_energy_summer_non_peak') not in ['unknown', 'unavailable'] and states('sensor.monthly_energy_summer_peak') not in ['unknown', 'unavailable'] }}"
|
||||||
state: "{{ states('sensor.weekly_energy_non_summer')|float(default=0) + states('sensor.weekly_energy_summer_non_peak')|float(default=0) + states('sensor.weekly_energy_summer_peak')|float(default=0) }}"
|
state: "{{ states('sensor.monthly_energy_non_summer')|float(default=0) + states('sensor.monthly_energy_summer_non_peak')|float(default=0) + states('sensor.monthly_energy_summer_peak')|float(default=0) }}"
|
||||||
|
|
||||||
- unique_id: templatebinarysensor.monthly_energy_total
|
|
||||||
name: Monthly Energy Total
|
|
||||||
device_class: energy
|
|
||||||
state_class: total
|
|
||||||
unit_of_measurement: kWh
|
|
||||||
icon: mdi:flash
|
|
||||||
availability: "{{ states('sensor.monthly_energy_non_summer') not in ['unkown', 'unavailable'] and states('sensor.monthly_energy_summer_non_peak') not in ['unkown', 'unavailable'] and states('sensor.monthly_energy_summer_peak') not in ['unkown', 'unavailable'] }}"
|
|
||||||
state: "{{ states('sensor.monthly_energy_non_summer')|float(default=0) + states('sensor.monthly_energy_summer_non_peak')|float(default=0) + states('sensor.monthly_energy_summer_peak')|float(default=0) }}"
|
|
||||||
|
|||||||
@@ -34,14 +34,14 @@ cards:
|
|||||||
|
|
||||||
|
|
||||||
- type: weather-forecast
|
- type: weather-forecast
|
||||||
entity: weather.openweathermap_hourly
|
entity: weather.forecast_home
|
||||||
name: Next 5 Hours
|
name: Next 5 Hours
|
||||||
show_current: true
|
show_current: true
|
||||||
show_forecast: true
|
show_forecast: true
|
||||||
forecast_type: hourly
|
forecast_type: hourly
|
||||||
|
|
||||||
- type: weather-forecast
|
- type: weather-forecast
|
||||||
entity: weather.openweathermap_daily
|
entity: weather.forecast_home
|
||||||
name: Next 5 Days
|
name: Next 5 Days
|
||||||
show_current: true
|
show_current: true
|
||||||
show_forecast: true
|
show_forecast: true
|
||||||
|
|||||||
@@ -201,7 +201,7 @@ cards:
|
|||||||
Good morning, {{user}}!
|
Good morning, {{user}}!
|
||||||
{%endif%}
|
{%endif%}
|
||||||
secondary: |-
|
secondary: |-
|
||||||
Today should be {{states('sensor.openweathermap_daily_forecast_condition')}}, with a high of {{states('sensor.openweathermap_daily_forecast_temperature')|float(0)|round(0)}} and a low of {{states('sensor.openweathermap_daily_forecast_temperature_low')|float(0)|round(0)}}.
|
Today should be {{states('weather.forecast_home')}}, with a high of {{states('sensor.temphigh_today')|float(0)|round(0)}} and a low of {{states('sensor.templow_today')|float(0)|round(0)}}.
|
||||||
- type: vertical-stack
|
- type: vertical-stack
|
||||||
cards:
|
cards:
|
||||||
- type: horizontal-stack
|
- type: horizontal-stack
|
||||||
|
|||||||
@@ -1,17 +1,12 @@
|
|||||||
type: vertical-stack
|
type: vertical-stack
|
||||||
cards:
|
cards:
|
||||||
- type: conditional
|
- type: iframe
|
||||||
conditions:
|
url: >-
|
||||||
- entity: binary_sensor.precipitation_likely
|
https://embed.windy.com/embed2.html?lat=42.534&lon=-85.842&detailLat=42.439&detailLon=-85.838&width=650&height=450&zoom=9&level=surface&overlay=radar&product=radar&menu=&message=&marker=&calendar=now&pressure=&type=map&location=coordinates&detail=&metricWind=default&metricTemp=default&radarRange=-1
|
||||||
state: 'on'
|
aspect_ratio: 75%
|
||||||
card:
|
# show_state: false
|
||||||
type: iframe
|
# show_name: false
|
||||||
url: >-
|
# camera_view: live
|
||||||
https://embed.windy.com/embed2.html?lat=42.534&lon=-85.842&detailLat=42.439&detailLon=-85.838&width=650&height=450&zoom=9&level=surface&overlay=radar&product=radar&menu=&message=&marker=&calendar=now&pressure=&type=map&location=coordinates&detail=&metricWind=default&metricTemp=default&radarRange=-1
|
# type: picture-entity
|
||||||
aspect_ratio: 75%
|
# entity: camera.wunderground_radar
|
||||||
# show_state: false
|
# camera_image: camera.wunderground_radar
|
||||||
# show_name: false
|
|
||||||
# camera_view: live
|
|
||||||
# type: picture-entity
|
|
||||||
# entity: camera.wunderground_radar
|
|
||||||
# camera_image: camera.wunderground_radar
|
|
||||||
|
|||||||
+13
-13
@@ -9,7 +9,7 @@ badges:
|
|||||||
alignment: center
|
alignment: center
|
||||||
chips:
|
chips:
|
||||||
- type: weather
|
- type: weather
|
||||||
entity: weather.openweathermap_daily
|
entity: weather.forecast_home
|
||||||
show_conditions: true
|
show_conditions: true
|
||||||
show_temperature: true
|
show_temperature: true
|
||||||
tap_action:
|
tap_action:
|
||||||
@@ -774,16 +774,16 @@ badges:
|
|||||||
- "extremely_uncomfortable"
|
- "extremely_uncomfortable"
|
||||||
- "severely_high"
|
- "severely_high"
|
||||||
|
|
||||||
- type: entity-filter
|
# - type: entity-filter
|
||||||
entities:
|
# entities:
|
||||||
- entity: sensor.openweathermap_hourly_forecast_precipitation_probability
|
# - entity: sensor.openweathermap_hourly_forecast_precipitation_probability
|
||||||
name: Precip %
|
# name: Precip %
|
||||||
tap_action:
|
# tap_action:
|
||||||
action: navigate
|
# action: navigate
|
||||||
navigation_path: /details-yml/weather
|
# navigation_path: /details-yml/weather
|
||||||
state_filter:
|
# state_filter:
|
||||||
- operator: ">"
|
# - operator: ">"
|
||||||
value: 30
|
# value: 30
|
||||||
|
|
||||||
- type: entity-filter
|
- type: entity-filter
|
||||||
entities:
|
entities:
|
||||||
@@ -1524,13 +1524,13 @@ cards:
|
|||||||
camera_entity: camera.mail_usps_camera
|
camera_entity: camera.mail_usps_camera
|
||||||
|
|
||||||
- type: custom:hourly-weather
|
- type: custom:hourly-weather
|
||||||
entity: weather.openweathermap_hourly
|
entity: weather.forecast_home
|
||||||
icons: true
|
icons: true
|
||||||
name: ""
|
name: ""
|
||||||
hide_hours: false
|
hide_hours: false
|
||||||
|
|
||||||
- type: custom:clock-weather-card
|
- type: custom:clock-weather-card
|
||||||
entity: weather.openweathermap_daily
|
entity: weather.forecast_home
|
||||||
weather_icon_type: fill
|
weather_icon_type: fill
|
||||||
time_format: 12
|
time_format: 12
|
||||||
date_pattern: DDDD
|
date_pattern: DDDD
|
||||||
|
|||||||
Reference in New Issue
Block a user