Compare commits

...

42 Commits

Author SHA1 Message Date
a33f9f66ae Beginning of rewrite for custom meds 2025-12-16 19:34:00 -05:00
28e3b93441 Updated readme 2025-12-16 19:23:28 -05:00
bdca4c702a Remove battery notes from config as it's all UI-based now 2025-12-15 21:19:08 -05:00
4b57efcd74 Add extra_module_url for card-mod 2025-12-15 19:32:30 -05:00
7255422ca1 Fix E's white noise not turning on at bedtime
#256
2025-12-15 19:32:29 -05:00
5ae5e5021e Integrate E's bedroom heater with existing automations and scheduling
#256
2025-12-13 20:16:31 -05:00
bd9c7190ed Update weather templates to current syntax 2025-12-13 18:25:58 -05:00
f176e3b867 Update .HA_VERSION 2025-12-13 18:13:02 -05:00
1b52cc31a8 Update .HA_VERSION 2025-12-09 20:16:17 -05:00
8993196366 Add college hockey teams to sports tracking #255 2025-12-09 20:16:00 -05:00
210434e4ad Prevent trying to report team record when it is not provided 2025-12-09 20:15:39 -05:00
e37ac9d504 Re-enable K's night meds tracker 2025-12-09 20:13:57 -05:00
bf19984b47 Fix recliner mode not marking basement as occupied 2025-11-28 00:47:23 -05:00
4634b66866 Change deprecated Powercalc config 2025-11-26 20:27:16 -05:00
001dcbe625 Update .HA_VERSION 2025-11-26 20:26:34 -05:00
f70be6ceee Update .HA_VERSION 2025-11-10 22:38:58 -05:00
265e129c06 Try to fix weird changing of climate modes in E's bedroom 2025-10-30 18:14:02 -04:00
00bea40b6b Update .HA_VERSION 2025-10-30 18:13:22 -04:00
f94bce3381 Update .HA_VERSION 2025-10-18 00:21:58 -04:00
2de7d82e20 Sensors to indicate health of media server items 2025-10-03 19:29:28 -04:00
83c3c10a5a Add structured output to AI med notification prompts 2025-10-03 19:29:07 -04:00
f7ac1b915b Update .HA_VERSION 2025-10-03 19:28:27 -04:00
1d3398752e Fix deprecated Google AI calls 2025-10-03 02:59:00 -04:00
837ed779c9 Add reminder booleans for other med trackers 2025-10-02 19:10:00 -04:00
bc3a58875d Fix typo in lighting_fx 2025-10-02 18:24:17 -04:00
3c018a922b Remove old gas sensors from configs 2025-10-02 18:24:05 -04:00
10188d553a Update .HA_VERSION and .gitignore 2025-10-02 18:20:39 -04:00
341200deb0 Disable K night meds as currently unneeded 2025-09-23 18:34:58 -04:00
b930cb28b5 Update .HA_VERSION 2025-09-23 18:34:24 -04:00
c31158448c Update .gitignore 2025-09-16 02:10:39 -04:00
9e9c1fcf11 Update .HA_VERSION 2025-09-16 02:09:23 -04:00
02e3252e62 Update .HA_VERSION 2025-09-11 04:36:21 -04:00
32907081c6 Add input numbers for AC auto mode switching 2025-09-02 02:40:36 -04:00
67931ccfcd Update school lunch menu 2025-09-02 02:40:09 -04:00
c5d1b14ac9 Add reminder count to AI prompt for med reminders 2025-09-02 02:39:34 -04:00
3ed56ff745 Fix some nighttime lighting weirdness on the second floor 2025-08-26 02:07:05 -04:00
eb9cc4c42d Update sensor light blueprint 2025-08-26 02:06:27 -04:00
df020c92c1 Update .HA_VERSION 2025-08-26 02:01:46 -04:00
b97838a13f Fix formatting in custom weather package templates 2025-08-16 18:20:28 -04:00
9678ccd2a3 Attempting to figure out the cause of #251 2025-08-16 18:20:07 -04:00
13ef9c58f8 Fix indentation on clothing forecast template 2025-08-16 18:18:05 -04:00
1ea19c317c Update .HA_VERSION 2025-08-16 17:25:37 -04:00
21 changed files with 1284 additions and 796 deletions

View File

@@ -1 +1 @@
2025.8.0 2025.12.3

2
.gitignore vendored
View File

@@ -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/

View File

@@ -2967,49 +2967,99 @@
- id: '1696539209438' - id: '1696539209438'
alias: Tony Custom Meds Handler alias: Tony Custom Meds Handler
description: '' description: ''
trigger: triggers:
- platform: time - minutes: /30
at: input_datetime.tony_custom_meds_notify_p1 id: trigger30
alias: Every 30 minutes
trigger: time_pattern
- at: input_datetime.tony_custom_meds_notify_p1
alias: Notify 1 alias: Notify 1
id: p1-notify id: p1-notify
- platform: state trigger: time
entity_id: - alias: Notify 2
at: input_datetime.tony_custom_meds_notify_p2
id: p2-notify
trigger: time
- entity_id:
- input_boolean.tony_custom_meds_taken_p1 - input_boolean.tony_custom_meds_taken_p1
from: 'off' from: 'off'
to: 'on' to: 'on'
id: p1-taken id: p1-taken
alias: Taken 1 alias: Taken 1
condition: [] trigger: state
action: - alias: Taken 2
- variables: entity_id:
trigger: '{{ trigger.id }}' - input_datetime.tony_custom_meds_taken_p2
num: '{{ trigger[:2] }}' from: 'off'
reason: '{{ trigger.split(''-'')[1] }}' to: 'on'
- if: id: p2-taken
- condition: template trigger: state
value_template: '{% set active = ''input_boolean.tony_custom_meds_tracker_'' conditions:
+ num %} - condition: or
conditions:
{{ is_state(active,''on'') }}' - condition: state
alias: Check tracker entity_id: input_boolean.tony_custom_meds_tracker_p1
state: 'on'
- condition: state
entity_id: input_boolean.tony_custom_meds_tracker_p2
state: 'on'
alias: Any custom med trackers are on
actions:
- alias: Routing
if:
- condition: trigger
id:
- trigger30
then: then:
- if: - variables:
- condition: template trigger: '{{ trigger.id }}'
value_template: '{{ reason == ''notify'' }}' num: all
alias: Is this a notification reason: notify
alias: Override variables to indicate this is an interval notify request
- alias: For each reminder entity
repeat:
for_each: '{{ states.input_boolean | selectattr(''entity_id'',''in'',label_entities(''Tony
Custom Meds'')) | selectattr(''entity_id'',''search'',''reminder'') | map(attribute=''entity_id'')
| list }}'
sequence:
- alias: Run custom meds script if tracker is active
if:
- alias: Check tracker
condition: template
value_template: '{{ is_state(repeat.item,''on'') }}'
then:
- data:
num: '{{ num }}'
reason: '{{ reason }}'
alias: Run custom meds script
action: script.tony_custom_meds
else:
- variables:
trigger: '{{ trigger.id }}'
num: '{{ trigger[:2] }}'
reason: '{{ trigger.split(''-'')[1] }}'
- alias: Run custom meds script if tracker is active
if:
- alias: Check tracker
condition: template
value_template: '{{ is_state(repeat.item,''on'') }}'
then: then:
- service: input_boolean.turn_off - if:
data: {} - condition: template
target: value_template: '{{ reason == ''notify'' }}'
entity_id: '{{ ''input_boolean.tony_custom_meds_taken_'' + num }}' alias: Is this a notification
alias: Turn off "taken" boolean then:
alias: Turn off "taken" boolean if this is a notification - data: {}
- service: script.tony_custom_meds target:
data: entity_id: '{{ ''input_boolean.tony_custom_meds_taken_'' + num }}'
num: '{{ num }}' alias: Turn off "taken" boolean
reason: '{{ reason }}' action: input_boolean.turn_off
alias: Run custom meds script alias: Turn off "taken" boolean if this is a notification
alias: Run custom meds script if tracker is active - data:
num: '{{ num }}'
reason: '{{ reason }}'
alias: Run custom meds script
action: script.tony_custom_meds
mode: parallel mode: parallel
max: 10 max: 10
- id: '1696556688808' - id: '1696556688808'
@@ -4646,39 +4696,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 +4745,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 +4756,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 +4771,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 +4793,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 +4815,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 +4843,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 +6359,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

View File

@@ -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:

View File

@@ -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:
@@ -300,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
@@ -484,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

View File

@@ -90,8 +90,8 @@
{% 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 %}
{% if state_attr(team,'clock') in ['postponed','Postponed'] %} {% if state_attr(team,'clock') in ['postponed','Postponed'] %}
@@ -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()) }}

View File

@@ -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

View File

@@ -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

File diff suppressed because it is too large Load Diff

View File

@@ -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

View File

@@ -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:
@@ -58,6 +59,4 @@ pyscript:
animated_scenes: animated_scenes:
grad_vol: grad_vol:
battery_notes:

View File

@@ -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

View File

@@ -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

View File

@@ -710,33 +710,51 @@ 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 %}
{% if is_state('input_boolean.hot_day','on') %} {% set schedmode = states('input_select.scheduled_climate_mode_emma_bedroom') %}
{{ (bedtime - 5400) | timestamp_custom('%H:%M',false) }} {% if schedmode in ['AC','Fan'] and is_state('input_boolean.emma_bedroom_aircon_installed','on') %}
{% elif high >= 80 or low >= 60 %} {% if is_state('input_boolean.hot_day','on') %}
{{ (bedtime - 3600) | timestamp_custom('%H:%M',false) }} {{ (bedtime - 5400) | timestamp_custom('%H:%M',false) }}
{% elif high >= 80 or low >= 60 %}
{{ (bedtime - 3600) | timestamp_custom('%H:%M',false) }}
{% else %}
{{ (bedtime - 1800) | timestamp_custom('%H:%M',false) }}
{% 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 %} {% else %}
{{ (bedtime - 1800) | timestamp_custom('%H:%M',false) }} {{ bedtime | timestamp_custom('%H:%M',false) }}
{% endif %} {% endif %}
- service: input_boolean.turn_on - service: input_boolean.turn_on
target: target:

View File

@@ -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.

View File

@@ -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:

View File

@@ -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

View File

@@ -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>

View File

@@ -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'
data: {} then:
alias: Turn off kids' bedroom lights - action: light.turn_off
action: light.turn_off metadata: {}
data: {}
target:
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,33 +3071,74 @@ 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
- alias: White Noise choose:
condition: and - conditions:
conditions: - alias: White Noise
- condition: state condition: and
entity_id: input_select.scheduled_climate_mode_emma_bedroom conditions:
state: White Noise - condition: state
alias: Scheduled mode is White Noise entity_id: input_select.scheduled_climate_mode_emma_bedroom
- condition: state state: White Noise
entity_id: input_boolean.white_noise_emma_bedroom alias: Scheduled mode is White Noise
state: 'off' - condition: state
alias: White Noise is not already on entity_id: input_boolean.white_noise_emma_bedroom
then: state: 'off'
- target: alias: White Noise is not already on
entity_id: input_boolean.white_noise_emma_bedroom sequence:
data: {} - target:
alias: Turn on white noise entity_id: input_boolean.white_noise_emma_bedroom
action: input_boolean.turn_on data: {}
- data: alias: Turn on white noise
who: parents action: input_boolean.turn_on
title: Emma Climate Schedule - data:
message: White noise has been activated in Emma's Bedroom. who: parents
type: normal title: Emma Climate Schedule
tag: emma-climate message: White noise has been activated in Emma's Bedroom.
alias: Send white noise notification type: normal
action: script.text_notify tag: emma-climate
alias: Select climate mode alias: Send white noise notification
action: script.text_notify
- 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

View File

@@ -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(', ') }}

View File

@@ -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 %}