Compare commits

..

1 Commits

Author SHA1 Message Date
tm24fan8 78a8ee4ab5 New entity for controlling master bedroom climate modes 2025-12-16 19:35:45 -05:00
41 changed files with 3116 additions and 2289 deletions
+1 -1
View File
@@ -1 +1 @@
2026.5.4 2025.12.3
-2
View File
@@ -4,7 +4,6 @@
/.google.token /.google.token
/.ssh /.ssh
/.codegpt /.codegpt
/.cache
# ignore some directories. # ignore some directories.
/www/* /www/*
@@ -23,7 +22,6 @@
/lightwand/ /lightwand/
/bubble/Scratchpad/ /bubble/Scratchpad/
/custom_icons /custom_icons
/bubble_card
# 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
+113 -477
View File
@@ -1,35 +1,33 @@
- id: '1640833273099' - id: '1640833273099'
alias: NWS Announce Weather Alert for Tornado alias: NWS Announce Weather Alert for Tornado
description: '' description: ''
triggers: trigger:
- trigger: state - platform: numeric_state
entity_id: entity_id: sensor.weatheralerts_active_alerts
- binary_sensor.tornado_warning attribute: tornado_warning_count
from: above: '0'
- 'off' condition:
to:
- 'on'
conditions:
- condition: state - condition: state
entity_id: input_boolean.vacation_mode entity_id: input_boolean.vacation_mode
state: 'off' state: 'off'
actions: action:
- data: {} - service: input_boolean.turn_on
data: {}
target: target:
entity_id: input_boolean.tornado_alarm entity_id: input_boolean.tornado_alarm
action: input_boolean.turn_on - service: input_boolean.turn_off
- data: {} data: {}
target: target:
entity_id: entity_id:
- input_boolean.white_noise_kallen_bedroom - input_boolean.white_noise_kallen_bedroom
- input_boolean.white_noise_basement - input_boolean.white_noise_basement
- input_boolean.white_noise_emma_bedroom - input_boolean.white_noise_emma_bedroom
alias: Turn off white noise alias: Turn off white noise
action: input_boolean.turn_off - service: script.turn_on
- target: target:
entity_id: script.max_brightness entity_id: script.max_brightness
action: script.turn_on - service: script.text_notify
- data: data:
type: critical type: critical
title: Tornado Warning - TAKE COVER! title: Tornado Warning - TAKE COVER!
message: The National Weather Service has issued a Tornado Warning for our area. message: The National Weather Service has issued a Tornado Warning for our area.
@@ -37,35 +35,34 @@
who: all who: all
tag: tornado-warning tag: tornado-warning
alias: CRITICAL PHONE ALERT alias: CRITICAL PHONE ALERT
action: script.text_notify - service: script.tv_notify
- data: data:
who: all who: all
title: Tornado Warning - TAKE COVER! title: Tornado Warning - TAKE COVER!
message: The National Weather Service has issued a Tornado Warning for our area. message: The National Weather Service has issued a Tornado Warning for our area.
Take Cover NOW!!!! Take Cover NOW!!!!
alias: TV Alert alias: TV Alert
action: script.tv_notify - service: script.speech_engine
- data: data:
who: everywhere who: everywhere
message: A tornado warning has been issued, please take cover immediately! A message: A tornado warning has been issued, please take cover immediately! A
tornado warning has been issued, please take cover immediately! A tornado tornado warning has been issued, please take cover immediately! A tornado
warning has been issued, please take cover immediately! warning has been issued, please take cover immediately!
type: alert type: alert
alias: Elevated TTS alert alias: Elevated TTS alert
action: script.speech_engine
- delay: - delay:
hours: 0 hours: 0
minutes: 1 minutes: 1
seconds: 0 seconds: 0
milliseconds: 0 milliseconds: 0
- data: - service: script.speech_engine
data:
who: everywhere who: everywhere
message: A tornado warning has been issued, please take cover immediately! A message: A tornado warning has been issued, please take cover immediately! A
tornado warning has been issued, please take cover immediately! A tornado tornado warning has been issued, please take cover immediately! A tornado
warning has been issued, please take cover immediately! warning has been issued, please take cover immediately!
type: critical type: critical
alias: CRITICAL TTS ALERT alias: CRITICAL TTS ALERT
action: script.speech_engine
- delay: - delay:
hours: 0 hours: 0
minutes: 1 minutes: 1
@@ -317,12 +314,6 @@
minutes: 1 minutes: 1
seconds: 0 seconds: 0
milliseconds: 0 milliseconds: 0
- action: input_boolean.turn_on
metadata: {}
target:
entity_id: input_boolean.recorder
data: {}
alias: Turn on Recorder
- data: {} - data: {}
target: target:
entity_id: entity_id:
@@ -374,6 +365,8 @@
action: script.tony_desktop_refresh action: script.tony_desktop_refresh
- data: {} - data: {}
action: script.tina_desktop_refresh action: script.tina_desktop_refresh
- data: {}
action: script.asus_laptop_refresh
- data: {} - data: {}
action: script.kallen_desktop_refresh action: script.kallen_desktop_refresh
- data: {} - data: {}
@@ -438,55 +431,52 @@
- id: '1655493590791' - id: '1655493590791'
alias: NWS Announce Weather Alert for Tornado (CLEAR) alias: NWS Announce Weather Alert for Tornado (CLEAR)
description: '' description: ''
triggers: trigger:
- trigger: state - platform: numeric_state
entity_id: entity_id: sensor.weatheralerts_active_alerts
- binary_sensor.tornado_warning attribute: tornado_warning_count
from: below: '1'
- 'on' condition:
to:
- 'off'
conditions:
- condition: state - condition: state
entity_id: input_boolean.vacation_mode entity_id: input_boolean.vacation_mode
state: 'off' state: 'off'
- condition: state - condition: state
entity_id: input_boolean.tornado_alarm entity_id: input_boolean.tornado_alarm
state: 'on' state: 'on'
actions: action:
- data: - service: script.text_notify
data:
type: alert type: alert
who: all who: all
message: clear_notification message: clear_notification
tag: tornado-warning tag: tornado-warning
alias: Clear critical notification alias: Clear critical notification
action: script.text_notify - service: input_boolean.turn_off
- data: {} data: {}
target: target:
entity_id: input_boolean.tornado_alarm entity_id: input_boolean.tornado_alarm
action: input_boolean.turn_off - service: script.volume_reset
- data: {} data: {}
action: script.volume_reset - service: script.max_brightness_cleanup
- data: {} data: {}
action: script.max_brightness_cleanup - service: script.text_notify
- data: data:
title: Tornado Warning is cleared title: Tornado Warning is cleared
message: Check your surroundings and make sure it is safe to leave cover message: Check your surroundings and make sure it is safe to leave cover
who: all who: all
type: alert type: alert
tag: tornado-cleared tag: tornado-cleared
action: script.text_notify - service: script.tv_notify
- data: data:
title: Tornado Warning is cleared title: Tornado Warning is cleared
message: Check your surroundings and make sure it is safe to leave cover message: Check your surroundings and make sure it is safe to leave cover
who: all who: all
action: script.tv_notify - service: script.speech_engine
- data: data:
who: everywhere who: everywhere
message: Tornado warning has been cleared. Check your surroundings and make message: Tornado warning has been cleared. Check your surroundings and make
sure it is safe to leave cover. sure it is safe to leave cover.
type: alert type: alert
action: script.speech_engine
- wait_template: '{{ is_state(''input_boolean.tornado_alarm'',''on'') }}' - wait_template: '{{ is_state(''input_boolean.tornado_alarm'',''on'') }}'
continue_on_timeout: true continue_on_timeout: true
timeout: 00:05:00 timeout: 00:05:00
@@ -507,15 +497,15 @@
alias: After audible notifications off alias: After audible notifications off
alias: Should audible notifications be off alias: Should audible notifications be off
then: then:
- data: {} - service: input_boolean.turn_off
data: {}
target: target:
entity_id: input_boolean.audible_notifications entity_id: input_boolean.audible_notifications
action: input_boolean.turn_off
else: else:
- data: {} - service: input_boolean.turn_on
data: {}
target: target:
entity_id: input_boolean.audible_notifications entity_id: input_boolean.audible_notifications
action: input_boolean.turn_on
else: else:
- stop: Tornado alert re-activated - stop: Tornado alert re-activated
mode: single mode: single
@@ -989,44 +979,38 @@
alias: Tornado Watch Handling alias: Tornado Watch Handling
description: Controls the input boolean for tornado watches, for use in briefings description: Controls the input boolean for tornado watches, for use in briefings
or automations or automations
triggers: trigger:
- alias: Watch Issued - platform: numeric_state
entity_id: entity_id: sensor.weatheralerts_active_alerts
- binary_sensor.tornado_watch attribute: tornado_watch_count
above: 0
id: watch_issued id: watch_issued
trigger: state alias: Watch Issued
from: - platform: numeric_state
- 'off' entity_id: sensor.weatheralerts_active_alerts
to: attribute: tornado_watch_count
- 'on' below: 1
- alias: Watch Issued id: watch_cleared
entity_id: alias: Watch Cleared
- binary_sensor.tornado_watch condition: []
id: watch_issued action:
trigger: state
from:
- 'on'
to:
- 'off'
conditions: []
actions:
- choose: - choose:
- conditions: - conditions:
- condition: trigger - condition: trigger
id: watch_issued id: watch_issued
sequence: sequence:
- data: {} - service: input_boolean.turn_on
data: {}
target: target:
entity_id: input_boolean.tornado_watch entity_id: input_boolean.tornado_watch
action: input_boolean.turn_on
- conditions: - conditions:
- condition: trigger - condition: trigger
id: watch_cleared id: watch_cleared
sequence: sequence:
- data: {} - service: input_boolean.turn_off
data: {}
target: target:
entity_id: input_boolean.tornado_watch entity_id: input_boolean.tornado_watch
action: input_boolean.turn_off
alias: Control input boolean alias: Control input boolean
mode: restart mode: restart
- id: '1679104710155' - id: '1679104710155'
@@ -5370,96 +5354,72 @@
- id: '1722378602352' - id: '1722378602352'
alias: Tony Meds Cleanup alias: Tony Meds Cleanup
description: Handles the setting/clearing of medication configs for Tony description: Handles the setting/clearing of medication configs for Tony
triggers: trigger:
- entity_id: - platform: state
entity_id:
- input_boolean.tony_morning_meds_reminder - input_boolean.tony_morning_meds_reminder
from: 'on' from: 'on'
to: 'off' to: 'off'
id: morning-reminders-off id: morning-reminders-off
alias: Morning reminders off alias: Morning reminders off
trigger: state
- alias: Afternoon reminders off - alias: Afternoon reminders off
platform: state
entity_id: entity_id:
- input_boolean.tony_afternoon_meds_reminder - input_boolean.tony_afternoon_meds_reminder
from: 'on' from: 'on'
to: 'off' to: 'off'
id: afternoon-reminders-off id: afternoon-reminders-off
trigger: state
- alias: Night reminders off - alias: Night reminders off
platform: state
entity_id: entity_id:
- input_boolean.tony_night_meds_reminder - input_boolean.tony_night_meds_reminder
from: 'on' from: 'on'
to: 'off' to: 'off'
id: night-reminders-off id: night-reminders-off
trigger: state - platform: event
- event_type: ios.notification_action_fired event_type: ios.notification_action_fired
event_data: event_data:
actionName: TONY_MORNING_MEDS_TAKEN actionName: TONY_MORNING_MEDS_TAKEN
id: morning-taken id: morning-taken
alias: Morning taken iOS alias: Morning taken
trigger: event - alias: Afternoon taken
- alias: Morning taken PC platform: event
event_type: hass_agent_notifications
event_data:
action: TONY_MORNING_MEDS_TAKEN
id: morning-taken
trigger: event
- alias: Afternoon taken iOS
event_type: ios.notification_action_fired event_type: ios.notification_action_fired
event_data: event_data:
actionName: TONY_AFTERNOON_MEDS_TAKEN actionName: TONY_AFTERNOON_MEDS_TAKEN
id: afternoon-taken id: afternoon-taken
trigger: event - alias: Night taken
- alias: Afternoon taken PC platform: event
event_type: hass_agent_notifications
event_data:
action: TONY_AFTERNOON_MEDS_TAKEN
id: afternoon-taken
trigger: event
- alias: Night taken iOS
event_type: ios.notification_action_fired event_type: ios.notification_action_fired
event_data: event_data:
actionName: TONY_NIGHT_MEDS_TAKEN actionName: TONY_NIGHT_MEDS_TAKEN
id: night-taken id: night-taken
trigger: event - alias: Morning skipped
- alias: Morning skipped iOS platform: event
event_type: ios.notification_action_fired event_type: ios.notification_action_fired
event_data: event_data:
actionName: TONY_MORNING_MEDS_SKIPPED actionName: TONY_MORNING_MEDS_SKIPPED
id: morning-skipped id: morning-skipped
trigger: event - alias: Afternoon skipped
- alias: Morning skipped PC platform: event
event_type: hass_agent_notifications
event_data:
action: TONY_MORNING_MEDS_SKIPPED
id: morning-skipped
trigger: event
- alias: Afternoon skipped iOS
event_type: ios.notification_action_fired event_type: ios.notification_action_fired
event_data: event_data:
actionName: TONY_AFTERNOON_MEDS_SKIPPED actionName: TONY_AFTERNOON_MEDS_SKIPPED
id: afternoon-skipped id: afternoon-skipped
trigger: event - alias: Night skipped
- alias: Afternoon skipped PC platform: event
event_type: hass_agent_notifications
event_data:
action: TONY_AFTERNOON_MEDS_SKIPPED
id: afternoon-skipped
trigger: event
- alias: Night skipped iOS
event_type: ios.notification_action_fired event_type: ios.notification_action_fired
event_data: event_data:
actionName: TONY_NIGHT_MEDS_SKIPPED actionName: TONY_NIGHT_MEDS_SKIPPED
id: night-skipped id: night-skipped
trigger: event - platform: state
- entity_id: entity_id:
- person.tony_stork - person.tony_stork
from: home from: home
id: left id: left
alias: Left alias: Left
trigger: state condition: []
conditions: [] action:
actions:
- alias: Routing - alias: Routing
choose: choose:
- conditions: - conditions:
@@ -5468,19 +5428,19 @@
- morning-reminders-off - morning-reminders-off
alias: Morning Reminders Off alias: Morning Reminders Off
sequence: sequence:
- metadata: {} - service: counter.reset
metadata: {}
data: {} data: {}
target: target:
entity_id: counter.tony_morning_meds_reminder_count entity_id: counter.tony_morning_meds_reminder_count
alias: Reset morning reminder count alias: Reset morning reminder count
action: counter.reset - service: script.text_notify
- data: data:
type: alert type: alert
who: tony who: tony
message: clear_notification message: clear_notification
tag: tony-morning-meds tag: tony-morning-meds
alias: Clear morning notification alias: Clear morning notification
action: script.text_notify
- conditions: - conditions:
- condition: trigger - condition: trigger
id: id:
@@ -5488,18 +5448,18 @@
alias: Afternoon reminders off alias: Afternoon reminders off
sequence: sequence:
- alias: Reset afternoon reminder count - alias: Reset afternoon reminder count
service: counter.reset
metadata: {} metadata: {}
data: {} data: {}
target: target:
entity_id: counter.tony_afternoon_meds_reminder_count entity_id: counter.tony_afternoon_meds_reminder_count
action: counter.reset - service: script.text_notify
- data: data:
type: alert type: alert
who: tony who: tony
message: clear_notification message: clear_notification
tag: tony-afternoon-meds tag: tony-afternoon-meds
alias: Clear afternoon notification alias: Clear afternoon notification
action: script.text_notify
- conditions: - conditions:
- condition: trigger - condition: trigger
id: id:
@@ -5507,90 +5467,90 @@
alias: Night reminders off alias: Night reminders off
sequence: sequence:
- alias: Reset night reminder count - alias: Reset night reminder count
service: counter.reset
metadata: {} metadata: {}
data: {} data: {}
target: target:
entity_id: counter.tony_night_meds_reminder_count entity_id: counter.tony_night_meds_reminder_count
action: counter.reset - service: script.text_notify
- data: data:
type: alert type: alert
who: tony who: tony
message: clear_notification message: clear_notification
tag: tony-night-meds tag: tony-night-meds
alias: Clear night notification alias: Clear night notification
action: script.text_notify
- conditions: - conditions:
- alias: Morning taken - condition: trigger
condition: trigger
id: id:
- morning-taken - morning-taken
alias: Morning taken
sequence: sequence:
- metadata: {} - service: input_boolean.turn_on
metadata: {}
data: {} data: {}
target: target:
entity_id: input_boolean.tony_morning_meds_taken entity_id: input_boolean.tony_morning_meds_taken
alias: Turn on morning meds taken alias: Turn on morning meds taken
action: input_boolean.turn_on
- conditions: - conditions:
- condition: trigger - condition: trigger
id: id:
- afternoon-taken - afternoon-taken
alias: Afternoon taken alias: Afternoon taken
sequence: sequence:
- metadata: {} - service: input_boolean.turn_on
metadata: {}
data: {} data: {}
target: target:
entity_id: input_boolean.tony_afternoon_meds_taken entity_id: input_boolean.tony_afternoon_meds_taken
alias: Turn on afternoon meds taken alias: Turn on afternoon meds taken
action: input_boolean.turn_on
- conditions: - conditions:
- condition: trigger - condition: trigger
id: id:
- night-taken - night-taken
alias: Night taken alias: Night taken
sequence: sequence:
- metadata: {} - service: input_boolean.turn_on
metadata: {}
data: {} data: {}
target: target:
entity_id: input_boolean.tony_night_meds_taken entity_id: input_boolean.tony_night_meds_taken
alias: Turn on night meds taken alias: Turn on night meds taken
action: input_boolean.turn_on
- conditions: - conditions:
- condition: trigger - condition: trigger
id: id:
- morning-skipped - morning-skipped
alias: Morning skipped alias: Morning skipped
sequence: sequence:
- metadata: {} - service: input_boolean.turn_off
metadata: {}
data: {} data: {}
target: target:
entity_id: input_boolean.tony_morning_meds_reminder entity_id: input_boolean.tony_morning_meds_reminder
alias: Deactivate morning reminders alias: Deactivate morning reminders
action: input_boolean.turn_off
- conditions: - conditions:
- condition: trigger - condition: trigger
id: id:
- afternoon-skipped - afternoon-skipped
alias: Afternoon skipped alias: Afternoon skipped
sequence: sequence:
- metadata: {} - service: input_boolean.turn_off
metadata: {}
data: {} data: {}
target: target:
entity_id: input_boolean.tony_afternoon_meds_reminder entity_id: input_boolean.tony_afternoon_meds_reminder
alias: Deactivate afternoon reminders alias: Deactivate afternoon reminders
action: input_boolean.turn_off
- conditions: - conditions:
- condition: trigger - condition: trigger
id: id:
- night-skipped - night-skipped
alias: Night skipped alias: Night skipped
sequence: sequence:
- metadata: {} - service: input_boolean.turn_off
metadata: {}
data: {} data: {}
target: target:
entity_id: input_boolean.tony_night_meds_reminder entity_id: input_boolean.tony_night_meds_reminder
alias: Deactivate night reminders alias: Deactivate night reminders
action: input_boolean.turn_off
- conditions: - conditions:
- condition: trigger - condition: trigger
id: id:
@@ -5616,6 +5576,7 @@
alias: Night meds reminder active alias: Night meds reminder active
then: then:
- alias: Send critical TTS notification - alias: Send critical TTS notification
service: script.text_notify
metadata: {} metadata: {}
data: data:
type: critical type: critical
@@ -5623,7 +5584,6 @@
title: HEY DUMBASS title: HEY DUMBASS
message: YOU FORGOT TO TAKE YOUR MEDS!!!!! message: YOU FORGOT TO TAKE YOUR MEDS!!!!!
tag: tony-left-meds tag: tony-left-meds
action: script.text_notify
mode: queued mode: queued
max: 10 max: 10
- id: '1722386174249' - id: '1722386174249'
@@ -6235,7 +6195,6 @@
- input_boolean.tina_morning_meds_taken - input_boolean.tina_morning_meds_taken
- input_boolean.tina_night_meds_taken - input_boolean.tina_night_meds_taken
alias: Reset Tina meds taken switches alias: Reset Tina meds taken switches
enabled: false
mode: restart mode: restart
- id: '1747130058536' - id: '1747130058536'
alias: Shower Mode Auto Off alias: Shower Mode Auto Off
@@ -6374,326 +6333,3 @@
data: data:
hvac_mode: heat hvac_mode: heat
mode: restart mode: restart
- id: '1771035023213'
alias: Recorder Toggle
description: Toggles the recorder on or off, so we can do database maintenance without
having to shut down Home Assistant
triggers:
- trigger: state
entity_id:
- input_boolean.recorder
from:
- 'off'
to:
- 'on'
id: recorder-on
alias: Recorder On
- trigger: state
entity_id:
- input_boolean.recorder
from:
- 'on'
to:
- 'off'
id: recorder-off
alias: Recorder Off
conditions: []
actions:
- choose:
- conditions:
- condition: trigger
id:
- recorder-on
alias: Recorder On
sequence:
- action: recorder.enable
metadata: {}
data: {}
alias: Enable Recorder
- conditions:
- condition: trigger
id:
- recorder-off
alias: Recorder Off
sequence:
- action: recorder.disable
metadata: {}
data: {}
alias: Disable Recorder
mode: restart
- id: '1773604271398'
alias: Emma Bedroom Climate Interlock
description: Makes sure only one climate device can be enabled at one time, to protect
from blowing a breaker
triggers:
- trigger: state
entity_id:
- input_boolean.emma_bedroom_aircon_installed
from:
- 'off'
to:
- 'on'
id: aircon
alias: Aircon Installed
- trigger: state
entity_id:
- input_boolean.emma_bedroom_heater_installed
from:
- 'off'
to:
- 'on'
id: heater
alias: Heater Installed
conditions: []
actions:
- alias: Routing
choose:
- conditions:
- condition: trigger
id:
- aircon
alias: Aircon Installed
sequence:
- action: climate.turn_off
metadata: {}
target:
entity_id: climate.emma_bedroom_vtherm
data: {}
alias: Turn off heater thermostat
- action: input_boolean.turn_off
metadata: {}
target:
entity_id: input_boolean.emma_bedroom_heater_installed
data: {}
alias: Remove heater
- conditions:
- condition: trigger
id:
- heater
alias: Heater Installed
sequence:
- action: climate.turn_off
metadata: {}
target:
entity_id: climate.emma_bedroom_aircon
data: {}
alias: Turn off aircon
- action: input_boolean.turn_off
metadata: {}
target:
entity_id: input_boolean.emma_bedroom_aircon_installed
data: {}
alias: Remove aircon
mode: restart
- id: '1773964427974'
alias: Temperature Window Alert
description: Alert when the temperature outside gets too cold or too hot for having
windows open
triggers:
- trigger: numeric_state
entity_id:
- weather.iron_nerd_weather_station
attribute: temperature
below: 50
id: cold
alias: Cold
- trigger: numeric_state
entity_id:
- weather.iron_nerd_weather_station
attribute: temperature
above: 80
id: hot
alias: Hot
conditions:
- condition: state
entity_id: binary_sensor.windows
state:
- 'on'
actions:
- choose:
- conditions:
- condition: trigger
id:
- cold
alias: Cold
sequence:
- action: script.speech_engine
metadata: {}
data:
who: everywhere
message: It has gotten a bit chilly outside, and there are windows open.
Please consider closing them!
type: weather
alias: Play announcement for cold
- conditions:
- alias: Hot
condition: trigger
id:
- hot
sequence:
- alias: Play announcement for hot
action: script.speech_engine
metadata: {}
data:
who: everywhere
message: It has gotten pretty hot outside, and there are windows open. Please
consider closing them!
type: weather
alias: Routing
mode: restart
- id: '1774435563540'
alias: Emma Bedtime Reminder
description: We keep losing track of time and putting Emma to bed later than we
mean to. This aims to remedy that.
triggers:
- trigger: time
at:
entity_id: input_datetime.emma_bedtime
offset: -00:30:00
id: prewarn
alias: Pre-warning
- alias: Bedtime
trigger: time
at: input_datetime.emma_bedtime
id: bedtime
conditions:
- condition: state
entity_id: input_boolean.emma_sleeping
state:
- 'off'
actions:
- alias: Routing
choose:
- conditions:
- condition: trigger
id:
- prewarn
alias: Prewarn
sequence:
- action: script.speech_engine
metadata: {}
data:
who: living_room
message: Hey, it is getting close to Emma's bedtime. Just making sure you
don't lose track of time.
type: alert
alias: Play pre-warning announcement
- conditions:
- condition: trigger
id:
- bedtime
alias: Bedtime
sequence:
- alias: Play bedtime announcement
action: script.speech_engine
metadata: {}
data:
who: living_room
message: Hey, it is Emma's bedtime. You should probably start getting her
ready if you haven't already.
type: alert
mode: restart
- id: '1775084267580'
alias: WeatherAlerts Persistent Notification - Defiance
description: ''
use_blueprint:
path: github.com/weatheralerts_persistent_notification_original.yaml
input:
sensor: sensor.weatheralerts_defiance_ohz004_ohc039
- id: '1775709997448'
alias: Basement Heat Disallow
description: Turn off the heater when the Heat Allowed toggle is switched off
triggers:
- trigger: state
entity_id:
- input_boolean.basement_studio_heat_allowed
from:
- 'on'
to:
- 'off'
conditions: []
actions:
- action: climate.turn_off
metadata: {}
target:
entity_id: climate.basement_studio_vtherm
data: {}
mode: restart
- id: '1775731411839'
alias: Emma Bedroom Mode Switch
description: For switching modes when the temperature goes from one extreme at night
to the other during the day
triggers:
- trigger: time
at: input_datetime.emma_bedroom_mode_switch
id: switch-time
alias: Switch Time
conditions:
- condition: state
entity_id: input_boolean.emma_bedroom_mode_switch
state:
- 'on'
actions:
- choose:
- conditions:
- condition: state
entity_id: input_select.emma_bedroom_mode_switch
state:
- To Aircon
alias: To Aircon
sequence:
- action: input_boolean.turn_on
metadata: {}
target:
entity_id: input_boolean.emma_bedroom_aircon_installed
data: {}
alias: Enable aircon, disable heater
- action: input_number.set_value
metadata: {}
target:
entity_id: input_number.emma_bedroom_bedtime_temp
data:
value: 68
alias: Set bedtime temp
- action: input_select.select_option
metadata: {}
target:
entity_id: input_select.scheduled_climate_mode_emma_bedroom
data:
option: AC
alias: Set scheduled mode to AC
- action: switch.turn_on
metadata: {}
target:
entity_id: switch.emma_bedroom_climate_watchdog
data: {}
alias: Turn on climate watchdog
- delay:
hours: 0
minutes: 0
seconds: 5
milliseconds: 0
- action: button.press
metadata: {}
target:
entity_id: button.emma_bedroom_bedtime_mode
data: {}
alias: Activate bedtime mode to apply new settings
- delay:
hours: 0
minutes: 1
seconds: 0
milliseconds: 0
- action: input_boolean.turn_off
metadata: {}
target:
entity_id: input_boolean.white_noise_emma_bedroom
data: {}
alias: Turn off white noise
- action: input_boolean.turn_off
metadata: {}
target:
entity_id: input_boolean.emma_bedroom_mode_switch
data: {}
alias: Turn off mode switch
mode: restart
@@ -1,156 +0,0 @@
blueprint:
name: WeatherAlerts Persistent Notification and Cleanup
description: 'Persistent notification for Weather Alerts from a weatheralerts integration sensor,
plus automatic cleanup when no active alerts remain for 30 minutes. New alerts
and alerts less than 30 minutes old will display as a full alert message in the
psrsistent notification. Alerts older than 30 minutes will only display as a
short alert event title in the persistent notification.
'
domain: automation
input:
sensor:
name: WeatherAlerts Sensor
description: The weatheralerts sensor to monitor
selector:
entity:
domain:
- sensor
integration: weatheralerts
multiple: false
reorder: false
source_url: https://github.com/custom-components/weatheralerts/raw/refs/heads/master/blueprints/weatheralerts_persistent_notification_original.yaml
trigger:
- platform: homeassistant
event: start
- platform: event
event_type: component reload
event_data:
domain: weatheralerts
- platform: state
entity_id: !input sensor
attribute: alert_tracking
variables:
sensor: !input sensor
integration: '{{ state_attr(sensor, ''integration'') or ''weatheralerts'' }}'
zone: '{{ state_attr(sensor, ''zone'') or ''unknown'' }}'
zone_name: '{{ state_attr(sensor, ''zone_name'') or ''unknown'' }}'
notif_id: '{{ integration }}_{{ zone | replace('','',''_'') | lower }}'
alert_ids: '{{ state_attr(sensor, ''alert_tracking'') or [] }}'
alerts: '{{ state_attr(sensor, ''alerts'') or [] }}'
now_ts: '{{ now().timestamp() | float }}'
action:
- choose:
- conditions:
- condition: template
value_template: "{% set new_ids = alert_ids | selectattr('status','eq','new')
| map(attribute='id') | list %} {% set new_alerts_full = alerts | selectattr('id','in',
new_ids) | list %} {% set ids = namespace(valid=[]) %} {% for item in alert_ids
%}\n {% if item.status == 'old'\n and item.sent is defined and item.sent
not in ['null','',none]\n and item.expires is defined and item.expires
not in ['null','',none] %}\n {% set sent_ts = as_timestamp(item.sent, default=0)
%}\n {% set exp_ts = as_timestamp(item.expires, default=0) %}\n {% if
exp_ts > now().timestamp() and (now().timestamp() - sent_ts) < 1800 %}\n {%
set ids.valid = ids.valid + [item.id] %}\n {% endif %}\n {% endif %}\n{%
endfor %} {% set old_alerts_full = alerts | selectattr('id','in', ids.valid)
| list %} {% set ids2 = namespace(valid=[]) %} {% for item in alert_ids %}\n
\ {% if item.status == 'old'\n and item.sent is defined and item.sent
not in ['null','',none]\n and item.expires is defined and item.expires
not in ['null','',none] %}\n {% set sent_ts = as_timestamp(item.sent, default=0)
%}\n {% set exp_ts = as_timestamp(item.expires, default=0) %}\n {% if
exp_ts > now().timestamp() and (now().timestamp() - sent_ts) >= 1800 %}\n
\ {% set ids2.valid = ids2.valid + [item.id] %}\n {% endif %}\n {%
endif %}\n{% endfor %} {% set old_alerts_title = alerts | selectattr('id','in',
ids2.valid) | list %} {{ new_alerts_full | length > 0 or old_alerts_full |
length > 0 or old_alerts_title | length > 0 }}"
sequence:
- service: persistent_notification.create
data:
notification_id: '{{ notif_id }}'
title: Weather Alerts for {{ zone_name }}
message: "{% set new_ids = alert_ids | selectattr('status','eq','new') | map(attribute='id')
| list %}\n{% set new_alerts_full = alerts | selectattr('id','in', new_ids)
| list %}\n{% set ids = namespace(valid=[]) %}\n{% for item in alert_ids
%}\n {% if item.status == 'old'\n and item.sent is defined and item.sent
not in ['null','',none]\n and item.expires is defined and item.expires
not in ['null','',none] %}\n {% set sent_ts = as_timestamp(item.sent,
default=0) %}\n {% set exp_ts = as_timestamp(item.expires, default=0)
%}\n {% if exp_ts > now().timestamp() and (now().timestamp() - sent_ts)
< 1800 %}\n {% set ids.valid = ids.valid + [item.id] %}\n {% endif
%}\n {% endif %}\n{% endfor %}\n{% set old_alerts_full = alerts | selectattr('id','in',
ids.valid) | list %}\n{% set ids2 = namespace(valid=[]) %}\n{% for item
in alert_ids %}\n {% if item.status == 'old'\n and item.sent is defined
and item.sent not in ['null','',none]\n and item.expires is defined
and item.expires not in ['null','',none] %}\n {% set sent_ts = as_timestamp(item.sent,
default=0) %}\n {% set exp_ts = as_timestamp(item.expires, default=0)
%}\n {% if exp_ts > now().timestamp() and (now().timestamp() - sent_ts)
>= 1800 %}\n {% set ids2.valid = ids2.valid + [item.id] %}\n {%
endif %}\n {% endif %}\n{% endfor %}\n{% set old_alerts_title = alerts
| selectattr('id','in', ids2.valid) | list %}\n{% for alert in new_alerts_full
%}\n{# — Clean up title — #}\n{% set clean_title = alert.title\n | replace('\\n\\n','<br>')\n
\ | replace('\\n',' ')\n | trim %}\n{# — Clean up headline — #}\n{% if
alert.NWSheadline and alert.NWSheadline != 'null' %}\n {% set clean_headline
= alert.NWSheadline\n | replace('\\n\\n','<br>')\n | replace('\\n','
')\n | trim %}\n{% else %}\n {% set clean_headline = \"\" %}\n{% endif
%}\n{# — Clean up description — #}\n{% set clean_description = alert.description\n
\ | replace('\\n\\n','<br>')\n | replace('\\n',' ')\n | replace('<br>','<br>\\n')\n
\ | regex_replace('([A-Z ]+?\\\\.\\\\.\\\\.)', '* <strong>\\\\1</strong>')\n
\ | replace('**','*')\n | trim %}\n{# — Optional instruction — #}\n{%
if alert.instruction and alert.instruction != 'null' %}\n {% set clean_instruction
= alert.instruction\n | replace('\\n\\n','<br>')\n | replace('\\n','
')\n | trim %}\n{% else %}\n {% set clean_instruction = \"\" %}\n{%
endif %}\n{# — Area — #}\n{% set clean_area = alert.area\n | replace('\\n\\n','<br>')\n
\ | replace('\\n',' ')\n | trim %}\n<font color=\"orange\">\n <ha-icon
icon=\"{{ alert.icon }}\"></ha-icon>\n</font>\n<strong>\n <font color=\"red\">{{
clean_title }}</font>\n</strong><br>\n{% if clean_headline and clean_headline
!= 'null' %}\n {{ clean_headline }}<br>\n{% endif %}\n{{ clean_description
}}<br>\n* <strong> AREA…</strong> {{ clean_area }}<br><br>\n{% if clean_instruction
and clean_instruction != 'null' %}\n{{ clean_instruction }}<br><br>\n{%
endif %}\n{% if alert.sent and alert.sent != 'null' %}\n<strong>Alert Sent:</strong>
{{ alert.sent }}<br>\n{% endif %}\n{% if alert.effective and alert.effective
!= 'null' %}\n<strong>Effective:</strong> {{ alert.effective }}<br>\n{%
endif %}\n{% if alert.expires and alert.expires != 'null' %}\n<strong>Expires:</strong>
{{ alert.expires }}<br>\n{% endif %}\n{% if alert.onset and alert.onset
!= 'null' %}\n<strong>Onset:</strong> {{ alert.onset }}<br>\n{% endif %}\n{%
if alert.ends and alert.ends != 'null' %}\n<strong>Ends:</strong> {{ alert.ends
}}<br>\n{% endif %}\n{% if not loop.last %}\n <hr>\n{% endif %}\n{% endfor
%}\n\n{% if old_alerts_full %}\n <hr>\n{% for alert in old_alerts_full
%}\n{# — Clean up title — #}\n{% set clean_title = alert.title\n | replace('\\n\\n','<br>')\n
\ | replace('\\n',' ')\n | trim %}\n{# — Clean up headline — #}\n{% if
alert.NWSheadline and alert.NWSheadline != 'null' %}\n {% set clean_headline
= alert.NWSheadline\n | replace('\\n\\n','<br>')\n | replace('\\n','
')\n | trim %}\n{% else %}\n {% set clean_headline = \"\" %}\n{% endif
%}\n{# — Clean up description — #}\n{% set clean_description = alert.description\n
\ | replace('\\n\\n','<br>')\n | replace('\\n',' ')\n | replace('<br>','<br>\\n')\n
\ | regex_replace('([A-Z ]+?\\\\.\\\\.\\\\.)', '* <strong>\\\\1</strong>')\n
\ | replace('**','*')\n | trim %}\n{# — Optional instruction — #}\n{%
if alert.instruction and alert.instruction != 'null' %}\n {% set clean_instruction
= alert.instruction\n | replace('\\n\\n','<br>')\n | replace('\\n','
')\n | trim %}\n{% else %}\n {% set clean_instruction = \"\" %}\n{%
endif %}\n{# — Area — #}\n{% set clean_area = alert.area\n | replace('\\n\\n','<br>')\n
\ | replace('\\n',' ')\n | trim %}\n<font color=\"orange\">\n <ha-icon
icon=\"{{ alert.icon }}\"></ha-icon>\n</font>\n<strong>\n <font color=\"red\">{{
clean_title }}</font>\n</strong><br>\n{% if clean_headline and clean_headline
!= 'null' %}\n {{ clean_headline }}<br>\n{% endif %}\n{{ clean_description
}}<br>\n* <strong>AREA…</strong> {{ clean_area }}<br>\n{% if clean_instruction
and clean_instruction != 'null' %}\n{{ clean_instruction }}<br>\n{% endif
%}\n{% if alert.sent and alert.sent != 'null' %}\n<strong>Alert Sent:</strong>
{{ alert.sent }}<br>\n{% endif %}\n{% if alert.effective and alert.effective
!= 'null' %}\n<strong>Effective:</strong> {{ alert.effective }}<br>\n{%
endif %}\n{% if alert.expires and alert.expires != 'null' %}\n<strong>Expires:</strong>
{{ alert.expires }}<br>\n{% endif %}\n{% if alert.onset and alert.onset
!= 'null' %}\n<strong>Onset:</strong> {{ alert.onset }}<br>\n{% endif %}\n{%
if alert.ends and alert.ends != 'null' %}\n<strong>Ends:</strong> {{ alert.ends
}}<br>\n{% endif %}\n{% if not loop.last %}\n <hr>\n{% endif %}\n{% endfor
%}\n{% endif %}\n\n{% if old_alerts_title %}\n<hr>\n{% if new_alerts_full
%}\n<strong>Other Active Alerts:</strong><br>\n{% else %}\n<strong>Active
Alerts:</strong><br>\n{% endif %}\n{% for alert in old_alerts_title %}\n*
<font color=\"orange\">\n <ha-icon icon=\"{{ alert.icon }}\"></ha-icon>\n
\ </font>\n <strong>{{ alert.title }}<strong><br>\n{% endfor %}\n{% endif
%}\n"
default:
- delay: 00:30:00
- service: persistent_notification.dismiss
data:
notification_id: '{{ notif_id }}'
mode: restart
+1 -1
View File
@@ -4,7 +4,7 @@
const cold = hass?.states[this.config?.main_button_floors?.cold_entity]?.state || ''; const cold = hass?.states[this.config?.main_button_floors?.cold_entity]?.state || '';
let bg_color = 'var(--bubble-main-background-color)'; let bg_color = 'var(--bubble-main-background-color)';
let occupied_color = 'var(--bubble-accent-color)'; let occupied_color = 'var(--accent-color)';
let hot_color = 'var(--error-color)'; let hot_color = 'var(--error-color)';
let cold_color = 'var(--purple-color)'; let cold_color = 'var(--purple-color)';
+2 -2
View File
@@ -1,6 +1,6 @@
main_button_floors: main_button_floors:
name: Main Button Floors name: Main Button Floors
version: '1.2.1' version: '1.1'
creator: Tony Stork creator: Tony Stork
supported: supported:
- button - button
@@ -12,7 +12,7 @@ main_button_floors:
const cold = hass?.states[this.config?.main_button_floors?.cold_entity]?.state || ''; const cold = hass?.states[this.config?.main_button_floors?.cold_entity]?.state || '';
let bg_color = 'var(--bubble-main-background-color)'; let bg_color = 'var(--bubble-main-background-color)';
let occupied_color = 'var(--bubble-accent-color)'; let occupied_color = 'var(--accent-color)';
let hot_color = 'var(--error-color)'; let hot_color = 'var(--error-color)';
let cold_color = 'var(--purple-color)'; let cold_color = 'var(--purple-color)';
+1 -1
View File
@@ -2,7 +2,7 @@
const occupancy = hass?.states[this.config?.main_button_outdoors?.occupancy_entity]?.state || ''; const occupancy = hass?.states[this.config?.main_button_outdoors?.occupancy_entity]?.state || '';
let bg_color = 'var(--bubble-main-background-color)'; let bg_color = 'var(--bubble-main-background-color)';
let occupied_color = 'var(--bubble-accent-color)'; let occupied_color = 'var(--accent-color)';
// Main button background // Main button background
const mainButton = card?.querySelector('.bubble-button-background'); const mainButton = card?.querySelector('.bubble-button-background');
+2 -2
View File
@@ -1,6 +1,6 @@
main_button_outdoors: main_button_outdoors:
name: Main Button Outdoors name: Main Button Outdoors
version: '1.2.1' version: '1.1'
creator: Tony Stork creator: Tony Stork
supported: supported:
- button - button
@@ -10,7 +10,7 @@ main_button_outdoors:
const occupancy = hass?.states[this.config?.main_button_outdoors?.occupancy_entity]?.state || ''; const occupancy = hass?.states[this.config?.main_button_outdoors?.occupancy_entity]?.state || '';
let bg_color = 'var(--bubble-main-background-color)'; let bg_color = 'var(--bubble-main-background-color)';
let occupied_color = 'var(--bubble-accent-color)'; let occupied_color = 'var(--accent-color)';
// Main button background // Main button background
const mainButton = card?.querySelector('.bubble-button-background'); const mainButton = card?.querySelector('.bubble-button-background');
+1 -1
View File
@@ -2,7 +2,7 @@
const state = hass?.states[this.config?.entity]?.state || ''; const state = hass?.states[this.config?.entity]?.state || '';
let bg_color = 'var(--background-color-2)'; let bg_color = 'var(--background-color-2)';
let accent_color = 'var(--bubble-accent-color)'; let accent_color = 'var(--accent-color)';
// Main button background // Main button background
const mainButton = card?.querySelector('.bubble-button-background'); const mainButton = card?.querySelector('.bubble-button-background');
+2 -2
View File
@@ -1,6 +1,6 @@
popup_accent_color_button: popup_accent_color_button:
name: Popup Accent Color Button name: Popup Accent Color Button
version: '1.1' version: '1.0'
creator: Tony Stork creator: Tony Stork
supported: supported:
- button - button
@@ -10,7 +10,7 @@ popup_accent_color_button:
const state = hass?.states[this.config?.entity]?.state || ''; const state = hass?.states[this.config?.entity]?.state || '';
let bg_color = 'var(--background-color-2)'; let bg_color = 'var(--background-color-2)';
let accent_color = 'var(--bubble-accent-color)'; let accent_color = 'var(--accent-color)';
// Main button background // Main button background
const mainButton = card?.querySelector('.bubble-button-background'); const mainButton = card?.querySelector('.bubble-button-background');
+1 -1
View File
@@ -11,7 +11,7 @@
// Use the configured color or default to accent color // Use the configured color or default to accent color
let on_color = this.config?.state_color_button?.color let on_color = this.config?.state_color_button?.color
? `var(--${this.config.state_color_button.color})` ? `var(--${this.config.state_color_button.color})`
: 'var(--bubble-accent-color)'; : 'var(--accent-color)';
// Main button background // Main button background
const mainButton = card?.querySelector('.bubble-button-background'); const mainButton = card?.querySelector('.bubble-button-background');
+2 -2
View File
@@ -1,6 +1,6 @@
state_color_button: state_color_button:
name: State Color Button name: State Color Button
version: 1.2.0 version: 1.1.3
creator: Tony Stork creator: Tony Stork
supported: supported:
- button - button
@@ -27,7 +27,7 @@ state_color_button:
// Use the configured color or default to accent color // Use the configured color or default to accent color
let on_color = this.config?.state_color_button?.color let on_color = this.config?.state_color_button?.color
? `var(--${this.config.state_color_button.color})` ? `var(--${this.config.state_color_button.color})`
: 'var(--bubble-accent-color)'; : 'var(--accent-color)';
// Main button background // Main button background
const mainButton = card?.querySelector('.bubble-button-background'); const mainButton = card?.querySelector('.bubble-button-background');
+8 -33
View File
@@ -65,7 +65,7 @@ calendar:
rest_command: rest_command:
todoist: todoist:
method: post method: post
url: 'https://api.todoist.com/api/v1/{{ url }}' url: 'https://api.todoist.com/sync/v9/{{ url }}'
payload: '{{ payload }}' payload: '{{ payload }}'
headers: headers:
Authorization: !secret todoist_api_token Authorization: !secret todoist_api_token
@@ -108,7 +108,6 @@ recorder:
- sensor.*_count - sensor.*_count
- sensor.*memory_available* - sensor.*memory_available*
- sensor.*memory_used* - sensor.*memory_used*
- sensor.*memory_usage*
- sensor.*cpu_usage - sensor.*cpu_usage
- sensor.*cpu_temperature - sensor.*cpu_temperature
- sensor.*gpu_temperature - sensor.*gpu_temperature
@@ -120,17 +119,6 @@ recorder:
- sensor.*_rssi - sensor.*_rssi
- sensor.weatherflow_hub* - sensor.weatherflow_hub*
- sensor.internet_round_trip* - sensor.internet_round_trip*
- sensor.*_monitor_type
- sensor.*_certificate_expiry
- sensor.*_monitored_url
- sensor.*_response_time
- sensor.adguard*
- sensor.*iphone_info
- sensor.*ipad_info
- sensor.*airpods_info
- sensor.*airpods_pro_info
- sensor.*response_time*
- sensor.system_monitor*
entities: entities:
- sensor.avg_ping - sensor.avg_ping
- sensor.max_ping - sensor.max_ping
@@ -171,7 +159,14 @@ logger:
homeassistant.core: fatal homeassistant.core: fatal
influxdb: influxdb:
api_version: 2
host: 192.168.1.254
port: 8086
max_retries: 3 max_retries: 3
ssl: false
organization: !secret influxdb_org
token: !secret influxdb_token
bucket: home_assistant
default_measurement: state default_measurement: state
tags: tags:
source: HA source: HA
@@ -285,15 +280,6 @@ influxdb:
- binary_sensor.asus_laptop* - binary_sensor.asus_laptop*
- sensor.*ashland* - sensor.*ashland*
- sensor.*kasx* - sensor.*kasx*
- sensor.*_monitor_type
- sensor.*_certificate_expiry
- sensor.*_monitored_url
- sensor.*_response_time
- sensor.*_status
- sensor.adguard*
- sensor.*response_time*
- sensor.weatheralerts*
- sensor.system_monitor*
entities: entities:
- media_player.living_room_tv - media_player.living_room_tv
- media_player.basement_tv - media_player.basement_tv
@@ -344,7 +330,6 @@ influxdb:
- sensor.national_tornado_warnings - sensor.national_tornado_warnings
- sensor.national_severe_thunderstorm_warnings - sensor.national_severe_thunderstorm_warnings
- binary_sensor.severe_thunderstorm_warning - binary_sensor.severe_thunderstorm_warning
- binary_sensor.tornado_warning
logbook: logbook:
include: include:
@@ -467,15 +452,6 @@ prometheus:
- binary_sensor.asus_laptop* - binary_sensor.asus_laptop*
- sensor.*ashland* - sensor.*ashland*
- sensor.*kasx* - sensor.*kasx*
- sensor.*_monitor_type
- sensor.*_certificate_expiry
- sensor.*_monitored_url
- sensor.*_response_time
- sensor.*_status
- sensor.adguard*
- sensor.*response_time*
- sensor.weatheralerts*
- sensor.system_monitor*
include_entities: include_entities:
- media_player.living_room_tv - media_player.living_room_tv
- media_player.basement_tv - media_player.basement_tv
@@ -526,4 +502,3 @@ prometheus:
- sensor.national_tornado_warnings - sensor.national_tornado_warnings
- sensor.national_severe_thunderstorm_warnings - sensor.national_severe_thunderstorm_warnings
- binary_sensor.severe_thunderstorm_warning - binary_sensor.severe_thunderstorm_warning
- binary_sensor.tornado_warning
+21 -46
View File
@@ -160,22 +160,6 @@
'combine': 'e', 'combine': 'e',
'error': 'Data Inválida', 'error': 'Data Inválida',
} }
},
{
'language': 'da',
'plural_form': 'english',
'phrases': {
'year': ['år', 'år', 'år'],
'month': ['mnd', 'måned', 'måneder'],
'week': ['uge', 'uge', 'uger'],
'day': ['dag', 'dag', 'dage'],
'hour': ['t.', 'time', 'timer'],
'minute': ['min.', 'minut', 'minutter'],
'second': ['sek.', 'sekund', 'sekunder'],
'millisecond': ['ms.', 'millisekund', 'millisekunder'],
'combine': 'og',
'error': 'Ugyldig dato',
}
}, },
{ {
'language': 'dk', 'language': 'dk',
@@ -186,7 +170,7 @@
'week': ['uge', 'uge', 'uger'], 'week': ['uge', 'uge', 'uger'],
'day': ['dag', 'dag', 'dage'], 'day': ['dag', 'dag', 'dage'],
'hour': ['t.', 'time', 'timer'], 'hour': ['t.', 'time', 'timer'],
'minute': ['min.', 'minut', 'minutter'], 'minute': ['min.', 'minut', 'minuter'],
'second': ['sek.', 'sekund', 'sekunder'], 'second': ['sek.', 'sekund', 'sekunder'],
'millisecond': ['ms.', 'millisekund', 'millisekunder'], 'millisecond': ['ms.', 'millisekund', 'millisekunder'],
'combine': 'og', 'combine': 'og',
@@ -252,7 +236,7 @@
'hour': ['ч', 'час', 'часа', 'часов'], 'hour': ['ч', 'час', 'часа', 'часов'],
'minute': ['м', 'минута', 'минуты', 'минут'], 'minute': ['м', 'минута', 'минуты', 'минут'],
'second': ['с', 'секунда', 'секунды', 'секунд'], 'second': ['с', 'секунда', 'секунды', 'секунд'],
'millisecond': ['мс', 'милисекунда', 'милисекунды', 'милисекунд'], 'millisecond': ['мс', 'миллисекунда', 'миллисекунды', 'миллисекунд'],
'combine': 'и', 'combine': 'и',
'error': 'Неверная дата', 'error': 'Неверная дата',
} }
@@ -353,6 +337,22 @@
'error': 'Érvénytelen dátum', 'error': 'Érvénytelen dátum',
} }
}, },
{
'language': 'tr',
'plural_form': 'english',
'phrases': {
'year': ['yıl', 'yıl', 'yıl'],
'month': ['ay', 'ay', 'ay'],
'week': ['hf', 'hafta', 'hafta'],
'day': ['gün', 'gün', 'gün'],
'hour': ['sa', 'saat', 'saat'],
'minute': ['dk', 'dakika', 'dakika'],
'second': ['sn', 'saniye', 'saniye'],
'millisecond': ['ms', 'milisaniye', 'milisaniye'],
'combine': 've',
'error': 'Geçersiz tarih',
}
},
] -%} ] -%}
{# macro to convert the abbreviated input for the not_use and always_show lists to the full time part names #} {# macro to convert the abbreviated input for the not_use and always_show lists to the full time part names #}
@@ -374,33 +374,8 @@
macro to split a timedelta in years, months, weeks, days, hours, minutes, seconds and milliseconds macro to split a timedelta in years, months, weeks, days, hours, minutes, seconds and milliseconds
used by the relative time plus macro, set up as a seperate macro so it can be reused used by the relative time plus macro, set up as a seperate macro so it can be reused
#} #}
{%- macro time_split(date, parts=8, compare_date=now(), not_use=[], always_show=['all'], time=true, round_mode='floor', duration=false, duration_unit='s') -%} {%- macro time_split(date, parts=8, compare_date=now(), not_use=[], always_show=['all'], time=true, round_mode='floor') -%}
{#- set defaults for input if not entered #} {#- set defaults for input if not entered #}
{%- if date in states | map(attribute='entity_id') -%}
{%- if date | has_value and is_state_attr(date, 'device_class', 'duration') -%}
{%- set duration = true -%}
{%- set duration_unit = state_attr(date, 'unit_of_measurement') -%}
{%- set date = states(date) -%}
{%- elif date is match('input_datetime') and not state_attr(date, 'has_date') -%}
{%- set date = today_at(states(date)) -%}
{%- else -%}
{%- set date = states(date) -%}
{%- endif -%}
{%- endif -%}
{%- if duration and date | is_number -%}
{%- set conversion_mapper =
{
'd': 3600 * 24,
'h': 3600,
'min': 60,
's': 1,
'ms': 1/1000,
'μs': 1/1000000
}
-%}
{%- set sec = date | float * conversion_mapper[duration_unit] | default(1) -%}
{%- set date = now() + timedelta(seconds=sec) -%}
{%- endif -%}
{%- set date = date if date is datetime else date | as_datetime('invalid') -%} {%- set date = date if date is datetime else date | as_datetime('invalid') -%}
{%- set compare_date = compare_date if compare_date is datetime else compare_date | as_datetime('invalid') -%} {%- set compare_date = compare_date if compare_date is datetime else compare_date | as_datetime('invalid') -%}
{%- set time = time | bool(true) -%} {%- set time = time | bool(true) -%}
@@ -582,7 +557,7 @@
{%- endmacro -%} {%- endmacro -%}
{# macro to output a timedelta in a readable format #} {# macro to output a timedelta in a readable format #}
{%- macro relative_time_plus(date, parts=1, abbr=false, language='en', compare_date=now(), not_use=['millisecond'], always_show=[], time=true, round_mode='floor', duration=false, duration_unit='s') -%} {%- macro relative_time_plus(date, parts=1, abbr=false, language='en', compare_date=now(), not_use=['millisecond'], always_show=[], time=true, round_mode='floor') -%}
{#- select correct phrases bases on language input #} {#- select correct phrases bases on language input #}
{%- set phrases = _time_period_phrases -%} {%- set phrases = _time_period_phrases -%}
{%- set languages = phrases | map(attribute='language') | list -%} {%- set languages = phrases | map(attribute='language') | list -%}
@@ -591,7 +566,7 @@
{%- set plural_form = phrases | selectattr('language', 'eq', language) | map(attribute='plural_form') | list | first -%} {%- set plural_form = phrases | selectattr('language', 'eq', language) | map(attribute='plural_form') | list | first -%}
{%- set abbr = abbr | bool(false) -%} {%- set abbr = abbr | bool(false) -%}
{# split timedelta #} {# split timedelta #}
{%- set time_parts = time_split(date, parts, compare_date, not_use, always_show, time, round_mode, duration, duration_unit) | from_json -%} {%- set time_parts = time_split(date, parts, compare_date, not_use, always_show, time, round_mode) | from_json -%}
{# check for error #} {# check for error #}
{%- if 'error' in time_parts -%} {%- if 'error' in time_parts -%}
{{- time_parts['error'] -}} {{- time_parts['error'] -}}
+12 -12
View File
@@ -61,7 +61,7 @@
{% if is_state(team,'PRE') %} {% if is_state(team,'PRE') %}
{% set date = state_attr(team,'date') | as_timestamp | timestamp_custom('%m-%d') %} {% set date = state_attr(team,'date') | as_timestamp | timestamp_custom('%m-%d') %}
{% if date == now().strftime('%m-%d') %} {% if date == now().strftime('%m-%d') %}
The {{ entity_name(team) }} will be playing today against {% if state_attr(team,'league') != 'NCAAF'%}the{% endif %} {{ opponent_name }} at {{ state_attr(team,'venue') }}. The {{ state_attr(team,'friendly_name') }} will be playing today against {% if state_attr(team,'league') != 'NCAAF'%}the{% endif %} {{ opponent_name }} at {{ state_attr(team,'venue') }}.
{{ sports_str(team,'start') }} is at {{ state_attr(team,'date') | as_timestamp | timestamp_custom('%I:%M %p') }}. {{ sports_str(team,'start') }} is at {{ state_attr(team,'date') | as_timestamp | timestamp_custom('%I:%M %p') }}.
{% endif %} {% endif %}
{% endif %} {% endif %}
@@ -82,26 +82,26 @@
{% set yday = (as_timestamp(now()) - (24*3600)) | timestamp_custom('%m-%d') %} {% set yday = (as_timestamp(now()) - (24*3600)) | timestamp_custom('%m-%d') %}
{% if date == now().strftime('%m-%d') %} {% if date == now().strftime('%m-%d') %}
{% if state_attr(team,'clock') in ['postponed','Postponed'] %} {% if state_attr(team,'clock') in ['postponed','Postponed'] %}
The {{ entity_name(team) }} had their game postponed today, and it will be played at a later date. The {{ state_attr(team,'friendly_name') }} had their game postponed today, and it will be played at a later date.
{% elif (state_attr(team,'team_score') | int) == state_attr(team,'opponent_score') | int %} {% elif (state_attr(team,'team_score') | int) == state_attr(team,'opponent_score') | int %}
The {{ entity_name(team) }} tied in their game today against {% if state_attr(team,'league') != 'NCAAF'%}the{% endif %} {{ opponent_name }} by a score of {{ state_attr(team,'team_score') }} to {{ state_attr(team,'opponent_score') }}. The {{ state_attr(team,'friendly_name') }} tied in their game today against {% if state_attr(team,'league') != 'NCAAF'%}the{% endif %} {{ opponent_name }} by a score of {{ state_attr(team,'team_score') }} to {{ state_attr(team,'opponent_score') }}.
{% elif state_attr(team,'team_winner') == true %} {% elif state_attr(team,'team_winner') == true %}
The {{ entity_name(team) }} won their game today against {% if state_attr(team,'league') != 'NCAAF'%}the{% endif %} {{ opponent_name }} by a score of {{ state_attr(team,'team_score') }} to {{ state_attr(team,'opponent_score') }}. The {{ state_attr(team,'friendly_name') }} won their game today against {% if state_attr(team,'league') != 'NCAAF'%}the{% endif %} {{ opponent_name }} by a score of {{ state_attr(team,'team_score') }} to {{ state_attr(team,'opponent_score') }}.
{% elif state_attr(team,'opponent_winner') == true %} {% elif state_attr(team,'opponent_winner') == true %}
The {{ entity_name(team) }} 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'] and state_attr(team,'team_record') != None %} {% 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'] %}
The {{ entity_name(team) }} had their game postponed yesterday, and it will be played at a later date. The {{ state_attr(team,'friendly_name') }} had their game postponed yesterday, and it will be played at a later date.
{% elif (state_attr(team,'team_score') | int) == state_attr(team,'opponent_score') | int %} {% elif (state_attr(team,'team_score') | int) == state_attr(team,'opponent_score') | int %}
The {{ entity_name(team) }} tied in their game yesterday against {% if state_attr(team,'league') != 'NCAAF'%}the{% endif %} {{ opponent_name }} by a score of {{ state_attr(team,'team_score') }} to {{ state_attr(team,'opponent_score') }}. The {{ state_attr(team,'friendly_name') }} tied in their game yesterday against {% if state_attr(team,'league') != 'NCAAF'%}the{% endif %} {{ opponent_name }} by a score of {{ state_attr(team,'team_score') }} to {{ state_attr(team,'opponent_score') }}.
{% elif state_attr(team,'team_winner') == true %} {% elif state_attr(team,'team_winner') == true %}
The {{ entity_name(team) }} won their game yesterday against {% if state_attr(team,'league') != 'NCAAF'%}the{% endif %} {{ opponent_name }} by a score of {{ state_attr(team,'team_score') }} to {{ state_attr(team,'opponent_score') }}. The {{ state_attr(team,'friendly_name') }} won their game yesterday against {% if state_attr(team,'league') != 'NCAAF'%}the{% endif %} {{ opponent_name }} by a score of {{ state_attr(team,'team_score') }} to {{ state_attr(team,'opponent_score') }}.
{% elif state_attr(team,'opponent_winner') == true %} {% elif state_attr(team,'opponent_winner') == true %}
The {{ entity_name(team) }} lost their game yesterday 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 yesterday 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'] %}
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.
@@ -109,11 +109,11 @@
{% endif %} {% endif %}
{% elif is_state(team,'IN') %} {% elif is_state(team,'IN') %}
{% if (state_attr(team,'team_score') | int) == (state_attr(team,'opponent_score') | int) %} {% if (state_attr(team,'team_score') | int) == (state_attr(team,'opponent_score') | int) %}
The {{ entity_name(team) }} are currently tied in their game against {% if state_attr(team,'league') != 'NCAAF'%}the{% endif %} {{ opponent_name }} with a score of {{ state_attr(team,'team_score') }} to {{ state_attr(team,'opponent_score') }} {{ sports_clock(team) }}. The {{ state_attr(team,'friendly_name') }} are currently tied in their game against {% if state_attr(team,'league') != 'NCAAF'%}the{% endif %} {{ opponent_name }} with a score of {{ state_attr(team,'team_score') }} to {{ state_attr(team,'opponent_score') }} {{ sports_clock(team) }}.
{% elif (state_attr(team,'team_score') | int) > (state_attr(team,'opponent_score') | int) %} {% elif (state_attr(team,'team_score') | int) > (state_attr(team,'opponent_score') | int) %}
The {{ entity_name(team) }} are currently winning their game against {% if state_attr(team,'league') != 'NCAAF'%}the{% endif %} {{ opponent_name }} with a score of {{ state_attr(team,'team_score') }} to {{ state_attr(team,'opponent_score') }} {{ sports_clock(team) }}. The {{ state_attr(team,'friendly_name') }} are currently winning their game against {% if state_attr(team,'league') != 'NCAAF'%}the{% endif %} {{ opponent_name }} with a score of {{ state_attr(team,'team_score') }} to {{ state_attr(team,'opponent_score') }} {{ sports_clock(team) }}.
{% else %} {% else %}
The {{ entity_name(team) }} are currently losing their game against {% if state_attr(team,'league') != 'NCAAF'%}the{% endif %} {{ opponent_name }} with a score of {{ state_attr(team,'opponent_score') }} to {{ state_attr(team,'team_score') }} {{ sports_clock(team) }}. The {{ state_attr(team,'friendly_name') }} are currently losing their game against {% if state_attr(team,'league') != 'NCAAF'%}the{% endif %} {{ opponent_name }} with a score of {{ state_attr(team,'opponent_score') }} to {{ state_attr(team,'team_score') }} {{ sports_clock(team) }}.
{% endif %} {% endif %}
{% endif %} {% endif %}
{% endmacro %} {% endmacro %}
-5
View File
@@ -110,8 +110,3 @@
{% macro next_twitch_stream() %} {% macro next_twitch_stream() %}
{{ custom_time('calendar.tony_s_twitch_schedule','week,day,hour') }} {{ custom_time('calendar.tony_s_twitch_schedule','week,day,hour') }}
{% endmacro %} {% endmacro %}
{% macro time_diff(sensor) %}
{% set diff = (as_timestamp(now()) - as_timestamp(states(sensor))) | int %}
{{ diff }}
{% endmacro %}
+3 -3
View File
@@ -6,7 +6,7 @@
{% set time = time|default('day') %} {% set time = time|default('day') %}
{% if method in ['text','dashboard'] %} {% if method in ['text','dashboard'] %}
{% if type in ['current','full'] %} {% if type in ['current','full'] %}
The current weather is {{ states('weather.iron_nerd_weather_station') | lower }}. It is {{ state_attr('weather.iron_nerd_weather_station','temperature') | round }} degrees outside and feels like {{ state_attr('weather.iron_nerd_weather_station','apparent_temperature') | round }} degrees. The current weather is {{ states('weather.iron_nerd_weather_station') | lower }}. It is {{ state_attr('weather.iron_nerd_weather_station','temperature') | round }} degrees outside and feels like {{ states('sensor.home_temperature_feels_like') | round }} degrees.
{% endif %} {% endif %}
{% if type in ['forecast','full'] %} {% if type in ['forecast','full'] %}
{% if 14400 <= ct <= 61200 %} {% if 14400 <= ct <= 61200 %}
@@ -30,7 +30,7 @@
{% if state_attr('binary_sensor.severe_thunderstorm_warning','considerable_destructive') == true %} {% if state_attr('binary_sensor.severe_thunderstorm_warning','considerable_destructive') == true %}
This storm has the potential to cause considerable damage. Please take shelter and stay safe! This storm has the potential to cause considerable damage. Please take shelter and stay safe!
{% endif %} {% endif %}
{% elif states('sensor.weatheralerts_defiance_ohz004_ohc039') > '0' and method != 'dashboard' %} {% elif states('sensor.weatheralerts_active_alerts') > '0' and method != 'dashboard' %}
Current weather alerts: {{ states('sensor.weather_alert_string') }}. Current weather alerts: {{ states('sensor.weather_alert_string') }}.
{% endif %} {% endif %}
{% if method != 'dashboard' %} {% if method != 'dashboard' %}
@@ -69,7 +69,7 @@
{% else %} {% else %}
{% set alertStrings = ['are','alerts','They are'] %} {% set alertStrings = ['are','alerts','They are'] %}
{% endif %} {% endif %}
{% if states('sensor.weatheralerts_defiance_ohz004_ohc039') > '0' %} {% if states('sensor.weatheralerts_active_alerts') > '0' %}
"There {{ alertStrings[0] }} {{ alerts }} weather {{ alertStrings[1] }} active. {{ alertStrings[2] }}, " "There {{ alertStrings[0] }} {{ alerts }} weather {{ alertStrings[1] }} active. {{ alertStrings[2] }}, "
{{ states('sensor.weather_alert_string') }}. {{ states('sensor.weather_alert_string') }}.
{% endif %} {% endif %}
+29 -237
View File
@@ -25,129 +25,92 @@ template:
state: "{{ states('input_datetime.kallen_fan') != states('input_datetime.kallen_bedtime') }}" state: "{{ states('input_datetime.kallen_fan') != states('input_datetime.kallen_bedtime') }}"
- name: Living Room Front Hot - name: Living Room Front Hot
unique_id: 8fd9db5e-7883-42f3-8918-e78d52c680c6 unique_id: 8fd9db5e-7883-42f3-8918-e78d52c680c6
state: "{{ (states('sensor.living_room_front_temperature') | float) >= (states('input_number.living_room_hot_threshold') | float) }}" state: "{{ states('sensor.living_room_front_temperature') | float >= 80 }}"
device_class: heat device_class: heat
- name: Living Room Front Cold - name: Living Room Front Cold
unique_id: 48494ec8-a63f-4244-b619-ff78c44f28e8 unique_id: 48494ec8-a63f-4244-b619-ff78c44f28e8
state: "{{ (states('sensor.living_room_front_temperature') | float) <= (states('input_number.living_room_cold_threshold') | float) }}" state: "{{ states('sensor.living_room_front_temperature') | float <= 60 }}"
device_class: cold device_class: cold
- name: Downstairs Bathroom Hot - name: Downstairs Bathroom Hot
unique_id: b68adefa-e30e-4454-be21-2743af0f1674 unique_id: b68adefa-e30e-4454-be21-2743af0f1674
state: "{{ (states('sensor.downstairs_bathroom_temperature') | float) >= (states('input_number.downstairs_bathroom_hot_threshold') | float) }}" state: "{{ states('sensor.downstairs_bathroom_temperature') | float >= 80 }}"
device_class: heat device_class: heat
- name: Downstairs Bathroom Cold - name: Downstairs Bathroom Cold
unique_id: c477a45e-f11c-4af5-87aa-90f006b74ac5 unique_id: c477a45e-f11c-4af5-87aa-90f006b74ac5
state: "{{ (states('sensor.downstairs_bathroom_temperature') | float) <= (states('input_number.downstairs_bathroom_cold_threshold') | float) }}" state: "{{ states('sensor.downstairs_bathroom_temperature') | float <= 55 }}"
device_class: cold device_class: cold
- name: Stairwell Bottom Hot - name: Stairwell Bottom Hot
unique_id: ebd09e52-c31e-442e-8767-a8083b99c66c unique_id: ebd09e52-c31e-442e-8767-a8083b99c66c
state: "{{ (states('sensor.stairwell_bottom_temperature') | float) >= (states('input_number.stairwell_bottom_hot_threshold') | float) }}" state: "{{ states('sensor.stairwell_bottom_temperature') | float >= 80 }}"
device_class: heat device_class: heat
- name: Stairwell Bottom Cold - name: Stairwell Bottom Cold
unique_id: 3f8b5340-0fb4-489f-8df7-c2843316009f unique_id: 3f8b5340-0fb4-489f-8df7-c2843316009f
state: "{{ (states('sensor.stairwell_bottom_temperature') | float) <= (states('input_number.stairwell_bottom_cold_threshold') | float) }}" state: "{{ states('sensor.stairwell_bottom_temperature') | float <= 60 }}"
device_class: cold device_class: cold
- name: Upstairs Bathroom Hot - name: Upstairs Bathroom Hot
unique_id: 86394cea-9499-4595-85d1-2a026e8e2b27 unique_id: 86394cea-9499-4595-85d1-2a026e8e2b27
state: "{{ (states('sensor.upstairs_bathroom_temperature') | float) >= (states('input_number.upstairs_bathroom_hot_threshold') | float) }}" state: "{{ states('sensor.upstairs_bathroom_temperature') | float >= 80 }}"
device_class: heat device_class: heat
- name: Upstairs Bathroom Cold - name: Upstairs Bathroom Cold
unique_id: 5d720614-90f0-4e69-8086-8bc0f47a78eb unique_id: 5d720614-90f0-4e69-8086-8bc0f47a78eb
state: "{{ (states('sensor.upstairs_bathroom_temperature') | float) <= (states('input_number.upstairs_bathroom_cold_threshold') | float) }}" state: "{{ states('sensor.upstairs_bathroom_temperature') | float <= 60 }}"
device_class: cold device_class: cold
- name: Emma Bedroom Hot - name: Emma Bedroom Hot
unique_id: b453e23a-f3c9-4fab-bf82-d08af05e8a94 unique_id: b453e23a-f3c9-4fab-bf82-d08af05e8a94
state: "{{ (states('sensor.emma_bedroom_temperature') | float) >= (states('input_number.emma_bedroom_hot_threshold') | float) }}" state: "{{ states('sensor.emma_bedroom_temperature') | float >= 75 }}"
device_class: heat device_class: heat
- name: Emma Bedroom Cold - name: Emma Bedroom Cold
unique_id: 41174b21-a46f-4deb-8dbc-61a356b33db1 unique_id: 41174b21-a46f-4deb-8dbc-61a356b33db1
state: "{{ (states('sensor.emma_bedroom_temperature') | float) <= (states('input_number.emma_bedroom_cold_threshold') | float) }}" state: "{{ states('sensor.emma_bedroom_temperature') | float <= 60 }}"
device_class: cold device_class: cold
- name: Basement Studio Hot - name: Basement Studio Hot
unique_id: 2c5626e9-9a3f-43b0-9595-3a15c9434b0f unique_id: 2c5626e9-9a3f-43b0-9595-3a15c9434b0f
state: "{{ (states('sensor.basement_studio_temperature') | float) >= (states('input_number.basement_studio_hot_threshold') | float) }}" state: "{{ states('sensor.basement_studio_temperature') | float >= 80 }}"
device_class: heat device_class: heat
- name: Basement Studio Cold - name: Basement Studio Cold
unique_id: 985f4f8c-2297-4d32-ace7-818534c5e4b5 unique_id: 985f4f8c-2297-4d32-ace7-818534c5e4b5
state: "{{ (states('sensor.basement_studio_temperature') | float) <= (states('input_number.basement_studio_cold_threshold') | float) }}" state: "{{ states('sensor.basement_studio_temperature') | float <= 60 }}"
device_class: cold device_class: cold
- name: Living Room Back Hot - name: Living Room Back Hot
unique_id: 9a2be430-9322-492b-a0c1-bb0f034979f5 unique_id: 9a2be430-9322-492b-a0c1-bb0f034979f5
state: "{{ (states('sensor.living_room_back_temperature') | float) >= (states('input_number.living_room_hot_threshold') | float) }}" state: "{{ states('sensor.living_room_back_temperature') | float >= 80 }}"
device_class: heat device_class: heat
- name: Living Room Back Cold - name: Living Room Back Cold
unique_id: 524c2ad1-1f44-42c0-b06b-28a40d439832 unique_id: 524c2ad1-1f44-42c0-b06b-28a40d439832
state: "{{ (states('sensor.living_room_back_temperature') | float) <= (states('input_number.living_room_cold_threshold') | float) }}" state: "{{ states('sensor.living_room_back_temperature') | float <= 60 }}"
device_class: cold device_class: cold
- name: Mud Room Hot - name: Mud Room Hot
unique_id: 920fa45e-8c6e-4518-9aea-5141e15a4350 unique_id: 920fa45e-8c6e-4518-9aea-5141e15a4350
state: "{{ (states('sensor.mud_room_temperature') | float) >= (states('input_number.mud_room_hot_threshold') | float) }}" state: "{{ states('sensor.mud_room_temperature') | float >= 80 }}"
device_class: heat device_class: heat
- name: Mud Room Cold - name: Mud Room Cold
unique_id: 459998f5-7011-4e96-aa8a-076591a1b1ce unique_id: 459998f5-7011-4e96-aa8a-076591a1b1ce
state: "{{ (states('sensor.mud_room_temperature') | float) <= (states('input_number.mud_room_cold_threshold') | float) }}" state: "{{ states('sensor.mud_room_temperature') | float <= 60 }}"
device_class: cold device_class: cold
- name: Stairwell Top Hot - name: Stairwell Top Hot
unique_id: 22d325db-e213-4d7b-81a8-a7ba3798e751 unique_id: 22d325db-e213-4d7b-81a8-a7ba3798e751
state: "{{ (states('sensor.stairwell_top_temperature') | float) >= (states('input_number.stairwell_top_hot_threshold') | float) }}" state: "{{ states('sensor.stairwell_top_temperature') | float >= 80 }}"
device_class: heat device_class: heat
- name: Stairwell Top Cold - name: Stairwell Top Cold
unique_id: 925bf2d5-cfa6-4508-98c4-b7ad185ddbc1 unique_id: 925bf2d5-cfa6-4508-98c4-b7ad185ddbc1
state: "{{ (states('sensor.stairwell_top_temperature') | float) <= (states('input_number.stairwell_top_cold_threshold') | float) }}" state: "{{ states('sensor.stairwell_top_temperature') | float <= 60 }}"
device_class: cold device_class: cold
- name: Kallen Bedroom Hot - name: Kallen Bedroom Hot
unique_id: e47ba60f-e9b2-48d4-899b-f16fdb146e75 unique_id: e47ba60f-e9b2-48d4-899b-f16fdb146e75
state: "{{ (states('sensor.kallen_bedroom_temperature') | float) >= (states('input_number.kallen_bedroom_hot_threshold') | float) }}" state: "{{ states('sensor.kallen_bedroom_temperature') | float >= 75 }}"
device_class: heat device_class: heat
- name: Kallen Bedroom Cold - name: Kallen Bedroom Cold
unique_id: 69115462-c159-4f5b-b047-ff8a2600fa7d unique_id: 69115462-c159-4f5b-b047-ff8a2600fa7d
state: "{{ (states('sensor.kallen_bedroom_temperature') | float) <= (states('input_number.kallen_bedroom_cold_threshold') | float) }}" state: "{{ states('sensor.kallen_bedroom_temperature') | float <= 60 }}"
device_class: cold device_class: cold
- name: Master Bedroom Hot - name: Master Bedroom Hot
unique_id: ca7c96e5-ea83-4698-a43c-16e09af6d6fd unique_id: ca7c96e5-ea83-4698-a43c-16e09af6d6fd
state: "{{ (states('sensor.master_bedroom_temperature') | float) >= (states('input_number.master_bedroom_hot_threshold') | float) }}" state: "{{ states('sensor.master_bedroom_temperature') | float >= 75 }}"
device_class: heat device_class: heat
- name: Master Bedroom Cold - name: Master Bedroom Cold
unique_id: 1577cb2c-234d-41c8-a12e-5111a77df958 unique_id: 1577cb2c-234d-41c8-a12e-5111a77df958
state: "{{ (states('sensor.master_bedroom_temperature') | float) <= (states('input_number.master_bedroom_cold_threshold') | float) }}" state: "{{ states('sensor.master_bedroom_temperature') | float <= 60 }}"
device_class: cold device_class: cold
- name: "Second Floor Windows Open"
unique_id: 5656bf10-ac5b-467e-8cf7-e8331598352d
state: >
{% set open = states.binary_sensor
| selectattr('attributes.device_class','eq','window')
| selectattr('entity_id','in',label_entities('window'))
| selectattr('entity_id','in',floor_entities('second_floor'))
| selectattr('state','eq','on')
| list
| count %}
{{ open > 0 }}
attributes:
open_windows: >
{% set open = states.binary_sensor
| selectattr('attributes.device_class','eq','window')
| selectattr('entity_id','in',label_entities('window'))
| selectattr('entity_id','in',floor_entities('second_floor'))
| selectattr('state','eq','on')
| list
| count %}
{{ open }}
- name: "Emma Bedroom Climate Inhibit"
unique_id: 76f8ff76-2994-46bf-913c-736e97d72c3b
state: >
{{ is_state('binary_sensor.second_floor_windows_open','on') and is_state('binary_sensor.emma_bedroom_door','on') }}
- name: "Master Bedroom Climate Inhibit"
unique_id: e529bf0c-7975-477e-a0f8-4a05480674a9
state: >
{% set open = states.binary_sensor
| selectattr('attributes.device_class','eq','window')
| selectattr('entity_id','in',label_entities('window'))
| selectattr('entity_id','in',area_entities('master_bedroom'))
| selectattr('state','eq','on')
| list
| count %}
{% set shower_mode = states('input_boolean.shower_mode') %}
{{ (open > 0) and (shower_mode == 'off') }}
- sensor: - sensor:
- name: "Master Bedroom Target Temp" - name: "Master Bedroom Target Temp"
unique_id: 2ce31844-b115-42b8-8213-feccf24e236c unique_id: 2ce31844-b115-42b8-8213-feccf24e236c
@@ -280,10 +243,6 @@ input_boolean:
name: Emma Bedroom Heater Installed name: Emma Bedroom Heater Installed
icon: mdi:heating-coil icon: mdi:heating-coil
emma_bedroom_mode_switch:
name: Emma Bedroom Mode Switch
icon: mdi:swap-horizontal
input_select: input_select:
scheduled_climate_mode_master_bedroom_aircon: scheduled_climate_mode_master_bedroom_aircon:
name: Scheduled Climate Mode - Master Bedroom Aircon name: Scheduled Climate Mode - Master Bedroom Aircon
@@ -314,13 +273,14 @@ input_select:
- White Noise - White Noise
- N/A - N/A
icon: mdi:home-thermometer icon: mdi:home-thermometer
emma_bedroom_mode_switch: current_climate_mode_master_bedroom:
name: Emma Bedroom Mode Switch name: Current Climate Mode - Master Bedroom
options: options:
- To Aircon - None
- To Heater - Day Mode
initial: To Aircon - Night Mode
icon: mdi:swap-horizontal - Bedtime Mode
- Shower Mode
input_number: input_number:
master_bedroom_daytime_temp: master_bedroom_daytime_temp:
@@ -449,13 +409,6 @@ input_number:
step: 1 step: 1
unit_of_measurement: °F unit_of_measurement: °F
icon: mdi:thermometer icon: mdi:thermometer
emma_bedroom_auto_mode_threshold:
name: Emma Bedroom Auto Mode Threshold
min: 40
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
@@ -512,167 +465,6 @@ input_number:
step: 1 step: 1
unit_of_measurement: °F unit_of_measurement: °F
icon: mdi:thermometer icon: mdi:thermometer
living_room_hot_threshold:
name: Living Room Hot Threshold
min: 50
max: 80
step: 1
unit_of_measurement: °F
icon: mdi:thermometer-chevron-up
living_room_cold_threshold:
name: Living Room Cold Threshold
min: 50
max: 80
step: 1
unit_of_measurement: °F
icon: mdi:thermometer-chevron-down
downstairs_bathroom_hot_threshold:
name: Downstairs Bathroom Hot Threshold
min: 50
max: 80
step: 1
unit_of_measurement: °F
icon: mdi:thermometer-chevron-up
downstairs_bathroom_cold_threshold:
name: Downstairs Bathroom Cold Threshold
min: 50
max: 80
step: 1
unit_of_measurement: °F
icon: mdi:thermometer-chevron-down
stairwell_bottom_hot_threshold:
name: Stairwell Bottom Hot Threshold
min: 50
max: 80
step: 1
unit_of_measurement: °F
icon: mdi:thermometer-chevron-up
stairwell_bottom_cold_threshold:
name: Stairwell Bottom Cold Threshold
min: 50
max: 80
step: 1
unit_of_measurement: °F
icon: mdi:thermometer-chevron-down
upstairs_bathroom_hot_threshold:
name: Upstairs Bathroom Hot Threshold
min: 50
max: 80
step: 1
unit_of_measurement: °F
icon: mdi:thermometer-chevron-up
upstairs_bathroom_cold_threshold:
name: Upstairs Bathroom Cold Threshold
min: 50
max: 80
step: 1
unit_of_measurement: °F
icon: mdi:thermometer-chevron-down
emma_bedroom_hot_threshold:
name: Emma Bedroom Hot Threshold
min: 50
max: 80
step: 1
unit_of_measurement: °F
icon: mdi:thermometer-chevron-up
emma_bedroom_cold_threshold:
name: Emma Bedroom Cold Threshold
min: 50
max: 80
step: 1
unit_of_measurement: °F
icon: mdi:thermometer-chevron-down
basement_studio_hot_threshold:
name: Basement Studio Hot Threshold
min: 50
max: 80
step: 1
unit_of_measurement: °F
icon: mdi:thermometer-chevron-up
basement_studio_cold_threshold:
name: Basement Studio Cold Threshold
min: 50
max: 80
step: 1
unit_of_measurement: °F
icon: mdi:thermometer-chevron-down
mud_room_hot_threshold:
name: Mud Room Hot Threshold
min: 50
max: 80
step: 1
unit_of_measurement: °F
icon: mdi:thermometer-chevron-up
mud_room_cold_threshold:
name: Mud Room Cold Threshold
min: 50
max: 80
step: 1
unit_of_measurement: °F
icon: mdi:thermometer-chevron-down
stairwell_top_hot_threshold:
name: Stairwell Top Hot Threshold
min: 50
max: 80
step: 1
unit_of_measurement: °F
icon: mdi:thermometer-chevron-up
stairwell_top_cold_threshold:
name: Stairwell Top Cold Threshold
min: 50
max: 80
step: 1
unit_of_measurement: °F
icon: mdi:thermometer-chevron-down
kallen_bedroom_hot_threshold:
name: Kallen Bedroom Hot Threshold
min: 50
max: 80
step: 1
unit_of_measurement: °F
icon: mdi:thermometer-chevron-up
kallen_bedroom_cold_threshold:
name: Kallen Bedroom Cold Threshold
min: 50
max: 80
step: 1
unit_of_measurement: °F
icon: mdi:thermometer-chevron-down
master_bedroom_hot_threshold:
name: Master Bedroom Hot Threshold
min: 50
max: 80
step: 1
unit_of_measurement: °F
icon: mdi:thermometer-chevron-up
master_bedroom_cold_threshold:
name: Master Bedroom Cold Threshold
min: 50
max: 80
step: 1
unit_of_measurement: °F
icon: mdi:thermometer-chevron-down
window_weather_minimum:
name: Window Weather Minimum
min: 40
max: 80
step: 1
unit_of_measurement: °F
icon: mdi:window-closed
window_weather_maximum:
name: Window Weather Maximum
min: 40
max: 80
step: 1
unit_of_measurement: °F
icon: mdi:window-closed
input_datetime:
emma_bedroom_mode_switch:
name: Emma Bedroom Mode Switch
has_date: false
has_time: true
icon: mdi:swap-horizontal
climate: climate:
- platform: generic_thermostat - platform: generic_thermostat
+16 -215
View File
@@ -34,9 +34,10 @@ template:
{{ states(sensor) | float }} {{ states(sensor) | float }}
apparent_temperature_template: > apparent_temperature_template: >
{% set apparent_temps = [ {% set apparent_temps = [
states.sensor.pirateweather_apparent_temperature, states.sensor.home_tempest_feels_like,
states.sensor.home_temperature_feels_like, states.sensor.home_temperature_feels_like,
states.sensor.home_tempest_feels_like states.sensor.pirateweather_apparent_temperature,
states.sensor.stratton_ave_apparent_temperature
] %} ] %}
{% set sensor = apparent_temps | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %} {% set sensor = apparent_temps | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
{{ states(sensor) | float }} {{ states(sensor) | float }}
@@ -147,9 +148,10 @@ template:
{{ states(sensor) | float }} {{ states(sensor) | float }}
apparent_temperature_template: > apparent_temperature_template: >
{% set apparent_temps = [ {% set apparent_temps = [
states.sensor.pirateweather_apparent_temperature, states.sensor.home_tempest_feels_like,
states.sensor.home_temperature_feels_like, states.sensor.home_temperature_feels_like,
states.sensor.home_tempest_feels_like states.sensor.pirateweather_apparent_temperature,
states.sensor.stratton_ave_apparent_temperature
] %} ] %}
{% set sensor = apparent_temps | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %} {% set sensor = apparent_temps | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
{{ states(sensor) | float }} {{ states(sensor) | float }}
@@ -623,12 +625,12 @@ template:
- name: Heat Index Threshold - name: Heat Index Threshold
unique_id: aae2cd89-dde2-4557-923c-b476d1b49b88 unique_id: aae2cd89-dde2-4557-923c-b476d1b49b88
state: > state: >
{% set feelslike = states('sensor.home_tempest_feels_like') | int %} {% set feelslike = states('sensor.stratton_ave_apparent_temperature') | int %}
{% set threshold = states('input_number.heat_index_threshold') | int %} {% set threshold = states('input_number.heat_index_threshold') | int %}
{{ feelslike >= threshold }} {{ feelslike >= threshold }}
device_class: heat device_class: heat
attributes: attributes:
current_temp: "{{ states('sensor.home_tempest_feels_like') | int }}" current_temp: "{{ states('sensor.stratton_ave_apparent_temperature') | int }}"
threshold: "{{ states('input_number.heat_index_threshold') | int }}" threshold: "{{ states('input_number.heat_index_threshold') | int }}"
- name: Cold Threshold - name: Cold Threshold
unique_id: a7c97b91-6d42-433a-a96b-94e39c58d63f unique_id: a7c97b91-6d42-433a-a96b-94e39c58d63f
@@ -653,7 +655,7 @@ template:
- name: Wind Chill Threshold - name: Wind Chill Threshold
unique_id: c734b642-b85d-465c-b3c3-aadbe4a00dc1 unique_id: c734b642-b85d-465c-b3c3-aadbe4a00dc1
state: > state: >
{% set feelslike = states('sensor.home_tempest_feels_like') | int %} {% set feelslike = states('sensor.stratton_ave_apparent_temperature') | int %}
{% set threshold = states('input_number.wind_chill_threshold') | int %} {% set threshold = states('input_number.wind_chill_threshold') | int %}
{{ feelslike <= threshold }} {{ feelslike <= threshold }}
device_class: cold device_class: cold
@@ -697,7 +699,7 @@ template:
{% endif %} {% endif %}
- name: "Lightning Warning" - name: "Lightning Warning"
unique_id: edaddfc4-f7f0-4d75-aada-a2c588afe029 unique_id: edaddfc4-f7f0-4d75-aada-a2c588afe029
state: "{{ (states('sensor.home_tempest_cloud_sensors_lightning_strikes_last_hour') | int > 0) or is_state('binary_sensor.home_tempest_cloud_binary_sensors_is_lightning','on') }}" state: "{{ states('sensor.home_tempest_cloud_sensors_lightning_strikes_last_hour') | int > 0 }}"
device_class: safety device_class: safety
attributes: attributes:
current_strikes: "{{ states('sensor.home_tempest_cloud_sensors_lightning_strikes_last_hour') | int }}" current_strikes: "{{ states('sensor.home_tempest_cloud_sensors_lightning_strikes_last_hour') | int }}"
@@ -740,25 +742,6 @@ template:
state: "{{ state_attr('binary_sensor.severe_thunderstorm_warning','tornado_possible') }}" state: "{{ state_attr('binary_sensor.severe_thunderstorm_warning','tornado_possible') }}"
device_class: safety device_class: safety
icon: "{{ 'mdi:weather-tornado' if this.state == 'on' else 'mdi:close' }}" icon: "{{ 'mdi:weather-tornado' if this.state == 'on' else 'mdi:close' }}"
- name: Window Weather
unique_id: 9b119394-cb05-44bb-9c6e-e8d5c882a470
state: >
{% set minimum_temp = states('input_number.window_weather_minimum') | int %}
{% set maximum_temp = states('input_number.window_weather_maximum') | int %}
{% set ns = namespace(raining=false) %}
{% for entity, dry_state in [
('binary_sensor.home_tempest_cloud_binary_sensors_is_raining', 'off'),
('sensor.home_tempest_cloud_sensors_precipitation_intensity', 'no_rain'),
('sensor.home_tempest_precipitation_type', 'none')
] %}
{% if states(entity) not in ['unavailable', 'unknown'] %}
{% if not is_state(entity, dry_state) %}
{% set ns.raining = true %}
{% endif %}
{% endif %}
{% endfor %}
{% set temp = state_attr('weather.iron_nerd_weather_station','temperature') %}
{{ (not ns.raining) and (minimum_temp <= temp <= maximum_temp) }}
- sensor: - sensor:
# - name: Total Rain Sensors # - name: Total Rain Sensors
# unique_id: b7c2e709-8f5c-4263-aa1d-fa8280afcddb # unique_id: b7c2e709-8f5c-4263-aa1d-fa8280afcddb
@@ -1459,7 +1442,7 @@ template:
# previous_rainfall: # previous_rainfall:
# - name: "Past 48h Rainfall" # - name: "Past 48h Rainfall"
# state: "{{ states('sensor.daily_rainfall_in') | float + state_attr('sensor.daily_rainfall_in', 'last_period') | float }}" # state: "{{ states('sensor.daily_rainfall_in') | float + state_attr('sensor.daily_rainfall_in', 'last_period') | float }}"
- name: Weather Alert String #! REPAIRS NEEDED - name: Weather Alert String
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 %}
@@ -1485,14 +1468,14 @@ template:
{% endmacro %} {% endmacro %}
{{ cleanup(getReport()) }} {{ cleanup(getReport()) }}
attributes: attributes:
active_alerts: "{{ states('sensor.weatheralerts_defiance_ohz004_ohc039') }}" active_alerts: "{{ states('sensor.weatheralerts_active_alerts') }}"
icon: > icon: >
{% if (states('sensor.weatheralerts_defiance_ohz004_ohc039') | int ) > 0 %} {% if (states('sensor.weatheralerts_active_alerts') | int ) > 0 %}
mdi:alert mdi:alert
{% else %} {% else %}
mdi:alert-remove mdi:alert-remove
{% endif %} {% endif %}
- name: 'Weather Alerts Active - Corrected' #! REPAIRS NEEDED - name: 'Weather Alerts Active - Corrected'
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 %}
@@ -1511,7 +1494,7 @@ template:
{% endmacro %} {% endmacro %}
{{ cleanup(getReport()) }} {{ cleanup(getReport()) }}
icon: > icon: >
{% if (states('sensor.weatheralerts_defiance_ohz004_ohc039') | int ) > 0 %} {% if (states('sensor.weatheralerts_active_alerts') | int ) > 0 %}
mdi:alert mdi:alert
{% else %} {% else %}
mdi:alert-remove mdi:alert-remove
@@ -1575,7 +1558,7 @@ sensor:
# - platform: statistics # - platform: statistics
# unique_id: 6192c95a-8fd1-4ba0-87de-d06fdc071d6b # unique_id: 6192c95a-8fd1-4ba0-87de-d06fdc071d6b
# name: Apparent Temp Average # name: Apparent Temp Average
# entity_id: sensor.home_tempest_feels_like # entity_id: sensor.stratton_ave_apparent_temperature
# state_characteristic: average_linear # state_characteristic: average_linear
# max_age: # max_age:
# days: 7 # days: 7
@@ -1630,9 +1613,6 @@ sensor:
# above: 0 # above: 0
input_boolean: input_boolean:
tornado_watch:
name: Tornado Watch
icon: mdi:message-alert
freeze_warning: freeze_warning:
name: Freeze Warning name: Freeze Warning
icon: mdi:snowflake-alert icon: mdi:snowflake-alert
@@ -1697,185 +1677,6 @@ input_boolean:
# - service: input_boolean.turn_off # - service: input_boolean.turn_off
# entity_id: input_boolean.freeze_warning # entity_id: input_boolean.freeze_warning
automation:
- id: 80465d92-2e06-4cf0-ba92-33376b28b9db
alias: WeatherAlerts - Notify on WeatherAlerts Error
description: ""
triggers:
- entity_id:
- sensor.weatheralerts_defiance_ohz004_ohc039
trigger: state
conditions:
- condition: template
value_template: >
{% set errs =
state_attr('sensor.weatheralerts_defiance_ohz004_ohc039','error') %}
{% if errs is not iterable or errs is string or errs is none %}
false
{% else %}
{% set e0 = errs[0] if errs|length > 0 else none %}
{{ e0 is mapping and e0.get('type') not in ['success'] }}
{% endif %}
actions:
- data:
title: Weather Alerts Error
message: >
{% set errs =
state_attr('sensor.weatheralerts_defiance_ohz004_ohc039','error') %}
{% set e0 = errs[0] if errs|length > 0 else {} %}
**Type:** {{ e0.get('type', 'unknown') }}
**Status:** {{ e0.get('status', 'unknown') }}
**Message:** {{ e0.get('message', 'unknown') }}
**Time:** {{ e0.get('timestamp', 'unknown') }}
notification_id: weatheralerts_error_notification_defiance
action: persistent_notification.create
mode: single
- id: 3ef6edbc-b24c-4032-a423-5fd3fee64c57
alias: WeatherAlerts - Notify on Recovery
description: ""
triggers:
- entity_id: sensor.weatheralerts_defiance_ohz004_ohc039
trigger: state
conditions:
- condition: template
value_template: >
{% set cur =
state_attr('sensor.weatheralerts_defiance_ohz004_ohc039','error')
%}
{% set prev = trigger.from_state.attributes.get('error') if
trigger.from_state else none %}
{% if cur is not iterable or cur is string or cur is none or cur|length ==
0 %}
false
{% else %}
{% set cur0 = cur[0] %}
{% set prev0 = prev[0] if prev is iterable and prev is not string and prev is not none and prev|length > 0 else none %}
{{ cur0.get('type') == 'success' and prev0.get('type') in ['http_error', 'exception'] }}
{% endif %}
actions:
- data:
title: Weather Alerts Recovered From Error
message: >
The Weather Alerts integration has successfully updated after an error.
{% set errs =
state_attr('sensor.weatheralerts_defiance_ohz004_ohc039','error') %}
{% set e0 = errs[0] if errs|length > 0 else {} %}
**Type:** {{ e0.get('type', 'unknown') }}
**Status:** {{ e0.get('status', 'unknown') }}
**Message:** {{ e0.get('message', 'unknown') }}
**Time:** {{ e0.get('timestamp', 'unknown') }}
notification_id: weatheralerts_notify_on_recovery_defiance
action: persistent_notification.create
mode: single
- id: 7b11243f-2154-45f8-bceb-71b83dac5b03
alias: WeatherAlerts - All Clear Notification
description: ""
triggers:
- entity_id: sensor.weatheralerts_defiance_ohz004_ohc039
trigger: state
conditions:
- condition: template
value_template: |-
{% set prev = trigger.from_state.state if trigger.from_state else '0' %}
{% set cur = trigger.to_state.state if trigger.to_state else '0' %}
{{ (prev | int(0)) > 0 and (cur | int(0)) == 0 }}
actions:
- data:
title: Weather alerts cleared
message: No active weather alerts remain.
notification_id: weatheralerts_all_clear_defiance
action: persistent_notification.create
mode: single
# Announce Severe Weather
- id: b1bdfbf9-d82e-436f-bc60-77c3abfb077b
alias: NWS Announce Weather Alert
trigger:
- trigger: state
entity_id: binary_sensor.severe_thunderstorm_warning
from:
- "off"
to:
- "on"
id: tstorm-warning
- trigger: state
entity_id: binary_sensor.tornado_watch
from:
- "off"
to:
- "on"
id: tornado-watch
- trigger: state
entity_id: binary_sensor.severe_thunderstorm_watch
from:
- "off"
to:
- "on"
id: tstorm-watch
# - platform: numeric_state
# entity_id: sensor.weatheralerts_defiance_ohz004_ohc039
# attribute: freeze_warning_count
# above: 0
# id: freeze-warning
action:
- choose:
- conditions:
- condition: trigger
id: tstorm-warning
sequence:
- service: script.status_annc
data:
who: everywhere
type: weather
call_interruption: 1
call_thunderstorm_warning: 1
- conditions:
- condition: trigger
id: tornado-watch
sequence:
- service: script.status_annc
data:
who: everywhere
type: weather
call_interruption: 1
call_tornado_watch: 1
- conditions:
- condition: trigger
id: tstorm-watch
sequence:
- service: script.status_annc
data:
who: everywhere
type: weather
call_interruption: 1
call_thunderstorm_watch: 1
- conditions:
- condition: trigger
id: freeze-warning
sequence:
- service: script.status_annc
data:
who: everywhere
type: weather
call_interruption: 1
call_freeze_warning: 1
script: script:
# refresh_weather_alert_sensors: # refresh_weather_alert_sensors:
+2 -2
View File
@@ -65,7 +65,7 @@ sensor:
hours: 24 hours: 24
- platform: history_stats - platform: history_stats
name: Emma A/C Compressor Time name: Emma A/C Compressor Time
entity_id: binary_sensor.emma_bedroom_aircon_compressor entity_id: binary_sensor.emma_aircon_compressor
state: 'on' state: 'on'
type: time type: time
end: '{{ now() }}' end: '{{ now() }}'
@@ -73,7 +73,7 @@ sensor:
hours: 24 hours: 24
- platform: history_stats - platform: history_stats
name: Emma A/C Fan Time name: Emma A/C Fan Time
entity_id: binary_sensor.emma_bedroom_aircon_fan entity_id: binary_sensor.emma_aircon_fan
state: 'on' state: 'on'
type: time type: time
end: '{{ now() }}' end: '{{ now() }}'
+1 -1
View File
@@ -57,6 +57,6 @@ pyscript:
allow_all_imports: true allow_all_imports: true
hass_is_global: true hass_is_global: true
# animated_scenes: animated_scenes:
grad_vol: grad_vol:
+306
View File
@@ -0,0 +1,306 @@
mqtt:
sensor:
- name: "ASUS Laptop - GPU Temperature"
unique_id: c3015c8d-ebd7-42fb-9b52-49a6ecb55b69
state_topic: "iotlink/workgroup/asus-laptop/monitor/stats/gpu_nvidia/temperatures/gpu_core"
unit_of_measurement: 'C'
icon: mdi:thermometer
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/asus-laptop/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "ASUS Laptop - CPU Temperature"
unique_id: 74b9bc51-0910-4c74-9870-8aa7a2556b70
state_topic: "iotlink/workgroup/asus-laptop/monitor/stats/cpu/temperatures/cpu_package"
unit_of_measurement: 'C'
icon: mdi:thermometer
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/asus-laptop/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "ASUS Laptop - Storage C Temperature"
unique_id: fb629ac3-5360-41db-b01f-357aec81bfe7
state_topic: "iotlink/workgroup/asus-laptop/monitor/stats/storages/samsung_mznty128hdhp-00000/temperatue"
unit_of_measurement: 'C'
icon: mdi:thermometer
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/asus-laptop/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "ASUS Laptop - Storage D Temperature"
unique_id: 0d24052d-9ba9-4c3d-af11-2d4467437357
state_topic: "iotlink/workgroup/asus-laptop/monitor/stats/storages/hgst_hts721010a9e630/temperatue"
unit_of_measurement: 'C'
icon: mdi:thermometer
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/asus-laptop/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "ASUS Laptop - Memory Usage"
unique_id: e30e6644-3a42-4b56-94a5-e9c0096a8858
state_topic: "iotlink/workgroup/asus-laptop/monitor/stats/memory/load/memory"
unit_of_measurement: '%'
icon: mdi:memory
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/asus-laptop/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "ASUS Laptop - Virtual Memory Usage"
unique_id: dfff214e-5bcc-414e-b00a-8d6861679eb5
state_topic: "iotlink/workgroup/asus-laptop/monitor/stats/memory/load/virtual_memory"
unit_of_measurement: '%'
icon: mdi:memory
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/asus-laptop/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "ASUS Laptop - GPU Core Load"
unique_id: 4484205b-1e04-4365-b25e-e4a01076f360
state_topic: "iotlink/workgroup/asus-laptop/monitor/stats/gpu_nvidia/load/gpu_core"
unit_of_measurement: '%'
icon: mdi:speedometer
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/asus-laptop/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "ASUS Laptop - GPU VRAM Usage"
unique_id: 53cf8537-617b-45ea-a127-6f6b9155da73
state_topic: "iotlink/workgroup/asus-laptop/monitor/stats/gpu_nvidia/load/gpu_memory"
unit_of_measurement: '%'
icon: mdi:memory
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/asus-laptop/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "ASUS Laptop - GPU Video Engine Load"
unique_id: 2884c6c9-a337-4aa1-a06e-e641abff31de
state_topic: "iotlink/workgroup/asus-laptop/monitor/stats/gpu_nvidia/load/gpu_video_engine"
unit_of_measurement: '%'
icon: mdi:speedometer
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/asus-laptop/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "ASUS Laptop - GPU Memory Controller Load"
unique_id: 52ac486e-7788-46a5-ace5-18e6e5bf14f3
state_topic: "iotlink/workgroup/asus-laptop/monitor/stats/gpu_nvidia/load/gpu_memory_controller"
unit_of_measurement: '%'
icon: mdi:speedometer
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/asus-laptop/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "ASUS Laptop - GPU Memory Total"
unique_id: e9bf0b89-ba65-40e1-9960-66f13f9a783f
state_topic: "iotlink/workgroup/asus-laptop/monitor/stats/gpu_nvidia/data/gpu_memory_total"
unit_of_measurement: 'MB'
icon: mdi:memory
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/asus-laptop/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "ASUS Laptop - GPU Memory Free"
unique_id: 93df12e0-0ddc-496d-b84f-38ae5e98ded4
state_topic: "iotlink/workgroup/asus-laptop/monitor/stats/gpu_nvidia/data/gpu_memory_free"
unit_of_measurement: 'MB'
icon: mdi:memory
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/asus-laptop/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "ASUS Laptop - GPU Memory Used"
unique_id: 27451394-529c-414d-b5e5-c0ab00531eb8
state_topic: "iotlink/workgroup/asus-laptop/monitor/stats/gpu_nvidia/data/gpu_memory_used"
unit_of_measurement: 'MB'
icon: mdi:memory
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/asus-laptop/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "ASUS Laptop - Memory Used (GB)"
unique_id: 322daf24-a2d4-4404-abde-1d2cfa6d8b44
state_topic: "iotlink/workgroup/asus-laptop/monitor/stats/memory/data/memory_used"
unit_of_measurement: 'GB'
icon: mdi:memory
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/asus-laptop/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "ASUS Laptop - Memory Available (GB)"
unique_id: 9112abfe-335f-4f97-9dc5-c1f82d767ff4
state_topic: "iotlink/workgroup/asus-laptop/monitor/stats/memory/data/memory_available"
unit_of_measurement: 'GB'
icon: mdi:memory
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/asus-laptop/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "ASUS Laptop - Virtual Memory Used (GB)"
unique_id: 863af510-a677-4e92-82ab-e5f4c9e6ae22
state_topic: "iotlink/workgroup/asus-laptop/monitor/stats/memory/data/virtual_memory_used"
unit_of_measurement: 'GB'
icon: mdi:memory
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/asus-laptop/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "ASUS Laptop - Virtual Memory Available (GB)"
unique_id: 55c14b4a-f483-4f64-95c9-94507aacd313
state_topic: "iotlink/workgroup/asus-laptop/monitor/stats/memory/data/virtual_memory_available"
unit_of_measurement: 'GB'
icon: mdi:memory
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/asus-laptop/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
script:
# asus_laptop_wake:
# # To enable see https://www.home-assistant.io/components/wake_on_lan/
# alias: "Asus Laptop - Wake"
# sequence:
# - service: wake_on_lan.send_magic_packet
# data:
# mac: "18:C0:4D:82:00:95"
asus_laptop_shutdown:
alias: "Asus Laptop - Shutdown"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/asus-laptop/commands/shutdown"
payload: ""
asus_laptop_suspend:
alias: "Asus Laptop - Suspend"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/asus-laptop/commands/suspend"
payload: ""
asus_laptop_hibernate:
alias: "Asus Laptop - Hibernate"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/asus-laptop/commands/hibernate"
payload: ""
asus_laptop_reboot:
alias: "Asus Laptop - Reboot"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/asus-laptop/commands/reboot"
payload: ""
asus_laptop_lock:
alias: "Asus Laptop - Lock"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/asus-laptop/commands/lock"
payload: ""
asus_laptop_logoff:
alias: "Asus Laptop - Logoff"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/asus-laptop/commands/logoff"
payload: ""
asus_laptop_vol_mute:
alias: "Asus Laptop - Toggle Mute"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/asus-laptop/commands/volume/mute"
payload: ""
asus_laptop_vol_max:
alias: "Asus Laptop - Vol Max"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/asus-laptop/commands/volume/set"
payload: "100"
asus_laptop_displays_on:
alias: "Asus Laptop - Displays ON"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/asus-laptop/commands/displays/on"
payload: ""
asus_laptop_displays_off:
alias: "Asus Laptop - Displays OFF"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/asus-laptop/commands/displays/off"
payload: ""
asus_laptop_refresh:
alias: "Asus Laptop - Refresh"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/asus-laptop/refresh"
payload: ""
- service: button.press
target:
entity_id:
- button.asus_laptop_hassagent_user_refresh
- button.asus_laptop_hassagent_satellite_refresh
asus_laptop_notify:
alias: "Asus Laptop - Notify"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/asus-laptop/commands/notify"
payload: '{ "title": "My Notification Title", "message": "This is an example of notification using IOT Link", "launchParams": "toast://open/https://iotlink.gitlab.io" }'
asus_laptop_run_chrome:
alias: "Asus Laptop - Run Chrome"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/asus-laptop/commands/run"
payload: '{ "command": "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe", "args": "https://iotlink.gitlab.io", "path": "C:\\Program Files\\Google\\Chrome\\Application", "user": "", "visible": true, "fallback": true }'
+306
View File
@@ -0,0 +1,306 @@
mqtt:
sensor:
- name: "Tina Desktop - GPU Temperature"
unique_id: a6a45c56-3a73-46e4-b91c-4f97ba6f53b2
state_topic: "iotlink/workgroup/xia-desktop/monitor/stats/gpu_nvidia/temperatures/gpu_core"
unit_of_measurement: 'C'
icon: mdi:thermometer
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/xia-desktop/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "Tina Desktop - CPU Temperature"
unique_id: ef715bde-0407-4873-b1e6-a9ef6505d054
state_topic: "iotlink/workgroup/xia-desktop/monitor/stats/cpu/temperatures/core_(tctl/tdie)"
unit_of_measurement: 'C'
icon: mdi:thermometer
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/xia-desktop/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "Tina Desktop - Storage C Temperature"
unique_id: b8b4497b-659a-48d1-a13c-6eed0af69b51
state_topic: "iotlink/workgroup/xia-desktop/monitor/stats/storages/ct1000p1ssd8/temperatue"
unit_of_measurement: 'C'
icon: mdi:thermometer
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/xia-desktop/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "Tina Desktop - Storage D Temperature"
unique_id: 6e9900a3-15fa-4d1b-93c1-567d10e1fe68
state_topic: "iotlink/workgroup/xia-desktop/monitor/stats/storages/san-disk_ssd_plus_240gb/temperatue"
unit_of_measurement: 'C'
icon: mdi:thermometer
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/xia-desktop/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "Tina Desktop - Memory Usage"
unique_id: 8523c69f-9e11-44e6-91b1-9c87401f6fd4
state_topic: "iotlink/workgroup/xia_desktop/monitor/stats/memory/load/memory"
unit_of_measurement: '%'
icon: mdi:memory
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/xia_desktop/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "Tina Desktop - Virtual Memory Usage"
unique_id: 7e1c0e3f-1306-4290-a0c1-c4ddd362b601
state_topic: "iotlink/workgroup/xia-desktop/monitor/stats/memory/load/virtual_memory"
unit_of_measurement: '%'
icon: mdi:memory
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/xia-desktop/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "Tina Desktop - GPU Core Load"
unique_id: 307a1daf-0a36-4c92-a3a2-2d95762cad8c
state_topic: "iotlink/workgroup/xia-desktop/monitor/stats/gpu_nvidia/load/gpu_core"
unit_of_measurement: '%'
icon: mdi:speedometer
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/xia-desktop/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "Tina Desktop - GPU VRAM Usage"
unique_id: 2b05dac9-99e5-47ee-86b0-fa9d4536fbe3
state_topic: "iotlink/workgroup/xia-desktop/monitor/stats/gpu_nvidia/load/gpu_memory"
unit_of_measurement: '%'
icon: mdi:memory
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/xia-desktop/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "Tina Desktop - GPU Video Engine Load"
unique_id: 029fa90b-26ba-45ea-93fd-d7d899f71e78
state_topic: "iotlink/workgroup/xia-desktop/monitor/stats/gpu_nvidia/load/gpu_video_engine"
unit_of_measurement: '%'
icon: mdi:speedometer
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/xia-desktop/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "Tina Desktop - GPU Memory Controller Load"
unique_id: 26069885-0f51-453b-807d-c9cb0130dc05
state_topic: "iotlink/workgroup/xia-desktop/monitor/stats/gpu_nvidia/load/gpu_memory_controller"
unit_of_measurement: '%'
icon: mdi:speedometer
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/xia-desktop/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "Tina Desktop - GPU Memory Total"
unique_id: 65393be1-797c-48d3-9287-e2f168acc2b5
state_topic: "iotlink/workgroup/xia-desktop/monitor/stats/gpu_nvidia/data/gpu_memory_total"
unit_of_measurement: 'MB'
icon: mdi:memory
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/xia-desktop/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "Tina Desktop - GPU Memory Free"
unique_id: 88276fd1-02d2-4d4a-986e-f4f981761376
state_topic: "iotlink/workgroup/xia-desktop/monitor/stats/gpu_nvidia/data/gpu_memory_free"
unit_of_measurement: 'MB'
icon: mdi:memory
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/xia-desktop/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "Tina Desktop - GPU Memory Used"
unique_id: 68436f32-782e-4e8a-85eb-2aa26bb2f877
state_topic: "iotlink/workgroup/xia-desktop/monitor/stats/gpu_nvidia/data/gpu_memory_used"
unit_of_measurement: 'MB'
icon: mdi:memory
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/xia-desktop/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "Tina Desktop - Memory Used (GB)"
unique_id: f90defec-616f-4a09-9308-daf85e02b338
state_topic: "iotlink/workgroup/xia-desktop/monitor/stats/memory/data/memory_used"
unit_of_measurement: 'GB'
icon: mdi:memory
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/xia-desktop/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "Tina Desktop - Memory Available (GB)"
unique_id: 25d240a0-efe4-4269-bf79-2775354cdbb9
state_topic: "iotlink/workgroup/xia-desktop/monitor/stats/memory/data/memory_available"
unit_of_measurement: 'GB'
icon: mdi:memory
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/xia-desktop/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "Tina Desktop - Virtual Memory Used (GB)"
unique_id: be7d4104-b3f1-4244-89fe-29b720753481
state_topic: "iotlink/workgroup/xia-desktop/monitor/stats/memory/data/virtual_memory_used"
unit_of_measurement: 'GB'
icon: mdi:memory
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/xia-desktop/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "Tina Desktop - Virtual Memory Available (GB)"
unique_id: 2f91de98-338c-4d21-b164-1d1970a4d220
state_topic: "iotlink/workgroup/xia-desktop/monitor/stats/memory/data/virtual_memory_available"
unit_of_measurement: 'GB'
icon: mdi:memory
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/xia-desktop/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
script:
tina_desktop_wake:
# To enable see https://www.home-assistant.io/components/wake_on_lan/
alias: "Tina Desktop - Wake"
sequence:
- service: wake_on_lan.send_magic_packet
data:
mac: "B4:2E:99:A8:CF:88"
tina_desktop_shutdown:
alias: "Tina Desktop - Shutdown"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/xia-desktop/commands/shutdown"
payload: ""
tina_desktop_suspend:
alias: "Tina Desktop - Suspend"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/xia-desktop/commands/suspend"
payload: ""
tina_desktop_hibernate:
alias: "Tina Desktop - Hibernate"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/xia-desktop/commands/hibernate"
payload: ""
tina_desktop_reboot:
alias: "Tina Desktop - Reboot"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/xia-desktop/commands/reboot"
payload: ""
tina_desktop_lock:
alias: "Tina Desktop - Lock"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/xia-desktop/commands/lock"
payload: ""
tina_desktop_logoff:
alias: "Tina Desktop - Logoff"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/xia-desktop/commands/logoff"
payload: ""
tina_desktop_vol_mute:
alias: "Tina Desktop - Toggle Mute"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/xia-desktop/commands/volume/mute"
payload: ""
tina_desktop_vol_max:
alias: "Tina Desktop - Vol Max"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/xia-desktop/commands/volume/set"
payload: "100"
tina_desktop_displays_on:
alias: "Tina Desktop - Displays ON"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/xia-desktop/commands/displays/on"
payload: ""
tina_desktop_displays_off:
alias: "Tina Desktop - Displays OFF"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/xia-desktop/commands/displays/off"
payload: ""
tina_desktop_refresh:
alias: "Tina Desktop - Refresh"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/xia-desktop/refresh"
payload: ""
- service: button.press
target:
entity_id:
- button.xia_desktop_hassagent_user_refresh
- button.xia_desktop_hassagent_satellite_refresh
tina_desktop_notify:
alias: "Tina Desktop - Notify"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/xia-desktop/commands/notify"
payload: '{ "title": "My Notification Title", "message": "This is an example of notification using IOT Link", "launchParams": "toast://open/https://iotlink.gitlab.io" }'
tina_desktop_run_chrome:
alias: "Tina Desktop - Run Chrome"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/xia-desktop/commands/run"
payload: '{ "command": "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe", "args": "https://iotlink.gitlab.io", "path": "C:\\Program Files (x86)\\Google\\Chrome\\Application", "user": "", "visible": true, "fallback": true }'
+328
View File
@@ -0,0 +1,328 @@
mqtt:
sensor:
- name: "Tony Desktop - GPU Temperature"
unique_id: 8c91e08e-2b30-4700-b012-54722b931c8c
state_topic: "iotlink/workgroup/tony-asus/monitor/stats/gpu_nvidia/temperatures/gpu_core"
unit_of_measurement: 'C'
icon: mdi:thermometer
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/tony-asus/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "Tony Desktop - CPU Temperature"
unique_id: 8d27e4d8-1986-4ed5-af48-6f88a8740c3c
state_topic: "iotlink/workgroup/tony-asus/monitor/stats/cpu/temperatures/core_(tctl/tdie)"
unit_of_measurement: 'C'
icon: mdi:thermometer
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/tony-asus/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "Tony Desktop - Storage C Temperature"
unique_id: 26822d74-0fa9-46b7-865c-74a29baf8735
state_topic: "iotlink/workgroup/tony-asus/monitor/stats/storages/wd_black_sn770_2tb/temperatue"
unit_of_measurement: 'C'
icon: mdi:thermometer
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/tony-asus/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "Tony Desktop - Storage S Temperature"
unique_id: cbaca0c0-6dcd-4e4c-b5ae-90b0a8d7a25b
state_topic: "iotlink/workgroup/tony-asus/monitor/stats/storages/san-disk_sd8sb8u512g1002/temperatue"
unit_of_measurement: 'C'
icon: mdi:thermometer
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/tony-asus/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "Tony Desktop - Storage V Temperature"
unique_id: 6b425eb2-25f3-486c-818a-eb92c3e8fadf
state_topic: "iotlink/workgroup/tony-asus/monitor/stats/storages/wdc__wdbnce0010pnc/temperatue"
unit_of_measurement: 'C'
icon: mdi:thermometer
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/tony-asus/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "Tony Desktop - Storage E Temperature"
unique_id: 723c308f-535f-4624-8e46-d7e4f344079c
state_topic: "iotlink/workgroup/tony-asus/monitor/stats/storages/ct1000p1ssd8/temperatue"
unit_of_measurement: 'C'
icon: mdi:thermometer
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/tony-asus/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "Tony Desktop - Memory Usage"
unique_id: f380ab55-7cde-4b8c-922f-ff113cdbff77
state_topic: "iotlink/workgroup/tony-asus/monitor/stats/memory/load/memory"
unit_of_measurement: '%'
icon: mdi:memory
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/tony-asus/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "Tony Desktop - Virtual Memory Usage"
unique_id: b2ddd600-7963-4f47-9d1d-7f74a7cdc6fa
state_topic: "iotlink/workgroup/tony-asus/monitor/stats/memory/load/virtual_memory"
unit_of_measurement: '%'
icon: mdi:memory
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/tony-asus/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "Tony Desktop - GPU Core Load"
unique_id: 6ead9e42-2ef0-440f-8e36-cc5f5f5c3776
state_topic: "iotlink/workgroup/tony-asus/monitor/stats/gpu_nvidia/load/gpu_core"
unit_of_measurement: '%'
icon: mdi:speedometer
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/tony-asus/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "Tony Desktop - GPU VRAM Usage"
unique_id: 7fa952df-8a8d-44de-9393-d01ae648625e
state_topic: "iotlink/workgroup/tony-asus/monitor/stats/gpu_nvidia/load/gpu_memory"
unit_of_measurement: '%'
icon: mdi:memory
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/tony-asus/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "Tony Desktop - GPU Video Engine Load"
unique_id: 01de9b74-f28d-4443-893c-6d0179fa831f
state_topic: "iotlink/workgroup/tony-asus/monitor/stats/gpu_nvidia/load/gpu_video_engine"
unit_of_measurement: '%'
icon: mdi:speedometer
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/tony-asus/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "Tony Desktop - GPU Memory Controller Load"
unique_id: 96b6511b-95bf-4baf-a305-9b6f14dadde7
state_topic: "iotlink/workgroup/tony-asus/monitor/stats/gpu_nvidia/load/gpu_memory_controller"
unit_of_measurement: '%'
icon: mdi:speedometer
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/tony-asus/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "Tony Desktop - GPU Memory Total"
unique_id: 8ec11ad0-e184-4f0d-886f-62e9eaf57bd4
state_topic: "iotlink/workgroup/tony-asus/monitor/stats/gpu_nvidia/data/gpu_memory_total"
unit_of_measurement: 'MB'
icon: mdi:memory
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/tony-asus/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "Tony Desktop - GPU Memory Free"
unique_id: 3854f3e3-ec12-4226-b768-4fe25b41dda9
state_topic: "iotlink/workgroup/tony-asus/monitor/stats/gpu_nvidia/data/gpu_memory_free"
unit_of_measurement: 'MB'
icon: mdi:memory
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/tony-asus/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "Tony Desktop - GPU Memory Used"
unique_id: 4c75e640-76ee-41f3-91ee-1406f275b7ac
state_topic: "iotlink/workgroup/tony-asus/monitor/stats/gpu_nvidia/data/gpu_memory_used"
unit_of_measurement: 'MB'
icon: mdi:memory
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/tony-asus/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "Tony Desktop - Memory Used (GB)"
unique_id: 90123c89-2edc-4adc-840b-3704e7bd8b56
state_topic: "iotlink/workgroup/tony-asus/monitor/stats/memory/data/memory_used"
unit_of_measurement: 'GB'
icon: mdi:memory
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/tony-asus/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "Tony Desktop - Memory Available (GB)"
unique_id: ef727165-0da8-47f5-a51e-dcdd2cabda60
state_topic: "iotlink/workgroup/tony-asus/monitor/stats/memory/data/memory_available"
unit_of_measurement: 'GB'
icon: mdi:memory
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/tony-asus/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "Tony Desktop - Virtual Memory Used (GB)"
unique_id: 0e7dfe10-fe77-430b-8bc1-022e663b83d3
state_topic: "iotlink/workgroup/tony-asus/monitor/stats/memory/data/virtual_memory_used"
unit_of_measurement: 'GB'
icon: mdi:memory
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/tony-asus/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "Tony Desktop - Virtual Memory Available (GB)"
unique_id: 3b812f43-7c03-4898-b407-b9edd558aec1
state_topic: "iotlink/workgroup/tony-asus/monitor/stats/memory/data/virtual_memory_available"
unit_of_measurement: 'GB'
icon: mdi:memory
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/tony-asus/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
script:
tony_desktop_wake:
# To enable see https://www.home-assistant.io/components/wake_on_lan/
alias: "Tony Desktop - Wake"
sequence:
- service: wake_on_lan.send_magic_packet
data:
mac: "18:C0:4D:82:00:95"
tony_desktop_shutdown:
alias: "Tony Desktop - Shutdown"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/tony-asus/commands/shutdown"
payload: ""
tony_desktop_suspend:
alias: "Tony Desktop - Suspend"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/tony-asus/commands/suspend"
payload: ""
tony_desktop_hibernate:
alias: "Tony Desktop - Hibernate"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/tony-asus/commands/hibernate"
payload: ""
tony_desktop_reboot:
alias: "Tony Desktop - Reboot"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/tony-asus/commands/reboot"
payload: ""
tony_desktop_lock:
alias: "Tony Desktop - Lock"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/tony-asus/commands/lock"
payload: ""
tony_desktop_logoff:
alias: "Tony Desktop - Logoff"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/tony-asus/commands/logoff"
payload: ""
tony_desktop_vol_mute:
alias: "Tony Desktop - Toggle Mute"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/tony-asus/commands/volume/mute"
payload: ""
tony_desktop_vol_max:
alias: "Tony Desktop - Vol Max"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/tony-asus/commands/volume/set"
payload: "100"
tony_desktop_displays_on:
alias: "Tony Desktop - Displays ON"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/tony-asus/commands/displays/on"
payload: ""
tony_desktop_displays_off:
alias: "Tony Desktop - Displays OFF"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/tony-asus/commands/displays/off"
payload: ""
tony_desktop_refresh:
alias: "Tony Desktop - Refresh"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/tony-asus/refresh"
payload: ""
- service: button.press
target:
entity_id:
- button.tony_asus_hassagent_user_refresh
- button.tony_asus_hassagent_satellite_refresh
tony_desktop_notify:
alias: "Tony Desktop - Notify"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/tony-asus/commands/notify"
payload: '{ "title": "My Notification Title", "message": "This is an example of notification using IOT Link", "launchParams": "toast://open/https://iotlink.gitlab.io" }'
tony_desktop_run_chrome:
alias: "Tony Desktop - Run Chrome"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/tony-asus/commands/run"
payload: '{ "command": "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe", "args": "https://iotlink.gitlab.io", "path": "C:\\Program Files\\Google\\Chrome\\Application", "user": "", "visible": true, "fallback": true }'
+5 -21
View File
@@ -90,33 +90,17 @@ input_datetime:
sensor: sensor:
- platform: rest - platform: rest
name: Kallen Tasks name: Kallen Tasks
unique_id: 77045665-9222-4a6b-851f-6d9b50110107
method: GET method: GET
resource: 'https://api.todoist.com/api/v1/projects/2285969005/full' resource: 'https://api.todoist.com/sync/v9/projects/get_data'
headers:
Authorization: !secret todoist_api_token
Accept: application/json
value_template: '{{ value_json.project.id }}'
json_attributes:
- project
- tasks
- sections
scan_interval: 60
- platform: rest
name: Kallen Tasks Comments
unique_id: ae3178ad-439a-49f7-8c56-2fa866afaba5
method: GET
resource: 'https://api.todoist.com/api/v1/comments'
params: params:
project_id: 2285969005 project_id: 2285969005
headers: headers:
Authorization: !secret todoist_api_token Authorization: !secret todoist_api_token
Accept: application/json value_template: '{{value_json[''project''][''id'']}}'
value_template: '{{ value_json.results | length }}'
json_attributes: json_attributes:
- results - project
scan_interval: 60 - items
scan_interval: 30
automation: automation:
- id: 94b57d79-efe0-4f34-b5e3-baeaa5eea9f4 - id: 94b57d79-efe0-4f34-b5e3-baeaa5eea9f4
+45 -45
View File
@@ -822,51 +822,51 @@ template:
mdi:lightbulb mdi:lightbulb
{% endif %} {% endif %}
# switch: switch:
# - platform: animated_scenes - platform: animated_scenes
# name: Christmas name: Christmas
# restore: False restore: False
# restore_power: False restore_power: False
# ignore_off: False ignore_off: False
# lights: lights:
# - light.front_porch_light - light.front_porch_light
# colors: colors:
# - color_type: rgb_color - color_type: rgb_color
# color: [255,0,0] color: [255,0,0]
# brightness: 255 brightness: 255
# - color_type: rgb_color - color_type: rgb_color
# color: [0,255,0] color: [0,255,0]
# brightness: 255 brightness: 255
# transition: 10 transition: 10
# change_frequency: 60 change_frequency: 60
# change_amount: all change_amount: all
# change_sequence: True change_sequence: True
# animate_brightness: True animate_brightness: True
# animate_color: True animate_color: True
# - platform: animated_scenes - platform: animated_scenes
# name: Christmas Day name: Christmas Day
# restore: False restore: False
# restore_power: False restore_power: False
# ignore_off: False ignore_off: False
# lights: lights:
# - light.living_room_color_1 - light.living_room_color_1
# - light.living_room_color_2 - light.living_room_color_2
# - light.living_room_color_3 - light.living_room_color_3
# - light.tina_lamp_top - light.tina_lamp_top
# - light.tina_lamp_side - light.tina_lamp_side
# colors: colors:
# - color_type: rgb_color - color_type: rgb_color
# color: [255,0,0] color: [255,0,0]
# brightness: 255 brightness: 255
# - color_type: rgb_color - color_type: rgb_color
# color: [0,255,0] color: [0,255,0]
# brightness: 255 brightness: 255
# transition: 1 transition: 1
# change_frequency: 5 change_frequency: 5
# change_amount: 3 change_amount: 3
# change_sequence: False change_sequence: False
# animate_brightness: True animate_brightness: True
# animate_color: True animate_color: True
#! Unless there is a good reason, do not define multi-room scenes below. #! Unless there is a good reason, do not define multi-room scenes below.
#! Use scripts instead, to avoid some straight-up haunted house bullshit... #! Use scripts instead, to avoid some straight-up haunted house bullshit...
-162
View File
@@ -79,9 +79,6 @@ input_boolean:
tv_notifications: tv_notifications:
name: TV Notifications name: TV Notifications
icon: mdi:message icon: mdi:message
pc_notifications:
name: PC Notifications
icon: mdi:desktop-classic
input_select: input_select:
select_phones: select_phones:
@@ -106,19 +103,6 @@ input_select:
- All - All
initial: None initial: None
icon: mdi:television-play icon: mdi:television-play
select_pcs:
name: Select PCs
options:
- None
- Tony
- Tina
- Kallen
- Parents
- Nerds
- Not Tony
- All
initial: None
icon: mdi:desktop-classic
text_notification_priority_level: text_notification_priority_level:
name: Notification Priority Level name: Notification Priority Level
options: options:
@@ -368,27 +352,6 @@ notify:
services: services:
- service: alexa_media_living_room_echo_dot - service: alexa_media_living_room_echo_dot
- service: alexa_media_basement_echo_dot - service: alexa_media_basement_echo_dot
- name: pc_parents
platform: group
services:
- service: tony_asus
- service: xia_desktop
- name: pc_nerds
platform: group
services:
- service: tony_asus
- service: kallen_desktop
- name: pc_all
platform: group
services:
- service: tony_asus
- service: xia_desktop
- service: kallen_desktop
- name: pc_not_tony
platform: group
services:
- service: xia_desktop
- service: kallen_desktop
script: script:
volume_reset: volume_reset:
@@ -842,131 +805,6 @@ script:
message: '{{ message }}' message: '{{ message }}'
data: '{{ data|default("{}") }}' data: '{{ data|default("{}") }}'
pc_notify:
alias: 'PC Notify'
description: 'Use this to send popup text notifications to PCs in the house via HASS.Agent'
mode: queued
max: 20
fields:
who:
name: 'Who'
description: 'Which PC to send the notification to'
example: 'tony_pc, tina_pc, kallen_pc, all_pcs'
required: true
selector:
select:
options:
- tony
- tina
- kallen
- parents
- nerds
- not_tony
- all
title:
name: 'Title'
description: 'The title of the notification'
example: 'Greetings'
required: true
selector:
text:
message:
name: 'Message'
description: 'The body of the notification'
example: 'I am notifying you that this is a notification'
required: true
selector:
text:
multiline: true
actions:
name: 'Actions'
description: 'A list of actions for the notification'
required: false
selector:
object:
sequence:
- variables:
mod_who: >
{% set tony_notify = is_state('sensor.tony_asus_usernotification','AcceptsNotifications') %}
{% set tina_notify = is_state('sensor.xia_desktop_usernotification','AcceptsNotifications') %}
{% set kallen_notify = is_state('sensor.kallen_desktop_usernotification','AcceptsNotifications') %}
{% if who == 'tony' and not tony_notify %}
none
{% elif who == 'tina' and not tina_notify %}
none
{% elif who == 'kallen' and not kallen_notify %}
none
{% elif who == 'parents' %}
{% if tony_notify and not tina_notify %}
tony
{% elif not tony_notify and tina_notify %}
tina
{% elif not tony_notify and not tina_notify %}
none
{% else %}
parents
{% endif %}
{% elif who == 'nerds' %}
{% if tony_notify and not kallen_notify %}
tony
{% elif not tony_notify and kallen_notify %}
kallen
{% elif not tony_notify and not kallen_notify %}
none
{% else %}
nerds
{% endif %}
{% elif who == 'all' %}
{% if tony_notify %}
{% if tina_notify and not kallen_notify %}
parents
{% elif kallen_notify and not tina_notify %}
nerds
{% elif not tina_notify and not kallen_notify %}
tony
{% else %}
all
{% endif %}
{% elif tina_notify %}
{% if kallen_notify %}
not_tony
{% else %}
tina
{% endif %}
{% elif kallen_notify %}
kallen
{% else %}
none
{% endif %}
{% else %}
{{ who }}
{% endif %}
- if:
- condition: template
value_template: "{{ mod_who != 'none' and is_state('input_boolean.pc_notifications','on') }}"
then:
- service: >
{% if mod_who == 'tony' %}
notify.tony_asus
{% elif mod_who == 'tina' %}
notify.xia_desktop
{% elif mod_who == 'kallen' %}
notify.kallen_desktop
{% elif mod_who == 'parents' %}
notify.pc_parents
{% elif mod_who == 'nerds' %}
notify.pc_nerds
{% elif mod_who == 'not_tony' %}
notify.pc_not_tony
{% elif mod_who == 'all' %}
notify.pc_all
{% endif %}
data:
title: '{{ title }}'
message: '{{ message }}'
data:
actions: '{{ actions|default("{}") }}'
text_alert_image: text_alert_image:
alias: 'Text Alert Image' alias: 'Text Alert Image'
sequence: sequence:
+3 -3
View File
@@ -31,15 +31,15 @@ input_datetime:
input_number: input_number:
rabbit_feeding_interval: rabbit_feeding_interval:
name: Rabbit Feeding Interval name: Rabbit Feeding Interval
min: 1 min: 0
max: 24 max: 24
step: 1 step: 1
unit_of_measurement: hours unit_of_measurement: hours
icon: mdi:rabbit icon: mdi:rabbit
rabbit_hutch_cleaning_interval: rabbit_hutch_cleaning_interval:
name: Rabbit Hutch Cleaning Interval name: Rabbit Hutch Cleaning Interval
min: 1 min: 0
max: 14 max: 3
step: 1 step: 1
unit_of_measurement: days unit_of_measurement: days
icon: mdi:rabbit icon: mdi:rabbit
+1 -1
View File
@@ -376,7 +376,7 @@ intent_script:
speech: speech:
text: > text: >
{% set location = states(person) %} {% set location = states(person) %}
{% set name = entity_name(person) %} {% set name = state_attr(person,'friendly_name') %}
{% if location in ['away','not_home'] %} {% if location in ['away','not_home'] %}
{{ name }} is currently away from home {{ name }} is currently away from home
{% elif location in ['unavailable','unknown'] %} {% elif location in ['unavailable','unknown'] %}
+46 -66
View File
@@ -51,100 +51,80 @@ input_datetime:
has_date: false has_date: false
has_time: true has_time: true
template: alarm_control_panel:
- alarm_control_panel: - platform: template
- name: Nerd Home Alarm Panel panels:
nerdhome_alarm_panel:
name: Nerd Home Alarm Panel
unique_id: d7eb8335-4998-49bf-957e-231aeed35179 unique_id: d7eb8335-4998-49bf-957e-231aeed35179
value_template: "{{ states('alarm_control_panel.stratton_ave_alarm') }}"
code_arm_required: false code_arm_required: false
arm_away: arm_away:
- if: - if:
- condition: state - condition: state
entity_id: entity_id: binary_sensor.security_faults
- binary_sensor.security_faults
state: 'off' state: 'off'
match: all
then: then:
- target: - service: alarm_control_panel.alarm_arm_away
entity_id: target:
- alarm_control_panel.stratton_ave_alarm entity_id: alarm_control_panel.stratton_ave_alarm
data: data:
code: !secret ring_alarm_code code: !secret ring_alarm_code
action: alarm_control_panel.alarm_arm_away - service: input_boolean.turn_off
- target: target:
entity_id: entity_id:
- input_boolean.lockdown_issue - input_boolean.lockdown_issue
action: input_boolean.turn_off
else: else:
- target: - service: input_boolean.turn_on
entity_id: target:
- input_boolean.lockdown_issue entity_id: input_boolean.lockdown_issue
action: input_boolean.turn_on
arm_home: arm_home:
- if: - if:
- condition: state - condition: state
entity_id: entity_id: binary_sensor.security_faults
- binary_sensor.security_faults
state: 'off' state: 'off'
match: all
then: then:
- target: - service: alarm_control_panel.alarm_arm_home
entity_id: target:
- alarm_control_panel.stratton_ave_alarm entity_id: alarm_control_panel.stratton_ave_alarm
data: data:
code: !secret ring_alarm_code code: !secret ring_alarm_code
action: alarm_control_panel.alarm_arm_home - service: input_boolean.turn_off
- target: target:
entity_id: entity_id:
- input_boolean.lockdown_issue - input_boolean.lockdown_issue
action: input_boolean.turn_off
- if: - if:
- condition: template - condition: template
value_template: "{{ silent != 1 and is_state('input_boolean.vacation_mode','off') }}" value_template: "{{ silent != 1 and is_state('input_boolean.vacation_mode','off') }}"
then: then:
- data: - service: script.status_annc
data:
who: living_room who: living_room
call_security_armed: 1 call_security_armed: 1
action: script.status_annc
else: else:
- target: - service: input_boolean.turn_on
entity_id: target:
- input_boolean.lockdown_issue entity_id: input_boolean.lockdown_issue
action: input_boolean.turn_on
disarm: disarm:
- target: - service: alarm_control_panel.alarm_disarm
entity_id: target:
- alarm_control_panel.stratton_ave_alarm entity_id: alarm_control_panel.stratton_ave_alarm
data: data:
code: !secret ring_alarm_code code: !secret ring_alarm_code
action: alarm_control_panel.alarm_disarm - service: input_boolean.turn_off
- target: target:
entity_id: entity_id: input_boolean.lockdown_issue
- input_boolean.lockdown_issue
action: input_boolean.turn_off
- if: - if:
- condition: template - condition: template
value_template: "{{ silent != 1 and is_state('input_boolean.vacation_mode','off') }}" value_template: "{{ silent != 1 and is_state('input_boolean.vacation_mode','off') }}"
then: then:
- data: - service: script.status_annc
data:
who: living_room who: living_room
call_security_not_armed: 1 call_security_not_armed: 1
action: script.status_annc
code_format: number template:
default_entity_id: alarm_control_panel.nerdhome_alarm_panel
state: "{{ states('alarm_control_panel.stratton_ave_alarm') }}"
- binary_sensor: - binary_sensor:
- name: Windows
unique_id: 9ff34cd4-c450-45d2-934a-b4a9fd8b93b2
device_class: window
state: >
{% set windows_open = states.binary_sensor
| selectattr('attributes.device_class','eq','window')
| selectattr('attributes.entity_id','eq',null)
| rejectattr('entity_id','search','windows')
| selectattr('state','eq','on')
| list
| count %}
{{ windows_open > 0 }}
- name: Living Room Windows - name: Living Room Windows
unique_id: fb4ab414-3ceb-44d2-8276-66027a936329 unique_id: fb4ab414-3ceb-44d2-8276-66027a936329
device_class: window device_class: window
@@ -279,7 +259,7 @@ template:
{% endfor %} {% endfor %}
{{ fn.friendly }} {{ fn.friendly }}
icon: >- icon: >-
{% if this.state | int > 0 %} {% if states('sensor.window_faults') | int > 0 %}
mdi:window-open mdi:window-open
{% else %} {% else %}
mdi:window-closed mdi:window-closed
@@ -343,7 +323,7 @@ template:
{% endfor %} {% endfor %}
{{ fn.friendly }} {{ fn.friendly }}
icon: >- icon: >-
{% if this.state | int > 0 %} {% if states('sensor.door_faults') | int > 0 %}
mdi:door-open mdi:door-open
{% else %} {% else %}
mdi:door-closed mdi:door-closed
@@ -373,7 +353,7 @@ template:
| list %} | list %}
{{ window_names }} {{ window_names }}
icon: >- icon: >-
{% if this.state | int == 0 %} {% if states('sensor.windows_open') | int == 0 %}
mdi:window-closed mdi:window-closed
{% else %} {% else %}
mdi:window-open mdi:window-open
@@ -400,7 +380,7 @@ template:
| list %} | list %}
{{ window_names }} {{ window_names }}
icon: >- icon: >-
{% if this.state | int == 0 %} {% if states('sensor.front_windows_open') | int == 0 %}
mdi:window-closed mdi:window-closed
{% else %} {% else %}
mdi:window-open mdi:window-open
@@ -426,7 +406,7 @@ template:
| list | count %} | list | count %}
{{ windows_open }} {{ windows_open }}
icon: > icon: >
{% if this.state | int == 0 %} {% if states('sensor.living_room_windows_open') | int == 0 %}
mdi:window-closed mdi:window-closed
{% else %} {% else %}
mdi:window-open mdi:window-open
@@ -450,7 +430,7 @@ template:
| list %} | list %}
{{ door_names }} {{ door_names }}
icon: >- icon: >-
{% if this.state | int == 0 %} {% if states('sensor.doors_open') | int == 0 %}
mdi:door-closed mdi:door-closed
{% else %} {% else %}
mdi:door-open mdi:door-open
@@ -484,7 +464,7 @@ template:
| list %} | list %}
{{ interior }} {{ interior }}
icon: >- icon: >-
{% if this.state | int == 0 %} {% if states('sensor.interior_doors') | int == 0 %}
mdi:door-closed mdi:door-closed
{% else %} {% else %}
mdi:door-open mdi:door-open
@@ -494,12 +474,12 @@ template:
unit_of_measurement: 'faults' unit_of_measurement: 'faults'
state: >- state: >-
{% set window_faults = states('sensor.window_faults') | int %} {% set window_faults = states('sensor.window_faults') | int %}
{% set door_faults = states('sensor.doors_open') | int %} {% set door_faults = states('sensor.door_faults') | int %}
{{ door_faults + window_faults }} {{ door_faults + window_faults }}
attributes: attributes:
faulted: > faulted: >
{% set windows = state_attr('sensor.window_faults','faulted') %} {% set windows = state_attr('sensor.window_faults','faulted') %}
{% set doors = state_attr('sensor.doors_open','faulted') %} {% set doors = state_attr('sensor.door_faults','faulted') %}
{{ doors + windows }} {{ doors + windows }}
icon: >- icon: >-
{% if states('sensor.total_faults') | int == 0 %} {% if states('sensor.total_faults') | int == 0 %}
@@ -515,7 +495,7 @@ template:
{% set doors_open = states('sensor.doors_open') | int %} {% set doors_open = states('sensor.doors_open') | int %}
{{ doors_open + windows_open }} {{ doors_open + windows_open }}
icon: >- icon: >-
{% if this.state | int == 0 %} {% if states('sensor.air_leaks') | int == 0 %}
mdi:leak-off mdi:leak-off
{% else %} {% else %}
mdi:leak mdi:leak
+3 -3
View File
@@ -156,7 +156,7 @@ template:
unique_id: 87653f3a-203c-4dbf-87e8-70bcacf6eb22 unique_id: 87653f3a-203c-4dbf-87e8-70bcacf6eb22
state: > state: >
{% from 'sports.jinja' import sports_inhibit %} {% from 'sports.jinja' import sports_inhibit %}
{{ state_attr('sensor.minnesota_golden_gophers_hockey','opponent_abbr') in ['MICH','MNST'] or sports_inhibit('sensor.minnesota_golden_gophers_hockey') }} {{ sports_inhibit('sensor.minnesota_golden_gophers_hockey') }}
- name: Minnesota Golden Gophers Hockey Event Today - name: Minnesota Golden Gophers Hockey Event Today
unique_id: 1f4ff7eb-cbc9-4c81-a5c9-6523b5fb52ff unique_id: 1f4ff7eb-cbc9-4c81-a5c9-6523b5fb52ff
state: > state: >
@@ -166,7 +166,7 @@ template:
unique_id: bd15870d-bccb-4c52-9690-473c31bb4090 unique_id: bd15870d-bccb-4c52-9690-473c31bb4090
state: > state: >
{% from 'sports.jinja' import sports_inhibit %} {% from 'sports.jinja' import sports_inhibit %}
{{ state_attr('sensor.minnesota_state_mavericks_hockey','opponent_abbr') in ['MICH'] or sports_inhibit('sensor.minnesota_state_mavericks_hockey') }} {{ sports_inhibit('sensor.minnesota_state_mavericks_hockey') }}
- name: Minnesota State Mavericks Hockey Event Today - name: Minnesota State Mavericks Hockey Event Today
unique_id: e403be15-3ff2-47b1-8398-70f8ccb65026 unique_id: e403be15-3ff2-47b1-8398-70f8ccb65026
state: > state: >
@@ -181,7 +181,7 @@ intent_script:
{% set inhibit = "binary_sensor." + team + "_inhibit" %} {% set inhibit = "binary_sensor." + team + "_inhibit" %}
{% set sensor = "sensor." + team %} {% set sensor = "sensor." + team %}
{% if is_state(inhibit,'on') %} {% if is_state(inhibit,'on') %}
I do not have any information about the {{ entity_name(sensor) }} at this time. I do not have any information about the {{ state_attr(team,'friendly_name') }} at this time.
{% elif states(sensor) in ["NOT_FOUND"] %} {% elif states(sensor) in ["NOT_FOUND"] %}
They do not appear to have a game scheduled for today. They do not appear to have a game scheduled for today.
{% else %} {% else %}
+5 -9
View File
@@ -2,9 +2,6 @@ input_boolean:
server_maintenance: server_maintenance:
name: Server Maintenance name: Server Maintenance
icon: mdi:wrench-clock icon: mdi:wrench-clock
recorder:
name: Recorder
icon: mdi:database
input_select: input_select:
log_level: log_level:
@@ -95,17 +92,16 @@ template:
power_usage: "{{ states('sensor.basement_server_power') | int }}W" power_usage: "{{ states('sensor.basement_server_power') | int }}W"
- name: Tony Desktop Idle - name: Tony Desktop Idle
unique_id: f0ace986-a874-4fb0-ad29-8f3ebf95d8cc unique_id: f0ace986-a874-4fb0-ad29-8f3ebf95d8cc
state: > state: "{{ (states('sensor.tony_asus_system_idle_time') | int) > (states('input_number.basement_computers_idle_time') | int * 60) }}"
{% from 'time.jinja' import time_diff %}
{{ (time_diff('sensor.tony_asus_last_active') | int) > (states('input_number.basement_computers_idle_time') | int * 60) }}
- name: Tina Desktop Idle - name: Tina Desktop Idle
unique_id: 1933c638-c94b-468e-bb7a-c1c5b36c3651 unique_id: 1933c638-c94b-468e-bb7a-c1c5b36c3651
state: > state: "{{ (states('sensor.xia_desktop_system_idle_time') | int) > (states('input_number.first_floor_computers_idle_time') | int * 60) }}"
{% from 'time.jinja' import time_diff %}
{{ (time_diff('sensor.xia_desktop_last_active') | int) > (states('input_number.first_floor_computers_idle_time') | int * 60) }}
- name: Kallen Desktop Idle - name: Kallen Desktop Idle
unique_id: 680c6ae3-2ed2-451e-858b-2aee688af461 unique_id: 680c6ae3-2ed2-451e-858b-2aee688af461
state: "{{ (states('sensor.kallen_desktop_system_idle_time') | int) > (states('input_number.basement_computers_idle_time') | int * 60) }}" state: "{{ (states('sensor.kallen_desktop_system_idle_time') | int) > (states('input_number.basement_computers_idle_time') | int * 60) }}"
- name: Asus Laptop Idle
unique_id: 7d8eb80a-0a2e-48a9-84b3-33175304dd95
state: "{{ states('sensor.asus_laptop_system_idle_time') | int > 1800 }}"
# - platform: influxdb # - platform: influxdb
# host: 192.168.1.26 # host: 192.168.1.26
-176
View File
@@ -1,176 +0,0 @@
template:
sensor:
- name: Xia Desktop - Memory Used
unique_id: 9890f64e-d530-4824-97f7-0d459acaa97f
unit_of_measurement: 'MB'
icon: mdi:memory
state: >
{% set sensor_gb = states('sensor.xia_desktop_memory_used_gb') | float %}
{{ (sensor_gb * 1024) | round(0) | int }}
availability: >
{{ states('sensor.xia_desktop_memory_used_gb') not in ['unknown', 'unavailable'] }}
- name: Xia Desktop - Memory Available
unique_id: bca791c1-deac-4054-bf06-a25cdb72871a
unit_of_measurement: 'MB'
icon: mdi:memory
state: >
{% set sensor_gb = states('sensor.xia_desktop_memory_available_gb') | float %}
{{ (sensor_gb * 1024) | round(0) | int }}
availability: >
{{ states('sensor.xia_desktop_memory_available_gb') not in ['unknown', 'unavailable'] }}
- name: Xia Desktop - Virtual Memory Used
unique_id: dea6cc3d-f4d8-436c-8638-6070bb6c178a
unit_of_measurement: 'MB'
icon: mdi:memory
state: >
{% set sensor_gb = states('sensor.xia_desktop_virtual_memory_used_gb') | float %}
{{ (sensor_gb * 1024) | round(0) | int }}
availability: >
{{ states('sensor.xia_desktop_virtual_memory_used_gb') not in ['unknown', 'unavailable'] }}
- name: Xia Desktop - Virtual Memory Available
unique_id: 5d6ed1a7-9af9-440f-bd75-feac8998c536
unit_of_measurement: 'MB'
icon: mdi:memory
state: >
{% set sensor_gb = states('sensor.xia_desktop_virtual_memory_available_gb') | float %}
{{ (sensor_gb * 1024) | round(0) | int }}
availability: >
{{ states('sensor.xia_desktop_virtual_memory_available_gb') not in ['unknown', 'unavailable'] }}
- name: Xia Desktop - Storage C Available Free Space
unique_id: 8b23c84e-f3ba-4ddd-ac77-6c7a84851f0f
unit_of_measurement: 'GB'
icon: mdi:harddisk
state: >
{% set sensor_mb = state_attr('sensor.xia_desktop_storage_c','AvailableSpaceMB') | int %}
{{ (sensor_mb / 1024) | round(0) | int }}
availability: >
{{ states('sensor.xia_desktop_storage_c') not in ['unknown', 'unavailable'] }}
- name: Xia Desktop - Storage C Used Space
unique_id: 3de6e5e8-4fbd-49d9-8761-925415ad46ed
unit_of_measurement: 'GB'
icon: mdi:harddisk
state: >
{% set sensor_mb = state_attr('sensor.xia_desktop_storage_c','UsedSpaceMB') | int %}
{{ (sensor_mb / 1024) | round(0) | int }}
availability: >
{{ states('sensor.xia_desktop_storage_c') not in ['unknown', 'unavailable'] }}
- name: Xia Desktop - Storage D Available Free Space
unique_id: d38bb654-8981-44d6-b07b-e270c2a3903c
unit_of_measurement: 'GB'
icon: mdi:harddisk
state: >
{% set sensor_mb = state_attr('sensor.xia_desktop_storage_d','AvailableSpaceMB') | int %}
{{ (sensor_mb / 1024) | round(0) | int }}
availability: >
{{ states('sensor.xia_desktop_storage_d') not in ['unknown', 'unavailable'] }}
- name: Xia Desktop - Storage D Used Space
unique_id: bfbd5783-78ac-410b-8b41-e000c1b06283
unit_of_measurement: 'GB'
icon: mdi:harddisk
state: >
{% set sensor_mb = state_attr('sensor.xia_desktop_storage_d','UsedSpaceMB') | int %}
{{ (sensor_mb / 1024) | round(0) | int }}
availability: >
{{ states('sensor.xia_desktop_storage_d') not in ['unknown', 'unavailable'] }}
script:
tina_desktop_wake:
# To enable see https://www.home-assistant.io/components/wake_on_lan/
alias: "Tina Desktop - Wake"
sequence:
- service: wake_on_lan.send_magic_packet
data:
mac: "B4:2E:99:A8:CF:88"
tina_desktop_suspend:
alias: "Tina Desktop - Suspend"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/xia-desktop/commands/suspend"
payload: ""
tina_desktop_hibernate:
alias: "Tina Desktop - Hibernate"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/xia-desktop/commands/hibernate"
payload: ""
tina_desktop_lock:
alias: "Tina Desktop - Lock"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/xia-desktop/commands/lock"
payload: ""
tina_desktop_logoff:
alias: "Tina Desktop - Logoff"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/xia-desktop/commands/logoff"
payload: ""
tina_desktop_vol_mute:
alias: "Tina Desktop - Toggle Mute"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/xia-desktop/commands/volume/mute"
payload: ""
tina_desktop_vol_max:
alias: "Tina Desktop - Vol Max"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/xia-desktop/commands/volume/set"
payload: "100"
tina_desktop_displays_on:
alias: "Tina Desktop - Displays ON"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/xia-desktop/commands/displays/on"
payload: ""
tina_desktop_displays_off:
alias: "Tina Desktop - Displays OFF"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/xia-desktop/commands/displays/off"
payload: ""
tina_desktop_refresh:
alias: "Tina Desktop - Refresh"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/xia-desktop/refresh"
payload: ""
- service: button.press
target:
entity_id:
- button.xia_desktop_hassagent_user_refresh
- button.xia_desktop_hassagent_satellite_refresh
tina_desktop_notify:
alias: "Tina Desktop - Notify"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/xia-desktop/commands/notify"
payload: '{ "title": "My Notification Title", "message": "This is an example of notification using IOT Link", "launchParams": "toast://open/https://iotlink.gitlab.io" }'
tina_desktop_run_chrome:
alias: "Tina Desktop - Run Chrome"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/xia-desktop/commands/run"
payload: '{ "command": "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe", "args": "https://iotlink.gitlab.io", "path": "C:\\Program Files (x86)\\Google\\Chrome\\Application", "user": "", "visible": true, "fallback": true }'
+5 -20
View File
@@ -189,32 +189,17 @@ input_select:
sensor: sensor:
- platform: rest - platform: rest
name: Home Tech name: Home Tech
unique_id: 83f76f0c-d49c-407f-ad99-57d5896dac93
method: GET method: GET
resource: 'https://api.todoist.com/api/v1/projects/2285967948/full' resource: 'https://api.todoist.com/sync/v9/projects/get_data'
headers:
Authorization: !secret todoist_api_token
value_template: '{{ value_json.project.id }}'
json_attributes:
- project
- tasks
- sections
scan_interval: 60
- platform: rest
name: Home Tech Comments
unique_id: 93e6b1c1-8e92-423f-ad56-369e9bb86820
method: GET
resource: 'https://api.todoist.com/api/v1/comments'
params: params:
project_id: 2285967948 project_id: 2285967948
headers: headers:
Authorization: !secret todoist_api_token Authorization: !secret todoist_api_token
Accept: application/json value_template: '{{value_json[''project''][''id'']}}'
value_template: '{{ value_json.results | length }}'
json_attributes: json_attributes:
- results - project
scan_interval: 60 - items
scan_interval: 30
# template: # template:
# - binary_sensor: # - binary_sensor:
-212
View File
@@ -1,212 +0,0 @@
template:
sensor:
- name: Tony Asus - Memory Used
unique_id: 5264e038-c3c2-4638-9b4e-6c4e8ba0501d
unit_of_measurement: 'MB'
icon: mdi:memory
state: >
{% set sensor_gb = states('sensor.tony_asus_memory_used_gb') | float %}
{{ (sensor_gb * 1024) | round(0) | int }}
availability: >
{{ states('sensor.tony_asus_memory_used_gb') not in ['unknown', 'unavailable'] }}
- name: Tony Asus - Memory Available
unique_id: 46577cdb-5f23-413d-8b2c-8f0bc0be71d1
unit_of_measurement: 'MB'
icon: mdi:memory
state: >
{% set sensor_gb = states('sensor.tony_asus_memory_available_gb') | float %}
{{ (sensor_gb * 1024) | round(0) | int }}
availability: >
{{ states('sensor.tony_asus_memory_available_gb') not in ['unknown', 'unavailable'] }}
- name: Tony Asus - Virtual Memory Used
unique_id: 1499ad78-5f13-43e5-a1e0-c321cf35c059
unit_of_measurement: 'MB'
icon: mdi:memory
state: >
{% set sensor_gb = states('sensor.tony_asus_virtual_memory_used_gb') | float %}
{{ (sensor_gb * 1024) | round(0) | int }}
availability: >
{{ states('sensor.tony_asus_virtual_memory_used_gb') not in ['unknown', 'unavailable'] }}
- name: Tony Asus - Virtual Memory Available
unique_id: e7646bce-56fb-426f-afce-3671c1624169
unit_of_measurement: 'MB'
icon: mdi:memory
state: >
{% set sensor_gb = states('sensor.tony_asus_virtual_memory_available_gb') | float %}
{{ (sensor_gb * 1024) | round(0) | int }}
availability: >
{{ states('sensor.tony_asus_virtual_memory_available_gb') not in ['unknown', 'unavailable'] }}
- name: Tony Asus - Storage C Available Free Space
unique_id: 873f0624-705d-455e-ac5c-63320b42d90d
unit_of_measurement: 'GB'
icon: mdi:harddisk
state: >
{% set sensor_mb = state_attr('sensor.tony_asus_storage_c','AvailableSpaceMB') | int %}
{{ (sensor_mb / 1024) | round(0) | int }}
availability: >
{{ states('sensor.tony_asus_storage_c') not in ['unknown', 'unavailable'] }}
- name: Tony Asus - Storage C Used Space
unique_id: 772cf000-1be5-403c-aa69-c6c4250094e2
unit_of_measurement: 'GB'
icon: mdi:harddisk
state: >
{% set sensor_mb = state_attr('sensor.tony_asus_storage_c','UsedSpaceMB') | int %}
{{ (sensor_mb / 1024) | round(0) | int }}
availability: >
{{ states('sensor.tony_asus_storage_c') not in ['unknown', 'unavailable'] }}
- name: Tony Asus - Storage E Available Free Space
unique_id: 106839c5-9913-4f47-860d-fdef7e4cdd9c
unit_of_measurement: 'GB'
icon: mdi:harddisk
state: >
{% set sensor_mb = state_attr('sensor.tony_asus_storage_e','AvailableSpaceMB') | int %}
{{ (sensor_mb / 1024) | round(0) | int }}
availability: >
{{ states('sensor.tony_asus_storage_e') not in ['unknown', 'unavailable'] }}
- name: Tony Asus - Storage E Used Space
unique_id: e3e2fe47-809c-4763-afa8-7664515da051
unit_of_measurement: 'GB'
icon: mdi:harddisk
state: >
{% set sensor_mb = state_attr('sensor.tony_asus_storage_e','UsedSpaceMB') | int %}
{{ (sensor_mb / 1024) | round(0) | int }}
availability: >
{{ states('sensor.tony_asus_storage_e') not in ['unknown', 'unavailable'] }}
- name: Tony Asus - Storage S Available Free Space
unique_id: 5e16e11e-c4c8-4267-8ae8-58e67e95ac77
unit_of_measurement: 'GB'
icon: mdi:harddisk
state: >
{% set sensor_mb = state_attr('sensor.tony_asus_storage_s','AvailableSpaceMB') | int %}
{{ (sensor_mb / 1024) | round(0) | int }}
availability: >
{{ states('sensor.tony_asus_storage_s') not in ['unknown', 'unavailable'] }}
- name: Tony Asus - Storage S Used Space
unique_id: 01a4d7f2-ef09-4a20-a4d5-594546651e7d
unit_of_measurement: 'GB'
icon: mdi:harddisk
state: >
{% set sensor_mb = state_attr('sensor.tony_asus_storage_s','UsedSpaceMB') | int %}
{{ (sensor_mb / 1024) | round(0) | int }}
availability: >
{{ states('sensor.tony_asus_storage_s') not in ['unknown', 'unavailable'] }}
- name: Tony Asus - Storage V Available Free Space
unique_id: e5868a4e-628b-44fe-a35e-3ff4a7eceef8
unit_of_measurement: 'GB'
icon: mdi:harddisk
state: >
{% set sensor_mb = state_attr('sensor.tony_asus_storage_v','AvailableSpaceMB') | int %}
{{ (sensor_mb / 1024) | round(0) | int }}
availability: >
{{ states('sensor.tony_asus_storage_v') not in ['unknown', 'unavailable'] }}
- name: Tony Asus - Storage V Used Space
unique_id: 1ee34dac-0ff3-4920-b1db-79830595096b
unit_of_measurement: 'GB'
icon: mdi:harddisk
state: >
{% set sensor_mb = state_attr('sensor.tony_asus_storage_v','UsedSpaceMB') | int %}
{{ (sensor_mb / 1024) | round(0) | int }}
availability: >
{{ states('sensor.tony_asus_storage_v') not in ['unknown', 'unavailable'] }}
script:
tony_desktop_wake:
# To enable see https://www.home-assistant.io/components/wake_on_lan/
alias: "Tony Desktop - Wake"
sequence:
- service: wake_on_lan.send_magic_packet
data:
mac: "18:C0:4D:82:00:95"
tony_desktop_suspend:
alias: "Tony Desktop - Suspend"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/tony-asus/commands/suspend"
payload: ""
tony_desktop_hibernate:
alias: "Tony Desktop - Hibernate"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/tony-asus/commands/hibernate"
payload: ""
tony_desktop_lock:
alias: "Tony Desktop - Lock"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/tony-asus/commands/lock"
payload: ""
tony_desktop_logoff:
alias: "Tony Desktop - Logoff"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/tony-asus/commands/logoff"
payload: ""
tony_desktop_vol_mute:
alias: "Tony Desktop - Toggle Mute"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/tony-asus/commands/volume/mute"
payload: ""
tony_desktop_vol_max:
alias: "Tony Desktop - Vol Max"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/tony-asus/commands/volume/set"
payload: "100"
tony_desktop_displays_on:
alias: "Tony Desktop - Displays ON"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/tony-asus/commands/displays/on"
payload: ""
tony_desktop_displays_off:
alias: "Tony Desktop - Displays OFF"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/tony-asus/commands/displays/off"
payload: ""
tony_desktop_refresh:
alias: "Tony Desktop - Refresh"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/tony-asus/refresh"
payload: ""
- service: button.press
target:
entity_id:
- button.tony_asus_hassagent_user_refresh
- button.tony_asus_hassagent_satellite_refresh
tony_desktop_notify:
alias: "Tony Desktop - Notify"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/tony-asus/commands/notify"
payload: '{ "title": "My Notification Title", "message": "This is an example of notification using IOT Link", "launchParams": "toast://open/https://iotlink.gitlab.io" }'
tony_desktop_run_chrome:
alias: "Tony Desktop - Run Chrome"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/tony-asus/commands/run"
payload: '{ "command": "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe", "args": "https://iotlink.gitlab.io", "path": "C:\\Program Files\\Google\\Chrome\\Application", "user": "", "visible": true, "fallback": true }'
File diff suppressed because it is too large Load Diff
+3 -7
View File
@@ -47,6 +47,7 @@ ## HACS Components
- [PyScript](https://github.com/custom-components/pyscript) - [PyScript](https://github.com/custom-components/pyscript)
- [Hass Animated Scenes](https://github.com/chazzu/hass-animated-scenes) - [Hass Animated Scenes](https://github.com/chazzu/hass-animated-scenes)
- [Jokes](https://github.com/LaggAt/ha-jokes) - [Jokes](https://github.com/LaggAt/ha-jokes)
- [Uptime Kuma](https://github.com/meichthys/uptime_kuma)
- [Jellyfin](https://github.com/koying/jellyfin_ha) - [Jellyfin](https://github.com/koying/jellyfin_ha)
- [Sonoff LAN](https://github.com/AlexxIT/SonoffLAN) - [Sonoff LAN](https://github.com/AlexxIT/SonoffLAN)
- [Powercalc](https://github.com/bramstroker/homeassistant-powercalc) - [Powercalc](https://github.com/bramstroker/homeassistant-powercalc)
@@ -57,9 +58,6 @@ ## HACS Components
- [Union Pacific Big Boy Tracker](https://github.com/jheizer/up_4014_tracker) - [Union Pacific Big Boy Tracker](https://github.com/jheizer/up_4014_tracker)
- [WeatherFlow Forecast](https://github.com/briis/weatherflow_forecast) - [WeatherFlow Forecast](https://github.com/briis/weatherflow_forecast)
- [NWS SPC Outlook](https://github.com/sedward5/nws_spc_outlook) - [NWS SPC Outlook](https://github.com/sedward5/nws_spc_outlook)
- [Music Assistant Queue Actions](https://github.com/droans/mass_queue)
- [Bubble Card Tools](https://github.com/Clooos/Bubble-Card-Tools)
- [Home Assistant Global Health Score](https://github.com/D-N91/home-assistant-global-health-score)
</details> </details>
@@ -76,8 +74,7 @@ ## HACS Lovelace Cards
- [Layout Card](https://github.com/thomasloven/lovelace-layout-card) - [Layout Card](https://github.com/thomasloven/lovelace-layout-card)
- [Scheduler Card](https://github.com/nielsfaber/scheduler-card) (required for Scheduler component) - [Scheduler Card](https://github.com/nielsfaber/scheduler-card) (required for Scheduler component)
- [Horizon Card](https://github.com/rejuvenate/lovelace-horizon-card) - [Horizon Card](https://github.com/rejuvenate/lovelace-horizon-card)
- [Lovelace Home Feed Card](https://github.com/ben-jam1n/lovelace-home-feed-card) - [Lovelace Home Feed Card](https://github.com/gadgetchnnel/lovelace-home-feed-card)
- [Chronicle Card](https://github.com/KadenThomp36/chronicle-card)
- [Mini Graph Card](https://github.com/kalkih/mini-graph-card) - [Mini Graph Card](https://github.com/kalkih/mini-graph-card)
- [Battery State Card](https://github.com/maxwroc/battery-state-card) - [Battery State Card](https://github.com/maxwroc/battery-state-card)
- [Flipdown Timer Card](https://github.com/pmongloid/flipdown-timer-card) - [Flipdown Timer Card](https://github.com/pmongloid/flipdown-timer-card)
@@ -94,7 +91,7 @@ ## HACS Lovelace Cards
- [Weather Card](https://github.com/bramkragten/weather-card) - [Weather Card](https://github.com/bramkragten/weather-card)
- [Template Entity Row](https://github.com/thomasloven/lovelace-template-entity-row) - [Template Entity Row](https://github.com/thomasloven/lovelace-template-entity-row)
- [Waze Travel Time](https://github.com/r-renato/ha-card-waze-travel-time) - [Waze Travel Time](https://github.com/r-renato/ha-card-waze-travel-time)
- [Lovelace Expander Card](https://github.com/MelleD/lovelace-expander-card) - [Fold Entity Row](https://github.com/thomasloven/lovelace-fold-entity-row)
- [Room Card](https://github.com/marcokreeft87/room-card) - [Room Card](https://github.com/marcokreeft87/room-card)
- [Simple Thermostat Card](https://github.com/nervetattoo/simple-thermostat) - [Simple Thermostat Card](https://github.com/nervetattoo/simple-thermostat)
- [Clock Weather Card](https://github.com/pkissling/clock-weather-card) - [Clock Weather Card](https://github.com/pkissling/clock-weather-card)
@@ -117,7 +114,6 @@ ## HACS Lovelace Cards
- [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) - [AdGuard Card](https://github.com/homeassistant-extras/adguard-card)
- [Music Assistant Player Card](https://github.com/droans/mass-player-card)
</details> </details>
+23 -234
View File
@@ -1785,18 +1785,6 @@ tony_morning_meds:
- action: TONY_MORNING_MEDS_SKIPPED - action: TONY_MORNING_MEDS_SKIPPED
title: Skip title: Skip
action: script.text_notify action: script.text_notify
- alias: Send PC notification
action: script.pc_notify
metadata: {}
data:
who: tony
title: Morning Meds
message: '{{ response.data.notification_text }}'
actions:
- action: TONY_MORNING_MEDS_TAKEN
title: Taken
- action: TONY_MORNING_MEDS_SKIPPED
title: Skip
- alias: Send TTS if reminders > 2 and Tony is home - alias: Send TTS if reminders > 2 and Tony is home
if: if:
- alias: When reminders > 2 and Tony is home - alias: When reminders > 2 and Tony is home
@@ -1838,18 +1826,6 @@ tony_morning_meds:
title: Skip title: Skip
message: You need to take your morning meds message: You need to take your morning meds
action: script.text_notify action: script.text_notify
- alias: Send PC notification
action: script.pc_notify
metadata: {}
data:
who: tony
title: Morning Meds
message: You need to take your morning meds
actions:
- action: TONY_MORNING_MEDS_TAKEN
title: Taken
- action: TONY_MORNING_MEDS_SKIPPED
title: Skip
- alias: Send TTS if reminders > 2 and Tony is home - alias: Send TTS if reminders > 2 and Tony is home
if: if:
- alias: When reminders > 2 and Tony is home - alias: When reminders > 2 and Tony is home
@@ -2137,18 +2113,6 @@ tony_afternoon_meds:
- action: TONY_AFTERNOON_MEDS_SKIPPED - action: TONY_AFTERNOON_MEDS_SKIPPED
title: Skip title: Skip
action: script.text_notify action: script.text_notify
- action: script.pc_notify
metadata: {}
data:
who: tony
title: Afternoon Meds
message: '{{ response.data.notification_text }}'
actions:
- action: TONY_AFTERNOON_MEDS_TAKEN
title: Taken
- action: TONY_AFTERNOON_MEDS_SKIPPED
title: Skip
alias: Send PC notification
- alias: Send TTS if reminders > 2 and Tony is home - alias: Send TTS if reminders > 2 and Tony is home
if: if:
- alias: When reminders > 2 and Tony is home - alias: When reminders > 2 and Tony is home
@@ -2190,18 +2154,6 @@ tony_afternoon_meds:
title: Skip title: Skip
message: You need to take your afternoon meds message: You need to take your afternoon meds
action: script.text_notify action: script.text_notify
- alias: Send PC notification
action: script.pc_notify
metadata: {}
data:
who: tony
title: Afternoon Meds
message: You need to take your afternoon meds
actions:
- action: TONY_AFTERNOON_MEDS_TAKEN
title: Taken
- action: TONY_AFTERNOON_MEDS_SKIPPED
title: Skip
- alias: Send TTS if reminders > 2 and Tony is home - alias: Send TTS if reminders > 2 and Tony is home
if: if:
- alias: When reminders > 2 and Tony is home - alias: When reminders > 2 and Tony is home
@@ -2673,53 +2625,35 @@ kallen_night_meds:
reset_annc_switches: reset_annc_switches:
alias: Reset Announcement Switches alias: Reset Announcement Switches
sequence: sequence:
- target: - service: input_boolean.turn_off
target:
entity_id: entity_id:
- input_boolean.good_morning - input_boolean.good_morning
- input_boolean.daily_briefing - input_boolean.daily_briefing
- input_boolean.nightly_briefing - input_boolean.nightly_briefing
- input_boolean.kallen_morning_briefing - input_boolean.kallen_morning_briefing
- input_boolean.kallen_nightly_briefing - input_boolean.kallen_nightly_briefing
- input_boolean.basement_briefing
data: {} data: {}
action: input_boolean.turn_off
alias: Turn off housewide briefing switches
- if:
- condition: state
entity_id: binary_sensor.basement_occupied
state:
- 'off'
then:
- action: input_boolean.turn_off
metadata: {}
target:
entity_id: input_boolean.basement_briefing
data: {}
alias: Turn off basement briefing switch if basement is not occupied
mode: single mode: single
icon: mdi:bullhorn-outline icon: mdi:bullhorn-outline
emma_rainbow_lights: emma_rainbow_lights:
alias: Emma Rainbow Lights alias: Emma Rainbow Lights
sequence: sequence:
- choose: - service: switch.turn_off
- conditions: metadata: {}
- condition: template
value_template: '{{ who == ''Living Room'' }}'
alias: Living Room
sequence:
- metadata: {}
data: {} data: {}
target: target:
entity_id: entity_id:
- switch.adaptive_lighting_living_room - switch.adaptive_lighting_living_room
- switch.adaptive_lighting_sleep_mode_living_room - switch.adaptive_lighting_sleep_mode_living_room
alias: Turn off adaptive lighting alias: Turn off adaptive lighting
action: switch.turn_off - service: lifx.effect_stop
- metadata: {} metadata: {}
data: {} data: {}
target: target:
entity_id: light.living_room_led_strip entity_id: light.living_room_led_strip
alias: Stop any current light strip effects alias: Stop any current light strip effects
action: lifx.effect_stop
- alias: Choose Effect - alias: Choose Effect
choose: choose:
- conditions: - conditions:
@@ -2727,14 +2661,15 @@ emma_rainbow_lights:
value_template: '{{ effect in [''Rainbow'',null] }}' value_template: '{{ effect in [''Rainbow'',null] }}'
alias: Rainbow alias: Rainbow
sequence: sequence:
- metadata: {} - service: light.turn_on
metadata: {}
data: data:
effect: prism effect: prism
target: target:
entity_id: light.living_room_overhead entity_id: light.living_room_overhead
alias: Turn on living room overhead in prism effect alias: Turn on living room overhead in prism effect
action: light.turn_on - service: lifx.effect_move
- metadata: {} metadata: {}
data: data:
speed: 8 speed: 8
direction: right direction: right
@@ -2743,13 +2678,13 @@ emma_rainbow_lights:
target: target:
entity_id: light.living_room_led_strip entity_id: light.living_room_led_strip
alias: Turn on living room LED strip in exciting theme with move effect alias: Turn on living room LED strip in exciting theme with move effect
action: lifx.effect_move
- conditions: - conditions:
- condition: template - condition: template
value_template: '{{ effect == ''Blue'' }}' value_template: '{{ effect == ''Blue'' }}'
alias: Blue alias: Blue
sequence: sequence:
- metadata: {} - service: light.turn_on
metadata: {}
data: data:
rgb_color: rgb_color:
- 0 - 0
@@ -2759,13 +2694,13 @@ emma_rainbow_lights:
target: target:
entity_id: light.living_room_lights entity_id: light.living_room_lights
alias: Turn on living room lights, set to blue alias: Turn on living room lights, set to blue
action: light.turn_on
- conditions: - conditions:
- condition: template - condition: template
value_template: '{{ effect == ''Purple'' }}' value_template: '{{ effect == ''Purple'' }}'
alias: Purple alias: Purple
sequence: sequence:
- metadata: {} - service: light.turn_on
metadata: {}
data: data:
rgb_color: rgb_color:
- 134 - 134
@@ -2775,13 +2710,13 @@ emma_rainbow_lights:
target: target:
entity_id: light.living_room_lights entity_id: light.living_room_lights
alias: Turn on living room lights, set to purple alias: Turn on living room lights, set to purple
action: light.turn_on
- conditions: - conditions:
- alias: Green - alias: Green
condition: template condition: template
value_template: '{{ effect == ''Green'' }}' value_template: '{{ effect == ''Green'' }}'
sequence: sequence:
- alias: Turn on living room lights, set to green - alias: Turn on living room lights, set to green
service: light.turn_on
metadata: {} metadata: {}
data: data:
rgb_color: rgb_color:
@@ -2791,26 +2726,26 @@ emma_rainbow_lights:
brightness_pct: 100 brightness_pct: 100
target: target:
entity_id: light.living_room_lights entity_id: light.living_room_lights
action: light.turn_on
- conditions: - conditions:
- condition: template - condition: template
value_template: '{{ effect == ''Tokyo'' }}' value_template: '{{ effect == ''Tokyo'' }}'
alias: Tokyo alias: Tokyo
sequence: sequence:
- metadata: {} - service: input_boolean.turn_on
metadata: {}
data: {} data: {}
target: target:
entity_id: input_boolean.living_room_dynamic_scenes entity_id: input_boolean.living_room_dynamic_scenes
alias: Turn on dynamic scenes alias: Turn on dynamic scenes
action: input_boolean.turn_on - service: input_select.select_option
- metadata: {} metadata: {}
data: data:
option: Tokyo option: Tokyo
target: target:
entity_id: input_select.living_room_scenes entity_id: input_select.living_room_scenes
alias: Activate Tokyo scene in Living Room alias: Activate Tokyo scene in Living Room
action: input_select.select_option
- alias: Turn on living room LED strip in intense theme with move effect - alias: Turn on living room LED strip in intense theme with move effect
service: lifx.effect_move
metadata: {} metadata: {}
data: data:
speed: 8 speed: 8
@@ -2819,142 +2754,8 @@ emma_rainbow_lights:
power_on: true power_on: true
target: target:
entity_id: light.living_room_led_strip entity_id: light.living_room_led_strip
action: lifx.effect_move mode: restart
- conditions: icon: fas:rainbow
- alias: Basement Studio
condition: template
value_template: '{{ who == ''Basement Studio'' }}'
sequence:
- alias: Turn off adaptive lighting
metadata: {}
data: {}
action: switch.turn_off
target:
entity_id:
- switch.adaptive_lighting_basement_studio
- switch.adaptive_lighting_sleep_mode_basement_studio
- alias: Stop any current light strip effects
metadata: {}
data: {}
action: lifx.effect_stop
target:
entity_id: light.basement_led_strip_1
- alias: Choose Effect
choose:
- conditions:
- condition: template
value_template: '{{ effect in [''Rainbow'',null] }}'
alias: Rainbow
sequence:
- metadata: {}
data:
effect: prism
target:
entity_id: light.basement_tall_lamp
alias: Turn on basement tall lamp in prism effect
action: light.turn_on
- metadata: {}
data:
effect: prism
target:
entity_id: light.basement_short_lamp
alias: Turn on basement short lamp in prism effect
action: light.turn_on
- metadata: {}
data:
effect: prism
target:
entity_id: light.basement_stairwell
alias: Turn on basement stairwell in prism effect
action: light.turn_on
- metadata: {}
data:
speed: 8
direction: right
theme: exciting
power_on: true
target:
entity_id: light.basement_led_strip_1
alias: Turn on basement studio LED strip in exciting theme with move effect
action: lifx.effect_move
- conditions:
- condition: template
value_template: '{{ effect == ''Blue'' }}'
alias: Blue
sequence:
- metadata: {}
data:
rgb_color:
- 0
- 0
- 255
brightness_pct: 100
target:
entity_id: light.basement_studio_lights
alias: Turn on basement studio lights, set to blue
action: light.turn_on
- conditions:
- condition: template
value_template: '{{ effect == ''Purple'' }}'
alias: Purple
sequence:
- metadata: {}
data:
rgb_color:
- 134
- 0
- 211
brightness_pct: 100
target:
entity_id: light.basement_studio_lights
alias: Turn on basement studio lights, set to purple
action: light.turn_on
- conditions:
- alias: Green
condition: template
value_template: '{{ effect == ''Green'' }}'
sequence:
- alias: Turn on basement studio lights, set to green
metadata: {}
data:
rgb_color:
- 0
- 255
- 0
brightness_pct: 100
target:
entity_id: light.basement_studio_lights
action: light.turn_on
- conditions:
- condition: template
value_template: '{{ effect == ''Tokyo'' }}'
alias: Tokyo
sequence:
- metadata: {}
data: {}
target:
entity_id: input_boolean.basement_studio_dynamic_scenes
alias: Turn on dynamic scenes
action: input_boolean.turn_on
- metadata: {}
data:
option: Tokyo
target:
entity_id: input_select.basement_studio_scenes
alias: Activate Tokyo scene in basement studio
action: input_select.select_option
- alias: Turn on basement studio LED strip in intense theme with move effect
metadata: {}
data:
speed: 8
direction: right
theme: intense
power_on: true
target:
entity_id: light.basement_led_strip_1
action: lifx.effect_move
mode: queued
icon: fa7-solid:rainbow
fields: fields:
effect: effect:
selector: selector:
@@ -2970,18 +2771,6 @@ emma_rainbow_lights:
description: What type of effect would you like to run? description: What type of effect would you like to run?
default: Rainbow default: Rainbow
required: true required: true
who:
selector:
select:
options:
- Living Room
- Basement Studio
multiple: false
default: Living Room
name: Who
description: In which room should the effect run?
required: true
max: 10
rabbit_feeding: rabbit_feeding:
alias: Rabbit Feeding alias: Rabbit Feeding
sequence: sequence:
+6 -7
View File
@@ -450,19 +450,18 @@
unit_of_measurement: '' unit_of_measurement: ''
icon: mdi:close-network-outline icon: mdi:close-network-outline
state: > state: >
{% set uptimekuma = states.sensor | {% set uptimekuma = states.binary_sensor |
selectattr('entity_id','in',integration_entities('192.168.1.111')) | selectattr('entity_id','in',integration_entities('uptime_kuma')) |
selectattr('state','eq','down') | selectattr('state','eq','off') |
map(attribute='attributes.friendly_name') | map(attribute='attributes.friendly_name') |
list %} list %}
{{ uptimekuma | count | int }} {{ uptimekuma | count | int }}
attributes: attributes:
services: > services: >
{% set uptimekuma = states.sensor | {% set uptimekuma = states.binary_sensor |
selectattr('entity_id','in',integration_entities('192.168.1.111')) | selectattr('entity_id','in',integration_entities('uptime_kuma')) |
selectattr('state','eq','down') | selectattr('state','eq','off') |
map(attribute='attributes.friendly_name') | map(attribute='attributes.friendly_name') |
map('regex_replace', ' Status$', '') |
list %} list %}
{{ uptimekuma | join(', ') }} {{ uptimekuma | join(', ') }}
- name: Media Server Viewer Health - name: Media Server Viewer Health
+4 -4
View File
@@ -71,12 +71,12 @@
{% else %} {% else %}
"Collin's room will be left alone, as he is spending the night elsewhere tonight. " "Collin's room will be left alone, as he is spending the night elsewhere tonight. "
{% endif %} {% endif %}
{% if states('input_select.scheduled_climate_mode_emma_bedroom') != 'N/A' %} {% if states('input_select.scheduled_climate_mode_emma_bedroom_aircon') != 'N/A' %}
{% if is_state('input_select.scheduled_climate_mode_emma_bedroom','AC') and is_state('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_climate') }}. " "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','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_climate') }}. " "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','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_climate') }}. " "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') }}. "
+1 -1
View File
@@ -38,7 +38,7 @@
<p> <p>
{% set alerts = states('weather_alerts_active_corrected') %} {% set alerts = states('weather_alerts_active_corrected') %}
{% if states('sensor.weatheralerts_defiance_ohz004_ohc039') > '0' %} {% if states('sensor.weatheralerts_active_alerts') > '0' %}
"There {% if alerts == '1' %}is{% else %}are{% endif %} {{ states('sensor.weather_alerts_active_corrected') }} weather {% if alerts == '1' %}alert{% else %}alerts{% endif %} active. " "There {% if alerts == '1' %}is{% else %}are{% endif %} {{ states('sensor.weather_alerts_active_corrected') }} weather {% if alerts == '1' %}alert{% else %}alerts{% endif %} active. "
"{% if alerts == '1' %}It is{% else %}They are{% endif %}, " "{% if alerts == '1' %}It is{% else %}They are{% endif %}, "
{{ states('sensor.weather_alert_string') }}. {{ states('sensor.weather_alert_string') }}.