mirror of
https://github.com/CeeWeasel/fresh-home.git
synced 2026-08-09 18:40:14 -04:00
spelling mistakes mostly
This commit is contained in:
@@ -13,7 +13,7 @@ trigger:
|
||||
- input_boolean.home_occupied
|
||||
- binary_sensor.front_room_occupied
|
||||
to: 'off'
|
||||
for: '00:05:00'
|
||||
for: '00:15:00'
|
||||
|
||||
# - platform: time_pattern
|
||||
# minutes: "/5"
|
||||
|
||||
@@ -179,7 +179,7 @@ sensors:
|
||||
# delay_off:
|
||||
# seconds: 30
|
||||
# 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) }}"
|
||||
# attribute_templates:
|
||||
# model_number: 'WF45R6100AW/US'
|
||||
@@ -187,14 +187,13 @@ sensors:
|
||||
# power: "{{ states('sensor.pm_laundry_plug_w') | float(default=0)}}"
|
||||
# target: "{{ states('input_number.washing_machine_on') | float(default=0)}}"
|
||||
|
||||
|
||||
# tumble_dryer:
|
||||
# unique_id: binary-sensor-tumble-dryer
|
||||
# friendly_name: Tumble Dryer
|
||||
# delay_off:
|
||||
# seconds: 30
|
||||
# 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) }}"
|
||||
# attribute_templates:
|
||||
# model_number: 'DVE45R6100W/A3'
|
||||
@@ -210,7 +209,7 @@ sensors:
|
||||
# delay_off:
|
||||
# seconds: 30
|
||||
# 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) }}"
|
||||
# attribute_templates:
|
||||
# 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) }}"
|
||||
icon_template: mdi:stove
|
||||
attribute_templates:
|
||||
model_number: 'WFE505W0JS3'
|
||||
serial_number: 'RB4659869'
|
||||
model_number: "WFE505W0JS3"
|
||||
serial_number: "RB4659869"
|
||||
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)) }}"
|
||||
|
||||
|
||||
microwave:
|
||||
unique_id: binary-sensor-microwave
|
||||
friendly_name: Microwave
|
||||
value_template: "{{ states('sensor.pm_microwave_plug_w') | float(default=0) > states('input_number.microwave_on') | float(default=0) }}"
|
||||
icon_template: mdi:microwave
|
||||
attribute_templates:
|
||||
model_number: 'testmodel'
|
||||
serial_number: 'testserial'
|
||||
model_number: "testmodel"
|
||||
serial_number: "testserial"
|
||||
power: "{{ states('sensor.pm_microwave_plug_w') | float(default=0)}}"
|
||||
|
||||
furnace:
|
||||
@@ -248,8 +246,8 @@ sensors:
|
||||
value_template: "{{ states('sensor.pm_furnace_w') | float(default=0) > states('input_number.furnace_on') | float(default=0) }}"
|
||||
icon_template: mdi:radiator
|
||||
attribute_templates:
|
||||
model_number: 'testmodel'
|
||||
serial_number: 'testserial'
|
||||
model_number: "testmodel"
|
||||
serial_number: "testserial"
|
||||
power: "{{ states('sensor.pm_furnace_w') | float(default=0)}}"
|
||||
|
||||
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) }}"
|
||||
icon_template: mdi:air-filter
|
||||
attribute_templates:
|
||||
model_number: 'testmodel'
|
||||
serial_number: 'testserial'
|
||||
model_number: "testmodel"
|
||||
serial_number: "testserial"
|
||||
power: "{{ states('sensor.pm_heat_pump_w') | float(default=0)}}"
|
||||
|
||||
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) }}"
|
||||
icon_template: mdi:pump
|
||||
attribute_templates:
|
||||
model_number: 'testmodel'
|
||||
serial_number: 'testserial'
|
||||
model_number: "testmodel"
|
||||
serial_number: "testserial"
|
||||
power: "{{ states('sensor.pm_sump_pump_plug_w') | float(default=0)}}"
|
||||
|
||||
something_open_hvac_on:
|
||||
@@ -371,7 +369,6 @@ sensors:
|
||||
{{ 'false' }}
|
||||
{% endif %}
|
||||
|
||||
|
||||
# Moved to temperature_management.yaml
|
||||
# Is it more than 5 degrees warmer outside?
|
||||
# warmer_outside:
|
||||
@@ -396,7 +393,6 @@ sensors:
|
||||
# {{ 'false' }}
|
||||
# {% endif %}
|
||||
|
||||
|
||||
is_dark:
|
||||
unique_id: templatebinarysensor.is_dark
|
||||
friendly_name: Is Dark
|
||||
@@ -414,7 +410,7 @@ sensors:
|
||||
|
||||
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: >-
|
||||
{% if is_state('cover.garage_door', 'open') %}
|
||||
{% if is_state('input_boolean.home_occupied', 'off') %}
|
||||
@@ -704,7 +700,7 @@ sensors:
|
||||
|
||||
take_trash_out:
|
||||
unique_id: templatesensor.take_trash_out
|
||||
friendly_name: 'Take Trash Out'
|
||||
friendly_name: "Take Trash Out"
|
||||
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') }}"
|
||||
|
||||
|
||||
@@ -5,10 +5,10 @@ template:
|
||||
icon: mdi:dishwasher
|
||||
delay_on: "{{states('input_number.dishwasher_delay_on') | 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:
|
||||
model_number: 'MDB6769PAS1'
|
||||
serial_number: 'F24407234'
|
||||
model_number: "MDB6769PAS1"
|
||||
serial_number: "F24407234"
|
||||
power: "{{ states('sensor.pm_dishwasher_w') | 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) }}"
|
||||
@@ -33,8 +33,8 @@ template:
|
||||
mdi:dishwasher
|
||||
{% endif %}
|
||||
attributes:
|
||||
model_number: 'MDB6769PAS1'
|
||||
serial_number: 'F24407234'
|
||||
model_number: "MDB6769PAS1"
|
||||
serial_number: "F24407234"
|
||||
power: "{{ states('sensor.pm_dishwasher_w') | float(default=0)}}"
|
||||
target: "{{ states('input_number.dishwasher_on') | float(default=0)}}"
|
||||
|
||||
@@ -46,7 +46,7 @@ input_boolean:
|
||||
input_number:
|
||||
dishwasher_on:
|
||||
# was 4
|
||||
name: 'Dishwasher On'
|
||||
name: "Dishwasher On"
|
||||
icon: mdi:dishwasher
|
||||
min: 0
|
||||
max: 1000
|
||||
@@ -55,7 +55,7 @@ input_number:
|
||||
unit_of_measurement: W
|
||||
|
||||
dishwasher_off:
|
||||
name: 'Dishwasher Off'
|
||||
name: "Dishwasher Off"
|
||||
icon: mdi:dishwasher-off
|
||||
min: 0
|
||||
max: 1000
|
||||
@@ -64,7 +64,7 @@ input_number:
|
||||
unit_of_measurement: W
|
||||
|
||||
dishwasher_delay_on:
|
||||
name: 'Dishwasher Delay On'
|
||||
name: "Dishwasher Delay On"
|
||||
icon: mdi:clock
|
||||
min: 0
|
||||
max: 900
|
||||
@@ -73,7 +73,7 @@ input_number:
|
||||
|
||||
dishwasher_delay_off:
|
||||
# was 600
|
||||
name: 'Dishwasher Delay Off'
|
||||
name: "Dishwasher Delay Off"
|
||||
icon: mdi:clock-alert
|
||||
min: 0
|
||||
max: 900
|
||||
@@ -87,20 +87,20 @@ automation:
|
||||
- id: dishwasher_off
|
||||
platform: state
|
||||
entity_id: binary_sensor.dishwasher
|
||||
from: 'on'
|
||||
to: 'off'
|
||||
from: "on"
|
||||
to: "off"
|
||||
|
||||
- id: dishwasher_on
|
||||
platform: state
|
||||
entity_id: binary_sensor.dishwasher
|
||||
from: 'off'
|
||||
to: 'on'
|
||||
from: "off"
|
||||
to: "on"
|
||||
|
||||
- id: door_open
|
||||
platform: state
|
||||
entity_id: binary_sensor.dishwasher_door_contact
|
||||
from: 'off'
|
||||
to: 'on'
|
||||
from: "off"
|
||||
to: "on"
|
||||
for:
|
||||
seconds: 5
|
||||
|
||||
@@ -114,7 +114,7 @@ automation:
|
||||
|
||||
- condition: state
|
||||
entity_id: input_boolean.empty_dishwasher
|
||||
state: 'on'
|
||||
state: "on"
|
||||
|
||||
sequence:
|
||||
- service: logbook.log
|
||||
@@ -134,7 +134,7 @@ automation:
|
||||
|
||||
- condition: state
|
||||
entity_id: binary_sensor.dishwasher_door_contact
|
||||
state: 'off'
|
||||
state: "off"
|
||||
|
||||
sequence:
|
||||
- service: logbook.log
|
||||
@@ -154,7 +154,7 @@ automation:
|
||||
|
||||
- condition: state
|
||||
entity_id: binary_sensor.dishwasher
|
||||
state: 'off'
|
||||
state: "off"
|
||||
|
||||
sequence:
|
||||
- service: logbook.log
|
||||
|
||||
@@ -22,10 +22,10 @@ template:
|
||||
delay_on: "{{states('input_number.tumble_dryer_delay_on') | float(default=0)}}"
|
||||
delay_off: "{{states('input_number.tumble_dryer_delay_off') | float(default=0)}}"
|
||||
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:
|
||||
model_number: 'DVE45R6100W/A3'
|
||||
serial_number: '0AY95BBM605793X'
|
||||
model_number: "DVE45R6100W/A3"
|
||||
serial_number: "0AY95BBM605793X"
|
||||
power: "{{ states('sensor.pm_dryer_w') | 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) }}"
|
||||
@@ -74,8 +74,8 @@ template:
|
||||
mdi:tumble-dryer
|
||||
{% endif %}
|
||||
attributes:
|
||||
model_number: 'DVE45R6100W/A3'
|
||||
serial_number: '0AY95BBM605793X'
|
||||
model_number: "DVE45R6100W/A3"
|
||||
serial_number: "0AY95BBM605793X"
|
||||
power: "{{ states('sensor.pm_dryer_w') | float(default=0)}}"
|
||||
target: "{{ states('input_number.tumble_dryer_on') | float(default=0)}}"
|
||||
|
||||
@@ -87,7 +87,7 @@ input_boolean:
|
||||
input_number:
|
||||
tumble_dryer_on:
|
||||
# was 10
|
||||
name: 'Tumble Dryer On'
|
||||
name: "Tumble Dryer On"
|
||||
icon: mdi:tumble-dryer
|
||||
min: 0
|
||||
max: 1000
|
||||
@@ -96,7 +96,7 @@ input_number:
|
||||
unit_of_measurement: W
|
||||
|
||||
tumble_dryer_off:
|
||||
name: 'Tumble Dryer Off'
|
||||
name: "Tumble Dryer Off"
|
||||
icon: mdi:tumble-dryer-off
|
||||
min: 0
|
||||
max: 1000
|
||||
@@ -105,7 +105,7 @@ input_number:
|
||||
unit_of_measurement: W
|
||||
|
||||
tumble_dryer_delay_on:
|
||||
name: 'Tumble Dryer Delay On'
|
||||
name: "Tumble Dryer Delay On"
|
||||
icon: mdi:clock
|
||||
min: 0
|
||||
max: 900
|
||||
@@ -114,7 +114,7 @@ input_number:
|
||||
|
||||
tumble_dryer_delay_off:
|
||||
# was 10
|
||||
name: 'Tumble Dryer Delay Off'
|
||||
name: "Tumble Dryer Delay Off"
|
||||
icon: mdi:clock-alert
|
||||
min: 0
|
||||
max: 900
|
||||
@@ -128,20 +128,20 @@ automation:
|
||||
- id: tumble_dryer_off
|
||||
platform: state
|
||||
entity_id: binary_sensor.tumble_dryer
|
||||
from: 'on'
|
||||
to: 'off'
|
||||
from: "on"
|
||||
to: "off"
|
||||
|
||||
- id: tumble_dryer_on
|
||||
platform: state
|
||||
entity_id: binary_sensor.tumble_dryer
|
||||
from: 'off'
|
||||
to: 'on'
|
||||
from: "off"
|
||||
to: "on"
|
||||
|
||||
- id: door_open
|
||||
platform: state
|
||||
entity_id: binary_sensor.tumble_dryer_door_contact
|
||||
from: 'off'
|
||||
to: 'on'
|
||||
from: "off"
|
||||
to: "on"
|
||||
for:
|
||||
seconds: 5
|
||||
|
||||
@@ -155,7 +155,7 @@ automation:
|
||||
|
||||
- condition: state
|
||||
entity_id: input_boolean.fold_clothes
|
||||
state: 'on'
|
||||
state: "on"
|
||||
sequence:
|
||||
- service: logbook.log
|
||||
data_template:
|
||||
@@ -163,7 +163,6 @@ automation:
|
||||
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
|
||||
@@ -175,7 +174,7 @@ automation:
|
||||
|
||||
- condition: state
|
||||
entity_id: binary_sensor.tumble_dryer_door_contact
|
||||
state: 'off'
|
||||
state: "off"
|
||||
|
||||
sequence:
|
||||
- service: logbook.log
|
||||
@@ -195,11 +194,11 @@ automation:
|
||||
|
||||
- condition: state
|
||||
entity_id: binary_sensor.tumble_dryer
|
||||
state: 'off'
|
||||
state: "off"
|
||||
|
||||
- condition: state
|
||||
entity_id: input_boolean.fold_clothes
|
||||
state: 'on'
|
||||
state: "on"
|
||||
|
||||
sequence:
|
||||
- service: logbook.log
|
||||
|
||||
@@ -5,10 +5,10 @@ template:
|
||||
delay_on: "{{states('input_number.washing_machine_delay_on') | float(default=0)}}"
|
||||
delay_off: "{{states('input_number.washing_machine_delay_off') | float(default=0)}}"
|
||||
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:
|
||||
model_number: 'WF45R6100AW/US'
|
||||
serial_number: '01FY57AM802740X'
|
||||
model_number: "WF45R6100AW/US"
|
||||
serial_number: "01FY57AM802740X"
|
||||
power: "{{ states('sensor.pm_laundry_plug_w') | 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) }}"
|
||||
@@ -33,8 +33,8 @@ template:
|
||||
mdi:washing-machine
|
||||
{% endif %}
|
||||
attributes:
|
||||
model_number: 'WF45R6100AW/US'
|
||||
serial_number: '01FY57AM802740X'
|
||||
model_number: "WF45R6100AW/US"
|
||||
serial_number: "01FY57AM802740X"
|
||||
power: "{{ states('sensor.pm_laundry_plug_w') | float(default=0)}}"
|
||||
target: "{{ states('input_number.washing_machine_on') | float(default=0)}}"
|
||||
|
||||
@@ -46,7 +46,7 @@ input_boolean:
|
||||
input_number:
|
||||
washing_machine_on:
|
||||
# was 5
|
||||
name: 'Washing Machine On'
|
||||
name: "Washing Machine On"
|
||||
icon: mdi:washing-machine
|
||||
min: 0
|
||||
max: 20
|
||||
@@ -55,7 +55,7 @@ input_number:
|
||||
unit_of_measurement: W
|
||||
|
||||
washing_machine_off:
|
||||
name: 'Washing Machine Off'
|
||||
name: "Washing Machine Off"
|
||||
icon: mdi:washing-machine-off
|
||||
min: 0
|
||||
max: 20
|
||||
@@ -64,7 +64,7 @@ input_number:
|
||||
unit_of_measurement: W
|
||||
|
||||
washing_machine_delay_on:
|
||||
name: 'Washing Machine Delay On'
|
||||
name: "Washing Machine Delay On"
|
||||
icon: mdi:clock
|
||||
min: 0
|
||||
max: 900
|
||||
@@ -73,7 +73,7 @@ input_number:
|
||||
|
||||
washing_machine_delay_off:
|
||||
# was 10
|
||||
name: 'Washing Machine Delay Off'
|
||||
name: "Washing Machine Delay Off"
|
||||
icon: mdi:clock-alert
|
||||
min: 0
|
||||
max: 900
|
||||
@@ -87,20 +87,20 @@ automation:
|
||||
- id: washing_machine_off
|
||||
platform: state
|
||||
entity_id: binary_sensor.washing_machine
|
||||
from: 'on'
|
||||
to: 'off'
|
||||
from: "on"
|
||||
to: "off"
|
||||
|
||||
- id: washing_machine_on
|
||||
platform: state
|
||||
entity_id: binary_sensor.washing_machine
|
||||
from: 'off'
|
||||
to: 'on'
|
||||
from: "off"
|
||||
to: "on"
|
||||
|
||||
- id: door_open
|
||||
platform: state
|
||||
entity_id: binary_sensor.washing_machine_door_contact
|
||||
from: 'off'
|
||||
to: 'on'
|
||||
from: "off"
|
||||
to: "on"
|
||||
for:
|
||||
seconds: 5
|
||||
|
||||
@@ -114,7 +114,7 @@ automation:
|
||||
|
||||
- condition: state
|
||||
entity_id: input_boolean.swap_laundry
|
||||
state: 'on'
|
||||
state: "on"
|
||||
sequence:
|
||||
- service: logbook.log
|
||||
data_template:
|
||||
@@ -133,7 +133,7 @@ automation:
|
||||
|
||||
- condition: state
|
||||
entity_id: binary_sensor.washing_machine_door_contact
|
||||
state: 'off'
|
||||
state: "off"
|
||||
|
||||
sequence:
|
||||
- service: logbook.log
|
||||
@@ -152,11 +152,11 @@ automation:
|
||||
|
||||
- condition: state
|
||||
entity_id: binary_sensor.washing_machine
|
||||
state: 'off'
|
||||
state: "off"
|
||||
|
||||
- condition: state
|
||||
entity_id: input_boolean.swap_laundry
|
||||
state: 'on'
|
||||
state: "on"
|
||||
|
||||
sequence:
|
||||
- service: logbook.log
|
||||
|
||||
@@ -247,7 +247,7 @@ template:
|
||||
unique_id: "custom_sensor.sprinkler_total_rain_fallen_plus_expected"
|
||||
icon: mdi:weather-pouring
|
||||
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: >
|
||||
{{ (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
|
||||
unit_of_measurement: seconds
|
||||
availability: >
|
||||
{{ states('sensor.opensprinkler_water_level') not in ['unkown', 'unavailable'] and
|
||||
states('input_number.front_yard_station_minutes') not in ['unkown', 'unavailable'] and
|
||||
states('input_number.east_side_station_minutes') not in ['unkown', 'unavailable'] and
|
||||
states('input_number.back_yard_station_minutes') not in ['unkown', 'unavailable'] and
|
||||
states('input_number.west_side_station_minutes') not in ['unkown', 'unavailable'] and
|
||||
states('input_number.sprinkler_repeat_program_amount') not in ['unkown', 'unavailable'] }}
|
||||
{{ states('sensor.opensprinkler_water_level') not in ['unknown', 'unavailable'] and
|
||||
states('input_number.front_yard_station_minutes') not in ['unknown', 'unavailable'] and
|
||||
states('input_number.east_side_station_minutes') not in ['unknown', 'unavailable'] and
|
||||
states('input_number.back_yard_station_minutes') not in ['unknown', 'unavailable'] and
|
||||
states('input_number.west_side_station_minutes') not in ['unknown', 'unavailable'] and
|
||||
states('input_number.sprinkler_repeat_program_amount') not in ['unknown', 'unavailable'] }}
|
||||
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.east_side_station_minutes") | multiply(60)) | float(default=0) +
|
||||
@@ -352,10 +352,10 @@ template:
|
||||
device_class: moisture
|
||||
delay_off:
|
||||
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: >
|
||||
# {{ 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: >
|
||||
{{ states('binary_sensor.is_raining') }}
|
||||
|
||||
@@ -378,37 +378,28 @@ template:
|
||||
# - trigger:
|
||||
# - platform: homeassistant
|
||||
# event: start
|
||||
|
||||
# - platform: time
|
||||
# at: '01:00:00'
|
||||
|
||||
# - platform: state
|
||||
# entity_id: input_boolean.sprinkler_is_winterized
|
||||
|
||||
# - platform: event
|
||||
# event_type: event_template_reloaded
|
||||
# id: "reload"
|
||||
|
||||
# binary_sensor:
|
||||
# - name: "Sprinkler: Should Winterize"
|
||||
# unique_id: "custom_binary_sensor.sprinkler_should_winterize"
|
||||
# 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') }}"
|
||||
|
||||
# - trigger:
|
||||
# - platform: homeassistant
|
||||
# event: start
|
||||
|
||||
# - platform: time
|
||||
# at: '01:00:00'
|
||||
|
||||
# - platform: state
|
||||
# entity_id: input_boolean.sprinkler_is_winterized
|
||||
|
||||
# - platform: event
|
||||
# event_type: event_template_reloaded
|
||||
# id: "reload"
|
||||
|
||||
# binary_sensor:
|
||||
# - name: "Sprinkler: Should Dewinterize"
|
||||
# unique_id: "custom_binary_sensor.sprinkler_should_dewinterize"
|
||||
@@ -444,7 +435,6 @@ automation:
|
||||
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')}}"
|
||||
|
||||
|
||||
- alias: "Log Soil Moisture"
|
||||
id: 362fbc8d-64f1-47dd-a686-e460e9c18690
|
||||
trigger:
|
||||
@@ -503,7 +493,7 @@ automation:
|
||||
trigger:
|
||||
- platform: state
|
||||
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:
|
||||
- service: input_datetime.set_datetime
|
||||
target:
|
||||
@@ -532,7 +522,7 @@ automation:
|
||||
trigger:
|
||||
- platform: state
|
||||
entity_id: binary_sensor.is_raining
|
||||
to: 'on'
|
||||
to: "on"
|
||||
|
||||
condition:
|
||||
condition: or
|
||||
|
||||
@@ -178,12 +178,12 @@ automation:
|
||||
- platform: event
|
||||
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"
|
||||
# condition: state
|
||||
# entity_id: input_boolean.cycle_cam14
|
||||
# state: "on"
|
||||
|
||||
# - alias: "No people or animals detected by Frigate for the last 5 seconds"
|
||||
# condition: state
|
||||
# entity_id: binary_sensor.frigate_cam14_all_occupancy
|
||||
@@ -192,7 +192,6 @@ automation:
|
||||
# hours: 0
|
||||
# minutes: 0
|
||||
# seconds: 5
|
||||
|
||||
# # 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 patio door has been closed for at least 30 seconds
|
||||
@@ -252,7 +251,7 @@ automation:
|
||||
state: Deck
|
||||
- condition: state
|
||||
entity_id: binary_sensor.deck_motion
|
||||
state: 'on'
|
||||
state: "on"
|
||||
sequence:
|
||||
- service: input_text.set_value
|
||||
target:
|
||||
@@ -312,6 +311,8 @@ automation:
|
||||
entity_id: sensor.frigate_cam14_all_count
|
||||
below: 2
|
||||
|
||||
- "{{ states('camera.frigate_cam14') not in ['unknown', 'unavailable'] }}"
|
||||
|
||||
action:
|
||||
# We don't need to turn off cycling the back yard camera.
|
||||
# - service: input_boolean.turn_off
|
||||
@@ -331,14 +332,11 @@ automation:
|
||||
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
|
||||
|
||||
# - delay: "00:00:05"
|
||||
|
||||
# - repeat:
|
||||
# while: "{{ is_state('binary_sensor.frigate_cam14_all_occupancy', 'on')}}"
|
||||
# sequence:
|
||||
# - delay: "00:00:05"
|
||||
|
||||
# - service: input_boolean.turn_on
|
||||
# target:
|
||||
# entity_id: input_boolean.cycle_cam14
|
||||
@@ -406,6 +404,9 @@ automation:
|
||||
platform: state
|
||||
entity_id: input_button.cam14_ptz_preset_10
|
||||
|
||||
condition:
|
||||
- "{{ states('camera.frigate_cam14') not in ['unknown', 'unavailable'] }}"
|
||||
|
||||
action:
|
||||
- choose:
|
||||
- conditions: >
|
||||
@@ -486,6 +487,10 @@ automation:
|
||||
event: start
|
||||
- platform: time_pattern
|
||||
minutes: /10
|
||||
|
||||
condition:
|
||||
- "{{ states('camera.frigate_cam14') not in ['unknown', 'unavailable'] }}"
|
||||
|
||||
action:
|
||||
- choose:
|
||||
- conditions:
|
||||
@@ -552,7 +557,7 @@ template:
|
||||
- binary_sensor:
|
||||
- name: 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') }}"
|
||||
icon: >
|
||||
{% if is_state('binary_sensor.deck_person_occupancy','on') %}
|
||||
@@ -563,14 +568,14 @@ template:
|
||||
|
||||
- name: Deck Animal Motion
|
||||
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') }}"
|
||||
icon: mdi:bird
|
||||
|
||||
- sensor:
|
||||
- name: 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
|
||||
state: >
|
||||
{% if is_state('input_select.camera14_preset','Deck') %}
|
||||
@@ -582,7 +587,7 @@ template:
|
||||
|
||||
- name: 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
|
||||
state: >
|
||||
{% if is_state('input_select.camera14_preset','Deck') %}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
template:
|
||||
# Watch Done Charging
|
||||
# Watch Done Charging
|
||||
- trigger:
|
||||
- platform: state
|
||||
entity_id: sensor.ticwatch_pro_3_gps_charger_type
|
||||
@@ -18,10 +18,10 @@ template:
|
||||
- name: Clint's Watch Done Charging
|
||||
unique_id: templatebinarysensor.clints_watch_done_charging
|
||||
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') }}"
|
||||
|
||||
# Watch Done Charging
|
||||
# Watch Done Charging
|
||||
- trigger:
|
||||
- platform: state
|
||||
entity_id: sensor.ticwatch_pro_3_gps_charger_type
|
||||
@@ -40,12 +40,12 @@ template:
|
||||
- name: Clint's Watch Needs to Charge
|
||||
unique_id: templatebinarysensor.clints_watch_needs_to_charge
|
||||
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') }}"
|
||||
|
||||
input_number:
|
||||
clints_watch_charged:
|
||||
name: 'Clints Watch Charged'
|
||||
name: "Clints Watch Charged"
|
||||
icon: mdi:battery
|
||||
min: 0
|
||||
max: 100
|
||||
@@ -53,7 +53,7 @@ input_number:
|
||||
mode: box
|
||||
|
||||
clints_watch_low:
|
||||
name: 'Clints Watch Low'
|
||||
name: "Clints Watch Low"
|
||||
icon: mdi:battery-20
|
||||
min: 0
|
||||
max: 100
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
template:
|
||||
- binary_sensor:
|
||||
- name: 'HACS Update Available'
|
||||
- name: "HACS Update Available"
|
||||
unique_id: binary_sensor.hacs_update_available
|
||||
icon: mdi:alpha-c-box
|
||||
state: "{{ states('sensor.hacs') | float(default=0) > 0 }}"
|
||||
availability: "{{ states('sensor.hacs') not in ['unkown', 'unavailable'] }}"
|
||||
availability: "{{ states('sensor.hacs') not in ['unknown', 'unavailable'] }}"
|
||||
|
||||
@@ -21,5 +21,5 @@ template:
|
||||
- name: DreamBox Recently Active
|
||||
unique_id: templatebinarysensor.dreambox_recently_active
|
||||
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'))}}"
|
||||
|
||||
@@ -3,7 +3,6 @@ notify:
|
||||
platform: hass_agent_notifier
|
||||
resource: !secret dreamsurface_hassagent
|
||||
|
||||
|
||||
mqtt:
|
||||
light:
|
||||
- name: "DreamSurface: Screen Brightness"
|
||||
@@ -13,7 +12,7 @@ mqtt:
|
||||
brightness_command_topic: "homeassistant/light/HASSAGENT/dreamsurface_monitor_brightness/action"
|
||||
brightness_command_template: "%PROGRAMFILES(X86)%\\Monitorian\\Monitorian.exe /set {{ value }}"
|
||||
brightness_scale: 100
|
||||
on_command_type: 'brightness'
|
||||
on_command_type: "brightness"
|
||||
icon: mdi:monitor-shimmer
|
||||
|
||||
# media_player:
|
||||
@@ -34,5 +33,5 @@ template:
|
||||
- name: DreamSurface Recently Active
|
||||
unique_id: templatebinarysensor.dreamsurface_recently_active
|
||||
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'))}}"
|
||||
|
||||
@@ -18,7 +18,7 @@ template:
|
||||
unique_id: "custom_binary_sensor.hvac_aux"
|
||||
icon: mdi:fire
|
||||
device_class: running
|
||||
availability: "{{ states('climate.thermostat') not in ['unkown', 'unavailable'] }}"
|
||||
availability: "{{ states('climate.thermostat') not in ['unknown', 'unavailable'] }}"
|
||||
state: >
|
||||
{% 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"
|
||||
icon: mdi:fan
|
||||
device_class: running
|
||||
availability: "{{ states('climate.thermostat') not in ['unkown', 'unavailable'] }}"
|
||||
availability: "{{ states('climate.thermostat') not in ['unknown', 'unavailable'] }}"
|
||||
state: >
|
||||
{% 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"
|
||||
icon: mdi:hvac
|
||||
device_class: running
|
||||
availability: "{{ states('climate.thermostat') not in ['unkown', 'unavailable'] }}"
|
||||
availability: "{{ states('climate.thermostat') not in ['unknown', 'unavailable'] }}"
|
||||
state: >
|
||||
{% 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}}"
|
||||
@@ -103,7 +103,7 @@ template:
|
||||
binary_sensor:
|
||||
- name: "Dining Room Naturally Lit"
|
||||
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:
|
||||
seconds: 3
|
||||
delay_off:
|
||||
|
||||
@@ -1,127 +1,127 @@
|
||||
# TODO
|
||||
# Update to account for new get_weather_forcats BS a
|
||||
# # 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 ['unkown', 'unavailable'] }}"
|
||||
state: "{{ states('sensor.openweathermap_hourly_forecast_precipitation_probability')|float(default=0) >= 50.0 }}"
|
||||
# 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 ['unkown', 'unavailable'] }}"
|
||||
state: "{{ states('sensor.openweathermap_daily_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:
|
||||
# - trigger:
|
||||
|
||||
- platform: time_pattern
|
||||
hours: /1
|
||||
# - platform: time_pattern
|
||||
# hours: /1
|
||||
|
||||
- platform: event
|
||||
event_type: event_template_reloaded
|
||||
id: "reload"
|
||||
# - platform: event
|
||||
# event_type: event_template_reloaded
|
||||
# id: "reload"
|
||||
|
||||
- platform: homeassistant
|
||||
event: start
|
||||
# - platform: homeassistant
|
||||
# event: start
|
||||
|
||||
action:
|
||||
- service: weather.get_forecasts
|
||||
data:
|
||||
type: daily
|
||||
target:
|
||||
entity_id: weather.openweathermap_daily
|
||||
response_variable: daily
|
||||
# action:
|
||||
# - service: weather.get_forecasts
|
||||
# data:
|
||||
# type: daily
|
||||
# target:
|
||||
# entity_id: weather.openweathermap_daily
|
||||
# response_variable: daily
|
||||
|
||||
- service: weather.get_forecasts
|
||||
data:
|
||||
type: hourly
|
||||
target:
|
||||
entity_id: weather.openweathermap_hourly
|
||||
response_variable: hourly
|
||||
# - service: weather.get_forecasts
|
||||
# data:
|
||||
# type: hourly
|
||||
# target:
|
||||
# entity_id: weather.openweathermap_hourly
|
||||
# response_variable: hourly
|
||||
|
||||
binary_sensor:
|
||||
- name: "Impending Rain"
|
||||
unique_id: templatebinarysensor.impending_rain
|
||||
availability: "{{ states('weather.openweathermap_hourly') not in ['unkown', '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.openweathermap_hourly'].forecast[daypart].precipitation -%}
|
||||
{%- set wind_speed = hourly['weather.openweathermap_hourly'].forecast[daypart].wind_speed -%}
|
||||
{%- set precipitation_probability = hourly['weather.openweathermap_hourly'].forecast[daypart].precipitation_probability %}
|
||||
# binary_sensor:
|
||||
# - name: "Impending Rain"
|
||||
# unique_id: templatebinarysensor.impending_rain
|
||||
# availability: "{{ states('weather.openweathermap_hourly') 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.openweathermap_hourly'].forecast[daypart].precipitation -%}
|
||||
# {%- set wind_speed = hourly['weather.openweathermap_hourly'].forecast[daypart].wind_speed -%}
|
||||
# {%- set precipitation_probability = hourly['weather.openweathermap_hourly'].forecast[daypart].precipitation_probability %}
|
||||
|
||||
{% if precipitation_probability > 0 -%}
|
||||
{% if wind_speed > states('input_number.wind_speed_blowing_rain') |float(default=0) %}
|
||||
{%- set upcoming_precipitation = precipitation * precipitation_probability -%}
|
||||
{%- endif -%}
|
||||
{%- endif -%}
|
||||
{%- set ns.totalprecipitation = ns.totalprecipitation + upcoming_precipitation -%}
|
||||
{%- endfor %}
|
||||
{{ ns.totalprecipitation / 100 | float | round(0) > 0.99 }}
|
||||
# {% if precipitation_probability > 0 -%}
|
||||
# {% if wind_speed > states('input_number.wind_speed_blowing_rain') |float(default=0) %}
|
||||
# {%- set upcoming_precipitation = precipitation * precipitation_probability -%}
|
||||
# {%- endif -%}
|
||||
# {%- 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.openweathermap_daily') not in ['unkown', 'unavailable'] }}"
|
||||
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 = daily['weather.openweathermap_daily'].forecast[daypart].precipitation * 25.4 -%}
|
||||
{%- set precipitation_probability = daily['weather.openweathermap_daily'].forecast[daypart].precipitation_probability / 100 %}
|
||||
{% if precipitation_probability >0 -%}
|
||||
{%- set upcoming_precipitation = precipitation * precipitation_probability -%}
|
||||
{%- endif -%}
|
||||
{%- set ns.totalprecipitation = ns.totalprecipitation + upcoming_precipitation -%}
|
||||
{%- endfor %}
|
||||
{{ ns.totalprecipitation | float | round(0) }}
|
||||
# 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.openweathermap_daily') 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, 8) -%}
|
||||
# {%- set precipitation = daily['weather.openweathermap_daily'].forecast[daypart].precipitation * 25.4 -%}
|
||||
# {%- set precipitation_probability = daily['weather.openweathermap_daily'].forecast[daypart].precipitation_probability / 100 %}
|
||||
# {% if precipitation_probability >0 -%}
|
||||
# {%- set upcoming_precipitation = precipitation * precipitation_probability -%}
|
||||
# {%- endif -%}
|
||||
# {%- 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.openweathermap_daily') not in ['unkown', 'unavailable'] }}"
|
||||
state: "{{ daily['weather.openweathermap_daily'].forecast[0].templow }}"
|
||||
# - name: "Today's Low Temperature"
|
||||
# unique_id: templatesensor.templow_today
|
||||
# unit_of_measurement: °F
|
||||
# availability: "{{ states('weather.openweathermap_daily') not in ['unknown', 'unavailable'] }}"
|
||||
# state: "{{ daily['weather.openweathermap_daily'].forecast[0].templow }}"
|
||||
|
||||
- name: "Today's High Temperature"
|
||||
unique_id: templatesensor.temphigh_today
|
||||
unit_of_measurement: °F
|
||||
availability: "{{ states('weather.openweathermap_daily') not in ['unkown', 'unavailable'] }}"
|
||||
state: "{{ daily['weather.openweathermap_daily'].forecast[0].temperature}}"
|
||||
# - name: "Today's High Temperature"
|
||||
# unique_id: templatesensor.temphigh_today
|
||||
# unit_of_measurement: °F
|
||||
# availability: "{{ states('weather.openweathermap_daily') not in ['unknown', 'unavailable'] }}"
|
||||
# state: "{{ daily['weather.openweathermap_daily'].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.openweathermap_daily') not in ['unkown', 'unavailable'] }}"
|
||||
state: "{{ daily['weather.openweathermap_daily'].forecast[0].precipitation_probability}}"
|
||||
# - name: "Today's Chance of Precipitation"
|
||||
# unique_id: templatesensor.precip_chance_today
|
||||
# icon: mdi:cloud-percent
|
||||
# unit_of_measurement: '%'
|
||||
# availability: "{{ states('weather.openweathermap_daily') not in ['unknown', 'unavailable'] }}"
|
||||
# state: "{{ daily['weather.openweathermap_daily'].forecast[0].precipitation_probability}}"
|
||||
|
||||
- name: "Tomorrow's Low Temperature"
|
||||
unique_id: templatesensor.templow_tomorrow
|
||||
unit_of_measurement: °F
|
||||
availability: "{{ states('weather.openweathermap_daily') not in ['unkown', 'unavailable'] }}"
|
||||
state: "{{ daily['weather.openweathermap_daily'].forecast[1].templow}}"
|
||||
# - name: "Tomorrow's Low Temperature"
|
||||
# unique_id: templatesensor.templow_tomorrow
|
||||
# unit_of_measurement: °F
|
||||
# availability: "{{ states('weather.openweathermap_daily') not in ['unknown', 'unavailable'] }}"
|
||||
# state: "{{ daily['weather.openweathermap_daily'].forecast[1].templow}}"
|
||||
|
||||
- name: "Tomorrow's High Temperature"
|
||||
unique_id: templatesensor.temphigh_tomorrow
|
||||
unit_of_measurement: °F
|
||||
availability: "{{ states('weather.openweathermap_daily') not in ['unkown', 'unavailable'] }}"
|
||||
state: "{{ daily['weather.openweathermap_daily'].forecast[1].temperature}}"
|
||||
# - name: "Tomorrow's High Temperature"
|
||||
# unique_id: templatesensor.temphigh_tomorrow
|
||||
# unit_of_measurement: °F
|
||||
# availability: "{{ states('weather.openweathermap_daily') not in ['unknown', 'unavailable'] }}"
|
||||
# state: "{{ daily['weather.openweathermap_daily'].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.openweathermap_daily') not in ['unkown', 'unavailable'] }}"
|
||||
state: "{{ daily['weather.openweathermap_daily'].forecast[1].precipitation_probability}}"
|
||||
# - name: "Tomorrow's Chance of Precipitation"
|
||||
# unique_id: templatesensor.precip_chance_tomorrow
|
||||
# icon: mdi:cloud-percent
|
||||
# unit_of_measurement: '%'
|
||||
# availability: "{{ states('weather.openweathermap_daily') not in ['unknown', 'unavailable'] }}"
|
||||
# state: "{{ daily['weather.openweathermap_daily'].forecast[1].precipitation_probability}}"
|
||||
|
||||
@@ -33,6 +33,8 @@ automation:
|
||||
state: "on"
|
||||
|
||||
action:
|
||||
- service: notify.pixel_7_coordinates
|
||||
- service: notify.send_message
|
||||
target:
|
||||
entity_id: notify.pixel_7_coordinates
|
||||
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')}}"
|
||||
@@ -24,7 +24,7 @@ template:
|
||||
seconds: 15
|
||||
delay_off:
|
||||
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) ) }}"
|
||||
attributes:
|
||||
indoors: "{{ states('sensor.upstairs_mean_temperature') | float(default=0) }}"
|
||||
@@ -40,7 +40,7 @@ template:
|
||||
seconds: 15
|
||||
delay_off:
|
||||
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) ) }}"
|
||||
attributes:
|
||||
indoors: "{{ states('sensor.upstairs_mean_temperature') | float(default=0)}}"
|
||||
@@ -56,7 +56,7 @@ template:
|
||||
seconds: 15
|
||||
delay_off:
|
||||
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) }}"
|
||||
attributes:
|
||||
outdoor_temp: "{{ states('sensor.outdoors_mean_temperature') | float(default=0)}}"
|
||||
@@ -67,7 +67,7 @@ template:
|
||||
unique_id: templatebinarysensor.too_hot_inside
|
||||
icon: mdi:weather-sunny
|
||||
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 }}"
|
||||
attributes:
|
||||
upstairs_mean_temp: "{{ states('sensor.upstairs_mean_temperature') | float(default=0)}}"
|
||||
@@ -83,7 +83,7 @@ template:
|
||||
seconds: 15
|
||||
delay_off:
|
||||
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) ) }}"
|
||||
attributes:
|
||||
outdoor_temp: "{{ states('sensor.outdoors_mean_temperature') | float(default=0)}}"
|
||||
@@ -94,7 +94,7 @@ template:
|
||||
unique_id: templatebinarysensor.too_cold_inside
|
||||
icon: mdi:snowflake
|
||||
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 }}"
|
||||
attributes:
|
||||
upstairs_mean_temp: "{{ states('sensor.upstairs_mean_temperature') | float(default=0)}}"
|
||||
@@ -105,7 +105,7 @@ template:
|
||||
- name: Inner Garage Door Open to Outside
|
||||
unique_id: templatebinarysensor.inner_garage_door_open_to_outside
|
||||
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: >-
|
||||
{% 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') %}
|
||||
@@ -184,12 +184,11 @@ template:
|
||||
cooler_outside: "{{ states('binary_sensor.cooler_outside') }}"
|
||||
too_cold_outside: "{{ states('binary_sensor.too_cold_outside') }}"
|
||||
|
||||
|
||||
- sensor:
|
||||
- name: Outdoor Temperature Gradient
|
||||
unique_id: templatesensor.outdoor_temperature_gradient
|
||||
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
|
||||
state_class: measurement
|
||||
unit_of_measurement: p
|
||||
@@ -207,7 +206,7 @@ template:
|
||||
- name: HVAC Target Temp Low
|
||||
unique_id: templatesensor_hvac_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
|
||||
unit_of_measurement: "°F"
|
||||
attributes:
|
||||
@@ -218,7 +217,7 @@ template:
|
||||
- name: HVAC Target Temp High
|
||||
unique_id: templatesensor_hvac_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
|
||||
unit_of_measurement: "°F"
|
||||
attributes:
|
||||
@@ -229,7 +228,7 @@ template:
|
||||
- name: HVAC Target Temperature
|
||||
unique_id: templatesensor_hvac_target_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
|
||||
unit_of_measurement: "°F"
|
||||
attributes:
|
||||
@@ -241,7 +240,7 @@ template:
|
||||
unique_id: templatesensor_hvac_current_temperature
|
||||
icon: mdi:fan-clock
|
||||
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
|
||||
unit_of_measurement: "°F"
|
||||
attributes:
|
||||
@@ -252,6 +251,6 @@ template:
|
||||
- name: HVAC Fan Min On Time
|
||||
unique_id: templatesensor_hvac_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
|
||||
unit_of_measurement: min
|
||||
|
||||
@@ -43,149 +43,148 @@ utility_meter:
|
||||
|
||||
template:
|
||||
- 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: '$'
|
||||
unit_of_measurement: "$"
|
||||
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_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_summer_peak_cost
|
||||
name: Hourly Energy Summer Peak Total Cost
|
||||
device_class: monetary
|
||||
state_class: total
|
||||
unit_of_measurement: '$'
|
||||
unit_of_measurement: "$"
|
||||
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_peak') not in ['unknown', 'unavailable'] and states('sensor.summerpeak_per_kwh') not in ['unknown', 'unavailable'] }}"
|
||||
state: "{{ states('sensor.hourly_energy_summer_peak')|float(default=0) * states('sensor.summerpeak_per_kwh')|float(default=0) }}"
|
||||
|
||||
- unique_id: templatebinarysensor.hourly_energy_summer_non_peak_cost
|
||||
name: Hourly Energy Summer Non-Peak Total Cost
|
||||
device_class: monetary
|
||||
state_class: total
|
||||
unit_of_measurement: '$'
|
||||
unit_of_measurement: "$"
|
||||
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.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_non_peak')|float(default=0) * states('sensor.summernonpeak_per_kwh')|float(default=0) }}"
|
||||
|
||||
- unique_id: templatebinarysensor.daily_energy_non_summer_cost
|
||||
name: Daily Energy Non-Summer Total Cost
|
||||
device_class: monetary
|
||||
state_class: total
|
||||
unit_of_measurement: '$'
|
||||
unit_of_measurement: "$"
|
||||
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_non_summer') not in ['unknown', 'unavailable'] and states('sensor.nonsummer_per_kwh') not in ['unknown', 'unavailable'] }}"
|
||||
state: "{{ states('sensor.daily_energy_non_summer')|float(default=0) * states('sensor.nonsummer_per_kwh')|float(default=0) }}"
|
||||
|
||||
- unique_id: templatebinarysensor.daily_energy_summer_peak_cost
|
||||
name: Daily Energy Summer Peak Total Cost
|
||||
device_class: monetary
|
||||
state_class: total
|
||||
unit_of_measurement: '$'
|
||||
unit_of_measurement: "$"
|
||||
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_peak') not in ['unknown', 'unavailable'] and states('sensor.summerpeak_per_kwh') not in ['unknown', 'unavailable'] }}"
|
||||
state: "{{ states('sensor.daily_energy_summer_peak')|float(default=0) * states('sensor.summerpeak_per_kwh')|float(default=0) }}"
|
||||
|
||||
- unique_id: templatebinarysensor.daily_energy_summer_non_peak_cost
|
||||
name: Daily Energy Summer Non-Peak Total Cost
|
||||
device_class: monetary
|
||||
state_class: total
|
||||
unit_of_measurement: '$'
|
||||
unit_of_measurement: "$"
|
||||
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.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_non_peak')|float(default=0) * states('sensor.summernonpeak_per_kwh')|float(default=0) }}"
|
||||
|
||||
- unique_id: templatebinarysensor.weekly_energy_non_summer_cost
|
||||
name: Weekly Energy Non-Summer Total Cost
|
||||
device_class: monetary
|
||||
state_class: total
|
||||
unit_of_measurement: '$'
|
||||
unit_of_measurement: "$"
|
||||
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_non_summer') not in ['unknown', 'unavailable'] and states('sensor.nonsummer_per_kwh') not in ['unknown', 'unavailable'] }}"
|
||||
state: "{{ states('sensor.weekly_energy_non_summer')|float(default=0) * states('sensor.nonsummer_per_kwh')|float(default=0) }}"
|
||||
|
||||
- unique_id: templatebinarysensor.weekly_energy_summer_peak_cost
|
||||
name: Weekly Energy Summer Peak Total Cost
|
||||
device_class: monetary
|
||||
state_class: total
|
||||
unit_of_measurement: '$'
|
||||
unit_of_measurement: "$"
|
||||
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_peak') not in ['unknown', 'unavailable'] and states('sensor.summerpeak_per_kwh') not in ['unknown', 'unavailable'] }}"
|
||||
state: "{{ states('sensor.weekly_energy_summer_peak')|float(default=0) * states('sensor.summerpeak_per_kwh')|float(default=0) }}"
|
||||
|
||||
- unique_id: templatebinarysensor.weekly_energy_summer_non_peak_cost
|
||||
name: Weekly Energy Summer Non-Peak Total Cost
|
||||
device_class: monetary
|
||||
state_class: total
|
||||
unit_of_measurement: '$'
|
||||
unit_of_measurement: "$"
|
||||
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.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_non_peak')|float(default=0) * states('sensor.summernonpeak_per_kwh')|float(default=0) }}"
|
||||
|
||||
- unique_id: templatebinarysensor.monthly_energy_non_summer_cost
|
||||
name: Monthly Energy Non-Summer Total Cost
|
||||
device_class: monetary
|
||||
state_class: total
|
||||
unit_of_measurement: '$'
|
||||
unit_of_measurement: "$"
|
||||
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_non_summer') not in ['unknown', 'unavailable'] and states('sensor.nonsummer_per_kwh') not in ['unknown', 'unavailable'] }}"
|
||||
state: "{{ states('sensor.monthly_energy_non_summer')|float(default=0) * states('sensor.nonsummer_per_kwh')|float(default=0) }}"
|
||||
|
||||
- unique_id: templatebinarysensor.monthly_energy_summer_peak_cost
|
||||
name: Monthly Energy Summer Peak Total Cost
|
||||
device_class: monetary
|
||||
state_class: total
|
||||
unit_of_measurement: '$'
|
||||
unit_of_measurement: "$"
|
||||
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_peak') not in ['unknown', 'unavailable'] and states('sensor.summerpeak_per_kwh') not in ['unknown', 'unavailable'] }}"
|
||||
state: "{{ states('sensor.monthly_energy_summer_peak')|float(default=0) * states('sensor.summerpeak_per_kwh')|float(default=0) }}"
|
||||
|
||||
- unique_id: templatebinarysensor.monthly_energy_summer_non_peak_cost
|
||||
name: Monthly Energy Summer Non-Peak Total Cost
|
||||
device_class: monetary
|
||||
state_class: total
|
||||
unit_of_measurement: '$'
|
||||
unit_of_measurement: "$"
|
||||
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.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_non_peak')|float(default=0) * states('sensor.summernonpeak_per_kwh')|float(default=0) }}"
|
||||
|
||||
- unique_id: templatebinarysensor.hourly_energy_total_cost
|
||||
name: Hourly Energy Total Cost
|
||||
device_class: monetary
|
||||
state_class: total
|
||||
unit_of_measurement: '$'
|
||||
unit_of_measurement: "$"
|
||||
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.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.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.daily_energy_total_cost
|
||||
name: Daily Energy Total Cost
|
||||
device_class: monetary
|
||||
state_class: total
|
||||
unit_of_measurement: '$'
|
||||
unit_of_measurement: "$"
|
||||
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.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.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.weekly_energy_total_cost
|
||||
name: Weekly Energy Total Cost
|
||||
device_class: monetary
|
||||
state_class: total
|
||||
unit_of_measurement: '$'
|
||||
unit_of_measurement: "$"
|
||||
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.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.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.monthly_energy_total_cost
|
||||
name: Monthly Energy Total Cost
|
||||
device_class: monetary
|
||||
state_class: total
|
||||
unit_of_measurement: '$'
|
||||
unit_of_measurement: "$"
|
||||
icon: mdi:currency-usd
|
||||
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.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.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.hourly_energy_total
|
||||
@@ -194,7 +193,7 @@ template:
|
||||
state_class: total
|
||||
unit_of_measurement: kWh
|
||||
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.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.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.daily_energy_total
|
||||
@@ -203,7 +202,7 @@ template:
|
||||
state_class: total
|
||||
unit_of_measurement: kWh
|
||||
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.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.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.weekly_energy_total
|
||||
@@ -212,7 +211,7 @@ template:
|
||||
state_class: total
|
||||
unit_of_measurement: kWh
|
||||
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.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.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.monthly_energy_total
|
||||
@@ -221,5 +220,5 @@ template:
|
||||
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'] }}"
|
||||
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.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
|
||||
entity: weather.openweathermap_hourly
|
||||
entity: weather.forecast_home
|
||||
name: Next 5 Hours
|
||||
show_current: true
|
||||
show_forecast: true
|
||||
forecast_type: hourly
|
||||
|
||||
- type: weather-forecast
|
||||
entity: weather.openweathermap_daily
|
||||
entity: weather.forecast_home
|
||||
name: Next 5 Days
|
||||
show_current: true
|
||||
show_forecast: true
|
||||
|
||||
@@ -201,7 +201,7 @@ cards:
|
||||
Good morning, {{user}}!
|
||||
{%endif%}
|
||||
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
|
||||
cards:
|
||||
- type: horizontal-stack
|
||||
|
||||
@@ -1,11 +1,6 @@
|
||||
type: vertical-stack
|
||||
cards:
|
||||
- type: conditional
|
||||
conditions:
|
||||
- entity: binary_sensor.precipitation_likely
|
||||
state: 'on'
|
||||
card:
|
||||
type: iframe
|
||||
- type: iframe
|
||||
url: >-
|
||||
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
|
||||
aspect_ratio: 75%
|
||||
|
||||
+13
-13
@@ -9,7 +9,7 @@ badges:
|
||||
alignment: center
|
||||
chips:
|
||||
- type: weather
|
||||
entity: weather.openweathermap_daily
|
||||
entity: weather.forecast_home
|
||||
show_conditions: true
|
||||
show_temperature: true
|
||||
tap_action:
|
||||
@@ -774,16 +774,16 @@ badges:
|
||||
- "extremely_uncomfortable"
|
||||
- "severely_high"
|
||||
|
||||
- type: entity-filter
|
||||
entities:
|
||||
- entity: sensor.openweathermap_hourly_forecast_precipitation_probability
|
||||
name: Precip %
|
||||
tap_action:
|
||||
action: navigate
|
||||
navigation_path: /details-yml/weather
|
||||
state_filter:
|
||||
- operator: ">"
|
||||
value: 30
|
||||
# - type: entity-filter
|
||||
# entities:
|
||||
# - entity: sensor.openweathermap_hourly_forecast_precipitation_probability
|
||||
# name: Precip %
|
||||
# tap_action:
|
||||
# action: navigate
|
||||
# navigation_path: /details-yml/weather
|
||||
# state_filter:
|
||||
# - operator: ">"
|
||||
# value: 30
|
||||
|
||||
- type: entity-filter
|
||||
entities:
|
||||
@@ -1524,13 +1524,13 @@ cards:
|
||||
camera_entity: camera.mail_usps_camera
|
||||
|
||||
- type: custom:hourly-weather
|
||||
entity: weather.openweathermap_hourly
|
||||
entity: weather.forecast_home
|
||||
icons: true
|
||||
name: ""
|
||||
hide_hours: false
|
||||
|
||||
- type: custom:clock-weather-card
|
||||
entity: weather.openweathermap_daily
|
||||
entity: weather.forecast_home
|
||||
weather_icon_type: fill
|
||||
time_format: 12
|
||||
date_pattern: DDDD
|
||||
|
||||
Reference in New Issue
Block a user