Compare commits

..

104 Commits

Author SHA1 Message Date
tm24fan8 65309bfa39 Merge branch 'weatheralerts_migration' into dev 2026-04-03 05:21:16 -04:00
tm24fan8 8ea1d4ca2b Several necessary changes for the new WeatherAlerts integration 2026-04-03 05:20:18 -04:00
tm24fan8 9f6f35c848 Update .HA_VERSION 2026-04-03 05:18:44 -04:00
tm24fan8 25fe4bef13 Add tornado warnings to long-term databases 2026-04-01 02:47:15 -04:00
tm24fan8 ea1985cf91 Trigger lightning warning if Tempest binary sensor shows lightning 2026-04-01 02:46:48 -04:00
tm24fan8 cdfbb6023b Add bedtime reminder for E 2026-03-29 22:56:20 -04:00
tm24fan8 6157abce18 Fix bubble card modules to use the correct accent color variable 2026-03-29 22:55:54 -04:00
tm24fan8 379de46d05 Update .gitignore 2026-03-29 22:55:31 -04:00
tm24fan8 f6c2f99b11 Update .HA_VERSION 2026-03-29 22:55:09 -04:00
tm24fan8 f4e809317b Merge branch 'temp_fixes' into dev 2026-03-20 23:06:46 -04:00
tm24fan8 71c4affd3c Revert Weatherflow fixes as integration appears to work now 2026-03-20 22:50:13 -04:00
tm24fan8 eef92467de Temp disable animated_scenes 2026-03-20 22:50:12 -04:00
tm24fan8 eab0a507b7 Temp fixes until Weatherflow Forecast integration is fixed 2026-03-20 22:50:06 -04:00
tm24fan8 979e253ff0 Turn recorder on after reboot, if it was off 2026-03-20 22:48:24 -04:00
tm24fan8 3aa5a1a462 Ensure only heat or AC can be active at the same time in E's bedroom 2026-03-20 22:48:11 -04:00
tm24fan8 fc9bcc9db6 Add alert for when windows are open and it gets too hot or cold outside 2026-03-20 22:47:43 -04:00
tm24fan8 57023115f1 Replace binary windows open sensor with proper template 2026-03-20 22:46:23 -04:00
tm24fan8 faeeb64696 Update .HA_VERSION 2026-03-20 22:45:26 -04:00
tm24fan8 cc2f328dec Move response time sensors from recorder to InfluxDB/Prometheus 2026-03-12 13:56:59 -04:00
tm24fan8 8e8430cba0 Remove some noisy sensors from recorder 2026-03-12 13:56:28 -04:00
tm24fan8 7f91e3ed04 Remove parts of InfluxDB config that have moved to UI 2026-03-09 02:05:10 -04:00
tm24fan8 802fb39608 Update .HA_VERSION 2026-03-07 01:48:50 -05:00
tm24fan8 9bc654bc70 Fix incorrect entities in history stat sensors for E's aircon 2026-03-06 06:18:17 -05:00
tm24fan8 6e9e35a6a4 Fix wrong entity used for E's scheduled climate mode in nightly briefing 2026-03-06 05:45:11 -05:00
tm24fan8 bf094bf56a Update .gitignore 2026-03-05 02:17:07 -05:00
tm24fan8 f614b3965f Update .HA_VERSION 2026-03-05 02:16:40 -05:00
tm24fan8 2c8e062666 Update .HA_VERSION 2026-03-04 05:51:08 -05:00
tm24fan8 5dd003e994 Don't reset basement briefing if I'm still down here 2026-02-24 03:28:59 -05:00
tm24fan8 6cf0b6daee Temp solution for #260 2026-02-24 03:15:33 -05:00
tm24fan8 6b2747c518 Add proper opponent collisions to inhibit sensors for college hockey 2026-02-23 01:57:23 -05:00
tm24fan8 b3f8df03d4 Rewrite rainbow lights script to also support the basement 2026-02-23 01:56:55 -05:00
tm24fan8 e51143f2ba Recorder toggle automation 2026-02-23 01:56:30 -05:00
tm24fan8 d245b90092 Update .HA_VERSION 2026-02-23 01:55:35 -05:00
tm24fan8 aad02f646b Updated readme 2026-02-01 19:32:40 -05:00
tm24fan8 5e9d0efdca Reorder apparent temperature entity priority for INWS 2026-02-01 19:32:07 -05:00
tm24fan8 4fa09ba107 Make hot/cold thresholds configurable 2026-02-01 18:39:53 -05:00
tm24fan8 8e3a98a30a Update .HA_VERSION 2026-02-01 18:39:36 -05:00
tm24fan8 9bdaabcb7d Update .HA_VERSION 2026-01-22 01:03:21 -05:00
tm24fan8 9cb977feba Fix Xia desktop idle sensor 2026-01-16 17:12:33 -05:00
tm24fan8 c850ac65d2 Fix PC notify groups 2026-01-16 17:12:14 -05:00
tm24fan8 5562d1dbc3 Move wife's PC from IOTLink to HASS.Agent 2026-01-16 17:11:53 -05:00
tm24fan8 c83cb58534 Remove IOTLink commands for my desktop 2026-01-16 17:11:38 -05:00
tm24fan8 e4a4fff6ec Update .HA_VERSION 2026-01-16 17:10:53 -05:00
tm24fan8 877d339a90 Merge branch 'tony_pc_mqtt' into dev 2025-12-28 03:34:44 -05:00
tm24fan8 e222337fa1 Remove manual MQTT sensors, add templates, remove iotlink from filename 2025-12-28 03:24:16 -05:00
tm24fan8 2721bd6659 Update idle sensor to utilize new macro and sensors 2025-12-28 01:14:14 -05:00
tm24fan8 f264412639 Desktop notifications for Tony's meds 2025-12-28 01:12:59 -05:00
tm24fan8 6cddca76f7 time_diff macro 2025-12-28 01:12:42 -05:00
tm24fan8 f57c41868e Facilitate PC notifications via HASS.Agent 2025-12-28 01:12:00 -05:00
tm24fan8 d091cadacf Adjustments for new Todoist API 2025-12-23 22:16:21 -05:00
tm24fan8 92adc64d72 AdGuard sensors excluded from recorder and added to Influx/Prometheus 2025-12-23 22:16:02 -05:00
tm24fan8 259757a537 Update .HA_VERSION 2025-12-23 22:12:54 -05:00
tm24fan8 d0d8d0477f Migrate to new core integration for Uptime Kuma
#257
2025-12-23 22:11:38 -05:00
tm24fan8 ac6f7978be Updated readme
#257
2025-12-16 21:28:29 -05:00
tm24fan8 28e3b93441 Updated readme 2025-12-16 19:23:28 -05:00
tm24fan8 bdca4c702a Remove battery notes from config as it's all UI-based now 2025-12-15 21:19:08 -05:00
tm24fan8 4b57efcd74 Add extra_module_url for card-mod 2025-12-15 19:32:30 -05:00
tm24fan8 7255422ca1 Fix E's white noise not turning on at bedtime
#256
2025-12-15 19:32:29 -05:00
tm24fan8 5ae5e5021e Integrate E's bedroom heater with existing automations and scheduling
#256
2025-12-13 20:16:31 -05:00
tm24fan8 bd9c7190ed Update weather templates to current syntax 2025-12-13 18:25:58 -05:00
tm24fan8 f176e3b867 Update .HA_VERSION 2025-12-13 18:13:02 -05:00
tm24fan8 1b52cc31a8 Update .HA_VERSION 2025-12-09 20:16:17 -05:00
tm24fan8 8993196366 Add college hockey teams to sports tracking #255 2025-12-09 20:16:00 -05:00
tm24fan8 210434e4ad Prevent trying to report team record when it is not provided 2025-12-09 20:15:39 -05:00
tm24fan8 e37ac9d504 Re-enable K's night meds tracker 2025-12-09 20:13:57 -05:00
tm24fan8 bf19984b47 Fix recliner mode not marking basement as occupied 2025-11-28 00:47:23 -05:00
tm24fan8 4634b66866 Change deprecated Powercalc config 2025-11-26 20:27:16 -05:00
tm24fan8 001dcbe625 Update .HA_VERSION 2025-11-26 20:26:34 -05:00
tm24fan8 f70be6ceee Update .HA_VERSION 2025-11-10 22:38:58 -05:00
tm24fan8 265e129c06 Try to fix weird changing of climate modes in E's bedroom 2025-10-30 18:14:02 -04:00
tm24fan8 00bea40b6b Update .HA_VERSION 2025-10-30 18:13:22 -04:00
tm24fan8 f94bce3381 Update .HA_VERSION 2025-10-18 00:21:58 -04:00
tm24fan8 2de7d82e20 Sensors to indicate health of media server items 2025-10-03 19:29:28 -04:00
tm24fan8 83c3c10a5a Add structured output to AI med notification prompts 2025-10-03 19:29:07 -04:00
tm24fan8 f7ac1b915b Update .HA_VERSION 2025-10-03 19:28:27 -04:00
tm24fan8 1d3398752e Fix deprecated Google AI calls 2025-10-03 02:59:00 -04:00
tm24fan8 837ed779c9 Add reminder booleans for other med trackers 2025-10-02 19:10:00 -04:00
tm24fan8 bc3a58875d Fix typo in lighting_fx 2025-10-02 18:24:17 -04:00
tm24fan8 3c018a922b Remove old gas sensors from configs 2025-10-02 18:24:05 -04:00
tm24fan8 10188d553a Update .HA_VERSION and .gitignore 2025-10-02 18:20:39 -04:00
tm24fan8 341200deb0 Disable K night meds as currently unneeded 2025-09-23 18:34:58 -04:00
tm24fan8 b930cb28b5 Update .HA_VERSION 2025-09-23 18:34:24 -04:00
tm24fan8 c31158448c Update .gitignore 2025-09-16 02:10:39 -04:00
tm24fan8 9e9c1fcf11 Update .HA_VERSION 2025-09-16 02:09:23 -04:00
tm24fan8 02e3252e62 Update .HA_VERSION 2025-09-11 04:36:21 -04:00
tm24fan8 32907081c6 Add input numbers for AC auto mode switching 2025-09-02 02:40:36 -04:00
tm24fan8 67931ccfcd Update school lunch menu 2025-09-02 02:40:09 -04:00
tm24fan8 c5d1b14ac9 Add reminder count to AI prompt for med reminders 2025-09-02 02:39:34 -04:00
tm24fan8 3ed56ff745 Fix some nighttime lighting weirdness on the second floor 2025-08-26 02:07:05 -04:00
tm24fan8 eb9cc4c42d Update sensor light blueprint 2025-08-26 02:06:27 -04:00
tm24fan8 df020c92c1 Update .HA_VERSION 2025-08-26 02:01:46 -04:00
tm24fan8 b97838a13f Fix formatting in custom weather package templates 2025-08-16 18:20:28 -04:00
tm24fan8 9678ccd2a3 Attempting to figure out the cause of #251 2025-08-16 18:20:07 -04:00
tm24fan8 13ef9c58f8 Fix indentation on clothing forecast template 2025-08-16 18:18:05 -04:00
tm24fan8 1ea19c317c Update .HA_VERSION 2025-08-16 17:25:37 -04:00
tm24fan8 a89963f9f0 Update .HA_VERSION 2025-08-11 19:14:44 -04:00
tm24fan8 993a65529b Update .HA_VERSION 2025-07-30 21:30:36 -04:00
tm24fan8 a11bb624db Remove obsolete template sensors for min/avg/max pings 2025-07-30 03:21:10 -04:00
tm24fan8 131ffcd05f Stop new ping sensors from flooding the database 2025-07-30 03:20:51 -04:00
tm24fan8 4ac9247852 Add specific SPC risk sensors for dashboard purposes 2025-07-27 06:32:27 -04:00
tm24fan8 52d651fcaa Fix not being a tornado possible sensor like there was supposed to be 2025-07-27 06:32:04 -04:00
tm24fan8 96244550de Update .HA_VERSION 2025-07-27 06:31:31 -04:00
tm24fan8 5f2b840899 Add styling to icons in state color button module 2025-07-17 22:37:16 -04:00
tm24fan8 f08d1452f2 Update .HA_VERSION 2025-07-16 22:29:01 -04:00
44 changed files with 3178 additions and 3451 deletions
+1 -1
View File
@@ -1 +1 @@
2025.7.1 2026.4.0
+4
View File
@@ -4,6 +4,7 @@
/.google.token /.google.token
/.ssh /.ssh
/.codegpt /.codegpt
/.cache
# ignore some directories. # ignore some directories.
/www/* /www/*
@@ -21,6 +22,8 @@
/downloads/ /downloads/
/lightwand/ /lightwand/
/bubble/Scratchpad/ /bubble/Scratchpad/
/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
@@ -67,6 +70,7 @@
**jsconfig* **jsconfig*
.markdownlint.json .markdownlint.json
**test.jinja **test.jinja
**.ha_run.lock
# exceptions # exceptions
!/www/bubble/ !/www/bubble/
+441 -146
View File
@@ -1,33 +1,35 @@
- id: '1640833273099' - id: '1640833273099'
alias: NWS Announce Weather Alert for Tornado alias: NWS Announce Weather Alert for Tornado
description: '' description: ''
trigger: triggers:
- platform: numeric_state - trigger: state
entity_id: sensor.weatheralerts_active_alerts entity_id:
attribute: tornado_warning_count - binary_sensor.tornado_warning
above: '0' from:
condition: - 'off'
to:
- 'on'
conditions:
- condition: state - condition: state
entity_id: input_boolean.vacation_mode entity_id: input_boolean.vacation_mode
state: 'off' state: 'off'
action: actions:
- service: input_boolean.turn_on - data: {}
data: {}
target: target:
entity_id: input_boolean.tornado_alarm entity_id: input_boolean.tornado_alarm
- service: input_boolean.turn_off action: input_boolean.turn_on
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
- service: script.turn_on action: input_boolean.turn_off
target: - target:
entity_id: script.max_brightness entity_id: script.max_brightness
- service: script.text_notify action: script.turn_on
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.
@@ -35,34 +37,35 @@
who: all who: all
tag: tornado-warning tag: tornado-warning
alias: CRITICAL PHONE ALERT alias: CRITICAL PHONE ALERT
- service: script.tv_notify action: script.text_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
- service: script.speech_engine action: script.tv_notify
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
- 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: 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
@@ -314,6 +317,12 @@
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:
@@ -431,52 +440,55 @@
- id: '1655493590791' - id: '1655493590791'
alias: NWS Announce Weather Alert for Tornado (CLEAR) alias: NWS Announce Weather Alert for Tornado (CLEAR)
description: '' description: ''
trigger: triggers:
- platform: numeric_state - trigger: state
entity_id: sensor.weatheralerts_active_alerts entity_id:
attribute: tornado_warning_count - binary_sensor.tornado_warning
below: '1' from:
condition: - 'on'
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'
action: actions:
- service: script.text_notify - data:
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
- service: input_boolean.turn_off action: script.text_notify
data: {} - data: {}
target: target:
entity_id: input_boolean.tornado_alarm entity_id: input_boolean.tornado_alarm
- service: script.volume_reset action: input_boolean.turn_off
data: {} - data: {}
- service: script.max_brightness_cleanup action: script.volume_reset
data: {} - data: {}
- service: script.text_notify action: script.max_brightness_cleanup
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
- service: script.tv_notify action: 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
- service: script.speech_engine action: script.tv_notify
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
@@ -497,15 +509,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:
- service: input_boolean.turn_off - data: {}
data: {}
target: target:
entity_id: input_boolean.audible_notifications entity_id: input_boolean.audible_notifications
action: input_boolean.turn_off
else: else:
- service: input_boolean.turn_on - data: {}
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
@@ -979,38 +991,44 @@
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
trigger: triggers:
- platform: numeric_state - alias: Watch Issued
entity_id: sensor.weatheralerts_active_alerts entity_id:
attribute: tornado_watch_count - binary_sensor.tornado_watch
above: 0
id: watch_issued id: watch_issued
alias: Watch Issued trigger: state
- platform: numeric_state from:
entity_id: sensor.weatheralerts_active_alerts - 'off'
attribute: tornado_watch_count to:
below: 1 - 'on'
id: watch_cleared - alias: Watch Issued
alias: Watch Cleared entity_id:
condition: [] - binary_sensor.tornado_watch
action: id: watch_issued
trigger: state
from:
- 'on'
to:
- 'off'
conditions: []
actions:
- choose: - choose:
- conditions: - conditions:
- condition: trigger - condition: trigger
id: watch_issued id: watch_issued
sequence: sequence:
- service: input_boolean.turn_on - data: {}
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:
- service: input_boolean.turn_off - data: {}
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'
@@ -4646,39 +4664,41 @@
- id: '1710611198911' - id: '1710611198911'
alias: Kallen Meds Handler alias: Kallen Meds Handler
description: Handles the scheduling of medication reminders for Kallen description: Handles the scheduling of medication reminders for Kallen
trigger: triggers:
- platform: time_pattern - minutes: /30
minutes: /30
id: trigger30 id: trigger30
alias: Every 30 minutes alias: Every 30 minutes
- platform: time trigger: time_pattern
at: input_datetime.kallen_morning_meds_notify - at: input_datetime.kallen_morning_meds_notify
id: morning-notify id: morning-notify
alias: Morning Notify alias: Morning Notify
- platform: time trigger: time
at: input_datetime.kallen_night_meds_notify - at: input_datetime.kallen_night_meds_notify
id: night-notify id: night-notify
alias: Night Notify alias: Night Notify
- platform: state trigger: time
entity_id: enabled: true
- entity_id:
- input_boolean.kallen_morning_meds_taken - input_boolean.kallen_morning_meds_taken
to: 'on' to: 'on'
id: boolean-morning id: boolean-morning
alias: Morning Taken alias: Morning Taken
from: 'off' from: 'off'
- platform: state trigger: state
entity_id: - entity_id:
- input_boolean.kallen_night_meds_taken - input_boolean.kallen_night_meds_taken
id: boolean-night id: boolean-night
alias: Night Taken alias: Night Taken
from: 'off' from: 'off'
to: 'on' to: 'on'
condition: trigger: state
enabled: true
conditions:
- condition: state - condition: state
entity_id: input_boolean.kallen_overnight entity_id: input_boolean.kallen_overnight
state: 'off' state: 'off'
alias: Kallen is not staying the night elsewhere alias: Kallen is not staying the night elsewhere
action: actions:
- alias: Routing - alias: Routing
choose: choose:
- conditions: - conditions:
@@ -4693,10 +4713,10 @@
state: 'on' state: 'on'
alias: Morning meds reminder needed alias: Morning meds reminder needed
then: then:
- service: script.kallen_morning_meds - metadata: {}
metadata: {}
data: {} data: {}
alias: Run morning meds notification script alias: Run morning meds notification script
action: script.kallen_morning_meds
- alias: Check night reminder switch - alias: Check night reminder switch
if: if:
- condition: state - condition: state
@@ -4704,10 +4724,10 @@
state: 'on' state: 'on'
alias: Night meds reminder needed alias: Night meds reminder needed
then: then:
- service: script.kallen_night_meds - metadata: {}
metadata: {}
data: {} data: {}
alias: Run night meds notification script alias: Run night meds notification script
action: script.kallen_night_meds
alias: Every 30 minutes alias: Every 30 minutes
- conditions: - conditions:
- condition: and - condition: and
@@ -4719,16 +4739,16 @@
state: 'off' state: 'off'
alias: Morning Notify alias: Morning Notify
sequence: sequence:
- service: input_boolean.turn_on - metadata: {}
metadata: {}
data: {} data: {}
target: target:
entity_id: input_boolean.kallen_morning_meds_reminder entity_id: input_boolean.kallen_morning_meds_reminder
alias: Activate morning reminders alias: Activate morning reminders
- service: script.kallen_morning_meds action: input_boolean.turn_on
metadata: {} - metadata: {}
data: {} data: {}
alias: Run morning meds notification script alias: Run morning meds notification script
action: script.kallen_morning_meds
- conditions: - conditions:
- condition: and - condition: and
conditions: conditions:
@@ -4741,22 +4761,21 @@
alias: Night Notify alias: Night Notify
sequence: sequence:
- alias: Activate night reminders - alias: Activate night reminders
service: input_boolean.turn_on
metadata: {} metadata: {}
data: {} data: {}
target: target:
entity_id: input_boolean.kallen_night_meds_reminder entity_id: input_boolean.kallen_night_meds_reminder
- service: script.kallen_night_meds action: input_boolean.turn_on
metadata: {} - metadata: {}
data: {} data: {}
alias: Run night meds notification script alias: Run night meds notification script
action: script.kallen_night_meds
- conditions: - conditions:
- condition: trigger - condition: trigger
id: boolean-morning id: boolean-morning
alias: Morning Taken alias: Morning Taken
sequence: sequence:
- service: input_datetime.set_datetime - target:
target:
entity_id: input_datetime.kallen_morning_meds_taken entity_id: input_datetime.kallen_morning_meds_taken
data: data:
datetime: '{% from ''time.jinja'' import set_datetime %} {{ set_datetime(0) datetime: '{% from ''time.jinja'' import set_datetime %} {{ set_datetime(0)
@@ -4764,27 +4783,27 @@
' '
alias: Set time morning meds were taken alias: Set time morning meds were taken
- service: input_boolean.turn_off action: input_datetime.set_datetime
metadata: {} - metadata: {}
data: {} data: {}
target: target:
entity_id: input_boolean.kallen_morning_meds_reminder entity_id: input_boolean.kallen_morning_meds_reminder
alias: Deactivate morning reminders alias: Deactivate morning reminders
- service: script.text_notify action: input_boolean.turn_off
metadata: {} - metadata: {}
data: data:
type: alert type: alert
who: kallen who: kallen
message: clear_notification message: clear_notification
tag: kallen-left-meds tag: kallen-left-meds
alias: Clear kallen-left-meds notification tag alias: Clear kallen-left-meds notification tag
action: script.text_notify
- conditions: - conditions:
- condition: trigger - condition: trigger
id: boolean-night id: boolean-night
alias: Night Taken alias: Night Taken
sequence: sequence:
- service: input_datetime.set_datetime - target:
target:
entity_id: input_datetime.kallen_night_meds_taken entity_id: input_datetime.kallen_night_meds_taken
data: data:
datetime: '{% from ''time.jinja'' import set_datetime %} {{ set_datetime(0) datetime: '{% from ''time.jinja'' import set_datetime %} {{ set_datetime(0)
@@ -4792,20 +4811,21 @@
' '
alias: Set time night meds were taken alias: Set time night meds were taken
action: input_datetime.set_datetime
- alias: Deactivate night reminders - alias: Deactivate night reminders
service: input_boolean.turn_off
metadata: {} metadata: {}
data: {} data: {}
target: target:
entity_id: input_boolean.kallen_night_meds_reminder entity_id: input_boolean.kallen_night_meds_reminder
- service: script.text_notify action: input_boolean.turn_off
metadata: {} - metadata: {}
data: data:
type: alert type: alert
who: kallen who: kallen
message: clear_notification message: clear_notification
tag: kallen-left-meds tag: kallen-left-meds
alias: Clear kallen-left-meds notification tag alias: Clear kallen-left-meds notification tag
action: script.text_notify
mode: parallel mode: parallel
max: 12 max: 12
- id: '1711657679853' - id: '1711657679853'
@@ -5352,72 +5372,96 @@
- 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
trigger: triggers:
- platform: state - entity_id:
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
- platform: event trigger: state
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 alias: Morning taken iOS
- alias: Afternoon taken trigger: event
platform: event - alias: Morning taken PC
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
- alias: Night taken trigger: event
platform: event - alias: Afternoon taken PC
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
- alias: Morning skipped trigger: event
platform: event - alias: Morning skipped iOS
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
- alias: Afternoon skipped trigger: event
platform: event - alias: Morning skipped PC
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
- alias: Night skipped trigger: event
platform: event - alias: Afternoon skipped PC
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
- platform: state trigger: event
entity_id: - entity_id:
- person.tony_stork - person.tony_stork
from: home from: home
id: left id: left
alias: Left alias: Left
condition: [] trigger: state
action: conditions: []
actions:
- alias: Routing - alias: Routing
choose: choose:
- conditions: - conditions:
@@ -5426,19 +5470,19 @@
- morning-reminders-off - morning-reminders-off
alias: Morning Reminders Off alias: Morning Reminders Off
sequence: sequence:
- service: counter.reset - metadata: {}
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
- service: script.text_notify action: counter.reset
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:
@@ -5446,18 +5490,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
- service: script.text_notify action: counter.reset
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:
@@ -5465,90 +5509,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
- service: script.text_notify action: counter.reset
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:
- condition: trigger - alias: Morning taken
condition: trigger
id: id:
- morning-taken - morning-taken
alias: Morning taken
sequence: sequence:
- service: input_boolean.turn_on - metadata: {}
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:
- service: input_boolean.turn_on - metadata: {}
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:
- service: input_boolean.turn_on - metadata: {}
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:
- service: input_boolean.turn_off - metadata: {}
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:
- service: input_boolean.turn_off - metadata: {}
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:
- service: input_boolean.turn_off - metadata: {}
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:
@@ -5574,7 +5618,6 @@
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
@@ -5582,6 +5625,7 @@
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'
@@ -6193,6 +6237,7 @@
- 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
@@ -6307,3 +6352,253 @@
who: all who: all
alias: Routing alias: Routing
mode: restart mode: restart
- id: '1765674032722'
alias: Emma Bedroom Heater
description: Turns Emma's bedroom heater on at the scheduled time
triggers:
- trigger: time
at: input_datetime.emma_bedroom_climate
alias: Emma Bedroom Climate
conditions:
- condition: state
entity_id: input_select.scheduled_climate_mode_emma_bedroom
state:
- Heat
- condition: state
entity_id: input_boolean.emma_bedroom_heater_installed
state:
- 'on'
actions:
- action: climate.set_hvac_mode
metadata: {}
target:
entity_id: climate.emma_bedroom_vtherm
data:
hvac_mode: heat
mode: restart
- 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
@@ -1,6 +1,6 @@
blueprint: blueprint:
name: Sensor Light name: Sensor Light
description: "# \U0001F4A1 Sensor Light\n**Version: 8.1**\n\nYour lighting experience, description: "# \U0001F4A1 Sensor Light\n**Version: 8.3**\n\nYour lighting experience,
your way - take control and customize it to perfection! \U0001F4A1✨\n\n**If you your way - take control and customize it to perfection! \U0001F4A1✨\n\n**If you
like my blueprints, and would like to show your support or just say thank you?** like my blueprints, and would like to show your support or just say thank you?**
[Click Here](https://www.paypal.com/donate/?hosted_button_id=WAZS3QSDTPGA8) \U0001F642\n\n<details> [Click Here](https://www.paypal.com/donate/?hosted_button_id=WAZS3QSDTPGA8) \U0001F642\n\n<details>
@@ -27,17 +27,19 @@ blueprint:
Light Sensing Options:**\n - Set up an Ambient Light Sensor for activation Light Sensing Options:**\n - Set up an Ambient Light Sensor for activation
in low-light conditions, customizable with specified LUX values.\n\n - **Time-Based in low-light conditions, customizable with specified LUX values.\n\n - **Time-Based
Options:**\n - Specify precise start and end times along with weekday selections Options:**\n - Specify precise start and end times along with weekday selections
to define when the automation should run.\n\n - **Device Tracker Options:**\n to define when the automation can run.\n\n - **State Control Option:**\n -
\ - Utilize \"Device Tracker\" to activate automation when home or within specified Allows the automation to run when the entity is in its selected activation state
zones, preventing unnecessary activations. This feature is particularly useful (ON or OFF).\n\n - **Device Tracker Options:**\n - Utilize \"Device Tracker\"
to prevent unnecessary lighting activations when pets trigger sensors while no to activate automation when home or within specified zones, preventing unnecessary
one is home.\n\n - **Night Lights Mode:**\n - Enable \"Night Lights\" for activations. This feature is particularly useful to prevent unnecessary lighting
softer illumination during night time activities, automatically enabled based activations when pets trigger sensors while no one is home.\n\n - **Night Lights
on conditions.\n - Opt to use \"Night Glow\". This feature activates a low-level Mode:**\n - Enable \"Night Lights\" for softer illumination during night time
light when no trigger is detected, creating a subtle ambient glow perfect for activities, automatically enabled based on conditions.\n - Opt to use \"Night
nighttime use.\n\n - **HA Restart Safeguards:**\n - Benefit from built-in Glow\". This feature activates a low-level light when no trigger is detected,
safeguards for Home Assistant restarts.\n\n - **Blueprint Add-On Integration:**\n creating a subtle ambient glow perfect for nighttime use.\n\n - **HA Restart
\ - Sensor Light Add-On - Enhances media control automation. [Click Here](https://community.home-assistant.io/t/591824) Safeguards:**\n - Benefit from built-in safeguards for Home Assistant restarts.\n\n
\ - **Blueprint Add-On Integration:**\n - Sensor Light Add-On - Enhances media
control automation. [Click Here](https://community.home-assistant.io/t/591824)
to learn more.\n - Bathroom Humidity Exhaust Fan - Keeps the lights ON when to learn more.\n - Bathroom Humidity Exhaust Fan - Keeps the lights ON when
showering. [Click Here](https://community.home-assistant.io/t/509992) to learn showering. [Click Here](https://community.home-assistant.io/t/509992) to learn
more.\n</details>\n\nNeed help?\n- The Settings & Best Practice Guidelines: [Click more.\n</details>\n\nNeed help?\n- The Settings & Best Practice Guidelines: [Click
@@ -75,6 +77,7 @@ blueprint:
- binary_sensor - binary_sensor
- schedule - schedule
multiple: true multiple: true
reorder: false
lights_settings: lights_settings:
name: Lights * name: Lights *
icon: mdi:lightbulb-outline icon: mdi:lightbulb-outline
@@ -118,6 +121,7 @@ blueprint:
- domain: - domain:
- input_boolean - input_boolean
multiple: false multiple: false
reorder: false
end_scenes: end_scenes:
name: Scenes - Scripts To Turn OFF name: Scenes - Scripts To Turn OFF
description: 'If you have selected a scene or a script to be turned ON above description: 'If you have selected a scene or a script to be turned ON above
@@ -134,6 +138,7 @@ blueprint:
- domain: - domain:
- scene - scene
- script - script
reorder: false
time_delay: time_delay:
name: Time Delay name: Time Delay
description: 'The time delay determines how long the lights, switches, scenes, description: 'The time delay determines how long the lights, switches, scenes,
@@ -171,8 +176,8 @@ blueprint:
value: use_brightness value: use_brightness
- label: Use Transition - label: Use Transition
value: use_transition value: use_transition
custom_value: false
sort: false sort: false
custom_value: false
light_brightness: light_brightness:
name: Brightness name: Brightness
description: 'The brightness setting for the lights when they are turned description: 'The brightness setting for the lights when they are turned
@@ -237,9 +242,9 @@ blueprint:
value: use_rgbww_colour value: use_rgbww_colour
- label: Disable Colour Control - label: Disable Colour Control
value: disable_colour_control value: disable_colour_control
custom_value: false
sort: false
multiple: false multiple: false
sort: false
custom_value: false
light_colour_temperature: light_colour_temperature:
name: Colour Temperature name: Colour Temperature
description: 'The colour temperature setting for the lights when they are description: 'The colour temperature setting for the lights when they are
@@ -357,9 +362,9 @@ blueprint:
value: enable_time_controled_brightness_inv value: enable_time_controled_brightness_inv
- label: 13 - Time Controlled - Colour Temp + Brightness - label: 13 - Time Controlled - Colour Temp + Brightness
value: enable_time_controled_colour_brightness value: enable_time_controled_colour_brightness
custom_value: false
sort: false
multiple: false multiple: false
sort: false
custom_value: false
dynamic_lighting_lux_sensor: dynamic_lighting_lux_sensor:
name: Dynamic Lighting - Ambient Light Sensor name: Dynamic Lighting - Ambient Light Sensor
description: '**Used in options 1, 2, 8 or 9** - Enter the specific ambient description: '**Used in options 1, 2, 8 or 9** - Enter the specific ambient
@@ -375,6 +380,7 @@ blueprint:
device_class: device_class:
- illuminance - illuminance
multiple: false multiple: false
reorder: false
dynamic_lighting_max_lux: dynamic_lighting_max_lux:
name: Dynamic Lighting - Max Lux Value name: Dynamic Lighting - Max Lux Value
description: '**Used in options 1, 2, 8 or 9** - Specify the maximum lux description: '**Used in options 1, 2, 8 or 9** - Specify the maximum lux
@@ -459,6 +465,7 @@ blueprint:
- domain: - domain:
- input_boolean - input_boolean
multiple: false multiple: false
reorder: false
dynamic_lighting_max_colour_temp: dynamic_lighting_max_colour_temp:
name: Dynamic Lighting - Max Colour Temperature name: Dynamic Lighting - Max Colour Temperature
description: '**Used in options 3, 6, 7, 8, 9, 10 or 13** - Specify the description: '**Used in options 3, 6, 7, 8, 9, 10 or 13** - Specify the
@@ -679,9 +686,9 @@ blueprint:
value: enable_state_control value: enable_state_control
- label: Disable State Control Option - label: Disable State Control Option
value: disable_state_control value: disable_state_control
custom_value: false
sort: false
multiple: false multiple: false
sort: false
custom_value: false
dynamic_lighting_state_control_activation_state: dynamic_lighting_state_control_activation_state:
name: Dynamic Lighting - State Control Activation State name: Dynamic Lighting - State Control Activation State
description: 'Select the state the entity must be in to activate dynamic description: 'Select the state the entity must be in to activate dynamic
@@ -698,9 +705,9 @@ blueprint:
value: 'on' value: 'on'
- label: OFF State - label: OFF State
value: 'off' value: 'off'
custom_value: false
sort: false
multiple: false multiple: false
sort: false
custom_value: false
dynamic_lighting_state_control_entity: dynamic_lighting_state_control_entity:
name: Dynamic Lighting - State Control Entity name: Dynamic Lighting - State Control Entity
description: 'If the state control option above is enabled, select the entity description: 'If the state control option above is enabled, select the entity
@@ -734,8 +741,8 @@ blueprint:
- label: 3 - Enable the Bypass - Keep the Lights Current State - label: 3 - Enable the Bypass - Keep the Lights Current State
value: bypass_enabled_stop value: bypass_enabled_stop
multiple: true multiple: true
custom_value: false
sort: false sort: false
custom_value: false
motion_bypass_lights_on: motion_bypass_lights_on:
name: Bypass Switch - Turn the Lights ON name: Bypass Switch - Turn the Lights ON
description: 'Select the switches that will turn your lights ON, bypass description: 'Select the switches that will turn your lights ON, bypass
@@ -748,6 +755,7 @@ blueprint:
selector: selector:
entity: entity:
multiple: true multiple: true
reorder: false
motion_bypass_lights_off: motion_bypass_lights_off:
name: Bypass Switch - Turn the Lights OFF name: Bypass Switch - Turn the Lights OFF
description: 'Select the switches that will turn your lights OFF, bypass description: 'Select the switches that will turn your lights OFF, bypass
@@ -760,6 +768,7 @@ blueprint:
selector: selector:
entity: entity:
multiple: true multiple: true
reorder: false
motion_bypass_lights_stop: motion_bypass_lights_stop:
name: Bypass Switch - Keep the Lights Current State name: Bypass Switch - Keep the Lights Current State
description: 'Select the switches that will keep your lights current state, description: 'Select the switches that will keep your lights current state,
@@ -772,6 +781,7 @@ blueprint:
selector: selector:
entity: entity:
multiple: true multiple: true
reorder: false
bypass_time_delay: bypass_time_delay:
name: Bypass - Time Delay name: Bypass - Time Delay
description: "This is only used in two specific bypass scenarios when your description: "This is only used in two specific bypass scenarios when your
@@ -807,8 +817,8 @@ blueprint:
State State
value: bypass_auto_off_enabled_stop value: bypass_auto_off_enabled_stop
multiple: true multiple: true
custom_value: false
sort: false sort: false
custom_value: false
bypass_auto_off_delay: bypass_auto_off_delay:
name: Bypass Auto OFF - Time Delay name: Bypass Auto OFF - Time Delay
description: 'Set the bypass auto OFF time delay. The time delay starts description: 'Set the bypass auto OFF time delay. The time delay starts
@@ -848,9 +858,9 @@ blueprint:
value: sun_enabled value: sun_enabled
- label: Disable the sun option - label: Disable the sun option
value: sun_disabled value: sun_disabled
custom_value: false
sort: false
multiple: false multiple: false
sort: false
custom_value: false
sun_elevation: sun_elevation:
name: Sun Elevation Falling name: Sun Elevation Falling
description: 'The sun elevation falling refers to the angle between the description: 'The sun elevation falling refers to the angle between the
@@ -906,9 +916,9 @@ blueprint:
value: ambient_enabled value: ambient_enabled
- label: Disable the ambient options - label: Disable the ambient options
value: ambient_disabled value: ambient_disabled
custom_value: false
sort: false
multiple: false multiple: false
sort: false
custom_value: false
ambient_light_sensor: ambient_light_sensor:
name: Ambient Light Sensor name: Ambient Light Sensor
description: 'Select the ambient sensor to be used. description: 'Select the ambient sensor to be used.
@@ -923,6 +933,7 @@ blueprint:
device_class: device_class:
- illuminance - illuminance
multiple: false multiple: false
reorder: false
ambient_light_options: ambient_light_options:
name: Ambient Light Sensor - Site Conditions name: Ambient Light Sensor - Site Conditions
description: 'In some cases when your lights turn ON, your ambient light description: 'In some cases when your lights turn ON, your ambient light
@@ -942,9 +953,9 @@ blueprint:
value: ambient_light_option_enabled value: ambient_light_option_enabled
- label: NO - My Ambient Light Sensor is not affected by the Lights - label: NO - My Ambient Light Sensor is not affected by the Lights
value: ambient_light_option_disabled value: ambient_light_option_disabled
custom_value: false
sort: false
multiple: false multiple: false
sort: false
custom_value: false
ambient_light_value: ambient_light_value:
name: Ambient Light - Low Lux Value name: Ambient Light - Low Lux Value
description: 'Set the Ambient Light Low Lux Value. The light will turn ON description: 'Set the Ambient Light Low Lux Value. The light will turn ON
@@ -1001,9 +1012,9 @@ blueprint:
value: time_enabled value: time_enabled
- label: Disable the time options - label: Disable the time options
value: time_disabled value: time_disabled
custom_value: false
sort: false
multiple: false multiple: false
sort: false
custom_value: false
after_time: after_time:
name: Start Time name: Start Time
description: 'Set the start time. description: 'Set the start time.
@@ -1054,8 +1065,57 @@ blueprint:
value: sat value: sat
- label: Sunday - label: Sunday
value: sun value: sun
custom_value: false
sort: false sort: false
custom_value: false
state_control_settings:
name: State Control
icon: mdi:toggle-switch-outline
collapsed: true
input:
include_state_control:
name: Use The State Control Option (Optional)
description: 'This option is used to add a condition that only allows the
automation to run when the entity is in its selected activation state
below.
'
default: state_control_disabled
selector:
select:
options:
- label: Enable State Control Option
value: state_control_enabled
- label: Disable State Control Option
value: state_control_disabled
multiple: false
sort: false
custom_value: false
state_control_activation_state:
name: Activation State
description: 'Select the state (ON or OFF) the entity must be in so the
automation can run.
'
default: 'off'
selector:
select:
options:
- label: ON State
value: 'on'
- label: OFF State
value: 'off'
multiple: false
sort: false
custom_value: false
state_control_entity:
name: Control Entity
description: 'If State Control is enabled, select the entity that will allow
the automation to run based on the activation state selected above.
'
default: []
selector:
entity: {}
device_tracker_settings: device_tracker_settings:
name: Device Tracker name: Device Tracker
icon: mdi:account-multiple-check-outline icon: mdi:account-multiple-check-outline
@@ -1083,9 +1143,9 @@ blueprint:
value: zone_people_enabled value: zone_people_enabled
- label: Disable the device tracker options - label: Disable the device tracker options
value: device_tracker_disabled value: device_tracker_disabled
custom_value: false
sort: false
multiple: false multiple: false
sort: false
custom_value: false
zone: zone:
name: Device Tracker - Zone name: Device Tracker - Zone
description: 'Choose the zone that will track your devices and/or people description: 'Choose the zone that will track your devices and/or people
@@ -1099,6 +1159,7 @@ blueprint:
- domain: - domain:
- zone - zone
multiple: false multiple: false
reorder: false
people: people:
name: Device Tracker - People name: Device Tracker - People
description: 'Select the people you would like to track in the zone selected description: 'Select the people you would like to track in the zone selected
@@ -1112,6 +1173,7 @@ blueprint:
filter: filter:
- domain: - domain:
- person - person
reorder: false
night_lights_trigger_settings: night_lights_trigger_settings:
name: Night Lights Settings name: Night Lights Settings
icon: mdi:weather-night icon: mdi:weather-night
@@ -1137,9 +1199,9 @@ blueprint:
value: night_lights_enabled value: night_lights_enabled
- label: Disable the night lights options - label: Disable the night lights options
value: night_lights_disabled value: night_lights_disabled
custom_value: false
sort: false
multiple: false multiple: false
sort: false
custom_value: false
night_lights_conditions: night_lights_conditions:
name: Night Lights Conditions (Required For Night Lights) name: Night Lights Conditions (Required For Night Lights)
description: 'Select any night light condition from the options provided description: 'Select any night light condition from the options provided
@@ -1161,8 +1223,8 @@ blueprint:
value: time_enabled value: time_enabled
- label: Enable sun elevation option - label: Enable sun elevation option
value: sun_enabled value: sun_enabled
custom_value: false
sort: false sort: false
custom_value: false
night_lights_entity_state: night_lights_entity_state:
name: Night Lights - Entity State name: Night Lights - Entity State
description: 'Select an entity that will trigger the activation of night description: 'Select an entity that will trigger the activation of night
@@ -1179,6 +1241,7 @@ blueprint:
selector: selector:
entity: entity:
multiple: true multiple: true
reorder: false
night_lights_after_time: night_lights_after_time:
name: Night Lights - Start Time name: Night Lights - Start Time
description: 'Set the start time. description: 'Set the start time.
@@ -1270,6 +1333,7 @@ blueprint:
- domain: - domain:
- input_boolean - input_boolean
multiple: false multiple: false
reorder: false
night_time_delay: night_time_delay:
name: Night Lights - Time Delay name: Night Lights - Time Delay
description: 'The time delay determines how long the night lights will remain description: 'The time delay determines how long the night lights will remain
@@ -1315,8 +1379,8 @@ blueprint:
value: if_lights_are_on_adjust_when_crossing_over value: if_lights_are_on_adjust_when_crossing_over
- label: Yes - Manage OFF script when crossing over - label: Yes - Manage OFF script when crossing over
value: manage_scripts_crossing_over value: manage_scripts_crossing_over
custom_value: false
sort: false sort: false
custom_value: false
night_light_brightness: night_light_brightness:
name: Night Lights - Brightness name: Night Lights - Brightness
description: 'The brightness setting of the lights when they are turned description: 'The brightness setting of the lights when they are turned
@@ -1379,9 +1443,9 @@ blueprint:
value: use_rgbww_colour value: use_rgbww_colour
- label: Disable Colour Control - label: Disable Colour Control
value: disable_colour_control value: disable_colour_control
custom_value: false
sort: false
multiple: false multiple: false
sort: false
custom_value: false
night_light_colour_temperature: night_light_colour_temperature:
name: Night Lights - Colour Temperature name: Night Lights - Colour Temperature
description: 'The colour temperature setting for the lights when they are description: 'The colour temperature setting for the lights when they are
@@ -1460,9 +1524,9 @@ blueprint:
value: night_glow_enabled value: night_glow_enabled
- label: Disable night glow - label: Disable night glow
value: night_glow_disabled value: night_glow_disabled
custom_value: false
sort: false
multiple: false multiple: false
sort: false
custom_value: false
night_glow_lights: night_glow_lights:
name: Night Glow - Lights name: Night Glow - Lights
description: 'The lights, switches, scenes, and scripts to be used for a description: 'The lights, switches, scenes, and scripts to be used for a
@@ -1501,8 +1565,8 @@ blueprint:
value: use_brightness value: use_brightness
- label: Use transition - label: Use transition
value: use_transition value: use_transition
custom_value: false
sort: false sort: false
custom_value: false
night_glow_light_brightness: night_glow_light_brightness:
name: Night Glow - Brightness name: Night Glow - Brightness
description: 'The brightness setting of the lights when they are turned description: 'The brightness setting of the lights when they are turned
@@ -1565,9 +1629,9 @@ blueprint:
value: use_rgbww_colour value: use_rgbww_colour
- label: Disable Colour Control - label: Disable Colour Control
value: disable_colour_control value: disable_colour_control
custom_value: false
sort: false
multiple: false multiple: false
sort: false
custom_value: false
night_glow_light_colour_temperature: night_glow_light_colour_temperature:
name: Night Glow - Colour Temperature name: Night Glow - Colour Temperature
description: 'The colour temperature setting for the lights when they are description: 'The colour temperature setting for the lights when they are
@@ -1683,6 +1747,9 @@ variables:
after_time: !input after_time after_time: !input after_time
before_time: !input before_time before_time: !input before_time
weekday_options: !input weekday_options weekday_options: !input weekday_options
include_state_control: !input include_state_control
state_control_activation_state: !input state_control_activation_state
state_control_entity: !input state_control_entity
include_device_tracker: !input include_device_tracker include_device_tracker: !input include_device_tracker
zone: !input zone zone: !input zone
people: !input people people: !input people
@@ -1963,8 +2030,16 @@ triggers:
id: t16 id: t16
entity_id: !input dynamic_lighting_state_control_entity entity_id: !input dynamic_lighting_state_control_entity
from: !input dynamic_lighting_state_control_activation_state from: !input dynamic_lighting_state_control_activation_state
- trigger: homeassistant - trigger: state
id: t17 id: t17
entity_id: !input state_control_entity
to: !input state_control_activation_state
- trigger: state
id: t18
entity_id: !input state_control_entity
from: !input state_control_activation_state
- trigger: homeassistant
id: t19
event: start event: start
condition: condition:
- condition: or - condition: or
@@ -2288,6 +2363,40 @@ condition:
conditions: conditions:
- condition: trigger - condition: trigger
id: t17 id: t17
- condition: state
entity_id: !input motion_trigger
state: 'on'
match: any
- condition: template
value_template: '{{ include_state_control == ''state_control_enabled'' }}'
- condition: and
conditions:
- condition: trigger
id: t18
- condition: template
value_template: '{{ include_state_control == ''state_control_enabled'' }}'
- condition: or
conditions:
- '{{ (expand(light_switch.entity_id) | selectattr(''state'', ''=='', ''on'')
| list | count > 0) }}'
- '{{ (include_night_lights == ''night_lights_enabled'') and (expand(night_lights.entity_id)
| selectattr(''state'', ''=='', ''on'') | list | count > 0) }}'
- '{{ (include_night_lights == ''night_lights_enabled'') and (include_night_glow
== ''night_glow_enabled'') and (expand(night_glow_lights.entity_id) | selectattr(''state'',
''=='', ''on'') | list | count > 0) }}'
- condition: template
value_template: "{% if boolean_scenes_scripts != [] %}\n {{ is_state(boolean_scenes_scripts,
'on') }}\n{% endif %}"
- condition: template
value_template: "{% if night_boolean_scenes_scripts != [] %}\n {{ is_state(night_boolean_scenes_scripts,
'on') }}\n{% endif %}"
- condition: template
value_template: "{% if dynamic_lighting_boolean != [] %}\n {{ is_state(dynamic_lighting_boolean,
'on') }}\n{% endif %}"
- condition: and
conditions:
- condition: trigger
id: t19
- condition: or - condition: or
conditions: conditions:
- '{{ (expand(light_switch.entity_id) | selectattr(''state'', ''=='', ''on'') - '{{ (expand(light_switch.entity_id) | selectattr(''state'', ''=='', ''on'')
@@ -2306,7 +2415,7 @@ condition:
- condition: and - condition: and
conditions: conditions:
- condition: trigger - condition: trigger
id: t17 id: t19
- condition: state - condition: state
entity_id: !input motion_trigger entity_id: !input motion_trigger
match: any match: any
@@ -2314,7 +2423,7 @@ condition:
- condition: and - condition: and
conditions: conditions:
- condition: trigger - condition: trigger
id: t17 id: t19
- '{{ (''bypass_auto_off_enabled_on'' in include_bypass_auto_off) or (''bypass_auto_off_enabled_off'' - '{{ (''bypass_auto_off_enabled_on'' in include_bypass_auto_off) or (''bypass_auto_off_enabled_off''
in include_bypass_auto_off) or (''bypass_auto_off_enabled_stop'' in include_bypass_auto_off) in include_bypass_auto_off) or (''bypass_auto_off_enabled_stop'' in include_bypass_auto_off)
}}' }}'
@@ -2407,7 +2516,7 @@ condition:
- t8_on - t8_on
- t8_off - t8_off
- t8_stop - t8_stop
- t17 - t19
- condition: or - condition: or
conditions: conditions:
- '{{ include_sun == ''sun_disabled'' }}' - '{{ include_sun == ''sun_disabled'' }}'
@@ -2502,6 +2611,26 @@ condition:
- t8_off - t8_off
- t8_stop - t8_stop
- t11 - t11
- condition: or
conditions:
- condition: template
value_template: '{{ include_state_control == ''state_control_disabled'' }}'
- condition: and
conditions:
- condition: template
value_template: '{{ include_state_control == ''state_control_enabled'' }}'
- condition: state
entity_id: !input state_control_entity
state: !input state_control_activation_state
- condition: trigger
id:
- t7_on
- t7_off
- t7_stop
- t8_on
- t8_off
- t8_stop
- t18
- condition: or - condition: or
conditions: conditions:
- '{{ include_device_tracker == ''device_tracker_disabled'' }}' - '{{ include_device_tracker == ''device_tracker_disabled'' }}'
@@ -3318,6 +3447,15 @@ action:
- condition: time - condition: time
after: !input before_time after: !input before_time
before: !input after_time before: !input after_time
- condition: and
conditions:
- condition: template
value_template: '{{ include_state_control == ''state_control_enabled''
}}'
- condition: template
value_template: '{% set opposite = ''off'' if state_control_activation_state
== ''on'' else ''on'' %} {{ is_state(state_control_entity, opposite)
}}'
sequence: sequence:
- alias: Wait the number of minutes set in the by-pass time delay - alias: Wait the number of minutes set in the by-pass time delay
delay: delay:
@@ -3591,13 +3729,14 @@ action:
entity_id: '{{ crossover_night_lights_light_on }}' entity_id: '{{ crossover_night_lights_light_on }}'
data: '{{ night_light_data }}' data: '{{ night_light_data }}'
- choose: - choose:
- alias: Sun, ambient & time above setting to turn off - alias: Sun, ambient, time & state control above setting to turn off
conditions: conditions:
- condition: trigger - condition: trigger
id: id:
- t9 - t9
- t10 - t10
- t11 - t11
- t18
sequence: sequence:
- choose: - choose:
- alias: If transition is selected - alias: If transition is selected
@@ -3834,7 +3973,7 @@ action:
- alias: Safe Guard when HA restarts - alias: Safe Guard when HA restarts
conditions: conditions:
- condition: trigger - condition: trigger
id: t17 id: t19
sequence: sequence:
- choose: - choose:
- alias: Check all by-pass are off and check conditions if enabled - alias: Check all by-pass are off and check conditions if enabled
@@ -5310,6 +5449,15 @@ action:
after: !input before_time after: !input before_time
before: !input after_time before: !input after_time
- '{{ include_time == ''time_enabled'' }}' - '{{ include_time == ''time_enabled'' }}'
- condition: and
conditions:
- condition: template
value_template: '{{ include_state_control == ''state_control_enabled''
}}'
- condition: template
value_template: '{% set opposite = ''off'' if state_control_activation_state
== ''on'' else ''on'' %} {{ is_state(state_control_entity, opposite)
}}'
sequence: sequence:
- alias: Wait the number of minutes set in the by-pass time delay - alias: Wait the number of minutes set in the by-pass time delay
delay: delay:
@@ -5663,13 +5811,14 @@ action:
data: data:
entity_id: !input dynamic_lighting_boolean entity_id: !input dynamic_lighting_boolean
- choose: - choose:
- alias: Sun, ambient & time above setting to turn off - alias: Sun, ambient, time & state control above setting to turn off
conditions: conditions:
- condition: trigger - condition: trigger
id: id:
- t9 - t9
- t10 - t10
- t11 - t11
- t18
sequence: sequence:
- choose: - choose:
- alias: If transition is selected - alias: If transition is selected
@@ -5905,7 +6054,7 @@ action:
- alias: Safe Guard when HA restarts - alias: Safe Guard when HA restarts
conditions: conditions:
- condition: trigger - condition: trigger
id: t17 id: t19
sequence: sequence:
- choose: - choose:
- alias: Check all by-pass are off and check conditions if enabled - alias: Check all by-pass are off and check conditions if enabled
@@ -6286,7 +6435,11 @@ action:
delay: delay:
minutes: !input dynamic_lighting_heartbeat minutes: !input dynamic_lighting_heartbeat
- alias: If dynamic lighting brightness is in the dead zone - alias: If dynamic lighting brightness is in the dead zone
conditions: '{{ in_dead_zone }}' conditions:
- condition: template
value_template: '{{ in_dead_zone }}'
- condition: template
value_template: '{{ repeat.index != 1 }}'
sequence: sequence:
- alias: Dynamic lighting heartbeat - alias: Dynamic lighting heartbeat
delay: delay:
@@ -6426,7 +6579,11 @@ action:
delay: delay:
minutes: !input dynamic_lighting_heartbeat minutes: !input dynamic_lighting_heartbeat
- alias: If dynamic lighting brightness is in the dead zone - alias: If dynamic lighting brightness is in the dead zone
conditions: '{{ in_dead_zone }}' conditions:
- condition: template
value_template: '{{ in_dead_zone }}'
- condition: template
value_template: '{{ repeat.index != 1 }}'
sequence: sequence:
- alias: Dynamic lighting heartbeat - alias: Dynamic lighting heartbeat
delay: delay:
@@ -7492,7 +7649,11 @@ action:
delay: delay:
minutes: !input dynamic_lighting_heartbeat minutes: !input dynamic_lighting_heartbeat
- alias: If dynamic lighting brightness is in the dead zone - alias: If dynamic lighting brightness is in the dead zone
conditions: '{{ in_dead_zone }}' conditions:
- condition: template
value_template: '{{ in_dead_zone }}'
- condition: template
value_template: '{{ repeat.index != 1 }}'
sequence: sequence:
- alias: Dynamic lighting heartbeat - alias: Dynamic lighting heartbeat
delay: delay:
@@ -7853,7 +8014,11 @@ action:
delay: delay:
minutes: !input dynamic_lighting_heartbeat minutes: !input dynamic_lighting_heartbeat
- alias: If dynamic lighting brightness is in the dead zone - alias: If dynamic lighting brightness is in the dead zone
conditions: '{{ in_dead_zone }}' conditions:
- condition: template
value_template: '{{ in_dead_zone }}'
- condition: template
value_template: '{{ repeat.index != 1 }}'
sequence: sequence:
- alias: Dynamic lighting heartbeat - alias: Dynamic lighting heartbeat
delay: delay:
@@ -0,0 +1,156 @@
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(--accent-color)'; let occupied_color = 'var(--bubble-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.1' version: '1.2.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(--accent-color)'; let occupied_color = 'var(--bubble-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(--accent-color)'; let occupied_color = 'var(--bubble-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.1' version: '1.2.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(--accent-color)'; let occupied_color = 'var(--bubble-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(--accent-color)'; let accent_color = 'var(--bubble-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.0' version: '1.1'
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(--accent-color)'; let accent_color = 'var(--bubble-accent-color)';
// Main button background // Main button background
const mainButton = card?.querySelector('.bubble-button-background'); const mainButton = card?.querySelector('.bubble-button-background');
+8 -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(--accent-color)'; : 'var(--bubble-accent-color)';
// Main button background // Main button background
const mainButton = card?.querySelector('.bubble-button-background'); const mainButton = card?.querySelector('.bubble-button-background');
@@ -21,6 +21,13 @@
mainButton.style.transition = 'background-color 1s'; mainButton.style.transition = 'background-color 1s';
} }
// Icon color
const icon = card?.querySelector('.bubble-icon');
if (icon) {
icon.style.color = state === 'on' ? on_color : 'var(--bubble-main-icon-color)';
icon.style.transition = 'color 1s';
}
// Unavailable state // Unavailable state
if (mainButton && state === 'unavailable') { if (mainButton && state === 'unavailable') {
mainButton.style.opacity = '0.5'; mainButton.style.opacity = '0.5';
+9 -2
View File
@@ -1,6 +1,6 @@
state_color_button: state_color_button:
name: State Color Button name: State Color Button
version: 1.1.2 version: 1.2.0
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(--accent-color)'; : 'var(--bubble-accent-color)';
// Main button background // Main button background
const mainButton = card?.querySelector('.bubble-button-background'); const mainButton = card?.querySelector('.bubble-button-background');
@@ -37,6 +37,13 @@ state_color_button:
mainButton.style.transition = 'background-color 1s'; mainButton.style.transition = 'background-color 1s';
} }
// Icon color
const icon = card?.querySelector('.bubble-icon');
if (icon) {
icon.style.color = state === 'on' ? on_color : 'var(--bubble-main-icon-color)';
icon.style.transition = 'color 1s';
}
// Unavailable state // Unavailable state
if (mainButton && state === 'unavailable') { if (mainButton && state === 'unavailable') {
mainButton.style.opacity = '0.5'; mainButton.style.opacity = '0.5';
+33 -33
View File
@@ -33,6 +33,7 @@ frontend:
- /hacsfiles/hass-hue-icons/hass-hue-icons.js - /hacsfiles/hass-hue-icons/hass-hue-icons.js
- /hacsfiles/hass-bha-icons/hass-bha-icons.js - /hacsfiles/hass-bha-icons/hass-bha-icons.js
- /hacsfiles/material-you-utilities/material-you-utilities.min.js - /hacsfiles/material-you-utilities/material-you-utilities.min.js
- /hacsfiles/lovelace-card-mod/card-mod.js?v4.1.0
javascript_version: latest javascript_version: latest
panel_custom: panel_custom:
@@ -64,11 +65,11 @@ calendar:
rest_command: rest_command:
todoist: todoist:
method: post method: post
url: 'https://api.todoist.com/sync/v9/{{ url }}' url: 'https://api.todoist.com/api/v1/{{ url }}'
payload: '{{ payload }}' payload: '{{ payload }}'
headers: headers:
Authorization: !secret todoist_api_token Authorization: !secret todoist_api_token
content_type: 'application/x-www-form-urlencoded' content_type: 'application/x-www-form-urlencoded'
recorder: recorder:
db_url: !secret mariadb_url db_url: !secret mariadb_url
@@ -107,6 +108,7 @@ 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
@@ -117,6 +119,17 @@ recorder:
- sensor.mosquitto* - sensor.mosquitto*
- sensor.*_rssi - sensor.*_rssi
- sensor.weatherflow_hub* - sensor.weatherflow_hub*
- 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*
entities: entities:
- sensor.avg_ping - sensor.avg_ping
- sensor.max_ping - sensor.max_ping
@@ -157,14 +170,7 @@ 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
@@ -278,6 +284,14 @@ 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*
entities: entities:
- media_player.living_room_tv - media_player.living_room_tv
- media_player.basement_tv - media_player.basement_tv
@@ -299,18 +313,6 @@ influxdb:
- binary_sensor.people_present - binary_sensor.people_present
- weather.iron_nerd_weather_station - weather.iron_nerd_weather_station
- weather.ashland_weather_station - weather.ashland_weather_station
- sensor.circle_k
- sensor.kroger
- sensor.kecks
- sensor.the_barn
- sensor.the_big_fish
- sensor.speedway
- sensor.meijer
- sensor.ridis
- sensor.marathon_cleveland_avenue
- sensor.south_side_shell
- sensor.east_side_shell
- sensor.shell_ottawa_avenue
- sensor.current_lights_on - sensor.current_lights_on
- binary_sensor.early_night_mode - binary_sensor.early_night_mode
- input_boolean.give_me_darkness - input_boolean.give_me_darkness
@@ -340,6 +342,7 @@ 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:
@@ -462,6 +465,14 @@ 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*
include_entities: include_entities:
- media_player.living_room_tv - media_player.living_room_tv
- media_player.basement_tv - media_player.basement_tv
@@ -483,18 +494,6 @@ prometheus:
- binary_sensor.people_present - binary_sensor.people_present
- weather.iron_nerd_weather_station - weather.iron_nerd_weather_station
- weather.ashland_weather_station - weather.ashland_weather_station
- sensor.circle_k
- sensor.kroger
- sensor.kecks
- sensor.the_barn
- sensor.the_big_fish
- sensor.speedway
- sensor.meijer
- sensor.ridis
- sensor.marathon_cleveland_avenue
- sensor.south_side_shell
- sensor.east_side_shell
- sensor.shell_ottawa_avenue
- sensor.current_lights_on - sensor.current_lights_on
- binary_sensor.early_night_mode - binary_sensor.early_night_mode
- input_boolean.give_me_darkness - input_boolean.give_me_darkness
@@ -524,3 +523,4 @@ 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
+20 -2
View File
@@ -90,8 +90,8 @@
{% elif state_attr(team,'opponent_winner') == true %} {% elif state_attr(team,'opponent_winner') == true %}
The {{ state_attr(team,'friendly_name') }} lost their game today against {% if state_attr(team,'league') != 'NCAAF'%}the{% endif %} {{ opponent_name }} by a score of {{ state_attr(team,'opponent_score') }} to {{ state_attr(team,'team_score') }}. The {{ state_attr(team,'friendly_name') }} lost their game today against {% if state_attr(team,'league') != 'NCAAF'%}the{% endif %} {{ opponent_name }} by a score of {{ state_attr(team,'opponent_score') }} to {{ state_attr(team,'team_score') }}.
{% endif %} {% endif %}
{% if state_attr(team,'clock') not in ['postponed','Postponed'] %} {% if state_attr(team,'clock') not in ['postponed','Postponed'] and state_attr(team,'team_record') != None %}
This brings their record to {{ state_attr(team,'team_record') | replace("-"," and ") }} on the season. This brings their record to {{ state_attr(team,'team_record') | replace("-"," and ") }} on the season.
{% endif %} {% endif %}
{% elif yday == date %} {% elif yday == date %}
{% if state_attr(team,'clock') in ['postponed','Postponed'] %} {% if state_attr(team,'clock') in ['postponed','Postponed'] %}
@@ -171,6 +171,15 @@
{% if is_state('binary_sensor.minnesota_wild_inhibit','off') %} {% if is_state('binary_sensor.minnesota_wild_inhibit','off') %}
{{ sports_pregame('sensor.minnesota_wild') }} {{ sports_pregame('sensor.minnesota_wild') }}
{% endif %} {% endif %}
{% if is_state('binary_sensor.michigan_wolverines_hockey','off') %}
{{ sports_pregame('sensor.michigan_wolverines_hockey') }}
{% endif %}
{% if is_state('binary_sensor.minnesota_golden_gophers_hockey','off') %}
{{ sports_pregame('sensor.minnesota_golden_gophers_hockey') }}
{% endif %}
{% if is_state('binary_sensor.minnesota_state_mavericks_hockey','off') %}
{{ sports_pregame('sensor.minnesota_state_mavericks_hockey') }}
{% endif %}
{% elif time == 'main' %} {% elif time == 'main' %}
{% if is_state('binary_sensor.michigan_wolverines_inhibit','off') %} {% if is_state('binary_sensor.michigan_wolverines_inhibit','off') %}
{{ sports_main('sensor.michigan_wolverines') }} {{ sports_main('sensor.michigan_wolverines') }}
@@ -199,6 +208,15 @@
{% if is_state('binary_sensor.minnesota_wild_inhibit','off') %} {% if is_state('binary_sensor.minnesota_wild_inhibit','off') %}
{{ sports_main('sensor.minnesota_wild') }} {{ sports_main('sensor.minnesota_wild') }}
{% endif %} {% endif %}
{% if is_state('binary_sensor.michigan_wolverines_hockey','off') %}
{{ sports_main('sensor.michigan_wolverines_hockey') }}
{% endif %}
{% if is_state('binary_sensor.minnesota_golden_gophers_hockey','off') %}
{{ sports_main('sensor.minnesota_golden_gophers_hockey') }}
{% endif %}
{% if is_state('binary_sensor.minnesota_state_mavericks_hockey','off') %}
{{ sports_main('sensor.minnesota_state_mavericks_hockey') }}
{% endif %}
{% endif %} {% endif %}
{% endmacro %} {% endmacro %}
{{ cleanup(data()) }} {{ cleanup(data()) }}
+5
View File
@@ -109,4 +109,9 @@
{% 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 %}
{% macro time_diff(sensor) %}
{% set diff = (as_timestamp(now()) - as_timestamp(states(sensor))) | int %}
{{ diff }}
{% endmacro %} {% 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 {{ states('sensor.home_temperature_feels_like') | 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 {{ state_attr('weather.iron_nerd_weather_station','apparent_temperature') | 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_active_alerts') > '0' and method != 'dashboard' %} {% elif states('sensor.weatheralerts_defiance_ohz004_ohc039') > '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_active_alerts') > '0' %} {% if states('sensor.weatheralerts_defiance_ohz004_ohc039') > '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 %}
-36
View File
@@ -1,39 +1,3 @@
sensor.ridis:
device_class: monetary
sensor.kecks:
device_class: monetary
sensor.circle_k:
device_class: monetary
sensor.the_big_fish:
device_class: monetary
sensor.meijer:
device_class: monetary
sensor.south_side_shell:
device_class: monetary
sensor.kroger:
device_class: monetary
sensor.marathon_cleveland_avenue:
device_class: monetary
sensor.speedway:
device_class: monetary
sensor.shell_ottawa_avenue:
device_class: monetary
sensor.the_barn:
device_class: monetary
sensor.east_side_shell:
device_class: monetary
sensor.local_minimum_gas_price: sensor.local_minimum_gas_price:
device_class: monetary device_class: monetary
+190 -22
View File
@@ -25,91 +25,91 @@ 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 >= 80 }}" state: "{{ (states('sensor.living_room_front_temperature') | float) >= (states('input_number.living_room_hot_threshold') | float) }}"
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 <= 60 }}" state: "{{ (states('sensor.living_room_front_temperature') | float) <= (states('input_number.living_room_cold_threshold') | float) }}"
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 >= 80 }}" state: "{{ (states('sensor.downstairs_bathroom_temperature') | float) >= (states('input_number.downstairs_bathroom_hot_threshold') | float) }}"
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 <= 55 }}" state: "{{ (states('sensor.downstairs_bathroom_temperature') | float) <= (states('input_number.downstairs_bathroom_cold_threshold') | float) }}"
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 >= 80 }}" state: "{{ (states('sensor.stairwell_bottom_temperature') | float) >= (states('input_number.stairwell_bottom_hot_threshold') | float) }}"
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 <= 60 }}" state: "{{ (states('sensor.stairwell_bottom_temperature') | float) <= (states('input_number.stairwell_bottom_cold_threshold') | float) }}"
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 >= 80 }}" state: "{{ (states('sensor.upstairs_bathroom_temperature') | float) >= (states('input_number.upstairs_bathroom_hot_threshold') | float) }}"
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 <= 60 }}" state: "{{ (states('sensor.upstairs_bathroom_temperature') | float) <= (states('input_number.upstairs_bathroom_cold_threshold') | float) }}"
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 >= 75 }}" state: "{{ (states('sensor.emma_bedroom_temperature') | float) >= (states('input_number.emma_bedroom_hot_threshold') | float) }}"
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 <= 60 }}" state: "{{ (states('sensor.emma_bedroom_temperature') | float) <= (states('input_number.emma_bedroom_cold_threshold') | float) }}"
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 >= 80 }}" state: "{{ (states('sensor.basement_studio_temperature') | float) >= (states('input_number.basement_studio_hot_threshold') | float) }}"
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 <= 60 }}" state: "{{ (states('sensor.basement_studio_temperature') | float) <= (states('input_number.basement_studio_cold_threshold') | float) }}"
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 >= 80 }}" state: "{{ (states('sensor.living_room_back_temperature') | float) >= (states('input_number.living_room_hot_threshold') | float) }}"
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 <= 60 }}" state: "{{ (states('sensor.living_room_back_temperature') | float) <= (states('input_number.living_room_cold_threshold') | float) }}"
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 >= 80 }}" state: "{{ (states('sensor.mud_room_temperature') | float) >= (states('input_number.mud_room_hot_threshold') | float) }}"
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 <= 60 }}" state: "{{ (states('sensor.mud_room_temperature') | float) <= (states('input_number.mud_room_cold_threshold') | float) }}"
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 >= 80 }}" state: "{{ (states('sensor.stairwell_top_temperature') | float) >= (states('input_number.stairwell_top_hot_threshold') | float) }}"
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 <= 60 }}" state: "{{ (states('sensor.stairwell_top_temperature') | float) <= (states('input_number.stairwell_top_cold_threshold') | float) }}"
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 >= 75 }}" state: "{{ (states('sensor.kallen_bedroom_temperature') | float) >= (states('input_number.kallen_bedroom_hot_threshold') | float) }}"
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 <= 60 }}" state: "{{ (states('sensor.kallen_bedroom_temperature') | float) <= (states('input_number.kallen_bedroom_cold_threshold') | float) }}"
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 >= 75 }}" state: "{{ (states('sensor.master_bedroom_temperature') | float) >= (states('input_number.master_bedroom_hot_threshold') | float) }}"
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 <= 60 }}" state: "{{ (states('sensor.master_bedroom_temperature') | float) <= (states('input_number.master_bedroom_cold_threshold') | float) }}"
device_class: cold device_class: cold
- sensor: - sensor:
- name: "Master Bedroom Target Temp" - name: "Master Bedroom Target Temp"
@@ -324,6 +324,13 @@ input_number:
step: 1 step: 1
unit_of_measurement: °F unit_of_measurement: °F
icon: mdi:thermometer icon: mdi:thermometer
master_bedroom_mode_switch_threshold:
name: Master Bedroom Mode Switch Threshold
min: 60
max: 80
step: 1
unit_of_measurement: °F
icon: mdi:thermometer
emma_bedroom_daytime_temp: emma_bedroom_daytime_temp:
name: Emma Bedroom Daytime Temp name: Emma Bedroom Daytime Temp
min: 65 min: 65
@@ -345,6 +352,20 @@ input_number:
step: 1 step: 1
unit_of_measurement: °F unit_of_measurement: °F
icon: mdi:thermometer icon: mdi:thermometer
emma_bedroom_heater_run_threshold:
name: Emma Bedroom Heater Run Threshold
min: 40
max: 80
step: 1
unit_of_measurement: °F
icon: mdi:thermometer
emma_bedroom_heater_shutoff_threshold:
name: Emma Bedroom Heater Shutoff Threshold
min: 40
max: 80
step: 1
unit_of_measurement: °F
icon: mdi:thermometer
emma_bedroom_aircon_run_threshold: emma_bedroom_aircon_run_threshold:
name: Emma Bedroom Aircon Run Threshold name: Emma Bedroom Aircon Run Threshold
min: 40 min: 40
@@ -373,6 +394,13 @@ input_number:
step: 1 step: 1
unit_of_measurement: °F unit_of_measurement: °F
icon: mdi:thermometer icon: mdi:thermometer
emma_bedroom_mode_switch_threshold:
name: Emma Bedroom Mode Switch Threshold
min: 60
max: 80
step: 1
unit_of_measurement: °F
icon: mdi:thermometer
kallen_fan_threshold: kallen_fan_threshold:
name: Kallen Fan Threshold name: Kallen Fan Threshold
min: 40 min: 40
@@ -429,6 +457,146 @@ 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
climate: climate:
- platform: generic_thermostat - platform: generic_thermostat
File diff suppressed because it is too large Load Diff
+5 -2
View File
@@ -48,8 +48,8 @@ input_datetime:
has_date: false has_date: false
has_time: true has_time: true
icon: mdi:fan-auto icon: mdi:fan-auto
emma_bedroom_cooling: emma_bedroom_climate:
name: Emma Bedroom Cooling name: Emma Bedroom Climate
has_date: false has_date: false
has_time: true has_time: true
icon: mdi:fan-auto icon: mdi:fan-auto
@@ -899,3 +899,6 @@ script:
- service: input_boolean.turn_off - service: input_boolean.turn_off
target: target:
entity_id: input_boolean.white_noise_emma_bedroom entity_id: input_boolean.white_noise_emma_bedroom
- service: climate.turn_off
target:
entity_id: climate.emma_bedroom_vtherm
+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_aircon_compressor entity_id: binary_sensor.emma_bedroom_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_aircon_fan entity_id: binary_sensor.emma_bedroom_aircon_fan
state: 'on' state: 'on'
type: time type: time
end: '{{ now() }}' end: '{{ now() }}'
+5 -6
View File
@@ -38,12 +38,13 @@ conversation:
alexa: alexa:
powercalc: powercalc:
force_update_frequency: 00:01:00 discovery:
enabled: true
energy_update_interval: 60
power_sensor_naming: "{} Power Sensor" power_sensor_naming: "{} Power Sensor"
power_sensor_friendly_naming: "{} Power Sensor" power_sensor_friendly_naming: "{} Power Sensor"
energy_sensor_naming: "{} Energy Sensor" energy_sensor_naming: "{} Energy Sensor"
energy_sensor_friendly_naming: "{} Energy Sensor" energy_sensor_friendly_naming: "{} Energy Sensor"
enable_autodiscovery: true
create_energy_sensors: true create_energy_sensors: true
create_utility_meters: true create_utility_meters: true
create_domain_groups: create_domain_groups:
@@ -56,8 +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:
battery_notes:
-306
View File
@@ -1,306 +0,0 @@
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
@@ -1,328 +0,0 @@
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 }'
+21 -5
View File
@@ -90,17 +90,33 @@ 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/sync/v9/projects/get_data' resource: 'https://api.todoist.com/api/v1/projects/2285969005/full'
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
value_template: '{{value_json[''project''][''id'']}}' Accept: application/json
value_template: '{{ value_json.results | length }}'
json_attributes: json_attributes:
- project - results
- items scan_interval: 60
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...
+1 -1
View File
@@ -268,7 +268,7 @@ script:
- light.living_room_overhead - light.living_room_overhead
- service: input_text.set_value - service: input_text.set_value
target: target:
entity_id: input_text.living_room_studio_selected_scene entity_id: input_text.living_room_selected_scene
data: data:
value: Alert value: Alert
# Define variable for restoration of the current scene if the backup is not needed # Define variable for restoration of the current scene if the backup is not needed
+162
View File
@@ -79,6 +79,9 @@ 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:
@@ -103,6 +106,19 @@ 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:
@@ -352,6 +368,27 @@ 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:
@@ -805,6 +842,131 @@ 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:
+2
View File
@@ -124,6 +124,8 @@ template:
state: > state: >
{% if is_state('binary_sensor.basement_studio_motion','on') %} {% if is_state('binary_sensor.basement_studio_motion','on') %}
true true
{% elif is_state('input_boolean.recliner_mode','on') %}
true
{% elif is_state('sensor.xia_desktop_current_username','tm24f') %} {% elif is_state('sensor.xia_desktop_current_username','tm24f') %}
false false
{% elif is_state('binary_sensor.tony_desktop_on','off') and {% elif is_state('binary_sensor.tony_desktop_on','off') and
+29 -11
View File
@@ -710,33 +710,51 @@ script:
data: data:
option: > option: >
{% set low = states('sensor.overnight_lowest_temperature') | int %} {% set low = states('sensor.overnight_lowest_temperature') | int %}
{% set run_threshold = states('input_number.emma_bedroom_aircon_run_threshold') | int %} {% set aircon_run_threshold = states('input_number.emma_bedroom_aircon_run_threshold') | int %}
{% set mode_threshold = states('input_number.emma_bedroom_aircon_mode_threshold') | int %} {% set aircon_mode_threshold = states('input_number.emma_bedroom_aircon_mode_threshold') | int %}
{% if is_state('input_boolean.emma_bedroom_aircon_installed','off') %} {% set heater_run_threshold = states('input_number.emma_bedroom_heater_run_threshold') | int %}
{% if is_state('input_boolean.emma_bedroom_aircon_installed','off') and is_state('input_boolean.emma_bedroom_heater_installed','off') %}
White Noise White Noise
{% elif low >= run_threshold %} {% elif low >= aircon_run_threshold and is_state('input_boolean.emma_bedroom_aircon_installed','on') %}
{% if low >= mode_threshold %} {% if low >= aircon_mode_threshold %}
AC AC
{% else %} {% else %}
Fan Fan
{% endif %} {% endif %}
{% elif low < heater_run_threshold and is_state('input_boolean.emma_bedroom_heater_installed','on') %}
Heat
{% else %} {% else %}
White Noise White Noise
{% endif %} {% endif %}
- delay:
milliseconds: 500
- service: input_datetime.set_datetime - service: input_datetime.set_datetime
target: target:
entity_id: input_datetime.emma_bedroom_cooling entity_id: input_datetime.emma_bedroom_climate
data: data:
time: > time: >
{% set high = states('sensor.todays_high_temp') | int %} {% set high = states('sensor.todays_high_temp') | int %}
{% set low = states('sensor.overnight_lowest_temperature') | int %} {% set low = states('sensor.overnight_lowest_temperature') | int %}
{% set bedtime = state_attr('input_datetime.emma_bedtime','timestamp') | int %} {% set bedtime = state_attr('input_datetime.emma_bedtime','timestamp') | int %}
{% if is_state('input_boolean.hot_day','on') %} {% set schedmode = states('input_select.scheduled_climate_mode_emma_bedroom') %}
{{ (bedtime - 5400) | timestamp_custom('%H:%M',false) }} {% if schedmode in ['AC','Fan'] and is_state('input_boolean.emma_bedroom_aircon_installed','on') %}
{% elif high >= 80 or low >= 60 %} {% if is_state('input_boolean.hot_day','on') %}
{{ (bedtime - 3600) | timestamp_custom('%H:%M',false) }} {{ (bedtime - 5400) | timestamp_custom('%H:%M',false) }}
{% elif high >= 80 or low >= 60 %}
{{ (bedtime - 3600) | timestamp_custom('%H:%M',false) }}
{% else %}
{{ (bedtime - 1800) | timestamp_custom('%H:%M',false) }}
{% endif %}
{% elif schedmode == 'Heat' and is_state('input_boolean.emma_bedroom_heater_installed','on') %}
{% if low <= 20 %}
{{ (bedtime - 5400) | timestamp_custom('%H:%M',false) }}
{% elif low <= 32 %}
{{ (bedtime - 3600) | timestamp_custom('%H:%M',false) }}
{% else %}
{{ (bedtime - 1800) | timestamp_custom('%H:%M',false) }}
{% endif %}
{% else %} {% else %}
{{ (bedtime - 1800) | timestamp_custom('%H:%M',false) }} {{ bedtime | timestamp_custom('%H:%M',false) }}
{% endif %} {% endif %}
- service: input_boolean.turn_on - service: input_boolean.turn_on
target: target:
+21 -21
View File
@@ -190,51 +190,51 @@ template:
{% set dow = now().strftime('%A') %} {% set dow = now().strftime('%A') %}
{% if week == 'First Menu' %} {% if week == 'First Menu' %}
{% if dow == 'Monday' %} {% if dow == 'Monday' %}
Popcorn chicken, mashed potatoes, corn, apples, corn bread, and milk. Chicken tenders, au gratin potatoes, corn, mixed fruit, cornbread, and milk.
{% elif dow == 'Tuesday' %} {% elif dow == 'Tuesday' %}
Beef taco or taco salad, refried beans, spanish rice, peaches, and milk. Beef or chicken, taco or salad, refried beans, rice, apple, and milk.
{% elif dow == 'Wednesday' %} {% elif dow == 'Wednesday' %}
Pulled pork, steamed broccoli, tomatoes, mixed fruit, and milk. Hot dog, french fries, celery, peaches, and milk.
{% elif dow == 'Thursday' %} {% elif dow == 'Thursday' %}
Beef Stroganoff, green beans, carrots, fresh fruit, bread, and milk. Mac and cheese, Cheez-Its, side salad, tomatoes, pears, and milk.
{% elif dow == 'Friday' %} {% elif dow == 'Friday' %}
Optionally, Papa Johns Pizza. Otherwise, hamburger, spinach salad, oven potatoes, applesauce, and milk. Corndog, steamed broccoli, carrots, applesauce, and milk.
{% endif %} {% endif %}
{% elif week == 'Second Menu' %} {% elif week == 'Second Menu' %}
{% if dow == 'Monday' %} {% if dow == 'Monday' %}
Pizza, spinach salad, tomatoes, fruit, and milk. Popcorn chicken, mashed potatoes, corn, grapes, cornbread, and milk.
{% elif dow == 'Tuesday' %} {% elif dow == 'Tuesday' %}
Lasagna, garlic bread, steamed cauliflower, celery, apple crisp, and milk. BBQ pork, baked beans, cucumbers, mixed fruit, and milk.
{% elif dow == 'Wednesday' %} {% elif dow == 'Wednesday' %}
Chicken patty, oven potatoes, broccoli, pears, and milk. Bosco sticks, french fries, tomatoes, banana, and milk.
{% elif dow == 'Thursday' %} {% elif dow == 'Thursday' %}
Turkey and noodles, mashed potatoes, green beans, peaches, breadstick, and milk. Teriyaki beef and broccoli ramen, stir fry, egg roll, strawberry cup, and milk.
{% elif down == 'Friday' %} {% elif dow == 'Friday' %}
Optionally, Papa Johns Pizza. Otherwise, hot dog with chili sauce, carrots, baked beans, mixed fruit, and milk. Hamburger, fries, carrots, applesauce, and milk.
{% endif %} {% endif %}
{% elif week == 'Third Menu' %} {% elif week == 'Third Menu' %}
{% if dow == 'Monday' %} {% if dow == 'Monday' %}
Popcorn chicken, au gratin potatoes, corn, mixed fruit, corn bread, milk. Nachoes, carrots, apple, and milk.
{% elif dow == 'Tuesday' %} {% elif dow == 'Tuesday' %}
Beef taco or taco salad, refried beans, spanish rice, peaches, and milk. Chicken patty, au gratin potatoes, cauliflower, peaches, and milk.
{% elif dow == 'Wednesday' %} {% elif dow == 'Wednesday' %}
Hamburger, oven potatoes, celery, applesauce, and milk. Pizza Crunchers, side salad, steamed broccoli, mixed fruit, and milk.
{% elif dow == 'Thursday' %} {% elif dow == 'Thursday' %}
Mac and cheese, steamed broccoli, tomatoes, pears, bread, and milk. Chicken teriyaki bowl, black beans, corn, apple crisp, egg roll, and milk.
{% elif dow == 'Friday' %} {% elif dow == 'Friday' %}
Optionally, Papa Johns Pizza. Otherwise, sloppy joe, carrots, spinach salad, fruit, and milk. Hot dog, french fries, cherry tomatoes, strawberry cups, and milk.
{% endif %} {% endif %}
{% elif week == 'Fourth Menu' %} {% elif week == 'Fourth Menu' %}
{% if dow == 'Monday' %} {% if dow == 'Monday' %}
Toasted cheese, tomato soup, mixed vegetables, fresh fruit, treat, and milk. French toast or egg omelet, sausage, tomatoes, hash browns, oranges, and milk.
{% elif dow == 'Tuesday' %} {% elif dow == 'Tuesday' %}
Omelet or french toast, sausage, hash browns, tomatoes, orange, and milk. Orange chicken with vegetable rice, egg roll, fortune cookie, apple crisp, and milk.
{% elif dow == 'Wednesday' %} {% elif dow == 'Wednesday' %}
Bosco sticks with pizza sauce, carrots, oven potatoes, peach crisp, and milk. Hamburger, fries, steamed carrots, banana, and milk.
{% elif dow == 'Thursday' %} {% elif dow == 'Thursday' %}
Spaghetti, broccoli, green beans, fresh fruit, breadstick, and milk. Chicken and noodles, mashed potatoes, green beans, peach cups, breadstick, and milk.
{% elif dow == 'Friday' %} {% elif dow == 'Friday' %}
Optionally, Papa Johns Pizza. Otherwise, hot dog, baked beans, cauliflower, applesauce, and milk. Mozzarella sticks, marinara, side salad, broccoli, mixed fruit, and milk.
{% endif %} {% endif %}
{% else %} {% else %}
No menu for the current day. No menu for the current day.
+12
View File
@@ -125,6 +125,18 @@ alarm_control_panel:
template: template:
- 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
+30
View File
@@ -142,6 +142,36 @@ template:
state: > state: >
{% from 'sports.jinja' import sports_today %} {% from 'sports.jinja' import sports_today %}
{{ sports_today('sensor.minnesota_wild') }} {{ sports_today('sensor.minnesota_wild') }}
- name: Michigan Wolverines Hockey Inhibit
unique_id: 8ecd46d5-64c2-49f5-bc8d-d88593273d92
state: >
{% from 'sports.jinja' import sports_inhibit %}
{{ sports_inhibit('sensor.michigan_wolverines_hockey') }}
- name: Michigan Wolverines Hockey Event Today
unique_id: 551fdae5-e18c-4117-b3ba-df864068b13d
state: >
{% from 'sports.jinja' import sports_today %}
{{ sports_today('sensor.michigan_wolverines_hockey') }}
- name: Minnesota Golden Gophers Hockey Inhibit
unique_id: 87653f3a-203c-4dbf-87e8-70bcacf6eb22
state: >
{% from 'sports.jinja' import sports_inhibit %}
{{ state_attr('sensor.minnesota_golden_gophers_hockey','opponent_abbr') in ['MICH','MNST'] or sports_inhibit('sensor.minnesota_golden_gophers_hockey') }}
- name: Minnesota Golden Gophers Hockey Event Today
unique_id: 1f4ff7eb-cbc9-4c81-a5c9-6523b5fb52ff
state: >
{% from 'sports.jinja' import sports_today %}
{{ sports_today('sensor.minnesota_golden_gophers_hockey') }}
- name: Minnesota State Mavericks Hockey Inhibit
unique_id: bd15870d-bccb-4c52-9690-473c31bb4090
state: >
{% from 'sports.jinja' import sports_inhibit %}
{{ state_attr('sensor.minnesota_state_mavericks_hockey','opponent_abbr') in ['MICH'] or sports_inhibit('sensor.minnesota_state_mavericks_hockey') }}
- name: Minnesota State Mavericks Hockey Event Today
unique_id: e403be15-3ff2-47b1-8398-70f8ccb65026
state: >
{% from 'sports.jinja' import sports_today %}
{{ sports_today('sensor.minnesota_state_mavericks_hockey') }}
intent_script: intent_script:
SportsScore: SportsScore:
+9 -18
View File
@@ -2,6 +2,9 @@ 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:
@@ -92,32 +95,20 @@ 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: "{{ (states('sensor.tony_asus_system_idle_time') | int) > (states('input_number.basement_computers_idle_time') | int * 60) }}" state: >
{% 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: "{{ (states('sensor.xia_desktop_system_idle_time') | int) > (states('input_number.first_floor_computers_idle_time') | int * 60) }}" state: >
{% 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 - name: Asus Laptop Idle
unique_id: 7d8eb80a-0a2e-48a9-84b3-33175304dd95 unique_id: 7d8eb80a-0a2e-48a9-84b3-33175304dd95
state: "{{ states('sensor.asus_laptop_system_idle_time') | int > 1800 }}" state: "{{ states('sensor.asus_laptop_system_idle_time') | int > 1800 }}"
- sensor:
- name: "Min Ping"
unique_id: ddcb9f6f-7c94-41fe-9453-2a2205b078e0
state: "{{ state_attr('binary_sensor.internet','round_trip_time_min') }}"
availability: "{{ is_state('binary_sensor.internet','on') }}"
unit_of_measurement: "ms"
- name: "Avg Ping"
unique_id: 79a13c64-7508-48de-8b44-2a23c59917c8
state: "{{ state_attr('binary_sensor.internet','round_trip_time_avg') }}"
availability: "{{ is_state('binary_sensor.internet','on') }}"
unit_of_measurement: "ms"
- name: "Max Ping"
unique_id: c9c71ab6-c7fa-4425-a4ed-768d60e93781
state: "{{ state_attr('binary_sensor.internet','round_trip_time_max') }}"
availability: "{{ is_state('binary_sensor.internet','on') }}"
unit_of_measurement: "ms"
# - platform: influxdb # - platform: influxdb
# host: 192.168.1.26 # host: 192.168.1.26
+176
View File
@@ -0,0 +1,176 @@
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 }'
+32 -5
View File
@@ -25,24 +25,36 @@ input_boolean:
tony_ibuprofen_active: tony_ibuprofen_active:
name: Tony Ibuprofen Active name: Tony Ibuprofen Active
icon: mdi:medication icon: mdi:medication
tony_ibuprofen_reminder:
name: Tony Ibuprofen Reminder
icon: mdi:medication
tony_ibuprofen_taken: tony_ibuprofen_taken:
name: Tony Ibuprofen Taken name: Tony Ibuprofen Taken
icon: mdi:medication icon: mdi:medication
tony_tylenol_active: tony_tylenol_active:
name: Tony Tylenol Active name: Tony Tylenol Active
icon: mdi:medication icon: mdi:medication
tony_tylenol_reminder:
name: Tony Tylenol Reminder
icon: mdi:medication
tony_tylenol_taken: tony_tylenol_taken:
name: Tony Tylenol Taken name: Tony Tylenol Taken
icon: mdi:medication icon: mdi:medication
tony_custom_meds_tracker_p1: tony_custom_meds_tracker_p1:
name: Tony Custom Meds Tracker P1 name: Tony Custom Meds Tracker P1
icon: mdi:medication icon: mdi:medication
tony_custom_meds_reminder_p1:
name: Tony Custom Meds Reminder P1
icon: mdi:medication
tony_custom_meds_taken_p1: tony_custom_meds_taken_p1:
name: Tony Custom Meds Taken P1 name: Tony Custom Meds Taken P1
icon: mdi:medication icon: mdi:medication
tony_custom_meds_tracker_p2: tony_custom_meds_tracker_p2:
name: Tony Custom Meds Tracker P2 name: Tony Custom Meds Tracker P2
icon: mdi:medication icon: mdi:medication
tony_custom_meds_reminder_p2:
name: Tony Custom Meds Reminder P2
icon: mdi:medication
tony_custom_meds_taken_p2: tony_custom_meds_taken_p2:
name: Tony Custom Meds Taken P2 name: Tony Custom Meds Taken P2
icon: mdi:medication icon: mdi:medication
@@ -177,17 +189,32 @@ 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/sync/v9/projects/get_data' resource: 'https://api.todoist.com/api/v1/projects/2285967948/full'
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
value_template: '{{value_json[''project''][''id'']}}' Accept: application/json
value_template: '{{ value_json.results | length }}'
json_attributes: json_attributes:
- project - results
- items scan_interval: 60
scan_interval: 30
# template: # template:
# - binary_sensor: # - binary_sensor:
+212
View File
@@ -0,0 +1,212 @@
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 -1
View File
@@ -47,7 +47,6 @@ ## 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)
@@ -58,6 +57,7 @@ ## 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)
</details> </details>
@@ -113,6 +113,8 @@ ## HACS Lovelace Cards
- [Comfortable Environment Card](https://github.com/argaar/comfortable-environment-card) - [Comfortable Environment Card](https://github.com/argaar/comfortable-environment-card)
- [Versatile Thermostat UI Card](https://github.com/jmcollin78/versatile-thermostat-ui-card) - [Versatile Thermostat UI Card](https://github.com/jmcollin78/versatile-thermostat-ui-card)
- [Gauge Card Pro](https://github.com/benjamin-dcs/gauge-card-pro) - [Gauge Card Pro](https://github.com/benjamin-dcs/gauge-card-pro)
- [AdGuard Card](https://github.com/homeassistant-extras/adguard-card)
- [Music Assistant Player Card](https://github.com/droans/mass-player-card)
</details> </details>
+563 -210
View File
File diff suppressed because it is too large Load Diff
+55 -6
View File
@@ -450,17 +450,66 @@
unit_of_measurement: '' unit_of_measurement: ''
icon: mdi:close-network-outline icon: mdi:close-network-outline
state: > state: >
{% set uptimekuma = states.binary_sensor | {% set uptimekuma = states.sensor |
selectattr('entity_id','in',integration_entities('uptime_kuma')) | selectattr('entity_id','in',integration_entities('192.168.1.111')) |
selectattr('state','eq','off') | selectattr('state','eq','down') |
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.binary_sensor | {% set uptimekuma = states.sensor |
selectattr('entity_id','in',integration_entities('uptime_kuma')) | selectattr('entity_id','in',integration_entities('192.168.1.111')) |
selectattr('state','eq','down') |
map(attribute='attributes.friendly_name') |
map('regex_replace', ' Status$', '') |
list %}
{{ uptimekuma | join(', ') }}
- name: Media Server Viewer Health
unique_id: 51154ade-255e-4dcd-9b89-66910fcc1331
unit_of_measurement: '%'
icon: mdi:movie
state: >
{% set total = states.binary_sensor |
selectattr('entity_id','in',label_entities('media_server')) |
selectattr('entity_id','in',label_entities('viewer')) |
list | count | int %}
{% set up = states.binary_sensor |
selectattr('entity_id','in',label_entities('media_server')) |
selectattr('entity_id','in',label_entities('viewer')) |
selectattr('state','eq','on') |
list | count | int %}
{{ ((up / total) * 100) | round(0) }}
attributes:
services_down: >
{% set down = states.binary_sensor |
selectattr('entity_id','in',label_entities('media_server')) |
selectattr('entity_id','in',label_entities('viewer')) |
selectattr('state','eq','off') | selectattr('state','eq','off') |
map(attribute='attributes.friendly_name') | map(attribute='attributes.friendly_name') |
list %} list %}
{{ uptimekuma | join(', ') }} {{ down | join(', ') }}
- name: Media Server Downloaders Health
unique_id: f27867fe-700f-45bc-9e6b-8b1ee74cb724
unit_of_measurement: '%'
icon: mdi:tray-arrow-down
state: >
{% set total = states.binary_sensor |
selectattr('entity_id','in',label_entities('media_server')) |
selectattr('entity_id','in',label_entities('downloader')) |
list | count | int %}
{% set up = states.binary_sensor |
selectattr('entity_id','in',label_entities('media_server')) |
selectattr('entity_id','in',label_entities('downloader')) |
selectattr('state','eq','on') |
list | count | int %}
{{ ((up / total) * 100) | round(0) }}
attributes:
services_down: >
{% set down = states.binary_sensor |
selectattr('entity_id','in',label_entities('media_server')) |
selectattr('entity_id','in',label_entities('downloader')) |
selectattr('state','eq','off') |
map(attribute='attributes.friendly_name') |
list %}
{{ down | join(', ') }}
+7 -7
View File
@@ -71,13 +71,13 @@
{% 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_aircon') != 'N/A' %} {% if states('input_select.scheduled_climate_mode_emma_bedroom') != 'N/A' %}
{% if is_state('input_select.scheduled_climate_mode_emma_bedroom_aircon','AC') and is_state('input_boolean.hot_day','on') %} {% if is_state('input_select.scheduled_climate_mode_emma_bedroom','AC') and is_state('input_boolean.hot_day','on') %}
"Today was a hot day, so Emma's bedroom air conditioner will start cooling a bit earlier tonight at {{ input_datetime_read('input_datetime.emma_bedroom_cooling') }}. " "Today was a hot day, so Emma's bedroom air conditioner will start cooling a bit earlier tonight at {{ input_datetime_read('input_datetime.emma_bedroom_climate') }}. "
{% elif is_state('input_select.scheduled_climate_mode_emma_bedroom_aircon','AC') %} {% elif is_state('input_select.scheduled_climate_mode_emma_bedroom','AC') %}
"Emma's bedroom air conditioner will start cooling at {{ input_datetime_read('input_datetime.emma_bedroom_cooling') }}. " "Emma's bedroom air conditioner will start cooling at {{ input_datetime_read('input_datetime.emma_bedroom_climate') }}. "
{% elif is_state('input_select.scheduled_climate_mode_emma_bedroom_aircon','Fan') %} {% elif is_state('input_select.scheduled_climate_mode_emma_bedroom','Fan') %}
"Emma's bedroom air conditioner will activate fan only mode at {{ input_datetime_read('input_datetime.emma_bedroom_cooling') }}. " "Emma's bedroom air conditioner will activate fan only mode at {{ input_datetime_read('input_datetime.emma_bedroom_climate') }}. "
{% elif is_state('input_select.scheduled_climate_mode_emma_bedroom','White Noise') and is_state('input_boolean.white_noise_emma_bedroom','off') %} {% elif is_state('input_select.scheduled_climate_mode_emma_bedroom','White Noise') and is_state('input_boolean.white_noise_emma_bedroom','off') %}
"Emma's white noise generator will activate at {{ input_datetime_read('input_datetime.emma_bedtime') }}. " "Emma's white noise generator will activate at {{ input_datetime_read('input_datetime.emma_bedtime') }}. "
{% endif %} {% endif %}
+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_active_alerts') > '0' %} {% if states('sensor.weatheralerts_defiance_ohz004_ohc039') > '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') }}.