Compare commits
48 Commits
2025.7.2
...
meds-rewor
| Author | SHA1 | Date | |
|---|---|---|---|
|
28e3b93441
|
|||
|
bdca4c702a
|
|||
|
4b57efcd74
|
|||
|
7255422ca1
|
|||
|
5ae5e5021e
|
|||
|
bd9c7190ed
|
|||
|
f176e3b867
|
|||
|
1b52cc31a8
|
|||
|
8993196366
|
|||
|
210434e4ad
|
|||
|
e37ac9d504
|
|||
|
bf19984b47
|
|||
|
4634b66866
|
|||
|
001dcbe625
|
|||
|
f70be6ceee
|
|||
|
265e129c06
|
|||
|
00bea40b6b
|
|||
|
f94bce3381
|
|||
|
2de7d82e20
|
|||
|
83c3c10a5a
|
|||
|
f7ac1b915b
|
|||
|
1d3398752e
|
|||
|
837ed779c9
|
|||
|
bc3a58875d
|
|||
|
3c018a922b
|
|||
|
10188d553a
|
|||
|
341200deb0
|
|||
|
b930cb28b5
|
|||
|
c31158448c
|
|||
|
9e9c1fcf11
|
|||
|
02e3252e62
|
|||
|
32907081c6
|
|||
|
67931ccfcd
|
|||
|
c5d1b14ac9
|
|||
|
3ed56ff745
|
|||
|
eb9cc4c42d
|
|||
|
df020c92c1
|
|||
|
b97838a13f
|
|||
|
9678ccd2a3
|
|||
|
13ef9c58f8
|
|||
|
1ea19c317c
|
|||
|
a89963f9f0
|
|||
|
993a65529b
|
|||
|
a11bb624db
|
|||
|
131ffcd05f
|
|||
|
4ac9247852
|
|||
|
52d651fcaa
|
|||
|
96244550de
|
@@ -1 +1 @@
|
|||||||
2025.7.2
|
2025.12.3
|
||||||
2
.gitignore
vendored
2
.gitignore
vendored
@@ -21,6 +21,7 @@
|
|||||||
/downloads/
|
/downloads/
|
||||||
/lightwand/
|
/lightwand/
|
||||||
/bubble/Scratchpad/
|
/bubble/Scratchpad/
|
||||||
|
/custom_icons
|
||||||
|
|
||||||
# ignore any of these files no matter where they are using double *
|
# ignore any of these files no matter where they are using double *
|
||||||
**.DS_Store
|
**.DS_Store
|
||||||
@@ -67,6 +68,7 @@
|
|||||||
**jsconfig*
|
**jsconfig*
|
||||||
.markdownlint.json
|
.markdownlint.json
|
||||||
**test.jinja
|
**test.jinja
|
||||||
|
**.ha_run.lock
|
||||||
|
|
||||||
# exceptions
|
# exceptions
|
||||||
!/www/bubble/
|
!/www/bubble/
|
||||||
@@ -4646,39 +4646,41 @@
|
|||||||
- id: '1710611198911'
|
- id: '1710611198911'
|
||||||
alias: Kallen Meds Handler
|
alias: Kallen Meds Handler
|
||||||
description: Handles the scheduling of medication reminders for Kallen
|
description: Handles the scheduling of medication reminders for Kallen
|
||||||
trigger:
|
triggers:
|
||||||
- platform: time_pattern
|
- minutes: /30
|
||||||
minutes: /30
|
|
||||||
id: trigger30
|
id: trigger30
|
||||||
alias: Every 30 minutes
|
alias: Every 30 minutes
|
||||||
- platform: time
|
trigger: time_pattern
|
||||||
at: input_datetime.kallen_morning_meds_notify
|
- at: input_datetime.kallen_morning_meds_notify
|
||||||
id: morning-notify
|
id: morning-notify
|
||||||
alias: Morning Notify
|
alias: Morning Notify
|
||||||
- platform: time
|
trigger: time
|
||||||
at: input_datetime.kallen_night_meds_notify
|
- at: input_datetime.kallen_night_meds_notify
|
||||||
id: night-notify
|
id: night-notify
|
||||||
alias: Night Notify
|
alias: Night Notify
|
||||||
- platform: state
|
trigger: time
|
||||||
entity_id:
|
enabled: true
|
||||||
|
- entity_id:
|
||||||
- input_boolean.kallen_morning_meds_taken
|
- input_boolean.kallen_morning_meds_taken
|
||||||
to: 'on'
|
to: 'on'
|
||||||
id: boolean-morning
|
id: boolean-morning
|
||||||
alias: Morning Taken
|
alias: Morning Taken
|
||||||
from: 'off'
|
from: 'off'
|
||||||
- platform: state
|
trigger: state
|
||||||
entity_id:
|
- entity_id:
|
||||||
- input_boolean.kallen_night_meds_taken
|
- input_boolean.kallen_night_meds_taken
|
||||||
id: boolean-night
|
id: boolean-night
|
||||||
alias: Night Taken
|
alias: Night Taken
|
||||||
from: 'off'
|
from: 'off'
|
||||||
to: 'on'
|
to: 'on'
|
||||||
condition:
|
trigger: state
|
||||||
|
enabled: true
|
||||||
|
conditions:
|
||||||
- condition: state
|
- condition: state
|
||||||
entity_id: input_boolean.kallen_overnight
|
entity_id: input_boolean.kallen_overnight
|
||||||
state: 'off'
|
state: 'off'
|
||||||
alias: Kallen is not staying the night elsewhere
|
alias: Kallen is not staying the night elsewhere
|
||||||
action:
|
actions:
|
||||||
- alias: Routing
|
- alias: Routing
|
||||||
choose:
|
choose:
|
||||||
- conditions:
|
- conditions:
|
||||||
@@ -4693,10 +4695,10 @@
|
|||||||
state: 'on'
|
state: 'on'
|
||||||
alias: Morning meds reminder needed
|
alias: Morning meds reminder needed
|
||||||
then:
|
then:
|
||||||
- service: script.kallen_morning_meds
|
- metadata: {}
|
||||||
metadata: {}
|
|
||||||
data: {}
|
data: {}
|
||||||
alias: Run morning meds notification script
|
alias: Run morning meds notification script
|
||||||
|
action: script.kallen_morning_meds
|
||||||
- alias: Check night reminder switch
|
- alias: Check night reminder switch
|
||||||
if:
|
if:
|
||||||
- condition: state
|
- condition: state
|
||||||
@@ -4704,10 +4706,10 @@
|
|||||||
state: 'on'
|
state: 'on'
|
||||||
alias: Night meds reminder needed
|
alias: Night meds reminder needed
|
||||||
then:
|
then:
|
||||||
- service: script.kallen_night_meds
|
- metadata: {}
|
||||||
metadata: {}
|
|
||||||
data: {}
|
data: {}
|
||||||
alias: Run night meds notification script
|
alias: Run night meds notification script
|
||||||
|
action: script.kallen_night_meds
|
||||||
alias: Every 30 minutes
|
alias: Every 30 minutes
|
||||||
- conditions:
|
- conditions:
|
||||||
- condition: and
|
- condition: and
|
||||||
@@ -4719,16 +4721,16 @@
|
|||||||
state: 'off'
|
state: 'off'
|
||||||
alias: Morning Notify
|
alias: Morning Notify
|
||||||
sequence:
|
sequence:
|
||||||
- service: input_boolean.turn_on
|
- metadata: {}
|
||||||
metadata: {}
|
|
||||||
data: {}
|
data: {}
|
||||||
target:
|
target:
|
||||||
entity_id: input_boolean.kallen_morning_meds_reminder
|
entity_id: input_boolean.kallen_morning_meds_reminder
|
||||||
alias: Activate morning reminders
|
alias: Activate morning reminders
|
||||||
- service: script.kallen_morning_meds
|
action: input_boolean.turn_on
|
||||||
metadata: {}
|
- metadata: {}
|
||||||
data: {}
|
data: {}
|
||||||
alias: Run morning meds notification script
|
alias: Run morning meds notification script
|
||||||
|
action: script.kallen_morning_meds
|
||||||
- conditions:
|
- conditions:
|
||||||
- condition: and
|
- condition: and
|
||||||
conditions:
|
conditions:
|
||||||
@@ -4741,22 +4743,21 @@
|
|||||||
alias: Night Notify
|
alias: Night Notify
|
||||||
sequence:
|
sequence:
|
||||||
- alias: Activate night reminders
|
- alias: Activate night reminders
|
||||||
service: input_boolean.turn_on
|
|
||||||
metadata: {}
|
metadata: {}
|
||||||
data: {}
|
data: {}
|
||||||
target:
|
target:
|
||||||
entity_id: input_boolean.kallen_night_meds_reminder
|
entity_id: input_boolean.kallen_night_meds_reminder
|
||||||
- service: script.kallen_night_meds
|
action: input_boolean.turn_on
|
||||||
metadata: {}
|
- metadata: {}
|
||||||
data: {}
|
data: {}
|
||||||
alias: Run night meds notification script
|
alias: Run night meds notification script
|
||||||
|
action: script.kallen_night_meds
|
||||||
- conditions:
|
- conditions:
|
||||||
- condition: trigger
|
- condition: trigger
|
||||||
id: boolean-morning
|
id: boolean-morning
|
||||||
alias: Morning Taken
|
alias: Morning Taken
|
||||||
sequence:
|
sequence:
|
||||||
- service: input_datetime.set_datetime
|
- target:
|
||||||
target:
|
|
||||||
entity_id: input_datetime.kallen_morning_meds_taken
|
entity_id: input_datetime.kallen_morning_meds_taken
|
||||||
data:
|
data:
|
||||||
datetime: '{% from ''time.jinja'' import set_datetime %} {{ set_datetime(0)
|
datetime: '{% from ''time.jinja'' import set_datetime %} {{ set_datetime(0)
|
||||||
@@ -4764,27 +4765,27 @@
|
|||||||
|
|
||||||
'
|
'
|
||||||
alias: Set time morning meds were taken
|
alias: Set time morning meds were taken
|
||||||
- service: input_boolean.turn_off
|
action: input_datetime.set_datetime
|
||||||
metadata: {}
|
- metadata: {}
|
||||||
data: {}
|
data: {}
|
||||||
target:
|
target:
|
||||||
entity_id: input_boolean.kallen_morning_meds_reminder
|
entity_id: input_boolean.kallen_morning_meds_reminder
|
||||||
alias: Deactivate morning reminders
|
alias: Deactivate morning reminders
|
||||||
- service: script.text_notify
|
action: input_boolean.turn_off
|
||||||
metadata: {}
|
- metadata: {}
|
||||||
data:
|
data:
|
||||||
type: alert
|
type: alert
|
||||||
who: kallen
|
who: kallen
|
||||||
message: clear_notification
|
message: clear_notification
|
||||||
tag: kallen-left-meds
|
tag: kallen-left-meds
|
||||||
alias: Clear kallen-left-meds notification tag
|
alias: Clear kallen-left-meds notification tag
|
||||||
|
action: script.text_notify
|
||||||
- conditions:
|
- conditions:
|
||||||
- condition: trigger
|
- condition: trigger
|
||||||
id: boolean-night
|
id: boolean-night
|
||||||
alias: Night Taken
|
alias: Night Taken
|
||||||
sequence:
|
sequence:
|
||||||
- service: input_datetime.set_datetime
|
- target:
|
||||||
target:
|
|
||||||
entity_id: input_datetime.kallen_night_meds_taken
|
entity_id: input_datetime.kallen_night_meds_taken
|
||||||
data:
|
data:
|
||||||
datetime: '{% from ''time.jinja'' import set_datetime %} {{ set_datetime(0)
|
datetime: '{% from ''time.jinja'' import set_datetime %} {{ set_datetime(0)
|
||||||
@@ -4792,20 +4793,21 @@
|
|||||||
|
|
||||||
'
|
'
|
||||||
alias: Set time night meds were taken
|
alias: Set time night meds were taken
|
||||||
|
action: input_datetime.set_datetime
|
||||||
- alias: Deactivate night reminders
|
- alias: Deactivate night reminders
|
||||||
service: input_boolean.turn_off
|
|
||||||
metadata: {}
|
metadata: {}
|
||||||
data: {}
|
data: {}
|
||||||
target:
|
target:
|
||||||
entity_id: input_boolean.kallen_night_meds_reminder
|
entity_id: input_boolean.kallen_night_meds_reminder
|
||||||
- service: script.text_notify
|
action: input_boolean.turn_off
|
||||||
metadata: {}
|
- metadata: {}
|
||||||
data:
|
data:
|
||||||
type: alert
|
type: alert
|
||||||
who: kallen
|
who: kallen
|
||||||
message: clear_notification
|
message: clear_notification
|
||||||
tag: kallen-left-meds
|
tag: kallen-left-meds
|
||||||
alias: Clear kallen-left-meds notification tag
|
alias: Clear kallen-left-meds notification tag
|
||||||
|
action: script.text_notify
|
||||||
mode: parallel
|
mode: parallel
|
||||||
max: 12
|
max: 12
|
||||||
- id: '1711657679853'
|
- id: '1711657679853'
|
||||||
@@ -6307,3 +6309,27 @@
|
|||||||
who: all
|
who: all
|
||||||
alias: Routing
|
alias: Routing
|
||||||
mode: restart
|
mode: restart
|
||||||
|
- id: '1765674032722'
|
||||||
|
alias: Emma Bedroom Heater
|
||||||
|
description: Turns Emma's bedroom heater on at the scheduled time
|
||||||
|
triggers:
|
||||||
|
- trigger: time
|
||||||
|
at: input_datetime.emma_bedroom_climate
|
||||||
|
alias: Emma Bedroom Climate
|
||||||
|
conditions:
|
||||||
|
- condition: state
|
||||||
|
entity_id: input_select.scheduled_climate_mode_emma_bedroom
|
||||||
|
state:
|
||||||
|
- Heat
|
||||||
|
- condition: state
|
||||||
|
entity_id: input_boolean.emma_bedroom_heater_installed
|
||||||
|
state:
|
||||||
|
- 'on'
|
||||||
|
actions:
|
||||||
|
- action: climate.set_hvac_mode
|
||||||
|
metadata: {}
|
||||||
|
target:
|
||||||
|
entity_id: climate.emma_bedroom_vtherm
|
||||||
|
data:
|
||||||
|
hvac_mode: heat
|
||||||
|
mode: restart
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
blueprint:
|
blueprint:
|
||||||
name: Sensor Light
|
name: Sensor Light
|
||||||
description: "# \U0001F4A1 Sensor Light\n**Version: 8.1**\n\nYour lighting experience,
|
description: "# \U0001F4A1 Sensor Light\n**Version: 8.3**\n\nYour lighting experience,
|
||||||
your way - take control and customize it to perfection! \U0001F4A1✨\n\n**If you
|
your way - take control and customize it to perfection! \U0001F4A1✨\n\n**If you
|
||||||
like my blueprints, and would like to show your support or just say thank you?**
|
like my blueprints, and would like to show your support or just say thank you?**
|
||||||
[Click Here](https://www.paypal.com/donate/?hosted_button_id=WAZS3QSDTPGA8) \U0001F642\n\n<details>
|
[Click Here](https://www.paypal.com/donate/?hosted_button_id=WAZS3QSDTPGA8) \U0001F642\n\n<details>
|
||||||
@@ -27,17 +27,19 @@ blueprint:
|
|||||||
Light Sensing Options:**\n - Set up an Ambient Light Sensor for activation
|
Light Sensing Options:**\n - Set up an Ambient Light Sensor for activation
|
||||||
in low-light conditions, customizable with specified LUX values.\n\n - **Time-Based
|
in low-light conditions, customizable with specified LUX values.\n\n - **Time-Based
|
||||||
Options:**\n - Specify precise start and end times along with weekday selections
|
Options:**\n - Specify precise start and end times along with weekday selections
|
||||||
to define when the automation should run.\n\n - **Device Tracker Options:**\n
|
to define when the automation can run.\n\n - **State Control Option:**\n -
|
||||||
\ - Utilize \"Device Tracker\" to activate automation when home or within specified
|
Allows the automation to run when the entity is in its selected activation state
|
||||||
zones, preventing unnecessary activations. This feature is particularly useful
|
(ON or OFF).\n\n - **Device Tracker Options:**\n - Utilize \"Device Tracker\"
|
||||||
to prevent unnecessary lighting activations when pets trigger sensors while no
|
to activate automation when home or within specified zones, preventing unnecessary
|
||||||
one is home.\n\n - **Night Lights Mode:**\n - Enable \"Night Lights\" for
|
activations. This feature is particularly useful to prevent unnecessary lighting
|
||||||
softer illumination during night time activities, automatically enabled based
|
activations when pets trigger sensors while no one is home.\n\n - **Night Lights
|
||||||
on conditions.\n - Opt to use \"Night Glow\". This feature activates a low-level
|
Mode:**\n - Enable \"Night Lights\" for softer illumination during night time
|
||||||
light when no trigger is detected, creating a subtle ambient glow perfect for
|
activities, automatically enabled based on conditions.\n - Opt to use \"Night
|
||||||
nighttime use.\n\n - **HA Restart Safeguards:**\n - Benefit from built-in
|
Glow\". This feature activates a low-level light when no trigger is detected,
|
||||||
safeguards for Home Assistant restarts.\n\n - **Blueprint Add-On Integration:**\n
|
creating a subtle ambient glow perfect for nighttime use.\n\n - **HA Restart
|
||||||
\ - Sensor Light Add-On - Enhances media control automation. [Click Here](https://community.home-assistant.io/t/591824)
|
Safeguards:**\n - Benefit from built-in safeguards for Home Assistant restarts.\n\n
|
||||||
|
\ - **Blueprint Add-On Integration:**\n - Sensor Light Add-On - Enhances media
|
||||||
|
control automation. [Click Here](https://community.home-assistant.io/t/591824)
|
||||||
to learn more.\n - Bathroom Humidity Exhaust Fan - Keeps the lights ON when
|
to learn more.\n - Bathroom Humidity Exhaust Fan - Keeps the lights ON when
|
||||||
showering. [Click Here](https://community.home-assistant.io/t/509992) to learn
|
showering. [Click Here](https://community.home-assistant.io/t/509992) to learn
|
||||||
more.\n</details>\n\nNeed help?\n- The Settings & Best Practice Guidelines: [Click
|
more.\n</details>\n\nNeed help?\n- The Settings & Best Practice Guidelines: [Click
|
||||||
@@ -75,6 +77,7 @@ blueprint:
|
|||||||
- binary_sensor
|
- binary_sensor
|
||||||
- schedule
|
- schedule
|
||||||
multiple: true
|
multiple: true
|
||||||
|
reorder: false
|
||||||
lights_settings:
|
lights_settings:
|
||||||
name: Lights *
|
name: Lights *
|
||||||
icon: mdi:lightbulb-outline
|
icon: mdi:lightbulb-outline
|
||||||
@@ -118,6 +121,7 @@ blueprint:
|
|||||||
- domain:
|
- domain:
|
||||||
- input_boolean
|
- input_boolean
|
||||||
multiple: false
|
multiple: false
|
||||||
|
reorder: false
|
||||||
end_scenes:
|
end_scenes:
|
||||||
name: Scenes - Scripts To Turn OFF
|
name: Scenes - Scripts To Turn OFF
|
||||||
description: 'If you have selected a scene or a script to be turned ON above
|
description: 'If you have selected a scene or a script to be turned ON above
|
||||||
@@ -134,6 +138,7 @@ blueprint:
|
|||||||
- domain:
|
- domain:
|
||||||
- scene
|
- scene
|
||||||
- script
|
- script
|
||||||
|
reorder: false
|
||||||
time_delay:
|
time_delay:
|
||||||
name: Time Delay
|
name: Time Delay
|
||||||
description: 'The time delay determines how long the lights, switches, scenes,
|
description: 'The time delay determines how long the lights, switches, scenes,
|
||||||
@@ -171,8 +176,8 @@ blueprint:
|
|||||||
value: use_brightness
|
value: use_brightness
|
||||||
- label: Use Transition
|
- label: Use Transition
|
||||||
value: use_transition
|
value: use_transition
|
||||||
custom_value: false
|
|
||||||
sort: false
|
sort: false
|
||||||
|
custom_value: false
|
||||||
light_brightness:
|
light_brightness:
|
||||||
name: Brightness
|
name: Brightness
|
||||||
description: 'The brightness setting for the lights when they are turned
|
description: 'The brightness setting for the lights when they are turned
|
||||||
@@ -237,9 +242,9 @@ blueprint:
|
|||||||
value: use_rgbww_colour
|
value: use_rgbww_colour
|
||||||
- label: Disable Colour Control
|
- label: Disable Colour Control
|
||||||
value: disable_colour_control
|
value: disable_colour_control
|
||||||
custom_value: false
|
|
||||||
sort: false
|
|
||||||
multiple: false
|
multiple: false
|
||||||
|
sort: false
|
||||||
|
custom_value: false
|
||||||
light_colour_temperature:
|
light_colour_temperature:
|
||||||
name: Colour Temperature
|
name: Colour Temperature
|
||||||
description: 'The colour temperature setting for the lights when they are
|
description: 'The colour temperature setting for the lights when they are
|
||||||
@@ -357,9 +362,9 @@ blueprint:
|
|||||||
value: enable_time_controled_brightness_inv
|
value: enable_time_controled_brightness_inv
|
||||||
- label: 13 - Time Controlled - Colour Temp + Brightness
|
- label: 13 - Time Controlled - Colour Temp + Brightness
|
||||||
value: enable_time_controled_colour_brightness
|
value: enable_time_controled_colour_brightness
|
||||||
custom_value: false
|
|
||||||
sort: false
|
|
||||||
multiple: false
|
multiple: false
|
||||||
|
sort: false
|
||||||
|
custom_value: false
|
||||||
dynamic_lighting_lux_sensor:
|
dynamic_lighting_lux_sensor:
|
||||||
name: Dynamic Lighting - Ambient Light Sensor
|
name: Dynamic Lighting - Ambient Light Sensor
|
||||||
description: '**Used in options 1, 2, 8 or 9** - Enter the specific ambient
|
description: '**Used in options 1, 2, 8 or 9** - Enter the specific ambient
|
||||||
@@ -375,6 +380,7 @@ blueprint:
|
|||||||
device_class:
|
device_class:
|
||||||
- illuminance
|
- illuminance
|
||||||
multiple: false
|
multiple: false
|
||||||
|
reorder: false
|
||||||
dynamic_lighting_max_lux:
|
dynamic_lighting_max_lux:
|
||||||
name: Dynamic Lighting - Max Lux Value
|
name: Dynamic Lighting - Max Lux Value
|
||||||
description: '**Used in options 1, 2, 8 or 9** - Specify the maximum lux
|
description: '**Used in options 1, 2, 8 or 9** - Specify the maximum lux
|
||||||
@@ -459,6 +465,7 @@ blueprint:
|
|||||||
- domain:
|
- domain:
|
||||||
- input_boolean
|
- input_boolean
|
||||||
multiple: false
|
multiple: false
|
||||||
|
reorder: false
|
||||||
dynamic_lighting_max_colour_temp:
|
dynamic_lighting_max_colour_temp:
|
||||||
name: Dynamic Lighting - Max Colour Temperature
|
name: Dynamic Lighting - Max Colour Temperature
|
||||||
description: '**Used in options 3, 6, 7, 8, 9, 10 or 13** - Specify the
|
description: '**Used in options 3, 6, 7, 8, 9, 10 or 13** - Specify the
|
||||||
@@ -679,9 +686,9 @@ blueprint:
|
|||||||
value: enable_state_control
|
value: enable_state_control
|
||||||
- label: Disable State Control Option
|
- label: Disable State Control Option
|
||||||
value: disable_state_control
|
value: disable_state_control
|
||||||
custom_value: false
|
|
||||||
sort: false
|
|
||||||
multiple: false
|
multiple: false
|
||||||
|
sort: false
|
||||||
|
custom_value: false
|
||||||
dynamic_lighting_state_control_activation_state:
|
dynamic_lighting_state_control_activation_state:
|
||||||
name: Dynamic Lighting - State Control Activation State
|
name: Dynamic Lighting - State Control Activation State
|
||||||
description: 'Select the state the entity must be in to activate dynamic
|
description: 'Select the state the entity must be in to activate dynamic
|
||||||
@@ -698,9 +705,9 @@ blueprint:
|
|||||||
value: 'on'
|
value: 'on'
|
||||||
- label: OFF State
|
- label: OFF State
|
||||||
value: 'off'
|
value: 'off'
|
||||||
custom_value: false
|
|
||||||
sort: false
|
|
||||||
multiple: false
|
multiple: false
|
||||||
|
sort: false
|
||||||
|
custom_value: false
|
||||||
dynamic_lighting_state_control_entity:
|
dynamic_lighting_state_control_entity:
|
||||||
name: Dynamic Lighting - State Control Entity
|
name: Dynamic Lighting - State Control Entity
|
||||||
description: 'If the state control option above is enabled, select the entity
|
description: 'If the state control option above is enabled, select the entity
|
||||||
@@ -734,8 +741,8 @@ blueprint:
|
|||||||
- label: 3 - Enable the Bypass - Keep the Lights Current State
|
- label: 3 - Enable the Bypass - Keep the Lights Current State
|
||||||
value: bypass_enabled_stop
|
value: bypass_enabled_stop
|
||||||
multiple: true
|
multiple: true
|
||||||
custom_value: false
|
|
||||||
sort: false
|
sort: false
|
||||||
|
custom_value: false
|
||||||
motion_bypass_lights_on:
|
motion_bypass_lights_on:
|
||||||
name: Bypass Switch - Turn the Lights ON
|
name: Bypass Switch - Turn the Lights ON
|
||||||
description: 'Select the switches that will turn your lights ON, bypass
|
description: 'Select the switches that will turn your lights ON, bypass
|
||||||
@@ -748,6 +755,7 @@ blueprint:
|
|||||||
selector:
|
selector:
|
||||||
entity:
|
entity:
|
||||||
multiple: true
|
multiple: true
|
||||||
|
reorder: false
|
||||||
motion_bypass_lights_off:
|
motion_bypass_lights_off:
|
||||||
name: Bypass Switch - Turn the Lights OFF
|
name: Bypass Switch - Turn the Lights OFF
|
||||||
description: 'Select the switches that will turn your lights OFF, bypass
|
description: 'Select the switches that will turn your lights OFF, bypass
|
||||||
@@ -760,6 +768,7 @@ blueprint:
|
|||||||
selector:
|
selector:
|
||||||
entity:
|
entity:
|
||||||
multiple: true
|
multiple: true
|
||||||
|
reorder: false
|
||||||
motion_bypass_lights_stop:
|
motion_bypass_lights_stop:
|
||||||
name: Bypass Switch - Keep the Lights Current State
|
name: Bypass Switch - Keep the Lights Current State
|
||||||
description: 'Select the switches that will keep your lights current state,
|
description: 'Select the switches that will keep your lights current state,
|
||||||
@@ -772,6 +781,7 @@ blueprint:
|
|||||||
selector:
|
selector:
|
||||||
entity:
|
entity:
|
||||||
multiple: true
|
multiple: true
|
||||||
|
reorder: false
|
||||||
bypass_time_delay:
|
bypass_time_delay:
|
||||||
name: Bypass - Time Delay
|
name: Bypass - Time Delay
|
||||||
description: "This is only used in two specific bypass scenarios when your
|
description: "This is only used in two specific bypass scenarios when your
|
||||||
@@ -807,8 +817,8 @@ blueprint:
|
|||||||
State
|
State
|
||||||
value: bypass_auto_off_enabled_stop
|
value: bypass_auto_off_enabled_stop
|
||||||
multiple: true
|
multiple: true
|
||||||
custom_value: false
|
|
||||||
sort: false
|
sort: false
|
||||||
|
custom_value: false
|
||||||
bypass_auto_off_delay:
|
bypass_auto_off_delay:
|
||||||
name: Bypass Auto OFF - Time Delay
|
name: Bypass Auto OFF - Time Delay
|
||||||
description: 'Set the bypass auto OFF time delay. The time delay starts
|
description: 'Set the bypass auto OFF time delay. The time delay starts
|
||||||
@@ -848,9 +858,9 @@ blueprint:
|
|||||||
value: sun_enabled
|
value: sun_enabled
|
||||||
- label: Disable the sun option
|
- label: Disable the sun option
|
||||||
value: sun_disabled
|
value: sun_disabled
|
||||||
custom_value: false
|
|
||||||
sort: false
|
|
||||||
multiple: false
|
multiple: false
|
||||||
|
sort: false
|
||||||
|
custom_value: false
|
||||||
sun_elevation:
|
sun_elevation:
|
||||||
name: Sun Elevation Falling
|
name: Sun Elevation Falling
|
||||||
description: 'The sun elevation falling refers to the angle between the
|
description: 'The sun elevation falling refers to the angle between the
|
||||||
@@ -906,9 +916,9 @@ blueprint:
|
|||||||
value: ambient_enabled
|
value: ambient_enabled
|
||||||
- label: Disable the ambient options
|
- label: Disable the ambient options
|
||||||
value: ambient_disabled
|
value: ambient_disabled
|
||||||
custom_value: false
|
|
||||||
sort: false
|
|
||||||
multiple: false
|
multiple: false
|
||||||
|
sort: false
|
||||||
|
custom_value: false
|
||||||
ambient_light_sensor:
|
ambient_light_sensor:
|
||||||
name: Ambient Light Sensor
|
name: Ambient Light Sensor
|
||||||
description: 'Select the ambient sensor to be used.
|
description: 'Select the ambient sensor to be used.
|
||||||
@@ -923,6 +933,7 @@ blueprint:
|
|||||||
device_class:
|
device_class:
|
||||||
- illuminance
|
- illuminance
|
||||||
multiple: false
|
multiple: false
|
||||||
|
reorder: false
|
||||||
ambient_light_options:
|
ambient_light_options:
|
||||||
name: Ambient Light Sensor - Site Conditions
|
name: Ambient Light Sensor - Site Conditions
|
||||||
description: 'In some cases when your lights turn ON, your ambient light
|
description: 'In some cases when your lights turn ON, your ambient light
|
||||||
@@ -942,9 +953,9 @@ blueprint:
|
|||||||
value: ambient_light_option_enabled
|
value: ambient_light_option_enabled
|
||||||
- label: NO - My Ambient Light Sensor is not affected by the Lights
|
- label: NO - My Ambient Light Sensor is not affected by the Lights
|
||||||
value: ambient_light_option_disabled
|
value: ambient_light_option_disabled
|
||||||
custom_value: false
|
|
||||||
sort: false
|
|
||||||
multiple: false
|
multiple: false
|
||||||
|
sort: false
|
||||||
|
custom_value: false
|
||||||
ambient_light_value:
|
ambient_light_value:
|
||||||
name: Ambient Light - Low Lux Value
|
name: Ambient Light - Low Lux Value
|
||||||
description: 'Set the Ambient Light Low Lux Value. The light will turn ON
|
description: 'Set the Ambient Light Low Lux Value. The light will turn ON
|
||||||
@@ -1001,9 +1012,9 @@ blueprint:
|
|||||||
value: time_enabled
|
value: time_enabled
|
||||||
- label: Disable the time options
|
- label: Disable the time options
|
||||||
value: time_disabled
|
value: time_disabled
|
||||||
custom_value: false
|
|
||||||
sort: false
|
|
||||||
multiple: false
|
multiple: false
|
||||||
|
sort: false
|
||||||
|
custom_value: false
|
||||||
after_time:
|
after_time:
|
||||||
name: Start Time
|
name: Start Time
|
||||||
description: 'Set the start time.
|
description: 'Set the start time.
|
||||||
@@ -1054,8 +1065,57 @@ blueprint:
|
|||||||
value: sat
|
value: sat
|
||||||
- label: Sunday
|
- label: Sunday
|
||||||
value: sun
|
value: sun
|
||||||
custom_value: false
|
|
||||||
sort: false
|
sort: false
|
||||||
|
custom_value: false
|
||||||
|
state_control_settings:
|
||||||
|
name: State Control
|
||||||
|
icon: mdi:toggle-switch-outline
|
||||||
|
collapsed: true
|
||||||
|
input:
|
||||||
|
include_state_control:
|
||||||
|
name: Use The State Control Option (Optional)
|
||||||
|
description: 'This option is used to add a condition that only allows the
|
||||||
|
automation to run when the entity is in its selected activation state
|
||||||
|
below.
|
||||||
|
|
||||||
|
'
|
||||||
|
default: state_control_disabled
|
||||||
|
selector:
|
||||||
|
select:
|
||||||
|
options:
|
||||||
|
- label: Enable State Control Option
|
||||||
|
value: state_control_enabled
|
||||||
|
- label: Disable State Control Option
|
||||||
|
value: state_control_disabled
|
||||||
|
multiple: false
|
||||||
|
sort: false
|
||||||
|
custom_value: false
|
||||||
|
state_control_activation_state:
|
||||||
|
name: Activation State
|
||||||
|
description: 'Select the state (ON or OFF) the entity must be in so the
|
||||||
|
automation can run.
|
||||||
|
|
||||||
|
'
|
||||||
|
default: 'off'
|
||||||
|
selector:
|
||||||
|
select:
|
||||||
|
options:
|
||||||
|
- label: ON State
|
||||||
|
value: 'on'
|
||||||
|
- label: OFF State
|
||||||
|
value: 'off'
|
||||||
|
multiple: false
|
||||||
|
sort: false
|
||||||
|
custom_value: false
|
||||||
|
state_control_entity:
|
||||||
|
name: Control Entity
|
||||||
|
description: 'If State Control is enabled, select the entity that will allow
|
||||||
|
the automation to run based on the activation state selected above.
|
||||||
|
|
||||||
|
'
|
||||||
|
default: []
|
||||||
|
selector:
|
||||||
|
entity: {}
|
||||||
device_tracker_settings:
|
device_tracker_settings:
|
||||||
name: Device Tracker
|
name: Device Tracker
|
||||||
icon: mdi:account-multiple-check-outline
|
icon: mdi:account-multiple-check-outline
|
||||||
@@ -1083,9 +1143,9 @@ blueprint:
|
|||||||
value: zone_people_enabled
|
value: zone_people_enabled
|
||||||
- label: Disable the device tracker options
|
- label: Disable the device tracker options
|
||||||
value: device_tracker_disabled
|
value: device_tracker_disabled
|
||||||
custom_value: false
|
|
||||||
sort: false
|
|
||||||
multiple: false
|
multiple: false
|
||||||
|
sort: false
|
||||||
|
custom_value: false
|
||||||
zone:
|
zone:
|
||||||
name: Device Tracker - Zone
|
name: Device Tracker - Zone
|
||||||
description: 'Choose the zone that will track your devices and/or people
|
description: 'Choose the zone that will track your devices and/or people
|
||||||
@@ -1099,6 +1159,7 @@ blueprint:
|
|||||||
- domain:
|
- domain:
|
||||||
- zone
|
- zone
|
||||||
multiple: false
|
multiple: false
|
||||||
|
reorder: false
|
||||||
people:
|
people:
|
||||||
name: Device Tracker - People
|
name: Device Tracker - People
|
||||||
description: 'Select the people you would like to track in the zone selected
|
description: 'Select the people you would like to track in the zone selected
|
||||||
@@ -1112,6 +1173,7 @@ blueprint:
|
|||||||
filter:
|
filter:
|
||||||
- domain:
|
- domain:
|
||||||
- person
|
- person
|
||||||
|
reorder: false
|
||||||
night_lights_trigger_settings:
|
night_lights_trigger_settings:
|
||||||
name: Night Lights Settings
|
name: Night Lights Settings
|
||||||
icon: mdi:weather-night
|
icon: mdi:weather-night
|
||||||
@@ -1137,9 +1199,9 @@ blueprint:
|
|||||||
value: night_lights_enabled
|
value: night_lights_enabled
|
||||||
- label: Disable the night lights options
|
- label: Disable the night lights options
|
||||||
value: night_lights_disabled
|
value: night_lights_disabled
|
||||||
custom_value: false
|
|
||||||
sort: false
|
|
||||||
multiple: false
|
multiple: false
|
||||||
|
sort: false
|
||||||
|
custom_value: false
|
||||||
night_lights_conditions:
|
night_lights_conditions:
|
||||||
name: Night Lights Conditions (Required For Night Lights)
|
name: Night Lights Conditions (Required For Night Lights)
|
||||||
description: 'Select any night light condition from the options provided
|
description: 'Select any night light condition from the options provided
|
||||||
@@ -1161,8 +1223,8 @@ blueprint:
|
|||||||
value: time_enabled
|
value: time_enabled
|
||||||
- label: Enable sun elevation option
|
- label: Enable sun elevation option
|
||||||
value: sun_enabled
|
value: sun_enabled
|
||||||
custom_value: false
|
|
||||||
sort: false
|
sort: false
|
||||||
|
custom_value: false
|
||||||
night_lights_entity_state:
|
night_lights_entity_state:
|
||||||
name: Night Lights - Entity State
|
name: Night Lights - Entity State
|
||||||
description: 'Select an entity that will trigger the activation of night
|
description: 'Select an entity that will trigger the activation of night
|
||||||
@@ -1179,6 +1241,7 @@ blueprint:
|
|||||||
selector:
|
selector:
|
||||||
entity:
|
entity:
|
||||||
multiple: true
|
multiple: true
|
||||||
|
reorder: false
|
||||||
night_lights_after_time:
|
night_lights_after_time:
|
||||||
name: Night Lights - Start Time
|
name: Night Lights - Start Time
|
||||||
description: 'Set the start time.
|
description: 'Set the start time.
|
||||||
@@ -1270,6 +1333,7 @@ blueprint:
|
|||||||
- domain:
|
- domain:
|
||||||
- input_boolean
|
- input_boolean
|
||||||
multiple: false
|
multiple: false
|
||||||
|
reorder: false
|
||||||
night_time_delay:
|
night_time_delay:
|
||||||
name: Night Lights - Time Delay
|
name: Night Lights - Time Delay
|
||||||
description: 'The time delay determines how long the night lights will remain
|
description: 'The time delay determines how long the night lights will remain
|
||||||
@@ -1315,8 +1379,8 @@ blueprint:
|
|||||||
value: if_lights_are_on_adjust_when_crossing_over
|
value: if_lights_are_on_adjust_when_crossing_over
|
||||||
- label: Yes - Manage OFF script when crossing over
|
- label: Yes - Manage OFF script when crossing over
|
||||||
value: manage_scripts_crossing_over
|
value: manage_scripts_crossing_over
|
||||||
custom_value: false
|
|
||||||
sort: false
|
sort: false
|
||||||
|
custom_value: false
|
||||||
night_light_brightness:
|
night_light_brightness:
|
||||||
name: Night Lights - Brightness
|
name: Night Lights - Brightness
|
||||||
description: 'The brightness setting of the lights when they are turned
|
description: 'The brightness setting of the lights when they are turned
|
||||||
@@ -1379,9 +1443,9 @@ blueprint:
|
|||||||
value: use_rgbww_colour
|
value: use_rgbww_colour
|
||||||
- label: Disable Colour Control
|
- label: Disable Colour Control
|
||||||
value: disable_colour_control
|
value: disable_colour_control
|
||||||
custom_value: false
|
|
||||||
sort: false
|
|
||||||
multiple: false
|
multiple: false
|
||||||
|
sort: false
|
||||||
|
custom_value: false
|
||||||
night_light_colour_temperature:
|
night_light_colour_temperature:
|
||||||
name: Night Lights - Colour Temperature
|
name: Night Lights - Colour Temperature
|
||||||
description: 'The colour temperature setting for the lights when they are
|
description: 'The colour temperature setting for the lights when they are
|
||||||
@@ -1460,9 +1524,9 @@ blueprint:
|
|||||||
value: night_glow_enabled
|
value: night_glow_enabled
|
||||||
- label: Disable night glow
|
- label: Disable night glow
|
||||||
value: night_glow_disabled
|
value: night_glow_disabled
|
||||||
custom_value: false
|
|
||||||
sort: false
|
|
||||||
multiple: false
|
multiple: false
|
||||||
|
sort: false
|
||||||
|
custom_value: false
|
||||||
night_glow_lights:
|
night_glow_lights:
|
||||||
name: Night Glow - Lights
|
name: Night Glow - Lights
|
||||||
description: 'The lights, switches, scenes, and scripts to be used for a
|
description: 'The lights, switches, scenes, and scripts to be used for a
|
||||||
@@ -1501,8 +1565,8 @@ blueprint:
|
|||||||
value: use_brightness
|
value: use_brightness
|
||||||
- label: Use transition
|
- label: Use transition
|
||||||
value: use_transition
|
value: use_transition
|
||||||
custom_value: false
|
|
||||||
sort: false
|
sort: false
|
||||||
|
custom_value: false
|
||||||
night_glow_light_brightness:
|
night_glow_light_brightness:
|
||||||
name: Night Glow - Brightness
|
name: Night Glow - Brightness
|
||||||
description: 'The brightness setting of the lights when they are turned
|
description: 'The brightness setting of the lights when they are turned
|
||||||
@@ -1565,9 +1629,9 @@ blueprint:
|
|||||||
value: use_rgbww_colour
|
value: use_rgbww_colour
|
||||||
- label: Disable Colour Control
|
- label: Disable Colour Control
|
||||||
value: disable_colour_control
|
value: disable_colour_control
|
||||||
custom_value: false
|
|
||||||
sort: false
|
|
||||||
multiple: false
|
multiple: false
|
||||||
|
sort: false
|
||||||
|
custom_value: false
|
||||||
night_glow_light_colour_temperature:
|
night_glow_light_colour_temperature:
|
||||||
name: Night Glow - Colour Temperature
|
name: Night Glow - Colour Temperature
|
||||||
description: 'The colour temperature setting for the lights when they are
|
description: 'The colour temperature setting for the lights when they are
|
||||||
@@ -1683,6 +1747,9 @@ variables:
|
|||||||
after_time: !input after_time
|
after_time: !input after_time
|
||||||
before_time: !input before_time
|
before_time: !input before_time
|
||||||
weekday_options: !input weekday_options
|
weekday_options: !input weekday_options
|
||||||
|
include_state_control: !input include_state_control
|
||||||
|
state_control_activation_state: !input state_control_activation_state
|
||||||
|
state_control_entity: !input state_control_entity
|
||||||
include_device_tracker: !input include_device_tracker
|
include_device_tracker: !input include_device_tracker
|
||||||
zone: !input zone
|
zone: !input zone
|
||||||
people: !input people
|
people: !input people
|
||||||
@@ -1963,8 +2030,16 @@ triggers:
|
|||||||
id: t16
|
id: t16
|
||||||
entity_id: !input dynamic_lighting_state_control_entity
|
entity_id: !input dynamic_lighting_state_control_entity
|
||||||
from: !input dynamic_lighting_state_control_activation_state
|
from: !input dynamic_lighting_state_control_activation_state
|
||||||
- trigger: homeassistant
|
- trigger: state
|
||||||
id: t17
|
id: t17
|
||||||
|
entity_id: !input state_control_entity
|
||||||
|
to: !input state_control_activation_state
|
||||||
|
- trigger: state
|
||||||
|
id: t18
|
||||||
|
entity_id: !input state_control_entity
|
||||||
|
from: !input state_control_activation_state
|
||||||
|
- trigger: homeassistant
|
||||||
|
id: t19
|
||||||
event: start
|
event: start
|
||||||
condition:
|
condition:
|
||||||
- condition: or
|
- condition: or
|
||||||
@@ -2288,6 +2363,40 @@ condition:
|
|||||||
conditions:
|
conditions:
|
||||||
- condition: trigger
|
- condition: trigger
|
||||||
id: t17
|
id: t17
|
||||||
|
- condition: state
|
||||||
|
entity_id: !input motion_trigger
|
||||||
|
state: 'on'
|
||||||
|
match: any
|
||||||
|
- condition: template
|
||||||
|
value_template: '{{ include_state_control == ''state_control_enabled'' }}'
|
||||||
|
- condition: and
|
||||||
|
conditions:
|
||||||
|
- condition: trigger
|
||||||
|
id: t18
|
||||||
|
- condition: template
|
||||||
|
value_template: '{{ include_state_control == ''state_control_enabled'' }}'
|
||||||
|
- condition: or
|
||||||
|
conditions:
|
||||||
|
- '{{ (expand(light_switch.entity_id) | selectattr(''state'', ''=='', ''on'')
|
||||||
|
| list | count > 0) }}'
|
||||||
|
- '{{ (include_night_lights == ''night_lights_enabled'') and (expand(night_lights.entity_id)
|
||||||
|
| selectattr(''state'', ''=='', ''on'') | list | count > 0) }}'
|
||||||
|
- '{{ (include_night_lights == ''night_lights_enabled'') and (include_night_glow
|
||||||
|
== ''night_glow_enabled'') and (expand(night_glow_lights.entity_id) | selectattr(''state'',
|
||||||
|
''=='', ''on'') | list | count > 0) }}'
|
||||||
|
- condition: template
|
||||||
|
value_template: "{% if boolean_scenes_scripts != [] %}\n {{ is_state(boolean_scenes_scripts,
|
||||||
|
'on') }}\n{% endif %}"
|
||||||
|
- condition: template
|
||||||
|
value_template: "{% if night_boolean_scenes_scripts != [] %}\n {{ is_state(night_boolean_scenes_scripts,
|
||||||
|
'on') }}\n{% endif %}"
|
||||||
|
- condition: template
|
||||||
|
value_template: "{% if dynamic_lighting_boolean != [] %}\n {{ is_state(dynamic_lighting_boolean,
|
||||||
|
'on') }}\n{% endif %}"
|
||||||
|
- condition: and
|
||||||
|
conditions:
|
||||||
|
- condition: trigger
|
||||||
|
id: t19
|
||||||
- condition: or
|
- condition: or
|
||||||
conditions:
|
conditions:
|
||||||
- '{{ (expand(light_switch.entity_id) | selectattr(''state'', ''=='', ''on'')
|
- '{{ (expand(light_switch.entity_id) | selectattr(''state'', ''=='', ''on'')
|
||||||
@@ -2306,7 +2415,7 @@ condition:
|
|||||||
- condition: and
|
- condition: and
|
||||||
conditions:
|
conditions:
|
||||||
- condition: trigger
|
- condition: trigger
|
||||||
id: t17
|
id: t19
|
||||||
- condition: state
|
- condition: state
|
||||||
entity_id: !input motion_trigger
|
entity_id: !input motion_trigger
|
||||||
match: any
|
match: any
|
||||||
@@ -2314,7 +2423,7 @@ condition:
|
|||||||
- condition: and
|
- condition: and
|
||||||
conditions:
|
conditions:
|
||||||
- condition: trigger
|
- condition: trigger
|
||||||
id: t17
|
id: t19
|
||||||
- '{{ (''bypass_auto_off_enabled_on'' in include_bypass_auto_off) or (''bypass_auto_off_enabled_off''
|
- '{{ (''bypass_auto_off_enabled_on'' in include_bypass_auto_off) or (''bypass_auto_off_enabled_off''
|
||||||
in include_bypass_auto_off) or (''bypass_auto_off_enabled_stop'' in include_bypass_auto_off)
|
in include_bypass_auto_off) or (''bypass_auto_off_enabled_stop'' in include_bypass_auto_off)
|
||||||
}}'
|
}}'
|
||||||
@@ -2407,7 +2516,7 @@ condition:
|
|||||||
- t8_on
|
- t8_on
|
||||||
- t8_off
|
- t8_off
|
||||||
- t8_stop
|
- t8_stop
|
||||||
- t17
|
- t19
|
||||||
- condition: or
|
- condition: or
|
||||||
conditions:
|
conditions:
|
||||||
- '{{ include_sun == ''sun_disabled'' }}'
|
- '{{ include_sun == ''sun_disabled'' }}'
|
||||||
@@ -2502,6 +2611,26 @@ condition:
|
|||||||
- t8_off
|
- t8_off
|
||||||
- t8_stop
|
- t8_stop
|
||||||
- t11
|
- t11
|
||||||
|
- condition: or
|
||||||
|
conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: '{{ include_state_control == ''state_control_disabled'' }}'
|
||||||
|
- condition: and
|
||||||
|
conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: '{{ include_state_control == ''state_control_enabled'' }}'
|
||||||
|
- condition: state
|
||||||
|
entity_id: !input state_control_entity
|
||||||
|
state: !input state_control_activation_state
|
||||||
|
- condition: trigger
|
||||||
|
id:
|
||||||
|
- t7_on
|
||||||
|
- t7_off
|
||||||
|
- t7_stop
|
||||||
|
- t8_on
|
||||||
|
- t8_off
|
||||||
|
- t8_stop
|
||||||
|
- t18
|
||||||
- condition: or
|
- condition: or
|
||||||
conditions:
|
conditions:
|
||||||
- '{{ include_device_tracker == ''device_tracker_disabled'' }}'
|
- '{{ include_device_tracker == ''device_tracker_disabled'' }}'
|
||||||
@@ -3318,6 +3447,15 @@ action:
|
|||||||
- condition: time
|
- condition: time
|
||||||
after: !input before_time
|
after: !input before_time
|
||||||
before: !input after_time
|
before: !input after_time
|
||||||
|
- condition: and
|
||||||
|
conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: '{{ include_state_control == ''state_control_enabled''
|
||||||
|
}}'
|
||||||
|
- condition: template
|
||||||
|
value_template: '{% set opposite = ''off'' if state_control_activation_state
|
||||||
|
== ''on'' else ''on'' %} {{ is_state(state_control_entity, opposite)
|
||||||
|
}}'
|
||||||
sequence:
|
sequence:
|
||||||
- alias: Wait the number of minutes set in the by-pass time delay
|
- alias: Wait the number of minutes set in the by-pass time delay
|
||||||
delay:
|
delay:
|
||||||
@@ -3591,13 +3729,14 @@ action:
|
|||||||
entity_id: '{{ crossover_night_lights_light_on }}'
|
entity_id: '{{ crossover_night_lights_light_on }}'
|
||||||
data: '{{ night_light_data }}'
|
data: '{{ night_light_data }}'
|
||||||
- choose:
|
- choose:
|
||||||
- alias: Sun, ambient & time above setting to turn off
|
- alias: Sun, ambient, time & state control above setting to turn off
|
||||||
conditions:
|
conditions:
|
||||||
- condition: trigger
|
- condition: trigger
|
||||||
id:
|
id:
|
||||||
- t9
|
- t9
|
||||||
- t10
|
- t10
|
||||||
- t11
|
- t11
|
||||||
|
- t18
|
||||||
sequence:
|
sequence:
|
||||||
- choose:
|
- choose:
|
||||||
- alias: If transition is selected
|
- alias: If transition is selected
|
||||||
@@ -3834,7 +3973,7 @@ action:
|
|||||||
- alias: Safe Guard when HA restarts
|
- alias: Safe Guard when HA restarts
|
||||||
conditions:
|
conditions:
|
||||||
- condition: trigger
|
- condition: trigger
|
||||||
id: t17
|
id: t19
|
||||||
sequence:
|
sequence:
|
||||||
- choose:
|
- choose:
|
||||||
- alias: Check all by-pass are off and check conditions if enabled
|
- alias: Check all by-pass are off and check conditions if enabled
|
||||||
@@ -5310,6 +5449,15 @@ action:
|
|||||||
after: !input before_time
|
after: !input before_time
|
||||||
before: !input after_time
|
before: !input after_time
|
||||||
- '{{ include_time == ''time_enabled'' }}'
|
- '{{ include_time == ''time_enabled'' }}'
|
||||||
|
- condition: and
|
||||||
|
conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: '{{ include_state_control == ''state_control_enabled''
|
||||||
|
}}'
|
||||||
|
- condition: template
|
||||||
|
value_template: '{% set opposite = ''off'' if state_control_activation_state
|
||||||
|
== ''on'' else ''on'' %} {{ is_state(state_control_entity, opposite)
|
||||||
|
}}'
|
||||||
sequence:
|
sequence:
|
||||||
- alias: Wait the number of minutes set in the by-pass time delay
|
- alias: Wait the number of minutes set in the by-pass time delay
|
||||||
delay:
|
delay:
|
||||||
@@ -5663,13 +5811,14 @@ action:
|
|||||||
data:
|
data:
|
||||||
entity_id: !input dynamic_lighting_boolean
|
entity_id: !input dynamic_lighting_boolean
|
||||||
- choose:
|
- choose:
|
||||||
- alias: Sun, ambient & time above setting to turn off
|
- alias: Sun, ambient, time & state control above setting to turn off
|
||||||
conditions:
|
conditions:
|
||||||
- condition: trigger
|
- condition: trigger
|
||||||
id:
|
id:
|
||||||
- t9
|
- t9
|
||||||
- t10
|
- t10
|
||||||
- t11
|
- t11
|
||||||
|
- t18
|
||||||
sequence:
|
sequence:
|
||||||
- choose:
|
- choose:
|
||||||
- alias: If transition is selected
|
- alias: If transition is selected
|
||||||
@@ -5905,7 +6054,7 @@ action:
|
|||||||
- alias: Safe Guard when HA restarts
|
- alias: Safe Guard when HA restarts
|
||||||
conditions:
|
conditions:
|
||||||
- condition: trigger
|
- condition: trigger
|
||||||
id: t17
|
id: t19
|
||||||
sequence:
|
sequence:
|
||||||
- choose:
|
- choose:
|
||||||
- alias: Check all by-pass are off and check conditions if enabled
|
- alias: Check all by-pass are off and check conditions if enabled
|
||||||
@@ -6286,7 +6435,11 @@ action:
|
|||||||
delay:
|
delay:
|
||||||
minutes: !input dynamic_lighting_heartbeat
|
minutes: !input dynamic_lighting_heartbeat
|
||||||
- alias: If dynamic lighting brightness is in the dead zone
|
- alias: If dynamic lighting brightness is in the dead zone
|
||||||
conditions: '{{ in_dead_zone }}'
|
conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: '{{ in_dead_zone }}'
|
||||||
|
- condition: template
|
||||||
|
value_template: '{{ repeat.index != 1 }}'
|
||||||
sequence:
|
sequence:
|
||||||
- alias: Dynamic lighting heartbeat
|
- alias: Dynamic lighting heartbeat
|
||||||
delay:
|
delay:
|
||||||
@@ -6426,7 +6579,11 @@ action:
|
|||||||
delay:
|
delay:
|
||||||
minutes: !input dynamic_lighting_heartbeat
|
minutes: !input dynamic_lighting_heartbeat
|
||||||
- alias: If dynamic lighting brightness is in the dead zone
|
- alias: If dynamic lighting brightness is in the dead zone
|
||||||
conditions: '{{ in_dead_zone }}'
|
conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: '{{ in_dead_zone }}'
|
||||||
|
- condition: template
|
||||||
|
value_template: '{{ repeat.index != 1 }}'
|
||||||
sequence:
|
sequence:
|
||||||
- alias: Dynamic lighting heartbeat
|
- alias: Dynamic lighting heartbeat
|
||||||
delay:
|
delay:
|
||||||
@@ -7492,7 +7649,11 @@ action:
|
|||||||
delay:
|
delay:
|
||||||
minutes: !input dynamic_lighting_heartbeat
|
minutes: !input dynamic_lighting_heartbeat
|
||||||
- alias: If dynamic lighting brightness is in the dead zone
|
- alias: If dynamic lighting brightness is in the dead zone
|
||||||
conditions: '{{ in_dead_zone }}'
|
conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: '{{ in_dead_zone }}'
|
||||||
|
- condition: template
|
||||||
|
value_template: '{{ repeat.index != 1 }}'
|
||||||
sequence:
|
sequence:
|
||||||
- alias: Dynamic lighting heartbeat
|
- alias: Dynamic lighting heartbeat
|
||||||
delay:
|
delay:
|
||||||
@@ -7853,7 +8014,11 @@ action:
|
|||||||
delay:
|
delay:
|
||||||
minutes: !input dynamic_lighting_heartbeat
|
minutes: !input dynamic_lighting_heartbeat
|
||||||
- alias: If dynamic lighting brightness is in the dead zone
|
- alias: If dynamic lighting brightness is in the dead zone
|
||||||
conditions: '{{ in_dead_zone }}'
|
conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: '{{ in_dead_zone }}'
|
||||||
|
- condition: template
|
||||||
|
value_template: '{{ repeat.index != 1 }}'
|
||||||
sequence:
|
sequence:
|
||||||
- alias: Dynamic lighting heartbeat
|
- alias: Dynamic lighting heartbeat
|
||||||
delay:
|
delay:
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ frontend:
|
|||||||
- /hacsfiles/hass-hue-icons/hass-hue-icons.js
|
- /hacsfiles/hass-hue-icons/hass-hue-icons.js
|
||||||
- /hacsfiles/hass-bha-icons/hass-bha-icons.js
|
- /hacsfiles/hass-bha-icons/hass-bha-icons.js
|
||||||
- /hacsfiles/material-you-utilities/material-you-utilities.min.js
|
- /hacsfiles/material-you-utilities/material-you-utilities.min.js
|
||||||
|
- /hacsfiles/lovelace-card-mod/card-mod.js?v4.1.0
|
||||||
javascript_version: latest
|
javascript_version: latest
|
||||||
|
|
||||||
panel_custom:
|
panel_custom:
|
||||||
@@ -117,6 +118,7 @@ recorder:
|
|||||||
- sensor.mosquitto*
|
- sensor.mosquitto*
|
||||||
- sensor.*_rssi
|
- sensor.*_rssi
|
||||||
- sensor.weatherflow_hub*
|
- sensor.weatherflow_hub*
|
||||||
|
- sensor.internet_round_trip*
|
||||||
entities:
|
entities:
|
||||||
- sensor.avg_ping
|
- sensor.avg_ping
|
||||||
- sensor.max_ping
|
- sensor.max_ping
|
||||||
@@ -299,18 +301,6 @@ influxdb:
|
|||||||
- binary_sensor.people_present
|
- binary_sensor.people_present
|
||||||
- weather.iron_nerd_weather_station
|
- weather.iron_nerd_weather_station
|
||||||
- weather.ashland_weather_station
|
- weather.ashland_weather_station
|
||||||
- sensor.circle_k
|
|
||||||
- sensor.kroger
|
|
||||||
- sensor.kecks
|
|
||||||
- sensor.the_barn
|
|
||||||
- sensor.the_big_fish
|
|
||||||
- sensor.speedway
|
|
||||||
- sensor.meijer
|
|
||||||
- sensor.ridis
|
|
||||||
- sensor.marathon_cleveland_avenue
|
|
||||||
- sensor.south_side_shell
|
|
||||||
- sensor.east_side_shell
|
|
||||||
- sensor.shell_ottawa_avenue
|
|
||||||
- sensor.current_lights_on
|
- sensor.current_lights_on
|
||||||
- binary_sensor.early_night_mode
|
- binary_sensor.early_night_mode
|
||||||
- input_boolean.give_me_darkness
|
- input_boolean.give_me_darkness
|
||||||
@@ -483,18 +473,6 @@ prometheus:
|
|||||||
- binary_sensor.people_present
|
- binary_sensor.people_present
|
||||||
- weather.iron_nerd_weather_station
|
- weather.iron_nerd_weather_station
|
||||||
- weather.ashland_weather_station
|
- weather.ashland_weather_station
|
||||||
- sensor.circle_k
|
|
||||||
- sensor.kroger
|
|
||||||
- sensor.kecks
|
|
||||||
- sensor.the_barn
|
|
||||||
- sensor.the_big_fish
|
|
||||||
- sensor.speedway
|
|
||||||
- sensor.meijer
|
|
||||||
- sensor.ridis
|
|
||||||
- sensor.marathon_cleveland_avenue
|
|
||||||
- sensor.south_side_shell
|
|
||||||
- sensor.east_side_shell
|
|
||||||
- sensor.shell_ottawa_avenue
|
|
||||||
- sensor.current_lights_on
|
- sensor.current_lights_on
|
||||||
- binary_sensor.early_night_mode
|
- binary_sensor.early_night_mode
|
||||||
- input_boolean.give_me_darkness
|
- input_boolean.give_me_darkness
|
||||||
|
|||||||
@@ -90,7 +90,7 @@
|
|||||||
{% elif state_attr(team,'opponent_winner') == true %}
|
{% elif state_attr(team,'opponent_winner') == true %}
|
||||||
The {{ state_attr(team,'friendly_name') }} lost their game today against {% if state_attr(team,'league') != 'NCAAF'%}the{% endif %} {{ opponent_name }} by a score of {{ state_attr(team,'opponent_score') }} to {{ state_attr(team,'team_score') }}.
|
The {{ state_attr(team,'friendly_name') }} lost their game today against {% if state_attr(team,'league') != 'NCAAF'%}the{% endif %} {{ opponent_name }} by a score of {{ state_attr(team,'opponent_score') }} to {{ state_attr(team,'team_score') }}.
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if state_attr(team,'clock') not in ['postponed','Postponed'] %}
|
{% if state_attr(team,'clock') not in ['postponed','Postponed'] and state_attr(team,'team_record') != None %}
|
||||||
This brings their record to {{ state_attr(team,'team_record') | replace("-"," and ") }} on the season.
|
This brings their record to {{ state_attr(team,'team_record') | replace("-"," and ") }} on the season.
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% elif yday == date %}
|
{% elif yday == date %}
|
||||||
@@ -171,6 +171,15 @@
|
|||||||
{% if is_state('binary_sensor.minnesota_wild_inhibit','off') %}
|
{% if is_state('binary_sensor.minnesota_wild_inhibit','off') %}
|
||||||
{{ sports_pregame('sensor.minnesota_wild') }}
|
{{ sports_pregame('sensor.minnesota_wild') }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% if is_state('binary_sensor.michigan_wolverines_hockey','off') %}
|
||||||
|
{{ sports_pregame('sensor.michigan_wolverines_hockey') }}
|
||||||
|
{% endif %}
|
||||||
|
{% if is_state('binary_sensor.minnesota_golden_gophers_hockey','off') %}
|
||||||
|
{{ sports_pregame('sensor.minnesota_golden_gophers_hockey') }}
|
||||||
|
{% endif %}
|
||||||
|
{% if is_state('binary_sensor.minnesota_state_mavericks_hockey','off') %}
|
||||||
|
{{ sports_pregame('sensor.minnesota_state_mavericks_hockey') }}
|
||||||
|
{% endif %}
|
||||||
{% elif time == 'main' %}
|
{% elif time == 'main' %}
|
||||||
{% if is_state('binary_sensor.michigan_wolverines_inhibit','off') %}
|
{% if is_state('binary_sensor.michigan_wolverines_inhibit','off') %}
|
||||||
{{ sports_main('sensor.michigan_wolverines') }}
|
{{ sports_main('sensor.michigan_wolverines') }}
|
||||||
@@ -199,6 +208,15 @@
|
|||||||
{% if is_state('binary_sensor.minnesota_wild_inhibit','off') %}
|
{% if is_state('binary_sensor.minnesota_wild_inhibit','off') %}
|
||||||
{{ sports_main('sensor.minnesota_wild') }}
|
{{ sports_main('sensor.minnesota_wild') }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% if is_state('binary_sensor.michigan_wolverines_hockey','off') %}
|
||||||
|
{{ sports_main('sensor.michigan_wolverines_hockey') }}
|
||||||
|
{% endif %}
|
||||||
|
{% if is_state('binary_sensor.minnesota_golden_gophers_hockey','off') %}
|
||||||
|
{{ sports_main('sensor.minnesota_golden_gophers_hockey') }}
|
||||||
|
{% endif %}
|
||||||
|
{% if is_state('binary_sensor.minnesota_state_mavericks_hockey','off') %}
|
||||||
|
{{ sports_main('sensor.minnesota_state_mavericks_hockey') }}
|
||||||
|
{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endmacro %}
|
{% endmacro %}
|
||||||
{{ cleanup(data()) }}
|
{{ cleanup(data()) }}
|
||||||
|
|||||||
@@ -1,39 +1,3 @@
|
|||||||
sensor.ridis:
|
|
||||||
device_class: monetary
|
|
||||||
|
|
||||||
sensor.kecks:
|
|
||||||
device_class: monetary
|
|
||||||
|
|
||||||
sensor.circle_k:
|
|
||||||
device_class: monetary
|
|
||||||
|
|
||||||
sensor.the_big_fish:
|
|
||||||
device_class: monetary
|
|
||||||
|
|
||||||
sensor.meijer:
|
|
||||||
device_class: monetary
|
|
||||||
|
|
||||||
sensor.south_side_shell:
|
|
||||||
device_class: monetary
|
|
||||||
|
|
||||||
sensor.kroger:
|
|
||||||
device_class: monetary
|
|
||||||
|
|
||||||
sensor.marathon_cleveland_avenue:
|
|
||||||
device_class: monetary
|
|
||||||
|
|
||||||
sensor.speedway:
|
|
||||||
device_class: monetary
|
|
||||||
|
|
||||||
sensor.shell_ottawa_avenue:
|
|
||||||
device_class: monetary
|
|
||||||
|
|
||||||
sensor.the_barn:
|
|
||||||
device_class: monetary
|
|
||||||
|
|
||||||
sensor.east_side_shell:
|
|
||||||
device_class: monetary
|
|
||||||
|
|
||||||
sensor.local_minimum_gas_price:
|
sensor.local_minimum_gas_price:
|
||||||
device_class: monetary
|
device_class: monetary
|
||||||
|
|
||||||
|
|||||||
@@ -324,6 +324,13 @@ input_number:
|
|||||||
step: 1
|
step: 1
|
||||||
unit_of_measurement: °F
|
unit_of_measurement: °F
|
||||||
icon: mdi:thermometer
|
icon: mdi:thermometer
|
||||||
|
master_bedroom_mode_switch_threshold:
|
||||||
|
name: Master Bedroom Mode Switch Threshold
|
||||||
|
min: 60
|
||||||
|
max: 80
|
||||||
|
step: 1
|
||||||
|
unit_of_measurement: °F
|
||||||
|
icon: mdi:thermometer
|
||||||
emma_bedroom_daytime_temp:
|
emma_bedroom_daytime_temp:
|
||||||
name: Emma Bedroom Daytime Temp
|
name: Emma Bedroom Daytime Temp
|
||||||
min: 65
|
min: 65
|
||||||
@@ -345,6 +352,20 @@ input_number:
|
|||||||
step: 1
|
step: 1
|
||||||
unit_of_measurement: °F
|
unit_of_measurement: °F
|
||||||
icon: mdi:thermometer
|
icon: mdi:thermometer
|
||||||
|
emma_bedroom_heater_run_threshold:
|
||||||
|
name: Emma Bedroom Heater Run Threshold
|
||||||
|
min: 40
|
||||||
|
max: 80
|
||||||
|
step: 1
|
||||||
|
unit_of_measurement: °F
|
||||||
|
icon: mdi:thermometer
|
||||||
|
emma_bedroom_heater_shutoff_threshold:
|
||||||
|
name: Emma Bedroom Heater Shutoff Threshold
|
||||||
|
min: 40
|
||||||
|
max: 80
|
||||||
|
step: 1
|
||||||
|
unit_of_measurement: °F
|
||||||
|
icon: mdi:thermometer
|
||||||
emma_bedroom_aircon_run_threshold:
|
emma_bedroom_aircon_run_threshold:
|
||||||
name: Emma Bedroom Aircon Run Threshold
|
name: Emma Bedroom Aircon Run Threshold
|
||||||
min: 40
|
min: 40
|
||||||
@@ -373,6 +394,13 @@ input_number:
|
|||||||
step: 1
|
step: 1
|
||||||
unit_of_measurement: °F
|
unit_of_measurement: °F
|
||||||
icon: mdi:thermometer
|
icon: mdi:thermometer
|
||||||
|
emma_bedroom_mode_switch_threshold:
|
||||||
|
name: Emma Bedroom Mode Switch Threshold
|
||||||
|
min: 60
|
||||||
|
max: 80
|
||||||
|
step: 1
|
||||||
|
unit_of_measurement: °F
|
||||||
|
icon: mdi:thermometer
|
||||||
kallen_fan_threshold:
|
kallen_fan_threshold:
|
||||||
name: Kallen Fan Threshold
|
name: Kallen Fan Threshold
|
||||||
min: 40
|
min: 40
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
weather:
|
template:
|
||||||
- platform: template
|
- weather:
|
||||||
name: "Iron Nerd Weather Station"
|
- name: "Iron Nerd Weather Station"
|
||||||
condition_template: >
|
condition_template: >
|
||||||
{% set stations = [
|
{% set stations = [
|
||||||
states.weather.home_tempest_forecast_home,
|
states.weather.home_tempest_forecast_home,
|
||||||
@@ -112,8 +112,8 @@ weather:
|
|||||||
{{ states(result) | float }}
|
{{ states(result) | float }}
|
||||||
precipitation_unit: in
|
precipitation_unit: in
|
||||||
|
|
||||||
- platform: template
|
- weather:
|
||||||
name: "Iron Nerd Weather Station - Hourly"
|
- name: "Iron Nerd Weather Station - Hourly"
|
||||||
condition_template: >
|
condition_template: >
|
||||||
{% set stations = [
|
{% set stations = [
|
||||||
states.weather.home_tempest_forecast_home,
|
states.weather.home_tempest_forecast_home,
|
||||||
@@ -218,8 +218,8 @@ weather:
|
|||||||
{{ states(result) | float }}
|
{{ states(result) | float }}
|
||||||
precipitation_unit: in
|
precipitation_unit: in
|
||||||
|
|
||||||
- platform: template
|
- weather:
|
||||||
name: "Ashland Weather Station"
|
- name: "Ashland Weather Station"
|
||||||
condition_template: >
|
condition_template: >
|
||||||
{% set stations = [
|
{% set stations = [
|
||||||
states.weather.ashland,
|
states.weather.ashland,
|
||||||
@@ -299,77 +299,6 @@ weather:
|
|||||||
{{ states(result) | float }}
|
{{ states(result) | float }}
|
||||||
precipitation_unit: in
|
precipitation_unit: in
|
||||||
|
|
||||||
# binary_sensor:
|
|
||||||
# - platform: bayesian
|
|
||||||
# unique_id: 3e9640d9-57a0-4495-8731-e64b34774065
|
|
||||||
# name: Raining Bayesian
|
|
||||||
# prior: 0.17
|
|
||||||
# probability_threshold: 0.6
|
|
||||||
# observations:
|
|
||||||
# - entity_id: "sensor.pirateweather_precip"
|
|
||||||
# prob_given_true: 0.13
|
|
||||||
# prob_given_false: 0.005
|
|
||||||
# platform: "state"
|
|
||||||
# to_state: "rain"
|
|
||||||
# - entity_id: "sensor.openweathermap_precipitation_kind"
|
|
||||||
# prob_given_true: 0.75
|
|
||||||
# prob_given_false: 0.005
|
|
||||||
# platform: "state"
|
|
||||||
# to_state: "rain"
|
|
||||||
# - entity_id: "sensor.tomorrow_io_stratton_ave_precipitation_type"
|
|
||||||
# prob_given_true: 0.99
|
|
||||||
# prob_given_false: 0.2
|
|
||||||
# platform: "state"
|
|
||||||
# to_state: "rain"
|
|
||||||
# - entity_id: "sensor.stratton_ave_precipitation"
|
|
||||||
# prob_given_true: 0.99
|
|
||||||
# prob_given_false: 0.2
|
|
||||||
# platform: "numeric_state"
|
|
||||||
# above: 0
|
|
||||||
|
|
||||||
sensor:
|
|
||||||
- platform: weatheralerts
|
|
||||||
state: OH
|
|
||||||
zone: 4
|
|
||||||
county: 39
|
|
||||||
|
|
||||||
# - platform: statistics
|
|
||||||
# unique_id: b5996cb4-b715-4fc9-b3d8-98fc12c2b7dd
|
|
||||||
# name: Outside Temp Average
|
|
||||||
# entity_id: sensor.pirateweather_temperature
|
|
||||||
# state_characteristic: average_linear
|
|
||||||
# max_age:
|
|
||||||
# days: 7
|
|
||||||
# - platform: statistics
|
|
||||||
# unique_id: 6192c95a-8fd1-4ba0-87de-d06fdc071d6b
|
|
||||||
# name: Apparent Temp Average
|
|
||||||
# entity_id: sensor.stratton_ave_apparent_temperature
|
|
||||||
# state_characteristic: average_linear
|
|
||||||
# max_age:
|
|
||||||
# days: 7
|
|
||||||
# - platform: statistics
|
|
||||||
# unique_id: 7b9c269c-40b7-4255-a051-2d1b7a6af017
|
|
||||||
# name: Wind Speed Average
|
|
||||||
# entity_id: sensor.pirateweather_wind_speed
|
|
||||||
# state_characteristic: average_linear
|
|
||||||
# max_age:
|
|
||||||
# days: 7
|
|
||||||
# - platform: statistics
|
|
||||||
# unique_id: b43d053f-aafb-4237-a742-a2ca841498fa
|
|
||||||
# name: Visibility Stats Average
|
|
||||||
# entity_id: sensor.kdfi_visibility
|
|
||||||
# state_characteristic: average_linear
|
|
||||||
# max_age:
|
|
||||||
# days: 7
|
|
||||||
# - platform: statistics
|
|
||||||
# unique_id: b1206da2-fa00-4f7d-9af4-f2cf6794bd24
|
|
||||||
# name: Humidity Stats Average
|
|
||||||
# entity_id: sensor.pirateweather_humidity
|
|
||||||
# state_characteristic: average_linear
|
|
||||||
# max_age:
|
|
||||||
# days: 7
|
|
||||||
|
|
||||||
template:
|
|
||||||
- trigger:
|
- trigger:
|
||||||
- platform: time_pattern
|
- platform: time_pattern
|
||||||
minutes: /15
|
minutes: /15
|
||||||
@@ -808,6 +737,11 @@ template:
|
|||||||
states('sensor.home_tempest_cloud_sensors_precipitation_description') in ['rain','heavy_rain'] or
|
states('sensor.home_tempest_cloud_sensors_precipitation_description') in ['rain','heavy_rain'] or
|
||||||
is_state('binary_sensor.home_tempest_cloud_binary_sensors_is_raining','on') }}
|
is_state('binary_sensor.home_tempest_cloud_binary_sensors_is_raining','on') }}
|
||||||
icon: "{{ 'mdi:weather-rainy' if this.state == 'on' else 'mdi:weather-cloudy' }}"
|
icon: "{{ 'mdi:weather-rainy' if this.state == 'on' else 'mdi:weather-cloudy' }}"
|
||||||
|
- name: Tornado Possible
|
||||||
|
unique_id: 541fed1d-2086-47ee-be1b-3f1ea4199e1f
|
||||||
|
state: "{{ state_attr('binary_sensor.severe_thunderstorm_warning','tornado_possible') }}"
|
||||||
|
device_class: safety
|
||||||
|
icon: "{{ 'mdi:weather-tornado' if this.state == 'on' else 'mdi:close' }}"
|
||||||
- sensor:
|
- sensor:
|
||||||
# - name: Total Rain Sensors
|
# - name: Total Rain Sensors
|
||||||
# unique_id: b7c2e709-8f5c-4263-aa1d-fa8280afcddb
|
# unique_id: b7c2e709-8f5c-4263-aa1d-fa8280afcddb
|
||||||
@@ -860,30 +794,30 @@ template:
|
|||||||
icon: mdi:weather-sunny
|
icon: mdi:weather-sunny
|
||||||
state: >-
|
state: >-
|
||||||
{% from 'formatting.jinja' import cleanup %}
|
{% from 'formatting.jinja' import cleanup %}
|
||||||
{%- macro getReport() -%}
|
{% macro getReport() %}
|
||||||
{{ [
|
{{ [
|
||||||
'Today in Defiance ',
|
'Today in Defiance ',
|
||||||
'Later Today ',
|
'Later Today ',
|
||||||
'For the rest of the day '
|
'For the rest of the day '
|
||||||
] | random }}
|
] | random }}
|
||||||
expect a high of {{ states('sensor.todays_high_temp') }}
|
expect a high of {{ states('sensor.todays_high_temp') }}
|
||||||
{%- if states('sensor.current_forecast') == 'sunny' and is_state('binary_sensor.night','off')%}
|
{% if states('sensor.current_forecast') == 'sunny' and is_state('binary_sensor.night','off')%}
|
||||||
{{ [
|
{{ [
|
||||||
'and sunny. ',
|
'and sunny. ',
|
||||||
'with sun. ',
|
'with sun. ',
|
||||||
'with sunny conditions prevailing. '
|
'with sunny conditions prevailing. '
|
||||||
] | random }}
|
] | random }}
|
||||||
{%- elif states('sensor.current_forecast') == 'sunny' and is_state('binary_sensor.night','on') %}
|
{% elif states('sensor.current_forecast') == 'sunny' and is_state('binary_sensor.night','on') %}
|
||||||
{{ [
|
{{ [
|
||||||
'and clear. ',
|
'and clear. ',
|
||||||
'with clear skies. '
|
'with clear skies. '
|
||||||
] | random }}
|
] | random }}
|
||||||
{%- elif states('sensor.current_forecast') == 'clear-night' %}
|
{% elif states('sensor.current_forecast') == 'clear-night' %}
|
||||||
{{ [
|
{{ [
|
||||||
'and clear. ',
|
'and clear. ',
|
||||||
'with clear skies. '
|
'with clear skies. '
|
||||||
] | random }}
|
] | random }}
|
||||||
{%- elif states('sensor.current_forecast') == 'rainy' %}
|
{% elif states('sensor.current_forecast') == 'rainy' %}
|
||||||
{{ [
|
{{ [
|
||||||
'with rain. ',
|
'with rain. ',
|
||||||
'with showers. ',
|
'with showers. ',
|
||||||
@@ -895,7 +829,7 @@ template:
|
|||||||
] | random }}
|
] | random }}
|
||||||
near {{ state_attr('sensor.current_forecast','precipitation') }} inches
|
near {{ state_attr('sensor.current_forecast','precipitation') }} inches
|
||||||
{{ 'possible. ' }}
|
{{ 'possible. ' }}
|
||||||
{%- elif states('sensor.current_forecast') == 'snowy' %}
|
{% elif states('sensor.current_forecast') == 'snowy' %}
|
||||||
{{ [
|
{{ [
|
||||||
'with snow. ',
|
'with snow. ',
|
||||||
'with snow showers. '
|
'with snow showers. '
|
||||||
@@ -906,19 +840,19 @@ template:
|
|||||||
] | random }}
|
] | random }}
|
||||||
near {{ state_attr('sensor.current_forecast','precipitation') }} inches
|
near {{ state_attr('sensor.current_forecast','precipitation') }} inches
|
||||||
{{ 'possible. ' }}
|
{{ 'possible. ' }}
|
||||||
{%- elif states('sensor.current_forecast') == 'snowy-rainy' %}
|
{% elif states('sensor.current_forecast') == 'snowy-rainy' %}
|
||||||
{{ [
|
{{ [
|
||||||
'with mix preciptation possible. ',
|
'with mix preciptation possible. ',
|
||||||
'with snow and rain showers. '
|
'with snow and rain showers. '
|
||||||
] | random }}
|
] | random }}
|
||||||
Total accumulation near {{ state_attr('sensor.current_forecast','precipitation') }} inches
|
Total accumulation near {{ state_attr('sensor.current_forecast','precipitation') }} inches
|
||||||
{{ 'possible. ' }}
|
{{ 'possible. ' }}
|
||||||
{%- elif states('sensor.current_forecast') == 'windy' %}
|
{% elif states('sensor.current_forecast') == 'windy' %}
|
||||||
{{ [
|
{{ [
|
||||||
'and windy. ',
|
'and windy. ',
|
||||||
'with lots of wind. '
|
'with lots of wind. '
|
||||||
] | random }}
|
] | random }}
|
||||||
{%- elif states('sensor.current_forecast') == 'fog' %}
|
{% elif states('sensor.current_forecast') == 'fog' %}
|
||||||
{{ [
|
{{ [
|
||||||
'and foggy. ',
|
'and foggy. ',
|
||||||
'with some fog. '
|
'with some fog. '
|
||||||
@@ -934,7 +868,7 @@ template:
|
|||||||
'with partly cloudy skies. ',
|
'with partly cloudy skies. ',
|
||||||
'with scattered clouds '
|
'with scattered clouds '
|
||||||
] | random }}
|
] | random }}
|
||||||
{%- elif states('sensor.current_forecast') == 'hail' %}
|
{% elif states('sensor.current_forecast') == 'hail' %}
|
||||||
{{ [
|
{{ [
|
||||||
'with severe thunderstorms possible. ',
|
'with severe thunderstorms possible. ',
|
||||||
'with hail possible. '
|
'with hail possible. '
|
||||||
@@ -945,7 +879,7 @@ template:
|
|||||||
] | random }}
|
] | random }}
|
||||||
near {{ state_attr('sensor.current_forecast','precipitation') }} inches
|
near {{ state_attr('sensor.current_forecast','precipitation') }} inches
|
||||||
{{ 'possible. ' }}
|
{{ 'possible. ' }}
|
||||||
{%- elif states('sensor.current_forecast') == 'lightning' %}
|
{% elif states('sensor.current_forecast') == 'lightning' %}
|
||||||
{{ [
|
{{ [
|
||||||
'with thunderstorms possible. ',
|
'with thunderstorms possible. ',
|
||||||
'with the potential of thunderstorms. '
|
'with the potential of thunderstorms. '
|
||||||
@@ -956,14 +890,14 @@ template:
|
|||||||
] | random }}
|
] | random }}
|
||||||
near {{ state_attr('sensor.current_forecast','precipitation') }} inches
|
near {{ state_attr('sensor.current_forecast','precipitation') }} inches
|
||||||
{{ 'possible. ' }}
|
{{ 'possible. ' }}
|
||||||
{% endif -%}
|
{% endif %}
|
||||||
{{ [
|
{{ [
|
||||||
'Later tonight expect a low of ',
|
'Later tonight expect a low of ',
|
||||||
'Overnight expect a low of '
|
'Overnight expect a low of '
|
||||||
] | random }}
|
] | random }}
|
||||||
{{ states('sensor.overnight_lowest_temperature') }} degrees.
|
{{ states('sensor.overnight_lowest_temperature') }} degrees.
|
||||||
{%- endmacro -%}
|
{% endmacro %}
|
||||||
{{- cleanup(getReport()) -}}
|
{{ cleanup(getReport()) }}
|
||||||
- name: Tomorrows Forecast
|
- name: Tomorrows Forecast
|
||||||
unique_id: a8ae26b0-ed26-4568-bb2b-f7c72707b009
|
unique_id: a8ae26b0-ed26-4568-bb2b-f7c72707b009
|
||||||
icon: mdi:weather-sunny
|
icon: mdi:weather-sunny
|
||||||
@@ -991,20 +925,20 @@ template:
|
|||||||
icon: mdi:weather-sunny
|
icon: mdi:weather-sunny
|
||||||
state: >-
|
state: >-
|
||||||
{% from 'formatting.jinja' import cleanup %}
|
{% from 'formatting.jinja' import cleanup %}
|
||||||
{%- macro getReport() -%}
|
{% macro getReport() %}
|
||||||
{{ [
|
{{ [
|
||||||
'Tomorrow in Defiance ',
|
'Tomorrow in Defiance ',
|
||||||
'For the next day ',
|
'For the next day ',
|
||||||
'Tomorrow '
|
'Tomorrow '
|
||||||
] | random }}
|
] | random }}
|
||||||
expect a high of {{ state_attr('sensor.tomorrow_forecast','high_temp') }} degrees.
|
expect a high of {{ state_attr('sensor.tomorrow_forecast','high_temp') }} degrees.
|
||||||
{%- if states('sensor.tomorrow_forecast') == 'sunny' %}
|
{% if states('sensor.tomorrow_forecast') == 'sunny' %}
|
||||||
{{ [
|
{{ [
|
||||||
'and sunny. ',
|
'and sunny. ',
|
||||||
'with sun. ',
|
'with sun. ',
|
||||||
'with sunny conditions prevailing. '
|
'with sunny conditions prevailing. '
|
||||||
] | random }}
|
] | random }}
|
||||||
{%- elif states('sensor.tomorrow_forecast') == 'rainy' %}
|
{% elif states('sensor.tomorrow_forecast') == 'rainy' %}
|
||||||
{{ [
|
{{ [
|
||||||
'with rain. ',
|
'with rain. ',
|
||||||
'with showers. ',
|
'with showers. ',
|
||||||
@@ -1016,7 +950,7 @@ template:
|
|||||||
] | random }}
|
] | random }}
|
||||||
near {{ state_attr('sensor.tomorrow_forecast','precipitation') }} inches
|
near {{ state_attr('sensor.tomorrow_forecast','precipitation') }} inches
|
||||||
{{ 'possible. ' }}
|
{{ 'possible. ' }}
|
||||||
{%- elif states('sensor.tomorrow_forecast') == 'snowy' %}
|
{% elif states('sensor.tomorrow_forecast') == 'snowy' %}
|
||||||
{{ [
|
{{ [
|
||||||
'with snow. ',
|
'with snow. ',
|
||||||
'with snow showers. '
|
'with snow showers. '
|
||||||
@@ -1027,19 +961,19 @@ template:
|
|||||||
] | random }}
|
] | random }}
|
||||||
near {{ state_attr('sensor.tomorrow_forecast','precipitation') }} inches
|
near {{ state_attr('sensor.tomorrow_forecast','precipitation') }} inches
|
||||||
{{ 'possible. ' }}
|
{{ 'possible. ' }}
|
||||||
{%- elif states('sensor.tomorrow_forecast') == 'snowy-rainy' %}
|
{% elif states('sensor.tomorrow_forecast') == 'snowy-rainy' %}
|
||||||
{{ [
|
{{ [
|
||||||
'with mix preciptation possible. ',
|
'with mix preciptation possible. ',
|
||||||
'with snow and rain showers. '
|
'with snow and rain showers. '
|
||||||
] | random }}
|
] | random }}
|
||||||
Total accumulation near {{ state_attr('sensor.tomorrow_forecast','precipitation') }} inches
|
Total accumulation near {{ state_attr('sensor.tomorrow_forecast','precipitation') }} inches
|
||||||
{{ 'possible. ' }}
|
{{ 'possible. ' }}
|
||||||
{%- elif states('sensor.tomorrow_forecast') == 'windy' %}
|
{% elif states('sensor.tomorrow_forecast') == 'windy' %}
|
||||||
{{ [
|
{{ [
|
||||||
'and windy. ',
|
'and windy. ',
|
||||||
'with lots of wind. '
|
'with lots of wind. '
|
||||||
] | random }}
|
] | random }}
|
||||||
{%- elif states('sensor.current_forecast') == 'fog' %}
|
{% elif states('sensor.current_forecast') == 'fog' %}
|
||||||
{{ [
|
{{ [
|
||||||
'and foggy. ',
|
'and foggy. ',
|
||||||
'with some fog. '
|
'with some fog. '
|
||||||
@@ -1055,7 +989,7 @@ template:
|
|||||||
'with partly cloudy skies. ',
|
'with partly cloudy skies. ',
|
||||||
'with scattered clouds '
|
'with scattered clouds '
|
||||||
] | random }}
|
] | random }}
|
||||||
{%- elif states('sensor.tomorrow_forecast') == 'hail' %}
|
{% elif states('sensor.tomorrow_forecast') == 'hail' %}
|
||||||
{{ [
|
{{ [
|
||||||
'with severe thunderstorms possible. ',
|
'with severe thunderstorms possible. ',
|
||||||
'with hail possible. '
|
'with hail possible. '
|
||||||
@@ -1066,7 +1000,7 @@ template:
|
|||||||
] | random }}
|
] | random }}
|
||||||
near {{ state_attr('sensor.current_forecast','precipitation') }} inches
|
near {{ state_attr('sensor.current_forecast','precipitation') }} inches
|
||||||
{{ 'possible. ' }}
|
{{ 'possible. ' }}
|
||||||
{%- elif states('sensor.current_forecast') == 'lightning' %}
|
{% elif states('sensor.current_forecast') == 'lightning' %}
|
||||||
{{ [
|
{{ [
|
||||||
'with thunderstorms possible. ',
|
'with thunderstorms possible. ',
|
||||||
'with the potential of thunderstorms. '
|
'with the potential of thunderstorms. '
|
||||||
@@ -1077,19 +1011,19 @@ template:
|
|||||||
] | random }}
|
] | random }}
|
||||||
near {{ state_attr('sensor.current_forecast','precipitation') }} inches
|
near {{ state_attr('sensor.current_forecast','precipitation') }} inches
|
||||||
{{ 'possible. ' }}
|
{{ 'possible. ' }}
|
||||||
{% endif -%}
|
{% endif %}
|
||||||
{{ [
|
{{ [
|
||||||
' Tomorrow night expect a low of '
|
' Tomorrow night expect a low of '
|
||||||
] | random }}
|
] | random }}
|
||||||
{{ state_attr('sensor.tomorrow_forecast','overnight_low') }} degrees.
|
{{ state_attr('sensor.tomorrow_forecast','overnight_low') }} degrees.
|
||||||
{%- endmacro -%}
|
{% endmacro %}
|
||||||
{{- cleanup(getReport()) -}}
|
{{ cleanup(getReport()) }}
|
||||||
- name: Current Conditions
|
- name: Current Conditions
|
||||||
unique_id: 70db7e57-08db-48b2-919b-03b5face37b9
|
unique_id: 70db7e57-08db-48b2-919b-03b5face37b9
|
||||||
icon: mdi:weather-sunny
|
icon: mdi:weather-sunny
|
||||||
state: >-
|
state: >-
|
||||||
{% from 'formatting.jinja' import cleanup %}
|
{% from 'formatting.jinja' import cleanup %}
|
||||||
{%- macro getReport() -%}
|
{% macro getReport() %}
|
||||||
The Weather in Defiance
|
The Weather in Defiance
|
||||||
{{ [
|
{{ [
|
||||||
' is ',
|
' is ',
|
||||||
@@ -1127,14 +1061,14 @@ template:
|
|||||||
{% else %}
|
{% else %}
|
||||||
and {{ states.weather.iron_nerd_weather_station.state }}
|
and {{ states.weather.iron_nerd_weather_station.state }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{%- endmacro -%}
|
{% endmacro %}
|
||||||
{{- cleanup(getReport()) -}}
|
{{ cleanup(getReport()) }}
|
||||||
- name: Current Conditions Detail
|
- name: Current Conditions Detail
|
||||||
unique_id: 2b3687d1-bdd5-4551-8c0a-05b1ff617543
|
unique_id: 2b3687d1-bdd5-4551-8c0a-05b1ff617543
|
||||||
icon: mdi:weather-sunny
|
icon: mdi:weather-sunny
|
||||||
state: >-
|
state: >-
|
||||||
{% from 'formatting.jinja' import cleanup %}
|
{% from 'formatting.jinja' import cleanup %}
|
||||||
{%- macro getReport() -%}
|
{% macro getReport() %}
|
||||||
The Weather in Defiance
|
The Weather in Defiance
|
||||||
{{ [
|
{{ [
|
||||||
' is ',
|
' is ',
|
||||||
@@ -1172,29 +1106,29 @@ template:
|
|||||||
{% else %}
|
{% else %}
|
||||||
and {{ states.weather.iron_nerd_weather_station.state }}.
|
and {{ states.weather.iron_nerd_weather_station.state }}.
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{%- if is_state('binary_sensor.early_night_mode','off')%}
|
{% if is_state('binary_sensor.early_night_mode','off')%}
|
||||||
{{ [
|
{{ [
|
||||||
'Later Today ',
|
'Later Today ',
|
||||||
'For the rest of the day '
|
'For the rest of the day '
|
||||||
] | random }}
|
] | random }}
|
||||||
expect a high of {{ states('sensor.todays_high_temp') }}
|
expect a high of {{ states('sensor.todays_high_temp') }}
|
||||||
{%- if states('sensor.current_forecast') == 'sunny' and is_state('binary_sensor.night','off')%}
|
{% if states('sensor.current_forecast') == 'sunny' and is_state('binary_sensor.night','off')%}
|
||||||
{{ [
|
{{ [
|
||||||
'and sunny. ',
|
'and sunny. ',
|
||||||
'with sun. ',
|
'with sun. ',
|
||||||
'with sunny conditions prevailing. '
|
'with sunny conditions prevailing. '
|
||||||
] | random }}
|
] | random }}
|
||||||
{%- elif states('sensor.current_forecast') == 'sunny' and is_state('binary_sensor.night','on') %}
|
{% elif states('sensor.current_forecast') == 'sunny' and is_state('binary_sensor.night','on') %}
|
||||||
{{ [
|
{{ [
|
||||||
'and clear. ',
|
'and clear. ',
|
||||||
'with clear skies. '
|
'with clear skies. '
|
||||||
] | random }}
|
] | random }}
|
||||||
{%- elif states('sensor.current_forecast') == 'clear-night' %}
|
{% elif states('sensor.current_forecast') == 'clear-night' %}
|
||||||
{{ [
|
{{ [
|
||||||
'and clear. ',
|
'and clear. ',
|
||||||
'with clear skies. '
|
'with clear skies. '
|
||||||
] | random }}
|
] | random }}
|
||||||
{%- elif states('sensor.current_forecast') == 'rainy' %}
|
{% elif states('sensor.current_forecast') == 'rainy' %}
|
||||||
{{ [
|
{{ [
|
||||||
'with rain. ',
|
'with rain. ',
|
||||||
'with showers. ',
|
'with showers. ',
|
||||||
@@ -1205,7 +1139,7 @@ template:
|
|||||||
'Total Rainfall amounts '
|
'Total Rainfall amounts '
|
||||||
] | random }}
|
] | random }}
|
||||||
near {{ state_attr('sensor.current_forecast','precipitation') }} inches {{ 'possible. ' }}
|
near {{ state_attr('sensor.current_forecast','precipitation') }} inches {{ 'possible. ' }}
|
||||||
{%- elif states('sensor.current_forecast') == 'snowy' %}
|
{% elif states('sensor.current_forecast') == 'snowy' %}
|
||||||
{{ [
|
{{ [
|
||||||
'with snow. ',
|
'with snow. ',
|
||||||
'with snow showers. '
|
'with snow showers. '
|
||||||
@@ -1216,18 +1150,18 @@ template:
|
|||||||
] | random }}
|
] | random }}
|
||||||
near {{ state_attr('sensor.current_forecast','precipitation') }} inches
|
near {{ state_attr('sensor.current_forecast','precipitation') }} inches
|
||||||
{{ 'possible. ' }}
|
{{ 'possible. ' }}
|
||||||
{%- elif states('sensor.current_forecast') == 'snowy-rainy' %}
|
{% elif states('sensor.current_forecast') == 'snowy-rainy' %}
|
||||||
{{ [
|
{{ [
|
||||||
'with mix preciptation possible. ',
|
'with mix preciptation possible. ',
|
||||||
'with snow and rain showers. '
|
'with snow and rain showers. '
|
||||||
] | random }}
|
] | random }}
|
||||||
Total accumulation near {{ state_attr('sensor.current_forecast','precipitation') }} inches {{ 'possible. ' }}
|
Total accumulation near {{ state_attr('sensor.current_forecast','precipitation') }} inches {{ 'possible. ' }}
|
||||||
{%- elif states('sensor.current_forecast') == 'windy' %}
|
{% elif states('sensor.current_forecast') == 'windy' %}
|
||||||
{{ [
|
{{ [
|
||||||
'and windy. ',
|
'and windy. ',
|
||||||
'with lots of wind. '
|
'with lots of wind. '
|
||||||
] | random }}
|
] | random }}
|
||||||
{%- elif states('sensor.current_forecast') == 'fog' %}
|
{% elif states('sensor.current_forecast') == 'fog' %}
|
||||||
{{ [
|
{{ [
|
||||||
'and foggy. ',
|
'and foggy. ',
|
||||||
'with some fog. '
|
'with some fog. '
|
||||||
@@ -1243,7 +1177,7 @@ template:
|
|||||||
'with partly cloudy skies. ',
|
'with partly cloudy skies. ',
|
||||||
'with scattered clouds. '
|
'with scattered clouds. '
|
||||||
] | random }}
|
] | random }}
|
||||||
{%- elif states('sensor.current_forecast') == 'hail' %}
|
{% elif states('sensor.current_forecast') == 'hail' %}
|
||||||
{{ [
|
{{ [
|
||||||
'with severe thunderstorms possible. ',
|
'with severe thunderstorms possible. ',
|
||||||
'with hail possible. '
|
'with hail possible. '
|
||||||
@@ -1254,7 +1188,7 @@ template:
|
|||||||
] | random }}
|
] | random }}
|
||||||
near {{ state_attr('sensor.current_forecast','precipitation') }} inches
|
near {{ state_attr('sensor.current_forecast','precipitation') }} inches
|
||||||
{{ 'possible. ' }}
|
{{ 'possible. ' }}
|
||||||
{%- elif states('sensor.current_forecast') == 'lightning' %}
|
{% elif states('sensor.current_forecast') == 'lightning' %}
|
||||||
{{ [
|
{{ [
|
||||||
'with thunderstorms possible. ',
|
'with thunderstorms possible. ',
|
||||||
'with the potential of thunderstorms. '
|
'with the potential of thunderstorms. '
|
||||||
@@ -1265,21 +1199,21 @@ template:
|
|||||||
] | random }}
|
] | random }}
|
||||||
near {{ state_attr('sensor.current_forecast','precipitation') }} inches
|
near {{ state_attr('sensor.current_forecast','precipitation') }} inches
|
||||||
{{ 'possible. ' }}
|
{{ 'possible. ' }}
|
||||||
{% endif -%}
|
{% endif %}
|
||||||
{{ [
|
{{ [
|
||||||
'Later tonight expect a low of ',
|
'Later tonight expect a low of ',
|
||||||
'Overnight expect a low of '
|
'Overnight expect a low of '
|
||||||
] | random }}
|
] | random }}
|
||||||
{{ states('sensor.overnight_lowest_temperature') }} degrees.
|
{{ states('sensor.overnight_lowest_temperature') }} degrees.
|
||||||
{%- else -%}
|
{% else %}
|
||||||
{{ [
|
{{ [
|
||||||
'Tonight expect a low of ',
|
'Tonight expect a low of ',
|
||||||
'Overnight expect a low of '
|
'Overnight expect a low of '
|
||||||
] | random }}
|
] | random }}
|
||||||
{{ states('sensor.overnight_lowest_temperature') }} degrees.
|
{{ states('sensor.overnight_lowest_temperature') }} degrees.
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{%- endmacro -%}
|
{% endmacro %}
|
||||||
{{- cleanup(getReport()) -}}
|
{{ cleanup(getReport()) }}
|
||||||
- name: 'Outside Pressure'
|
- name: 'Outside Pressure'
|
||||||
unique_id: ac2944bb-e9d7-40a3-9707-ef477fd5f309
|
unique_id: ac2944bb-e9d7-40a3-9707-ef477fd5f309
|
||||||
state: '{{ state_attr(''weather.iron_nerd_weather_station'',''pressure'') }}'
|
state: '{{ state_attr(''weather.iron_nerd_weather_station'',''pressure'') }}'
|
||||||
@@ -1317,39 +1251,43 @@ template:
|
|||||||
{% else %}
|
{% else %}
|
||||||
{% set temp = state_attr('weather.iron_nerd_weather_station','temperature')|round %}
|
{% set temp = state_attr('weather.iron_nerd_weather_station','temperature')|round %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{%- if states('sensor.todays_high_temp')|int > 63 %}
|
{% if states('sensor.todays_high_temp')|int > 63 %}
|
||||||
{%- if states('sensor.todays_high_temp')|int < 80 %}
|
{% if states('sensor.todays_high_temp')|int < 80 %}
|
||||||
Nice
|
Nice
|
||||||
{% elif states('sensor.todays_high_temp')|int > 90 %}
|
{% elif states('sensor.todays_high_temp')|int > 90 %}
|
||||||
Hot
|
Hot
|
||||||
{% else %}
|
{% else %}
|
||||||
Toasty
|
Toasty
|
||||||
{%- endif %}
|
{% endif %}
|
||||||
{% elif states('sensor.todays_high_temp')|int < 64 %}
|
{% elif states('sensor.todays_high_temp')|int < 64 %}
|
||||||
{%- if states('sensor.todays_high_temp')|int < 32 %}
|
{% if states('sensor.todays_high_temp')|int < 32 %}
|
||||||
Freezing
|
Freezing
|
||||||
{% elif states('sensor.todays_high_temp')|int > 48 %}
|
{% elif states('sensor.todays_high_temp')|int > 48 %}
|
||||||
Chilly
|
Chilly
|
||||||
{% else %}
|
{% else %}
|
||||||
Cold
|
Cold
|
||||||
{%- endif %}
|
{% endif %}
|
||||||
{% else %}
|
{% else %}
|
||||||
Unknown
|
Unknown
|
||||||
{%- endif %}
|
{% endif %}
|
||||||
- name: "Clothing Forecast Detail"
|
- name: "Clothing Forecast Detail"
|
||||||
unique_id: 13065f50-5eef-4afd-830e-2a2c87f47496
|
unique_id: 13065f50-5eef-4afd-830e-2a2c87f47496
|
||||||
state: >-
|
state: >-
|
||||||
{% from 'formatting.jinja' import cleanup %}
|
{% from 'formatting.jinja' import cleanup %}
|
||||||
{%- macro getReport() -%}
|
{% macro getReport() %}
|
||||||
|
{% set clothing = states('sensor.clothing_forecast') %}
|
||||||
|
{% set forecast = states('sensor.current_forecast') %}
|
||||||
|
{% set weather = states('weather.iron_nerd_weather_station') %}
|
||||||
|
{% set apparent = state_attr('weather.iron_nerd_weather_station','apparent_temperature') %}
|
||||||
{% if is_state('binary_sensor.morning','on') %}
|
{% if is_state('binary_sensor.morning','on') %}
|
||||||
Based on the forecasted high temperature,
|
Based on the forecasted high temperature,
|
||||||
{% if is_state('sensor.clothing_forecast', 'Freezing') %}
|
{% if clothing == "Freezing" %}
|
||||||
You're gonna freeze your balls off out there. so I suggest wearing long pants and a heavy coat.
|
You're gonna freeze your balls off out there. so I suggest wearing long pants and a heavy coat.
|
||||||
{% elif is_state('sensor.clothing_forecast','Cold') %}
|
{% elif clothing == "Cold" %}
|
||||||
It's gonna be cold as balls today. so I suggest wearing long pants and a light jacket.
|
It's gonna be cold as balls today. so I suggest wearing long pants and a light jacket.
|
||||||
{% elif is_state('sensor.clothing_forecast', 'Chilly') %}
|
{% elif clothing == "Chilly" %}
|
||||||
It's gonna be on the chilly side today. so I suggest wearing at least long pants.
|
It's gonna be on the chilly side today. so I suggest wearing at least long pants.
|
||||||
{% elif is_state('sensor.clothing_forecast', 'Nice') %}
|
{% elif clothing == "Nice" %}
|
||||||
It is going to be
|
It is going to be
|
||||||
{{ [ 'pretty nice outside. ',
|
{{ [ 'pretty nice outside. ',
|
||||||
'a good day to be outside. ',
|
'a good day to be outside. ',
|
||||||
@@ -1357,7 +1295,7 @@ template:
|
|||||||
'downright tolerable outside. ',
|
'downright tolerable outside. ',
|
||||||
] | random }}
|
] | random }}
|
||||||
So I suggest wearing shorts.
|
So I suggest wearing shorts.
|
||||||
{% elif is_state('sensor.clothing_forecast', 'Toasty') and is_state('sensor.current_forecast', 'sunny') %}
|
{% elif clothing == "Toasty" and forecast == "sunny" %}
|
||||||
It is going to be
|
It is going to be
|
||||||
{{ [ 'on the warm side ',
|
{{ [ 'on the warm side ',
|
||||||
' rather warm outside ',
|
' rather warm outside ',
|
||||||
@@ -1369,7 +1307,7 @@ template:
|
|||||||
'preparing to bake under the sun.',
|
'preparing to bake under the sun.',
|
||||||
'getting ready to be cooked alive.',
|
'getting ready to be cooked alive.',
|
||||||
] | random }}
|
] | random }}
|
||||||
{% elif is_state('sensor.clothing_forecast', 'Hot') and is_state('sensor.current_forecast', 'sunny') %}
|
{% elif clothing == "Hot" and forecast == "sunny" %}
|
||||||
It is going to be
|
It is going to be
|
||||||
{{ [ 'so hot you will sweat your balls off',
|
{{ [ 'so hot you will sweat your balls off',
|
||||||
'hotter than the sun ',
|
'hotter than the sun ',
|
||||||
@@ -1380,7 +1318,7 @@ template:
|
|||||||
'preparing to bake under the sun.',
|
'preparing to bake under the sun.',
|
||||||
'getting ready to be cooked alive.',
|
'getting ready to be cooked alive.',
|
||||||
] | random }}
|
] | random }}
|
||||||
{% elif is_state('sensor.clothing_forecast', 'Toasty') %}
|
{% elif clothing == "Toasty" %}
|
||||||
It is going to be
|
It is going to be
|
||||||
{{ [ 'on the warm side ',
|
{{ [ 'on the warm side ',
|
||||||
' rather warm outside ',
|
' rather warm outside ',
|
||||||
@@ -1388,7 +1326,7 @@ template:
|
|||||||
' a little warm ',
|
' a little warm ',
|
||||||
] | random }}
|
] | random }}
|
||||||
today. So I suggest wearing shorts.
|
today. So I suggest wearing shorts.
|
||||||
{% elif is_state('sensor.clothing_forecast', 'Hot') %}
|
{% elif clothing == "Hot" %}
|
||||||
It is going to be
|
It is going to be
|
||||||
{{ [ 'so hot you will sweat your balls off',
|
{{ [ 'so hot you will sweat your balls off',
|
||||||
'hotter than the sun ',
|
'hotter than the sun ',
|
||||||
@@ -1397,7 +1335,7 @@ template:
|
|||||||
] | random }}
|
] | random }}
|
||||||
today. So I suggest wearing shorts.
|
today. So I suggest wearing shorts.
|
||||||
{% else %}
|
{% else %}
|
||||||
It is going to be {{ states('sensor.clothing_forecast') }} today so I suggest wearing shorts.
|
It is going to be {{ clothing }} today so I suggest wearing shorts.
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if is_state('input_boolean.hot_day','on') %}
|
{% if is_state('input_boolean.hot_day','on') %}
|
||||||
Warning, today will be a very sweaty day, so please remember to stay hydrated!
|
Warning, today will be a very sweaty day, so please remember to stay hydrated!
|
||||||
@@ -1407,14 +1345,14 @@ template:
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
{% else %}
|
{% else %}
|
||||||
Based on the current temperature,
|
Based on the current temperature,
|
||||||
{% if is_state('sensor.clothing_forecast', 'Freezing') %}
|
{% if clothing == "Freezing" %}
|
||||||
You're gonna freeze your balls off out there. so I suggest wearing long pants and a heavy coat if you are going out.
|
You're gonna freeze your balls off out there. so I suggest wearing long pants and a heavy coat if you are going out.
|
||||||
{% elif is_state('sensor.clothing_forecast','Cold') %}
|
{% elif clothing == "Cold" %}
|
||||||
It is cold as balls outside. so I suggest wearing long pants and a light jacket.
|
It is cold as balls outside. so I suggest wearing long pants and a light jacket.
|
||||||
{% elif is_state('sensor.clothing_forecast', 'Chilly') %}
|
{% elif clothing == "Chilly" %}
|
||||||
It is chilly right now. so I suggest wearing at least long pants
|
It is chilly right now. so I suggest wearing at least long pants
|
||||||
if you are going to venture outside.
|
if you are going to venture outside.
|
||||||
{% elif is_state('sensor.clothing_forecast', 'Nice') %}
|
{% elif clothing == "Nice" %}
|
||||||
It is
|
It is
|
||||||
{{ [ 'pretty nice outside. ',
|
{{ [ 'pretty nice outside. ',
|
||||||
'a good day to be outside. ',
|
'a good day to be outside. ',
|
||||||
@@ -1422,7 +1360,7 @@ template:
|
|||||||
'downright tolerable outside. ',
|
'downright tolerable outside. ',
|
||||||
] | random }}
|
] | random }}
|
||||||
So I suggest wearing shorts.
|
So I suggest wearing shorts.
|
||||||
{% elif is_state('sensor.clothing_forecast', 'Toasty') and is_state('weather.iron_nerd_weather_station','sunny') %}
|
{% elif clothing == "Toasty" and weather == "sunny" %}
|
||||||
It is
|
It is
|
||||||
{{ [ 'on the warm side ',
|
{{ [ 'on the warm side ',
|
||||||
' rather warm ',
|
' rather warm ',
|
||||||
@@ -1434,7 +1372,7 @@ template:
|
|||||||
'preparing to bake under the sun.',
|
'preparing to bake under the sun.',
|
||||||
'getting ready to be cooked alive.',
|
'getting ready to be cooked alive.',
|
||||||
] | random }}
|
] | random }}
|
||||||
{% elif is_state('sensor.clothing_forecast', 'Hot') and is_state('weather.iron_nerd_weather_station','sunny') %}
|
{% elif clothing == "Hot" and weather == "sunny" %}
|
||||||
It is
|
It is
|
||||||
{{ [ 'so hot you will sweat your balls off',
|
{{ [ 'so hot you will sweat your balls off',
|
||||||
'hotter than the sun ',
|
'hotter than the sun ',
|
||||||
@@ -1445,7 +1383,7 @@ template:
|
|||||||
'preparing to bake under the sun.',
|
'preparing to bake under the sun.',
|
||||||
'getting ready to be cooked alive.',
|
'getting ready to be cooked alive.',
|
||||||
] | random }}
|
] | random }}
|
||||||
{% elif is_state('sensor.clothing_forecast', 'Toasty') %}
|
{% elif clothing == "Toasty" %}
|
||||||
It is
|
It is
|
||||||
{{ [ 'on the warm side ',
|
{{ [ 'on the warm side ',
|
||||||
' rather warm ',
|
' rather warm ',
|
||||||
@@ -1453,7 +1391,7 @@ template:
|
|||||||
' a little warm ',
|
' a little warm ',
|
||||||
] | random }}
|
] | random }}
|
||||||
outside. So I suggest wearing shorts.
|
outside. So I suggest wearing shorts.
|
||||||
{% elif is_state('sensor.clothing_forecast', 'Hot') %}
|
{% elif clothing == "Hot" %}
|
||||||
It is
|
It is
|
||||||
{{ [ 'so hot you will sweat your balls off',
|
{{ [ 'so hot you will sweat your balls off',
|
||||||
'hotter than the sun ',
|
'hotter than the sun ',
|
||||||
@@ -1462,13 +1400,13 @@ template:
|
|||||||
] | random }}
|
] | random }}
|
||||||
outside. So I suggest wearing shorts.
|
outside. So I suggest wearing shorts.
|
||||||
{% else %}
|
{% else %}
|
||||||
It is {{ states('sensor.clothing_forecast') }} right now so I suggest wearing shorts.
|
It is {{ clothing }} right now so I suggest wearing shorts.
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if is_state('binary_sensor.heat_index_threshold','on') %}
|
{% if is_state('binary_sensor.heat_index_threshold','on') %}
|
||||||
Warning, the heat index is {{ states('sensor.stratton_ave_apparent_temperature') | float | round }} degrees right now, which is very high. So please make sure to stay hydrated!
|
Warning, the heat index is {{ apparent | int }} degrees right now, which is very high. So please make sure to stay hydrated!
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if is_state('binary_sensor.wind_chill_threshold','on') %}
|
{% if is_state('binary_sensor.wind_chill_threshold','on') %}
|
||||||
Warning, it currently feels like {{ states('sensor.stratton_ave_apparent_temperature') | float | round }} degrees outside, so please make sure all exposed skin is covered to avoid frostbite!
|
Warning, it currently feels like {{ apparent | int }} degrees outside, so please make sure all exposed skin is covered to avoid frostbite!
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if states('sensor.thermal_comfort_simmerindex') in ['extremely_warm','danger_of_heatstroke','extreme_danger_of_heatstroke','circulatory_collapse_imminent'] %}
|
{% if states('sensor.thermal_comfort_simmerindex') in ['extremely_warm','danger_of_heatstroke','extreme_danger_of_heatstroke','circulatory_collapse_imminent'] %}
|
||||||
@@ -1488,8 +1426,8 @@ template:
|
|||||||
{% elif is_state('sensor.thermal_comfort_frostrisk','probable') %}
|
{% elif is_state('sensor.thermal_comfort_frostrisk','probable') %}
|
||||||
"The possibility of frost exists currently. Be prepared. "
|
"The possibility of frost exists currently. Be prepared. "
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{%- endmacro -%}
|
{% endmacro %}
|
||||||
{{- cleanup(getReport()) -}}
|
{{ cleanup(getReport()) }}
|
||||||
|
|
||||||
# current_inside_humidity:
|
# current_inside_humidity:
|
||||||
# - name: "Current Inside Humidity"
|
# - name: "Current Inside Humidity"
|
||||||
@@ -1508,7 +1446,7 @@ template:
|
|||||||
unique_id: 66b5f020-0b5e-48ed-92a2-740d2d708b30
|
unique_id: 66b5f020-0b5e-48ed-92a2-740d2d708b30
|
||||||
state: >
|
state: >
|
||||||
{% from 'formatting.jinja' import cleanup %}
|
{% from 'formatting.jinja' import cleanup %}
|
||||||
{%- macro getReport() -%}
|
{% macro getReport() %}
|
||||||
{% set alerts = [
|
{% set alerts = [
|
||||||
states('sensor.weatheralerts_alert_1_most_recent_active_alert'),
|
states('sensor.weatheralerts_alert_1_most_recent_active_alert'),
|
||||||
states('sensor.weatheralerts_alert_2_most_recent_active_alert'),
|
states('sensor.weatheralerts_alert_2_most_recent_active_alert'),
|
||||||
@@ -1527,8 +1465,8 @@ template:
|
|||||||
{% else %}
|
{% else %}
|
||||||
'None'
|
'None'
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{%- endmacro -%}
|
{% endmacro %}
|
||||||
{{- cleanup(getReport()) -}}
|
{{ cleanup(getReport()) }}
|
||||||
attributes:
|
attributes:
|
||||||
active_alerts: "{{ states('sensor.weatheralerts_active_alerts') }}"
|
active_alerts: "{{ states('sensor.weatheralerts_active_alerts') }}"
|
||||||
icon: >
|
icon: >
|
||||||
@@ -1541,7 +1479,7 @@ template:
|
|||||||
unique_id: e2f51da4-2271-4719-8edf-a28f76ac1e3f
|
unique_id: e2f51da4-2271-4719-8edf-a28f76ac1e3f
|
||||||
state: >
|
state: >
|
||||||
{% from 'formatting.jinja' import cleanup %}
|
{% from 'formatting.jinja' import cleanup %}
|
||||||
{%- macro getReport() -%}
|
{% macro getReport() %}
|
||||||
{% set alerts = [
|
{% set alerts = [
|
||||||
states('sensor.weatheralerts_alert_1_most_recent_active_alert'),
|
states('sensor.weatheralerts_alert_1_most_recent_active_alert'),
|
||||||
states('sensor.weatheralerts_alert_2_most_recent_active_alert'),
|
states('sensor.weatheralerts_alert_2_most_recent_active_alert'),
|
||||||
@@ -1553,8 +1491,8 @@ template:
|
|||||||
{% set flood = alerts | reject ('eq','unavailable') | select('eq','Flood Warning') | list | count | int %}
|
{% set flood = alerts | reject ('eq','unavailable') | select('eq','Flood Warning') | list | count | int %}
|
||||||
{% set flood1 = 1 if (flood > 0) else 0 %}
|
{% set flood1 = 1 if (flood > 0) else 0 %}
|
||||||
{{ (main + flood1) | int }}
|
{{ (main + flood1) | int }}
|
||||||
{%- endmacro -%}
|
{% endmacro %}
|
||||||
{{- cleanup(getReport()) -}}
|
{{ cleanup(getReport()) }}
|
||||||
icon: >
|
icon: >
|
||||||
{% if (states('sensor.weatheralerts_active_alerts') | int ) > 0 %}
|
{% if (states('sensor.weatheralerts_active_alerts') | int ) > 0 %}
|
||||||
mdi:alert
|
mdi:alert
|
||||||
@@ -1582,6 +1520,98 @@ template:
|
|||||||
{{ ns.temps | min | int }}
|
{{ ns.temps | min | int }}
|
||||||
icon: mdi:thermometer
|
icon: mdi:thermometer
|
||||||
|
|
||||||
|
- name: SPC Wind Risk Day 1
|
||||||
|
unique_id: e415f5bd-7c44-4067-9c5d-4905ce13be26
|
||||||
|
state: "{{ state_attr('sensor.spc_outlook_day_1','wind_probability') }}"
|
||||||
|
attributes:
|
||||||
|
wind_fill: "{{ state_attr('sensor.spc_outlook_day_1','wind_fill') }}"
|
||||||
|
wind_stroke: "{{ state_attr('sensor.spc_outlook_day_1','wind_stroke') }}"
|
||||||
|
icon: mdi:weather-windy
|
||||||
|
- name: SPC Tornado Risk Day 1
|
||||||
|
unique_id: bac1b6d9-d4bf-4434-9260-8765dcc81074
|
||||||
|
state: "{{ state_attr('sensor.spc_outlook_day_1','torn_probability') }}"
|
||||||
|
attributes:
|
||||||
|
torn_fill: "{{ state_attr('sensor.spc_outlook_day_1','torn_fill') }}"
|
||||||
|
torn_stroke: "{{ state_attr('sensor.spc_outlook_day_1','torn_stroke') }}"
|
||||||
|
icon: mdi:weather-tornado
|
||||||
|
- name: SPC Hail Risk Day 1
|
||||||
|
unique_id: a6969cf3-dc48-4e45-85f5-1565137ddf09
|
||||||
|
state: "{{ state_attr('sensor.spc_outlook_day_1','hail_probability') }}"
|
||||||
|
attributes:
|
||||||
|
hail_fill: "{{ state_attr('sensor.spc_outlook_day_1','hail_fill') }}"
|
||||||
|
hail_stroke: "{{ state_attr('sensor.spc_outlook_day_1','hail_stroke') }}"
|
||||||
|
icon: mdi:weather-hail
|
||||||
|
|
||||||
|
sensor:
|
||||||
|
- platform: weatheralerts
|
||||||
|
state: OH
|
||||||
|
zone: 4
|
||||||
|
county: 39
|
||||||
|
|
||||||
|
# - platform: statistics
|
||||||
|
# unique_id: b5996cb4-b715-4fc9-b3d8-98fc12c2b7dd
|
||||||
|
# name: Outside Temp Average
|
||||||
|
# entity_id: sensor.pirateweather_temperature
|
||||||
|
# state_characteristic: average_linear
|
||||||
|
# max_age:
|
||||||
|
# days: 7
|
||||||
|
# - platform: statistics
|
||||||
|
# unique_id: 6192c95a-8fd1-4ba0-87de-d06fdc071d6b
|
||||||
|
# name: Apparent Temp Average
|
||||||
|
# entity_id: sensor.stratton_ave_apparent_temperature
|
||||||
|
# state_characteristic: average_linear
|
||||||
|
# max_age:
|
||||||
|
# days: 7
|
||||||
|
# - platform: statistics
|
||||||
|
# unique_id: 7b9c269c-40b7-4255-a051-2d1b7a6af017
|
||||||
|
# name: Wind Speed Average
|
||||||
|
# entity_id: sensor.pirateweather_wind_speed
|
||||||
|
# state_characteristic: average_linear
|
||||||
|
# max_age:
|
||||||
|
# days: 7
|
||||||
|
# - platform: statistics
|
||||||
|
# unique_id: b43d053f-aafb-4237-a742-a2ca841498fa
|
||||||
|
# name: Visibility Stats Average
|
||||||
|
# entity_id: sensor.kdfi_visibility
|
||||||
|
# state_characteristic: average_linear
|
||||||
|
# max_age:
|
||||||
|
# days: 7
|
||||||
|
# - platform: statistics
|
||||||
|
# unique_id: b1206da2-fa00-4f7d-9af4-f2cf6794bd24
|
||||||
|
# name: Humidity Stats Average
|
||||||
|
# entity_id: sensor.pirateweather_humidity
|
||||||
|
# state_characteristic: average_linear
|
||||||
|
# max_age:
|
||||||
|
# days: 7
|
||||||
|
|
||||||
|
# binary_sensor:
|
||||||
|
# - platform: bayesian
|
||||||
|
# unique_id: 3e9640d9-57a0-4495-8731-e64b34774065
|
||||||
|
# name: Raining Bayesian
|
||||||
|
# prior: 0.17
|
||||||
|
# probability_threshold: 0.6
|
||||||
|
# observations:
|
||||||
|
# - entity_id: "sensor.pirateweather_precip"
|
||||||
|
# prob_given_true: 0.13
|
||||||
|
# prob_given_false: 0.005
|
||||||
|
# platform: "state"
|
||||||
|
# to_state: "rain"
|
||||||
|
# - entity_id: "sensor.openweathermap_precipitation_kind"
|
||||||
|
# prob_given_true: 0.75
|
||||||
|
# prob_given_false: 0.005
|
||||||
|
# platform: "state"
|
||||||
|
# to_state: "rain"
|
||||||
|
# - entity_id: "sensor.tomorrow_io_stratton_ave_precipitation_type"
|
||||||
|
# prob_given_true: 0.99
|
||||||
|
# prob_given_false: 0.2
|
||||||
|
# platform: "state"
|
||||||
|
# to_state: "rain"
|
||||||
|
# - entity_id: "sensor.stratton_ave_precipitation"
|
||||||
|
# prob_given_true: 0.99
|
||||||
|
# prob_given_false: 0.2
|
||||||
|
# platform: "numeric_state"
|
||||||
|
# above: 0
|
||||||
|
|
||||||
input_boolean:
|
input_boolean:
|
||||||
freeze_warning:
|
freeze_warning:
|
||||||
name: Freeze Warning
|
name: Freeze Warning
|
||||||
|
|||||||
@@ -48,8 +48,8 @@ input_datetime:
|
|||||||
has_date: false
|
has_date: false
|
||||||
has_time: true
|
has_time: true
|
||||||
icon: mdi:fan-auto
|
icon: mdi:fan-auto
|
||||||
emma_bedroom_cooling:
|
emma_bedroom_climate:
|
||||||
name: Emma Bedroom Cooling
|
name: Emma Bedroom Climate
|
||||||
has_date: false
|
has_date: false
|
||||||
has_time: true
|
has_time: true
|
||||||
icon: mdi:fan-auto
|
icon: mdi:fan-auto
|
||||||
@@ -899,3 +899,6 @@ script:
|
|||||||
- service: input_boolean.turn_off
|
- service: input_boolean.turn_off
|
||||||
target:
|
target:
|
||||||
entity_id: input_boolean.white_noise_emma_bedroom
|
entity_id: input_boolean.white_noise_emma_bedroom
|
||||||
|
- service: climate.turn_off
|
||||||
|
target:
|
||||||
|
entity_id: climate.emma_bedroom_vtherm
|
||||||
|
|||||||
@@ -38,12 +38,13 @@ conversation:
|
|||||||
alexa:
|
alexa:
|
||||||
|
|
||||||
powercalc:
|
powercalc:
|
||||||
force_update_frequency: 00:01:00
|
discovery:
|
||||||
|
enabled: true
|
||||||
|
energy_update_interval: 60
|
||||||
power_sensor_naming: "{} Power Sensor"
|
power_sensor_naming: "{} Power Sensor"
|
||||||
power_sensor_friendly_naming: "{} Power Sensor"
|
power_sensor_friendly_naming: "{} Power Sensor"
|
||||||
energy_sensor_naming: "{} Energy Sensor"
|
energy_sensor_naming: "{} Energy Sensor"
|
||||||
energy_sensor_friendly_naming: "{} Energy Sensor"
|
energy_sensor_friendly_naming: "{} Energy Sensor"
|
||||||
enable_autodiscovery: true
|
|
||||||
create_energy_sensors: true
|
create_energy_sensors: true
|
||||||
create_utility_meters: true
|
create_utility_meters: true
|
||||||
create_domain_groups:
|
create_domain_groups:
|
||||||
@@ -59,5 +60,3 @@ pyscript:
|
|||||||
animated_scenes:
|
animated_scenes:
|
||||||
|
|
||||||
grad_vol:
|
grad_vol:
|
||||||
|
|
||||||
battery_notes:
|
|
||||||
@@ -268,7 +268,7 @@ script:
|
|||||||
- light.living_room_overhead
|
- light.living_room_overhead
|
||||||
- service: input_text.set_value
|
- service: input_text.set_value
|
||||||
target:
|
target:
|
||||||
entity_id: input_text.living_room_studio_selected_scene
|
entity_id: input_text.living_room_selected_scene
|
||||||
data:
|
data:
|
||||||
value: Alert
|
value: Alert
|
||||||
# Define variable for restoration of the current scene if the backup is not needed
|
# Define variable for restoration of the current scene if the backup is not needed
|
||||||
|
|||||||
@@ -124,6 +124,8 @@ template:
|
|||||||
state: >
|
state: >
|
||||||
{% if is_state('binary_sensor.basement_studio_motion','on') %}
|
{% if is_state('binary_sensor.basement_studio_motion','on') %}
|
||||||
true
|
true
|
||||||
|
{% elif is_state('input_boolean.recliner_mode','on') %}
|
||||||
|
true
|
||||||
{% elif is_state('sensor.xia_desktop_current_username','tm24f') %}
|
{% elif is_state('sensor.xia_desktop_current_username','tm24f') %}
|
||||||
false
|
false
|
||||||
{% elif is_state('binary_sensor.tony_desktop_on','off') and
|
{% elif is_state('binary_sensor.tony_desktop_on','off') and
|
||||||
|
|||||||
@@ -710,27 +710,34 @@ script:
|
|||||||
data:
|
data:
|
||||||
option: >
|
option: >
|
||||||
{% set low = states('sensor.overnight_lowest_temperature') | int %}
|
{% set low = states('sensor.overnight_lowest_temperature') | int %}
|
||||||
{% set run_threshold = states('input_number.emma_bedroom_aircon_run_threshold') | int %}
|
{% set aircon_run_threshold = states('input_number.emma_bedroom_aircon_run_threshold') | int %}
|
||||||
{% set mode_threshold = states('input_number.emma_bedroom_aircon_mode_threshold') | int %}
|
{% set aircon_mode_threshold = states('input_number.emma_bedroom_aircon_mode_threshold') | int %}
|
||||||
{% if is_state('input_boolean.emma_bedroom_aircon_installed','off') %}
|
{% set heater_run_threshold = states('input_number.emma_bedroom_heater_run_threshold') | int %}
|
||||||
|
{% if is_state('input_boolean.emma_bedroom_aircon_installed','off') and is_state('input_boolean.emma_bedroom_heater_installed','off') %}
|
||||||
White Noise
|
White Noise
|
||||||
{% elif low >= run_threshold %}
|
{% elif low >= aircon_run_threshold and is_state('input_boolean.emma_bedroom_aircon_installed','on') %}
|
||||||
{% if low >= mode_threshold %}
|
{% if low >= aircon_mode_threshold %}
|
||||||
AC
|
AC
|
||||||
{% else %}
|
{% else %}
|
||||||
Fan
|
Fan
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% elif low < heater_run_threshold and is_state('input_boolean.emma_bedroom_heater_installed','on') %}
|
||||||
|
Heat
|
||||||
{% else %}
|
{% else %}
|
||||||
White Noise
|
White Noise
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
- delay:
|
||||||
|
milliseconds: 500
|
||||||
- service: input_datetime.set_datetime
|
- service: input_datetime.set_datetime
|
||||||
target:
|
target:
|
||||||
entity_id: input_datetime.emma_bedroom_cooling
|
entity_id: input_datetime.emma_bedroom_climate
|
||||||
data:
|
data:
|
||||||
time: >
|
time: >
|
||||||
{% set high = states('sensor.todays_high_temp') | int %}
|
{% set high = states('sensor.todays_high_temp') | int %}
|
||||||
{% set low = states('sensor.overnight_lowest_temperature') | int %}
|
{% set low = states('sensor.overnight_lowest_temperature') | int %}
|
||||||
{% set bedtime = state_attr('input_datetime.emma_bedtime','timestamp') | int %}
|
{% set bedtime = state_attr('input_datetime.emma_bedtime','timestamp') | int %}
|
||||||
|
{% set schedmode = states('input_select.scheduled_climate_mode_emma_bedroom') %}
|
||||||
|
{% if schedmode in ['AC','Fan'] and is_state('input_boolean.emma_bedroom_aircon_installed','on') %}
|
||||||
{% if is_state('input_boolean.hot_day','on') %}
|
{% if is_state('input_boolean.hot_day','on') %}
|
||||||
{{ (bedtime - 5400) | timestamp_custom('%H:%M',false) }}
|
{{ (bedtime - 5400) | timestamp_custom('%H:%M',false) }}
|
||||||
{% elif high >= 80 or low >= 60 %}
|
{% elif high >= 80 or low >= 60 %}
|
||||||
@@ -738,6 +745,17 @@ script:
|
|||||||
{% else %}
|
{% else %}
|
||||||
{{ (bedtime - 1800) | timestamp_custom('%H:%M',false) }}
|
{{ (bedtime - 1800) | timestamp_custom('%H:%M',false) }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% elif schedmode == 'Heat' and is_state('input_boolean.emma_bedroom_heater_installed','on') %}
|
||||||
|
{% if low <= 20 %}
|
||||||
|
{{ (bedtime - 5400) | timestamp_custom('%H:%M',false) }}
|
||||||
|
{% elif low <= 32 %}
|
||||||
|
{{ (bedtime - 3600) | timestamp_custom('%H:%M',false) }}
|
||||||
|
{% else %}
|
||||||
|
{{ (bedtime - 1800) | timestamp_custom('%H:%M',false) }}
|
||||||
|
{% endif %}
|
||||||
|
{% else %}
|
||||||
|
{{ bedtime | timestamp_custom('%H:%M',false) }}
|
||||||
|
{% endif %}
|
||||||
- service: input_boolean.turn_on
|
- service: input_boolean.turn_on
|
||||||
target:
|
target:
|
||||||
entity_id: input_boolean.emma_scheduling_evening_ran
|
entity_id: input_boolean.emma_scheduling_evening_ran
|
||||||
|
|||||||
@@ -190,51 +190,51 @@ template:
|
|||||||
{% set dow = now().strftime('%A') %}
|
{% set dow = now().strftime('%A') %}
|
||||||
{% if week == 'First Menu' %}
|
{% if week == 'First Menu' %}
|
||||||
{% if dow == 'Monday' %}
|
{% if dow == 'Monday' %}
|
||||||
Popcorn chicken, mashed potatoes, corn, apples, corn bread, and milk.
|
Chicken tenders, au gratin potatoes, corn, mixed fruit, cornbread, and milk.
|
||||||
{% elif dow == 'Tuesday' %}
|
{% elif dow == 'Tuesday' %}
|
||||||
Beef taco or taco salad, refried beans, spanish rice, peaches, and milk.
|
Beef or chicken, taco or salad, refried beans, rice, apple, and milk.
|
||||||
{% elif dow == 'Wednesday' %}
|
{% elif dow == 'Wednesday' %}
|
||||||
Pulled pork, steamed broccoli, tomatoes, mixed fruit, and milk.
|
Hot dog, french fries, celery, peaches, and milk.
|
||||||
{% elif dow == 'Thursday' %}
|
{% elif dow == 'Thursday' %}
|
||||||
Beef Stroganoff, green beans, carrots, fresh fruit, bread, and milk.
|
Mac and cheese, Cheez-Its, side salad, tomatoes, pears, and milk.
|
||||||
{% elif dow == 'Friday' %}
|
{% elif dow == 'Friday' %}
|
||||||
Optionally, Papa Johns Pizza. Otherwise, hamburger, spinach salad, oven potatoes, applesauce, and milk.
|
Corndog, steamed broccoli, carrots, applesauce, and milk.
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% elif week == 'Second Menu' %}
|
{% elif week == 'Second Menu' %}
|
||||||
{% if dow == 'Monday' %}
|
{% if dow == 'Monday' %}
|
||||||
Pizza, spinach salad, tomatoes, fruit, and milk.
|
Popcorn chicken, mashed potatoes, corn, grapes, cornbread, and milk.
|
||||||
{% elif dow == 'Tuesday' %}
|
{% elif dow == 'Tuesday' %}
|
||||||
Lasagna, garlic bread, steamed cauliflower, celery, apple crisp, and milk.
|
BBQ pork, baked beans, cucumbers, mixed fruit, and milk.
|
||||||
{% elif dow == 'Wednesday' %}
|
{% elif dow == 'Wednesday' %}
|
||||||
Chicken patty, oven potatoes, broccoli, pears, and milk.
|
Bosco sticks, french fries, tomatoes, banana, and milk.
|
||||||
{% elif dow == 'Thursday' %}
|
{% elif dow == 'Thursday' %}
|
||||||
Turkey and noodles, mashed potatoes, green beans, peaches, breadstick, and milk.
|
Teriyaki beef and broccoli ramen, stir fry, egg roll, strawberry cup, and milk.
|
||||||
{% elif down == 'Friday' %}
|
{% elif dow == 'Friday' %}
|
||||||
Optionally, Papa Johns Pizza. Otherwise, hot dog with chili sauce, carrots, baked beans, mixed fruit, and milk.
|
Hamburger, fries, carrots, applesauce, and milk.
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% elif week == 'Third Menu' %}
|
{% elif week == 'Third Menu' %}
|
||||||
{% if dow == 'Monday' %}
|
{% if dow == 'Monday' %}
|
||||||
Popcorn chicken, au gratin potatoes, corn, mixed fruit, corn bread, milk.
|
Nachoes, carrots, apple, and milk.
|
||||||
{% elif dow == 'Tuesday' %}
|
{% elif dow == 'Tuesday' %}
|
||||||
Beef taco or taco salad, refried beans, spanish rice, peaches, and milk.
|
Chicken patty, au gratin potatoes, cauliflower, peaches, and milk.
|
||||||
{% elif dow == 'Wednesday' %}
|
{% elif dow == 'Wednesday' %}
|
||||||
Hamburger, oven potatoes, celery, applesauce, and milk.
|
Pizza Crunchers, side salad, steamed broccoli, mixed fruit, and milk.
|
||||||
{% elif dow == 'Thursday' %}
|
{% elif dow == 'Thursday' %}
|
||||||
Mac and cheese, steamed broccoli, tomatoes, pears, bread, and milk.
|
Chicken teriyaki bowl, black beans, corn, apple crisp, egg roll, and milk.
|
||||||
{% elif dow == 'Friday' %}
|
{% elif dow == 'Friday' %}
|
||||||
Optionally, Papa Johns Pizza. Otherwise, sloppy joe, carrots, spinach salad, fruit, and milk.
|
Hot dog, french fries, cherry tomatoes, strawberry cups, and milk.
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% elif week == 'Fourth Menu' %}
|
{% elif week == 'Fourth Menu' %}
|
||||||
{% if dow == 'Monday' %}
|
{% if dow == 'Monday' %}
|
||||||
Toasted cheese, tomato soup, mixed vegetables, fresh fruit, treat, and milk.
|
French toast or egg omelet, sausage, tomatoes, hash browns, oranges, and milk.
|
||||||
{% elif dow == 'Tuesday' %}
|
{% elif dow == 'Tuesday' %}
|
||||||
Omelet or french toast, sausage, hash browns, tomatoes, orange, and milk.
|
Orange chicken with vegetable rice, egg roll, fortune cookie, apple crisp, and milk.
|
||||||
{% elif dow == 'Wednesday' %}
|
{% elif dow == 'Wednesday' %}
|
||||||
Bosco sticks with pizza sauce, carrots, oven potatoes, peach crisp, and milk.
|
Hamburger, fries, steamed carrots, banana, and milk.
|
||||||
{% elif dow == 'Thursday' %}
|
{% elif dow == 'Thursday' %}
|
||||||
Spaghetti, broccoli, green beans, fresh fruit, breadstick, and milk.
|
Chicken and noodles, mashed potatoes, green beans, peach cups, breadstick, and milk.
|
||||||
{% elif dow == 'Friday' %}
|
{% elif dow == 'Friday' %}
|
||||||
Optionally, Papa Johns Pizza. Otherwise, hot dog, baked beans, cauliflower, applesauce, and milk.
|
Mozzarella sticks, marinara, side salad, broccoli, mixed fruit, and milk.
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% else %}
|
{% else %}
|
||||||
No menu for the current day.
|
No menu for the current day.
|
||||||
|
|||||||
@@ -142,6 +142,36 @@ template:
|
|||||||
state: >
|
state: >
|
||||||
{% from 'sports.jinja' import sports_today %}
|
{% from 'sports.jinja' import sports_today %}
|
||||||
{{ sports_today('sensor.minnesota_wild') }}
|
{{ sports_today('sensor.minnesota_wild') }}
|
||||||
|
- name: Michigan Wolverines Hockey Inhibit
|
||||||
|
unique_id: 8ecd46d5-64c2-49f5-bc8d-d88593273d92
|
||||||
|
state: >
|
||||||
|
{% from 'sports.jinja' import sports_inhibit %}
|
||||||
|
{{ sports_inhibit('sensor.michigan_wolverines_hockey') }}
|
||||||
|
- name: Michigan Wolverines Hockey Event Today
|
||||||
|
unique_id: 551fdae5-e18c-4117-b3ba-df864068b13d
|
||||||
|
state: >
|
||||||
|
{% from 'sports.jinja' import sports_today %}
|
||||||
|
{{ sports_today('sensor.michigan_wolverines_hockey') }}
|
||||||
|
- name: Minnesota Golden Gophers Hockey Inhibit
|
||||||
|
unique_id: 87653f3a-203c-4dbf-87e8-70bcacf6eb22
|
||||||
|
state: >
|
||||||
|
{% from 'sports.jinja' import sports_inhibit %}
|
||||||
|
{{ sports_inhibit('sensor.minnesota_golden_gophers_hockey') }}
|
||||||
|
- name: Minnesota Golden Gophers Hockey Event Today
|
||||||
|
unique_id: 1f4ff7eb-cbc9-4c81-a5c9-6523b5fb52ff
|
||||||
|
state: >
|
||||||
|
{% from 'sports.jinja' import sports_today %}
|
||||||
|
{{ sports_today('sensor.minnesota_golden_gophers_hockey') }}
|
||||||
|
- name: Minnesota State Mavericks Hockey Inhibit
|
||||||
|
unique_id: bd15870d-bccb-4c52-9690-473c31bb4090
|
||||||
|
state: >
|
||||||
|
{% from 'sports.jinja' import sports_inhibit %}
|
||||||
|
{{ sports_inhibit('sensor.minnesota_state_mavericks_hockey') }}
|
||||||
|
- name: Minnesota State Mavericks Hockey Event Today
|
||||||
|
unique_id: e403be15-3ff2-47b1-8398-70f8ccb65026
|
||||||
|
state: >
|
||||||
|
{% from 'sports.jinja' import sports_today %}
|
||||||
|
{{ sports_today('sensor.minnesota_state_mavericks_hockey') }}
|
||||||
|
|
||||||
intent_script:
|
intent_script:
|
||||||
SportsScore:
|
SportsScore:
|
||||||
|
|||||||
@@ -102,22 +102,6 @@ template:
|
|||||||
- name: Asus Laptop Idle
|
- name: Asus Laptop Idle
|
||||||
unique_id: 7d8eb80a-0a2e-48a9-84b3-33175304dd95
|
unique_id: 7d8eb80a-0a2e-48a9-84b3-33175304dd95
|
||||||
state: "{{ states('sensor.asus_laptop_system_idle_time') | int > 1800 }}"
|
state: "{{ states('sensor.asus_laptop_system_idle_time') | int > 1800 }}"
|
||||||
- sensor:
|
|
||||||
- name: "Min Ping"
|
|
||||||
unique_id: ddcb9f6f-7c94-41fe-9453-2a2205b078e0
|
|
||||||
state: "{{ state_attr('binary_sensor.internet','round_trip_time_min') }}"
|
|
||||||
availability: "{{ is_state('binary_sensor.internet','on') }}"
|
|
||||||
unit_of_measurement: "ms"
|
|
||||||
- name: "Avg Ping"
|
|
||||||
unique_id: 79a13c64-7508-48de-8b44-2a23c59917c8
|
|
||||||
state: "{{ state_attr('binary_sensor.internet','round_trip_time_avg') }}"
|
|
||||||
availability: "{{ is_state('binary_sensor.internet','on') }}"
|
|
||||||
unit_of_measurement: "ms"
|
|
||||||
- name: "Max Ping"
|
|
||||||
unique_id: c9c71ab6-c7fa-4425-a4ed-768d60e93781
|
|
||||||
state: "{{ state_attr('binary_sensor.internet','round_trip_time_max') }}"
|
|
||||||
availability: "{{ is_state('binary_sensor.internet','on') }}"
|
|
||||||
unit_of_measurement: "ms"
|
|
||||||
|
|
||||||
# - platform: influxdb
|
# - platform: influxdb
|
||||||
# host: 192.168.1.26
|
# host: 192.168.1.26
|
||||||
|
|||||||
@@ -25,24 +25,36 @@ input_boolean:
|
|||||||
tony_ibuprofen_active:
|
tony_ibuprofen_active:
|
||||||
name: Tony Ibuprofen Active
|
name: Tony Ibuprofen Active
|
||||||
icon: mdi:medication
|
icon: mdi:medication
|
||||||
|
tony_ibuprofen_reminder:
|
||||||
|
name: Tony Ibuprofen Reminder
|
||||||
|
icon: mdi:medication
|
||||||
tony_ibuprofen_taken:
|
tony_ibuprofen_taken:
|
||||||
name: Tony Ibuprofen Taken
|
name: Tony Ibuprofen Taken
|
||||||
icon: mdi:medication
|
icon: mdi:medication
|
||||||
tony_tylenol_active:
|
tony_tylenol_active:
|
||||||
name: Tony Tylenol Active
|
name: Tony Tylenol Active
|
||||||
icon: mdi:medication
|
icon: mdi:medication
|
||||||
|
tony_tylenol_reminder:
|
||||||
|
name: Tony Tylenol Reminder
|
||||||
|
icon: mdi:medication
|
||||||
tony_tylenol_taken:
|
tony_tylenol_taken:
|
||||||
name: Tony Tylenol Taken
|
name: Tony Tylenol Taken
|
||||||
icon: mdi:medication
|
icon: mdi:medication
|
||||||
tony_custom_meds_tracker_p1:
|
tony_custom_meds_tracker_p1:
|
||||||
name: Tony Custom Meds Tracker P1
|
name: Tony Custom Meds Tracker P1
|
||||||
icon: mdi:medication
|
icon: mdi:medication
|
||||||
|
tony_custom_meds_reminder_p1:
|
||||||
|
name: Tony Custom Meds Reminder P1
|
||||||
|
icon: mdi:medication
|
||||||
tony_custom_meds_taken_p1:
|
tony_custom_meds_taken_p1:
|
||||||
name: Tony Custom Meds Taken P1
|
name: Tony Custom Meds Taken P1
|
||||||
icon: mdi:medication
|
icon: mdi:medication
|
||||||
tony_custom_meds_tracker_p2:
|
tony_custom_meds_tracker_p2:
|
||||||
name: Tony Custom Meds Tracker P2
|
name: Tony Custom Meds Tracker P2
|
||||||
icon: mdi:medication
|
icon: mdi:medication
|
||||||
|
tony_custom_meds_reminder_p2:
|
||||||
|
name: Tony Custom Meds Reminder P2
|
||||||
|
icon: mdi:medication
|
||||||
tony_custom_meds_taken_p2:
|
tony_custom_meds_taken_p2:
|
||||||
name: Tony Custom Meds Taken P2
|
name: Tony Custom Meds Taken P2
|
||||||
icon: mdi:medication
|
icon: mdi:medication
|
||||||
|
|||||||
@@ -113,6 +113,7 @@ ## HACS Lovelace Cards
|
|||||||
- [Comfortable Environment Card](https://github.com/argaar/comfortable-environment-card)
|
- [Comfortable Environment Card](https://github.com/argaar/comfortable-environment-card)
|
||||||
- [Versatile Thermostat UI Card](https://github.com/jmcollin78/versatile-thermostat-ui-card)
|
- [Versatile Thermostat UI Card](https://github.com/jmcollin78/versatile-thermostat-ui-card)
|
||||||
- [Gauge Card Pro](https://github.com/benjamin-dcs/gauge-card-pro)
|
- [Gauge Card Pro](https://github.com/benjamin-dcs/gauge-card-pro)
|
||||||
|
- [AdGuard Card](https://github.com/homeassistant-extras/adguard-card)
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
|||||||
288
scripts.yaml
288
scripts.yaml
@@ -1304,13 +1304,28 @@ evening_on_second_floor:
|
|||||||
option: "{% if is_state('binary_sensor.upstairs_bathroom_occupied','on')
|
option: "{% if is_state('binary_sensor.upstairs_bathroom_occupied','on')
|
||||||
%}\n Adaptive\n{% else %}\n Single Nightlight\n{% endif %}\n"
|
%}\n Adaptive\n{% else %}\n Single Nightlight\n{% endif %}\n"
|
||||||
action: input_select.select_option
|
action: input_select.select_option
|
||||||
- target:
|
- if:
|
||||||
area_id:
|
- condition: state
|
||||||
- kallen_bedroom
|
entity_id: input_boolean.emma_sleeping
|
||||||
- emma_bedroom
|
state: 'off'
|
||||||
|
then:
|
||||||
|
- action: light.turn_off
|
||||||
|
metadata: {}
|
||||||
data: {}
|
data: {}
|
||||||
alias: Turn off kids' bedroom lights
|
target:
|
||||||
action: light.turn_off
|
area_id: emma_bedroom
|
||||||
|
alias: If Emma's bedroom is not in use, turn off her bedroom light
|
||||||
|
- alias: If Kallen's bedroom is not in use, turn off his bedroom light
|
||||||
|
if:
|
||||||
|
- condition: state
|
||||||
|
entity_id: input_boolean.kallen_sleeping
|
||||||
|
state: 'off'
|
||||||
|
then:
|
||||||
|
- action: light.turn_off
|
||||||
|
metadata: {}
|
||||||
|
data: {}
|
||||||
|
target:
|
||||||
|
area_id: kallen_bedroom
|
||||||
- alias: Turn off Master Bedroom Lights
|
- alias: Turn off Master Bedroom Lights
|
||||||
if:
|
if:
|
||||||
- condition: state
|
- condition: state
|
||||||
@@ -1491,32 +1506,32 @@ goodnight_on_first_floor:
|
|||||||
entity_id: input_boolean.guest_mode
|
entity_id: input_boolean.guest_mode
|
||||||
state: 'on'
|
state: 'on'
|
||||||
then:
|
then:
|
||||||
- service: light.turn_off
|
- target:
|
||||||
target:
|
|
||||||
area_id:
|
area_id:
|
||||||
- downstairs_bathroom
|
- downstairs_bathroom
|
||||||
- tina_desk
|
- tina_desk
|
||||||
entity_id: light.living_room_lights
|
entity_id: light.living_room_lights
|
||||||
data: {}
|
data: {}
|
||||||
- service: input_select.select_option
|
action: light.turn_off
|
||||||
target:
|
- target:
|
||||||
entity_id: input_select.mud_room_scenes
|
entity_id: input_select.mud_room_scenes
|
||||||
data:
|
data:
|
||||||
option: Nightlight
|
option: Nightlight
|
||||||
|
action: input_select.select_option
|
||||||
else:
|
else:
|
||||||
- service: light.turn_off
|
- target:
|
||||||
target:
|
|
||||||
area_id:
|
area_id:
|
||||||
- downstairs_bathroom
|
- downstairs_bathroom
|
||||||
- mud_room
|
- mud_room
|
||||||
- tina_desk
|
- tina_desk
|
||||||
entity_id: light.living_room_lights
|
entity_id: light.living_room_lights
|
||||||
data: {}
|
data: {}
|
||||||
|
action: light.turn_off
|
||||||
|
alias: Determine lights based on guest mode
|
||||||
goodnight_on_second_floor:
|
goodnight_on_second_floor:
|
||||||
alias: Goodnight on Second Floor
|
alias: Goodnight on Second Floor
|
||||||
sequence:
|
sequence:
|
||||||
- service: light.turn_off
|
- target:
|
||||||
target:
|
|
||||||
area_id:
|
area_id:
|
||||||
- emma_bedroom
|
- emma_bedroom
|
||||||
- kallen_bedroom
|
- kallen_bedroom
|
||||||
@@ -1524,21 +1539,24 @@ goodnight_on_second_floor:
|
|||||||
- master_bedroom_closet
|
- master_bedroom_closet
|
||||||
- upstairs_hallway
|
- upstairs_hallway
|
||||||
data: {}
|
data: {}
|
||||||
- if:
|
action: light.turn_off
|
||||||
|
- alias: If Kallen is gone overnight, turn off upstairs bathroom lights
|
||||||
|
if:
|
||||||
- condition: state
|
- condition: state
|
||||||
entity_id: input_boolean.kallen_overnight
|
entity_id: input_boolean.kallen_overnight
|
||||||
state: 'on'
|
state: 'on'
|
||||||
then:
|
then:
|
||||||
- service: light.turn_off
|
- target:
|
||||||
target:
|
|
||||||
area_id: upstairs_bathroom
|
area_id: upstairs_bathroom
|
||||||
data: {}
|
data: {}
|
||||||
|
action: light.turn_off
|
||||||
else:
|
else:
|
||||||
- service: input_select.select_option
|
- target:
|
||||||
target:
|
|
||||||
entity_id: input_select.upstairs_bathroom_scenes
|
entity_id: input_select.upstairs_bathroom_scenes
|
||||||
data:
|
data:
|
||||||
option: Single Nightlight
|
option: Single Nightlight
|
||||||
|
action: input_select.select_option
|
||||||
|
alias: Set upstairs bathroom lights to single nightlight
|
||||||
morning_scene:
|
morning_scene:
|
||||||
alias: Morning Scene
|
alias: Morning Scene
|
||||||
sequence:
|
sequence:
|
||||||
@@ -1700,6 +1718,9 @@ tony_morning_meds:
|
|||||||
tag: tony-morning-meds
|
tag: tony-morning-meds
|
||||||
alias: Clear previous morning notification
|
alias: Clear previous morning notification
|
||||||
action: script.text_notify
|
action: script.text_notify
|
||||||
|
- variables:
|
||||||
|
remindCount: '{{ states(''counter.tony_morning_meds_reminder_count'') }}'
|
||||||
|
alias: Set variable for reminder count
|
||||||
- alias: Send notifications, using AI if internet is connected
|
- alias: Send notifications, using AI if internet is connected
|
||||||
if:
|
if:
|
||||||
- condition: state
|
- condition: state
|
||||||
@@ -1712,20 +1733,38 @@ tony_morning_meds:
|
|||||||
entity_id: counter.tony_morning_meds_reminder_count
|
entity_id: counter.tony_morning_meds_reminder_count
|
||||||
above: 2
|
above: 2
|
||||||
then:
|
then:
|
||||||
- action: google_generative_ai_conversation.generate_content
|
- alias: Generate snarky reminder
|
||||||
|
action: ai_task.generate_data
|
||||||
metadata: {}
|
metadata: {}
|
||||||
data:
|
data:
|
||||||
prompt: Remind Tony to take his morning meds. Use a maximum of two lines.
|
instructions: Remind Tony to take his morning meds. Use a maximum of two
|
||||||
Be snarky, because at this point he's been reminded multiple times.
|
lines. Be snarky, because at this point this is reminder number {{ remindCount
|
||||||
|
}}.
|
||||||
|
task_name: Tony Morning Medication Reminder Snarky
|
||||||
|
entity_id: ai_task.google_ai_task
|
||||||
|
structure:
|
||||||
|
notification_text:
|
||||||
|
description: The text to send in the notification to Tony's phone
|
||||||
|
required: true
|
||||||
|
selector:
|
||||||
|
text:
|
||||||
response_variable: response
|
response_variable: response
|
||||||
alias: Generate snarky reminder
|
|
||||||
else:
|
else:
|
||||||
- action: google_generative_ai_conversation.generate_content
|
- alias: Generate reminder
|
||||||
|
action: ai_task.generate_data
|
||||||
metadata: {}
|
metadata: {}
|
||||||
data:
|
data:
|
||||||
prompt: Remind Tony to take his morning meds. Use a maximum of two lines.
|
instructions: Remind Tony to take his morning meds. Use a maximum of two
|
||||||
|
lines.
|
||||||
|
task_name: Tony Morning Medication Reminder
|
||||||
|
entity_id: ai_task.google_ai_task
|
||||||
|
structure:
|
||||||
|
notification_text:
|
||||||
|
description: The text to send in the notification to Tony's phone
|
||||||
|
required: true
|
||||||
|
selector:
|
||||||
|
text:
|
||||||
response_variable: response
|
response_variable: response
|
||||||
alias: Generate reminder
|
|
||||||
- delay:
|
- delay:
|
||||||
hours: 0
|
hours: 0
|
||||||
minutes: 0
|
minutes: 0
|
||||||
@@ -1738,7 +1777,7 @@ tony_morning_meds:
|
|||||||
who: tony
|
who: tony
|
||||||
type: alert
|
type: alert
|
||||||
title: Morning Meds
|
title: Morning Meds
|
||||||
message: '{{ response.text }}'
|
message: '{{ response.data.notification_text }}'
|
||||||
tag: tony-morning-meds
|
tag: tony-morning-meds
|
||||||
actions:
|
actions:
|
||||||
- action: TONY_MORNING_MEDS_TAKEN
|
- action: TONY_MORNING_MEDS_TAKEN
|
||||||
@@ -1760,11 +1799,11 @@ tony_morning_meds:
|
|||||||
state: home
|
state: home
|
||||||
alias: If Tony is home
|
alias: If Tony is home
|
||||||
then:
|
then:
|
||||||
- data:
|
- alias: Send TTS notification
|
||||||
|
data:
|
||||||
who: common_areas
|
who: common_areas
|
||||||
type: alert
|
type: alert
|
||||||
message: '{{ response.text }}'
|
message: '{{ response.data.notification_text }}'
|
||||||
alias: Send TTS notification
|
|
||||||
action: script.speech_engine
|
action: script.speech_engine
|
||||||
else:
|
else:
|
||||||
- delay:
|
- delay:
|
||||||
@@ -2007,6 +2046,9 @@ tony_afternoon_meds:
|
|||||||
tag: tony-afternoon-meds
|
tag: tony-afternoon-meds
|
||||||
alias: Clear previous afternoon notification
|
alias: Clear previous afternoon notification
|
||||||
action: script.text_notify
|
action: script.text_notify
|
||||||
|
- variables:
|
||||||
|
remindCount: '{{ states(''counter.tony_afternoon_meds_reminder_count'') }}'
|
||||||
|
alias: Set variable for reminder count
|
||||||
- alias: Send notifications, using AI if internet is connected
|
- alias: Send notifications, using AI if internet is connected
|
||||||
if:
|
if:
|
||||||
- condition: state
|
- condition: state
|
||||||
@@ -2019,20 +2061,38 @@ tony_afternoon_meds:
|
|||||||
entity_id: counter.tony_afternoon_meds_reminder_count
|
entity_id: counter.tony_afternoon_meds_reminder_count
|
||||||
above: 2
|
above: 2
|
||||||
then:
|
then:
|
||||||
- action: google_generative_ai_conversation.generate_content
|
- alias: Generate snarky reminder
|
||||||
|
action: ai_task.generate_data
|
||||||
metadata: {}
|
metadata: {}
|
||||||
data:
|
data:
|
||||||
prompt: Remind Tony to take his afternoon meds. Use a maximum of two lines.
|
instructions: Remind Tony to take his afternoon meds. Use a maximum of two
|
||||||
Be snarky, because at this point he's been reminded multiple times.
|
lines. Be snarky, because at this point this is reminder number {{ remindCount
|
||||||
|
}}.
|
||||||
|
task_name: Tony Afternoon Medication Reminder Snarky
|
||||||
|
entity_id: ai_task.google_ai_task
|
||||||
|
structure:
|
||||||
|
notification_text:
|
||||||
|
description: The text to send in the notification to Tony's phone
|
||||||
|
required: true
|
||||||
|
selector:
|
||||||
|
text:
|
||||||
response_variable: response
|
response_variable: response
|
||||||
alias: Generate snarky reminder
|
|
||||||
else:
|
else:
|
||||||
- action: google_generative_ai_conversation.generate_content
|
- alias: Generate reminder
|
||||||
|
action: ai_task.generate_data
|
||||||
metadata: {}
|
metadata: {}
|
||||||
data:
|
data:
|
||||||
prompt: Remind Tony to take his afternoon meds. Use a maximum of two lines.
|
instructions: Remind Tony to take his afternoon meds. Use a maximum of two
|
||||||
|
lines.
|
||||||
|
task_name: Tony Afternoon Medication Reminder
|
||||||
|
entity_id: ai_task.google_ai_task
|
||||||
|
structure:
|
||||||
|
notification_text:
|
||||||
|
description: The text to send in the notification to Tony's phone
|
||||||
|
required: true
|
||||||
|
selector:
|
||||||
|
text:
|
||||||
response_variable: response
|
response_variable: response
|
||||||
alias: Generate reminder
|
|
||||||
- delay:
|
- delay:
|
||||||
hours: 0
|
hours: 0
|
||||||
minutes: 0
|
minutes: 0
|
||||||
@@ -2045,7 +2105,7 @@ tony_afternoon_meds:
|
|||||||
who: tony
|
who: tony
|
||||||
type: alert
|
type: alert
|
||||||
title: Afternoon Meds
|
title: Afternoon Meds
|
||||||
message: '{{ response.text }}'
|
message: '{{ response.data.notification_text }}'
|
||||||
tag: tony-afternoon-meds
|
tag: tony-afternoon-meds
|
||||||
actions:
|
actions:
|
||||||
- action: TONY_AFTERNOON_MEDS_TAKEN
|
- action: TONY_AFTERNOON_MEDS_TAKEN
|
||||||
@@ -2067,11 +2127,11 @@ tony_afternoon_meds:
|
|||||||
state: home
|
state: home
|
||||||
alias: If Tony is home
|
alias: If Tony is home
|
||||||
then:
|
then:
|
||||||
- data:
|
- alias: Send TTS notification
|
||||||
|
data:
|
||||||
who: common_areas
|
who: common_areas
|
||||||
type: alert
|
type: alert
|
||||||
message: '{{ response.text }}'
|
message: '{{ response.data.notification_text }}'
|
||||||
alias: Send TTS notification
|
|
||||||
action: script.speech_engine
|
action: script.speech_engine
|
||||||
else:
|
else:
|
||||||
- delay:
|
- delay:
|
||||||
@@ -2531,27 +2591,28 @@ kallen_night_meds:
|
|||||||
minutes: 0
|
minutes: 0
|
||||||
seconds: 5
|
seconds: 5
|
||||||
milliseconds: 0
|
milliseconds: 0
|
||||||
- parallel:
|
- alias: Send text notifications
|
||||||
- data:
|
parallel:
|
||||||
|
- alias: Send to parents
|
||||||
|
data:
|
||||||
who: "{% if states('person.christina_stork') in ['Bob Evans','BobEvans'] %}\n
|
who: "{% if states('person.christina_stork') in ['Bob Evans','BobEvans'] %}\n
|
||||||
\ tony\n{% else %}\n parents\n{% endif %}\n"
|
\ tony\n{% else %}\n parents\n{% endif %}\n"
|
||||||
type: alert
|
type: alert
|
||||||
title: Night Meds
|
title: Night Meds
|
||||||
message: Kallen needs to take his night meds (melatonin)
|
message: Kallen needs to take his night meds
|
||||||
tag: kallen-night-meds
|
tag: kallen-night-meds
|
||||||
actions:
|
actions:
|
||||||
- action: KALLEN_NIGHT_MEDS_TAKEN
|
- action: KALLEN_NIGHT_MEDS_TAKEN
|
||||||
title: Taken
|
title: Taken
|
||||||
- action: KALLEN_NIGHT_MEDS_SKIPPED
|
- action: KALLEN_NIGHT_MEDS_SKIPPED
|
||||||
title: Skip
|
title: Skip
|
||||||
alias: Send to parents
|
|
||||||
action: script.text_notify
|
action: script.text_notify
|
||||||
- alias: Send to Kallen
|
- alias: Send to Kallen
|
||||||
data:
|
data:
|
||||||
who: kallen
|
who: kallen
|
||||||
type: alert
|
type: alert
|
||||||
title: Night Meds
|
title: Night Meds
|
||||||
message: You need to take your night meds (melatonin)
|
message: You need to take your night meds
|
||||||
tag: kallen-night-meds
|
tag: kallen-night-meds
|
||||||
actions:
|
actions:
|
||||||
- action: KALLEN_NIGHT_MEDS_TAKEN
|
- action: KALLEN_NIGHT_MEDS_TAKEN
|
||||||
@@ -2559,7 +2620,6 @@ kallen_night_meds:
|
|||||||
- action: KALLEN_NIGHT_MEDS_SKIPPED
|
- action: KALLEN_NIGHT_MEDS_SKIPPED
|
||||||
title: Skip
|
title: Skip
|
||||||
action: script.text_notify
|
action: script.text_notify
|
||||||
alias: Send text notifications
|
|
||||||
icon: mdi:medication
|
icon: mdi:medication
|
||||||
mode: restart
|
mode: restart
|
||||||
reset_annc_switches:
|
reset_annc_switches:
|
||||||
@@ -2980,14 +3040,14 @@ rabbit_hutch_cleaning:
|
|||||||
emma_sleep:
|
emma_sleep:
|
||||||
alias: Emma Sleep
|
alias: Emma Sleep
|
||||||
sequence:
|
sequence:
|
||||||
- if:
|
- alias: Run scheduling if it hasn't already been run
|
||||||
|
if:
|
||||||
- condition: time
|
- condition: time
|
||||||
after: 04:00:00
|
after: 09:00:00
|
||||||
before: '17:00:00'
|
before: '17:00:00'
|
||||||
then:
|
then:
|
||||||
- data: {}
|
- data: {}
|
||||||
action: script.emma_bedroom_scheduling_evening
|
action: script.emma_bedroom_scheduling_evening
|
||||||
alias: Run scheduling if it hasn't already been run
|
|
||||||
- target:
|
- target:
|
||||||
entity_id:
|
entity_id:
|
||||||
- script.emma_ibuprofen
|
- script.emma_ibuprofen
|
||||||
@@ -3011,7 +3071,9 @@ emma_sleep:
|
|||||||
option: Adaptive
|
option: Adaptive
|
||||||
alias: Set lights to adaptive
|
alias: Set lights to adaptive
|
||||||
action: input_select.select_option
|
action: input_select.select_option
|
||||||
- if:
|
- alias: Set climate mode if not already set
|
||||||
|
choose:
|
||||||
|
- conditions:
|
||||||
- alias: White Noise
|
- alias: White Noise
|
||||||
condition: and
|
condition: and
|
||||||
conditions:
|
conditions:
|
||||||
@@ -3023,7 +3085,7 @@ emma_sleep:
|
|||||||
entity_id: input_boolean.white_noise_emma_bedroom
|
entity_id: input_boolean.white_noise_emma_bedroom
|
||||||
state: 'off'
|
state: 'off'
|
||||||
alias: White Noise is not already on
|
alias: White Noise is not already on
|
||||||
then:
|
sequence:
|
||||||
- target:
|
- target:
|
||||||
entity_id: input_boolean.white_noise_emma_bedroom
|
entity_id: input_boolean.white_noise_emma_bedroom
|
||||||
data: {}
|
data: {}
|
||||||
@@ -3037,7 +3099,46 @@ emma_sleep:
|
|||||||
tag: emma-climate
|
tag: emma-climate
|
||||||
alias: Send white noise notification
|
alias: Send white noise notification
|
||||||
action: script.text_notify
|
action: script.text_notify
|
||||||
alias: Select climate mode
|
- conditions:
|
||||||
|
- alias: Heat
|
||||||
|
condition: and
|
||||||
|
conditions:
|
||||||
|
- condition: state
|
||||||
|
entity_id: input_select.scheduled_climate_mode_emma_bedroom
|
||||||
|
state:
|
||||||
|
- Heat
|
||||||
|
alias: Heat
|
||||||
|
sequence:
|
||||||
|
- if:
|
||||||
|
- alias: Heat is not already on
|
||||||
|
condition: state
|
||||||
|
entity_id: climate.emma_bedroom_vtherm
|
||||||
|
state:
|
||||||
|
- 'off'
|
||||||
|
then:
|
||||||
|
- alias: Send heater notification
|
||||||
|
data:
|
||||||
|
who: parents
|
||||||
|
title: Emma Climate Schedule
|
||||||
|
message: The space heater has been activated in Emma's Bedroom.
|
||||||
|
type: normal
|
||||||
|
tag: emma-climate
|
||||||
|
action: script.text_notify
|
||||||
|
alias: If heat was not already on, send notification that it has been turned
|
||||||
|
on
|
||||||
|
- action: climate.set_hvac_mode
|
||||||
|
metadata: {}
|
||||||
|
target:
|
||||||
|
entity_id: climate.emma_bedroom_vtherm
|
||||||
|
data:
|
||||||
|
hvac_mode: heat
|
||||||
|
alias: Turn on heater
|
||||||
|
- action: input_boolean.turn_on
|
||||||
|
metadata: {}
|
||||||
|
target:
|
||||||
|
entity_id: input_boolean.white_noise_emma_bedroom
|
||||||
|
data: {}
|
||||||
|
alias: Turn on white noise
|
||||||
icon: mdi:lightbulb-night
|
icon: mdi:lightbulb-night
|
||||||
mode: restart
|
mode: restart
|
||||||
tina_morning_meds:
|
tina_morning_meds:
|
||||||
@@ -3058,32 +3159,53 @@ tina_morning_meds:
|
|||||||
tag: tina-morning-meds
|
tag: tina-morning-meds
|
||||||
alias: Clear previous morning notification
|
alias: Clear previous morning notification
|
||||||
action: script.text_notify
|
action: script.text_notify
|
||||||
|
- variables:
|
||||||
|
remindCount: '{{ states(''counter.tina_morning_meds_reminder_count'') }}'
|
||||||
|
alias: Set variable for reminder count
|
||||||
- alias: Send notifications, using AI if internet is connected
|
- alias: Send notifications, using AI if internet is connected
|
||||||
if:
|
if:
|
||||||
- condition: state
|
- condition: state
|
||||||
entity_id: binary_sensor.internet
|
entity_id: binary_sensor.internet
|
||||||
state: 'on'
|
state: 'on'
|
||||||
then:
|
then:
|
||||||
- if:
|
- alias: Generate reminder, be snarky if it's been several times
|
||||||
|
if:
|
||||||
- condition: numeric_state
|
- condition: numeric_state
|
||||||
entity_id: counter.tina_morning_meds_reminder_count
|
entity_id: counter.tina_morning_meds_reminder_count
|
||||||
above: 2
|
above: 2
|
||||||
then:
|
then:
|
||||||
- action: google_generative_ai_conversation.generate_content
|
- alias: Generate snarky reminder
|
||||||
|
action: ai_task.generate_data
|
||||||
metadata: {}
|
metadata: {}
|
||||||
data:
|
data:
|
||||||
prompt: Remind Tina to take her morning meds. Use a maximum of two lines.
|
instructions: Remind Tina to take her morning meds. Use a maximum of two
|
||||||
Be snarky, because at this point she's been reminded multiple times.
|
lines. Be snarky, because at this point this is reminder number {{ remindCount
|
||||||
|
}}.
|
||||||
|
task_name: Tina Morning Medication Reminder Snarky
|
||||||
|
entity_id: ai_task.google_ai_task
|
||||||
|
structure:
|
||||||
|
notification_text:
|
||||||
|
description: The text to send in the notification to Tina's phone
|
||||||
|
required: true
|
||||||
|
selector:
|
||||||
|
text:
|
||||||
response_variable: response
|
response_variable: response
|
||||||
alias: Generate snarky reminder
|
|
||||||
else:
|
else:
|
||||||
- action: google_generative_ai_conversation.generate_content
|
- alias: Generate reminder
|
||||||
|
action: ai_task.generate_data
|
||||||
metadata: {}
|
metadata: {}
|
||||||
data:
|
data:
|
||||||
prompt: Remind Tina to take her morning meds. Use a maximum of two lines.
|
instructions: Remind Tina to take her morning meds. Use a maximum of two
|
||||||
|
lines.
|
||||||
|
task_name: Tina Morning Medication Reminder
|
||||||
|
entity_id: ai_task.google_ai_task
|
||||||
|
structure:
|
||||||
|
notification_text:
|
||||||
|
description: The text to send in the notification to Tina's phone
|
||||||
|
required: true
|
||||||
|
selector:
|
||||||
|
text:
|
||||||
response_variable: response
|
response_variable: response
|
||||||
alias: Generate reminder
|
|
||||||
alias: Generate reminder, be snarky if it's been several times
|
|
||||||
- delay:
|
- delay:
|
||||||
hours: 0
|
hours: 0
|
||||||
minutes: 0
|
minutes: 0
|
||||||
@@ -3094,7 +3216,7 @@ tina_morning_meds:
|
|||||||
who: tina
|
who: tina
|
||||||
type: alert
|
type: alert
|
||||||
title: Morning Meds
|
title: Morning Meds
|
||||||
message: '{{ response.text }}'
|
message: '{{ response.data.notification_text }}'
|
||||||
tag: tina-morning-meds
|
tag: tina-morning-meds
|
||||||
actions:
|
actions:
|
||||||
- action: TINA_MORNING_MEDS_TAKEN
|
- action: TINA_MORNING_MEDS_TAKEN
|
||||||
@@ -3139,32 +3261,52 @@ tina_night_meds:
|
|||||||
tag: tina-night-meds
|
tag: tina-night-meds
|
||||||
alias: Clear previous night notification
|
alias: Clear previous night notification
|
||||||
action: script.text_notify
|
action: script.text_notify
|
||||||
|
- variables:
|
||||||
|
remindCount: '{{ states(''counter.tina_night_meds_reminder_count'') }}'
|
||||||
|
alias: Set variable for reminder count
|
||||||
- alias: Send notifications, using AI if internet is connected
|
- alias: Send notifications, using AI if internet is connected
|
||||||
if:
|
if:
|
||||||
- condition: state
|
- condition: state
|
||||||
entity_id: binary_sensor.internet
|
entity_id: binary_sensor.internet
|
||||||
state: 'on'
|
state: 'on'
|
||||||
then:
|
then:
|
||||||
- if:
|
- alias: Generate reminder, be snarky if it's been several times
|
||||||
|
if:
|
||||||
- condition: numeric_state
|
- condition: numeric_state
|
||||||
entity_id: counter.tina_night_meds_reminder_count
|
entity_id: counter.tina_night_meds_reminder_count
|
||||||
above: 2
|
above: 2
|
||||||
then:
|
then:
|
||||||
- action: google_generative_ai_conversation.generate_content
|
- alias: Generate snarky reminder
|
||||||
|
action: ai_task.generate_data
|
||||||
metadata: {}
|
metadata: {}
|
||||||
data:
|
data:
|
||||||
prompt: Remind Tina to take her night meds. Use a maximum of two lines.
|
instructions: Remind Tina to take her night meds. Use a maximum of two lines.
|
||||||
Be snarky, because at this point she's been reminded multiple times.
|
Be snarky, because at this point this is reminder number {{ remindCount
|
||||||
|
}}.
|
||||||
|
task_name: Tina Night Medication Reminder Snarky
|
||||||
|
entity_id: ai_task.google_ai_task
|
||||||
|
structure:
|
||||||
|
notification_text:
|
||||||
|
description: The text to send in the notification to Tina's phone
|
||||||
|
required: true
|
||||||
|
selector:
|
||||||
|
text:
|
||||||
response_variable: response
|
response_variable: response
|
||||||
alias: Generate snarky reminder
|
|
||||||
else:
|
else:
|
||||||
- action: google_generative_ai_conversation.generate_content
|
- alias: Generate reminder
|
||||||
|
action: ai_task.generate_data
|
||||||
metadata: {}
|
metadata: {}
|
||||||
data:
|
data:
|
||||||
prompt: Remind Tina to take her night meds. Use a maximum of two lines.
|
instructions: Remind Tina to take her night meds. Use a maximum of two lines.
|
||||||
|
task_name: Tina Night Medication Reminder
|
||||||
|
entity_id: ai_task.google_ai_task
|
||||||
|
structure:
|
||||||
|
notification_text:
|
||||||
|
description: The text to send in the notification to Tina's phone
|
||||||
|
required: true
|
||||||
|
selector:
|
||||||
|
text:
|
||||||
response_variable: response
|
response_variable: response
|
||||||
alias: Generate reminder
|
|
||||||
alias: Generate reminder, be snarky if it's been several times
|
|
||||||
- delay:
|
- delay:
|
||||||
hours: 0
|
hours: 0
|
||||||
minutes: 0
|
minutes: 0
|
||||||
@@ -3175,7 +3317,7 @@ tina_night_meds:
|
|||||||
who: tina
|
who: tina
|
||||||
type: alert
|
type: alert
|
||||||
title: Night Meds
|
title: Night Meds
|
||||||
message: '{{ response.text }}'
|
message: '{{ response.data.notification_text }}'
|
||||||
tag: tina-night-meds
|
tag: tina-night-meds
|
||||||
actions:
|
actions:
|
||||||
- action: TINA_NIGHT_MEDS_TAKEN
|
- action: TINA_NIGHT_MEDS_TAKEN
|
||||||
|
|||||||
@@ -464,3 +464,51 @@
|
|||||||
map(attribute='attributes.friendly_name') |
|
map(attribute='attributes.friendly_name') |
|
||||||
list %}
|
list %}
|
||||||
{{ uptimekuma | join(', ') }}
|
{{ uptimekuma | join(', ') }}
|
||||||
|
- name: Media Server Viewer Health
|
||||||
|
unique_id: 51154ade-255e-4dcd-9b89-66910fcc1331
|
||||||
|
unit_of_measurement: '%'
|
||||||
|
icon: mdi:movie
|
||||||
|
state: >
|
||||||
|
{% set total = states.binary_sensor |
|
||||||
|
selectattr('entity_id','in',label_entities('media_server')) |
|
||||||
|
selectattr('entity_id','in',label_entities('viewer')) |
|
||||||
|
list | count | int %}
|
||||||
|
{% set up = states.binary_sensor |
|
||||||
|
selectattr('entity_id','in',label_entities('media_server')) |
|
||||||
|
selectattr('entity_id','in',label_entities('viewer')) |
|
||||||
|
selectattr('state','eq','on') |
|
||||||
|
list | count | int %}
|
||||||
|
{{ ((up / total) * 100) | round(0) }}
|
||||||
|
attributes:
|
||||||
|
services_down: >
|
||||||
|
{% set down = states.binary_sensor |
|
||||||
|
selectattr('entity_id','in',label_entities('media_server')) |
|
||||||
|
selectattr('entity_id','in',label_entities('viewer')) |
|
||||||
|
selectattr('state','eq','off') |
|
||||||
|
map(attribute='attributes.friendly_name') |
|
||||||
|
list %}
|
||||||
|
{{ down | join(', ') }}
|
||||||
|
- name: Media Server Downloaders Health
|
||||||
|
unique_id: f27867fe-700f-45bc-9e6b-8b1ee74cb724
|
||||||
|
unit_of_measurement: '%'
|
||||||
|
icon: mdi:tray-arrow-down
|
||||||
|
state: >
|
||||||
|
{% set total = states.binary_sensor |
|
||||||
|
selectattr('entity_id','in',label_entities('media_server')) |
|
||||||
|
selectattr('entity_id','in',label_entities('downloader')) |
|
||||||
|
list | count | int %}
|
||||||
|
{% set up = states.binary_sensor |
|
||||||
|
selectattr('entity_id','in',label_entities('media_server')) |
|
||||||
|
selectattr('entity_id','in',label_entities('downloader')) |
|
||||||
|
selectattr('state','eq','on') |
|
||||||
|
list | count | int %}
|
||||||
|
{{ ((up / total) * 100) | round(0) }}
|
||||||
|
attributes:
|
||||||
|
services_down: >
|
||||||
|
{% set down = states.binary_sensor |
|
||||||
|
selectattr('entity_id','in',label_entities('media_server')) |
|
||||||
|
selectattr('entity_id','in',label_entities('downloader')) |
|
||||||
|
selectattr('state','eq','off') |
|
||||||
|
map(attribute='attributes.friendly_name') |
|
||||||
|
list %}
|
||||||
|
{{ down | join(', ') }}
|
||||||
@@ -73,11 +73,11 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
{% if states('input_select.scheduled_climate_mode_emma_bedroom_aircon') != 'N/A' %}
|
{% if states('input_select.scheduled_climate_mode_emma_bedroom_aircon') != 'N/A' %}
|
||||||
{% if is_state('input_select.scheduled_climate_mode_emma_bedroom_aircon','AC') and is_state('input_boolean.hot_day','on') %}
|
{% if is_state('input_select.scheduled_climate_mode_emma_bedroom_aircon','AC') and is_state('input_boolean.hot_day','on') %}
|
||||||
"Today was a hot day, so Emma's bedroom air conditioner will start cooling a bit earlier tonight at {{ input_datetime_read('input_datetime.emma_bedroom_cooling') }}. "
|
"Today was a hot day, so Emma's bedroom air conditioner will start cooling a bit earlier tonight at {{ input_datetime_read('input_datetime.emma_bedroom_climate') }}. "
|
||||||
{% elif is_state('input_select.scheduled_climate_mode_emma_bedroom_aircon','AC') %}
|
{% elif is_state('input_select.scheduled_climate_mode_emma_bedroom_aircon','AC') %}
|
||||||
"Emma's bedroom air conditioner will start cooling at {{ input_datetime_read('input_datetime.emma_bedroom_cooling') }}. "
|
"Emma's bedroom air conditioner will start cooling at {{ input_datetime_read('input_datetime.emma_bedroom_climate') }}. "
|
||||||
{% elif is_state('input_select.scheduled_climate_mode_emma_bedroom_aircon','Fan') %}
|
{% elif is_state('input_select.scheduled_climate_mode_emma_bedroom_aircon','Fan') %}
|
||||||
"Emma's bedroom air conditioner will activate fan only mode at {{ input_datetime_read('input_datetime.emma_bedroom_cooling') }}. "
|
"Emma's bedroom air conditioner will activate fan only mode at {{ input_datetime_read('input_datetime.emma_bedroom_climate') }}. "
|
||||||
{% elif is_state('input_select.scheduled_climate_mode_emma_bedroom','White Noise') and is_state('input_boolean.white_noise_emma_bedroom','off') %}
|
{% elif is_state('input_select.scheduled_climate_mode_emma_bedroom','White Noise') and is_state('input_boolean.white_noise_emma_bedroom','off') %}
|
||||||
"Emma's white noise generator will activate at {{ input_datetime_read('input_datetime.emma_bedtime') }}. "
|
"Emma's white noise generator will activate at {{ input_datetime_read('input_datetime.emma_bedtime') }}. "
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|||||||
Reference in New Issue
Block a user