Compare commits

...

40 Commits

Author SHA1 Message Date
25fe4bef13 Add tornado warnings to long-term databases 2026-04-01 02:47:15 -04:00
ea1985cf91 Trigger lightning warning if Tempest binary sensor shows lightning 2026-04-01 02:46:48 -04:00
cdfbb6023b Add bedtime reminder for E 2026-03-29 22:56:20 -04:00
6157abce18 Fix bubble card modules to use the correct accent color variable 2026-03-29 22:55:54 -04:00
379de46d05 Update .gitignore 2026-03-29 22:55:31 -04:00
f6c2f99b11 Update .HA_VERSION 2026-03-29 22:55:09 -04:00
f4e809317b Merge branch 'temp_fixes' into dev 2026-03-20 23:06:46 -04:00
71c4affd3c Revert Weatherflow fixes as integration appears to work now 2026-03-20 22:50:13 -04:00
eef92467de Temp disable animated_scenes 2026-03-20 22:50:12 -04:00
eab0a507b7 Temp fixes until Weatherflow Forecast integration is fixed 2026-03-20 22:50:06 -04:00
979e253ff0 Turn recorder on after reboot, if it was off 2026-03-20 22:48:24 -04:00
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
fc9bcc9db6 Add alert for when windows are open and it gets too hot or cold outside 2026-03-20 22:47:43 -04:00
57023115f1 Replace binary windows open sensor with proper template 2026-03-20 22:46:23 -04:00
faeeb64696 Update .HA_VERSION 2026-03-20 22:45:26 -04:00
cc2f328dec Move response time sensors from recorder to InfluxDB/Prometheus 2026-03-12 13:56:59 -04:00
8e8430cba0 Remove some noisy sensors from recorder 2026-03-12 13:56:28 -04:00
7f91e3ed04 Remove parts of InfluxDB config that have moved to UI 2026-03-09 02:05:10 -04:00
802fb39608 Update .HA_VERSION 2026-03-07 01:48:50 -05:00
9bc654bc70 Fix incorrect entities in history stat sensors for E's aircon 2026-03-06 06:18:17 -05:00
6e9e35a6a4 Fix wrong entity used for E's scheduled climate mode in nightly briefing 2026-03-06 05:45:11 -05:00
bf094bf56a Update .gitignore 2026-03-05 02:17:07 -05:00
f614b3965f Update .HA_VERSION 2026-03-05 02:16:40 -05:00
2c8e062666 Update .HA_VERSION 2026-03-04 05:51:08 -05:00
5dd003e994 Don't reset basement briefing if I'm still down here 2026-02-24 03:28:59 -05:00
6cf0b6daee Temp solution for #260 2026-02-24 03:15:33 -05:00
6b2747c518 Add proper opponent collisions to inhibit sensors for college hockey 2026-02-23 01:57:23 -05:00
b3f8df03d4 Rewrite rainbow lights script to also support the basement 2026-02-23 01:56:55 -05:00
e51143f2ba Recorder toggle automation 2026-02-23 01:56:30 -05:00
d245b90092 Update .HA_VERSION 2026-02-23 01:55:35 -05:00
aad02f646b Updated readme 2026-02-01 19:32:40 -05:00
5e9d0efdca Reorder apparent temperature entity priority for INWS 2026-02-01 19:32:07 -05:00
4fa09ba107 Make hot/cold thresholds configurable 2026-02-01 18:39:53 -05:00
8e3a98a30a Update .HA_VERSION 2026-02-01 18:39:36 -05:00
9bdaabcb7d Update .HA_VERSION 2026-01-22 01:03:21 -05:00
9cb977feba Fix Xia desktop idle sensor 2026-01-16 17:12:33 -05:00
c850ac65d2 Fix PC notify groups 2026-01-16 17:12:14 -05:00
5562d1dbc3 Move wife's PC from IOTLink to HASS.Agent 2026-01-16 17:11:53 -05:00
c83cb58534 Remove IOTLink commands for my desktop 2026-01-16 17:11:38 -05:00
e4a4fff6ec Update .HA_VERSION 2026-01-16 17:10:53 -05:00
28 changed files with 953 additions and 546 deletions

View File

@@ -1 +1 @@
2025.12.4
2026.3.4

2
.gitignore vendored
View File

@@ -4,6 +4,7 @@
/.google.token
/.ssh
/.codegpt
/.cache
# ignore some directories.
/www/*
@@ -22,6 +23,7 @@
/lightwand/
/bubble/Scratchpad/
/custom_icons
/bubble_card
# ignore any of these files no matter where they are using double *
**.DS_Store

View File

@@ -314,6 +314,12 @@
minutes: 1
seconds: 0
milliseconds: 0
- action: input_boolean.turn_on
metadata: {}
target:
entity_id: input_boolean.recorder
data: {}
alias: Turn on Recorder
- data: {}
target:
entity_id:
@@ -6219,6 +6225,7 @@
- input_boolean.tina_morning_meds_taken
- input_boolean.tina_night_meds_taken
alias: Reset Tina meds taken switches
enabled: false
mode: restart
- id: '1747130058536'
alias: Shower Mode Auto Off
@@ -6357,3 +6364,222 @@
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

View File

@@ -4,7 +4,7 @@
const cold = hass?.states[this.config?.main_button_floors?.cold_entity]?.state || '';
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 cold_color = 'var(--purple-color)';

View File

@@ -1,6 +1,6 @@
main_button_floors:
name: Main Button Floors
version: '1.1'
version: '1.2.1'
creator: Tony Stork
supported:
- button
@@ -12,7 +12,7 @@ main_button_floors:
const cold = hass?.states[this.config?.main_button_floors?.cold_entity]?.state || '';
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 cold_color = 'var(--purple-color)';

View File

@@ -2,7 +2,7 @@
const occupancy = hass?.states[this.config?.main_button_outdoors?.occupancy_entity]?.state || '';
let bg_color = 'var(--bubble-main-background-color)';
let occupied_color = 'var(--accent-color)';
let occupied_color = 'var(--bubble-accent-color)';
// Main button background
const mainButton = card?.querySelector('.bubble-button-background');

View File

@@ -1,6 +1,6 @@
main_button_outdoors:
name: Main Button Outdoors
version: '1.1'
version: '1.2.1'
creator: Tony Stork
supported:
- button
@@ -10,7 +10,7 @@ main_button_outdoors:
const occupancy = hass?.states[this.config?.main_button_outdoors?.occupancy_entity]?.state || '';
let bg_color = 'var(--bubble-main-background-color)';
let occupied_color = 'var(--accent-color)';
let occupied_color = 'var(--bubble-accent-color)';
// Main button background
const mainButton = card?.querySelector('.bubble-button-background');

View File

@@ -2,7 +2,7 @@
const state = hass?.states[this.config?.entity]?.state || '';
let bg_color = 'var(--background-color-2)';
let accent_color = 'var(--accent-color)';
let accent_color = 'var(--bubble-accent-color)';
// Main button background
const mainButton = card?.querySelector('.bubble-button-background');

View File

@@ -1,6 +1,6 @@
popup_accent_color_button:
name: Popup Accent Color Button
version: '1.0'
version: '1.1'
creator: Tony Stork
supported:
- button
@@ -10,7 +10,7 @@ popup_accent_color_button:
const state = hass?.states[this.config?.entity]?.state || '';
let bg_color = 'var(--background-color-2)';
let accent_color = 'var(--accent-color)';
let accent_color = 'var(--bubble-accent-color)';
// Main button background
const mainButton = card?.querySelector('.bubble-button-background');

View File

@@ -11,7 +11,7 @@
// Use the configured color or default to accent color
let on_color = this.config?.state_color_button?.color
? `var(--${this.config.state_color_button.color})`
: 'var(--accent-color)';
: 'var(--bubble-accent-color)';
// Main button background
const mainButton = card?.querySelector('.bubble-button-background');

View File

@@ -1,6 +1,6 @@
state_color_button:
name: State Color Button
version: 1.1.3
version: 1.2.0
creator: Tony Stork
supported:
- button
@@ -27,7 +27,7 @@ state_color_button:
// Use the configured color or default to accent color
let on_color = this.config?.state_color_button?.color
? `var(--${this.config.state_color_button.color})`
: 'var(--accent-color)';
: 'var(--bubble-accent-color)';
// Main button background
const mainButton = card?.querySelector('.bubble-button-background');

View File

@@ -108,6 +108,7 @@ recorder:
- sensor.*_count
- sensor.*memory_available*
- sensor.*memory_used*
- sensor.*memory_usage*
- sensor.*cpu_usage
- sensor.*cpu_temperature
- sensor.*gpu_temperature
@@ -124,6 +125,11 @@ recorder:
- 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:
- sensor.avg_ping
- sensor.max_ping
@@ -164,14 +170,7 @@ logger:
homeassistant.core: fatal
influxdb:
api_version: 2
host: 192.168.1.254
port: 8086
max_retries: 3
ssl: false
organization: !secret influxdb_org
token: !secret influxdb_token
bucket: home_assistant
default_measurement: state
tags:
source: HA
@@ -291,6 +290,7 @@ influxdb:
- sensor.*_response_time
- sensor.*_status
- sensor.adguard*
- sensor.*response_time*
entities:
- media_player.living_room_tv
- media_player.basement_tv
@@ -341,6 +341,7 @@ influxdb:
- sensor.national_tornado_warnings
- sensor.national_severe_thunderstorm_warnings
- binary_sensor.severe_thunderstorm_warning
- binary_sensor.tornado_warning
logbook:
include:
@@ -469,6 +470,7 @@ prometheus:
- sensor.*_response_time
- sensor.*_status
- sensor.adguard*
- sensor.*response_time*
include_entities:
- media_player.living_room_tv
- media_player.basement_tv
@@ -519,3 +521,4 @@ prometheus:
- sensor.national_tornado_warnings
- sensor.national_severe_thunderstorm_warnings
- binary_sensor.severe_thunderstorm_warning
- binary_sensor.tornado_warning

View File

@@ -6,7 +6,7 @@
{% set time = time|default('day') %}
{% if method in ['text','dashboard'] %}
{% 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 %}
{% if type in ['forecast','full'] %}
{% if 14400 <= ct <= 61200 %}

View File

@@ -25,91 +25,91 @@ template:
state: "{{ states('input_datetime.kallen_fan') != states('input_datetime.kallen_bedtime') }}"
- name: Living Room Front Hot
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
- name: Living Room Front Cold
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
- name: Downstairs Bathroom Hot
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
- name: Downstairs Bathroom Cold
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
- name: Stairwell Bottom Hot
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
- name: Stairwell Bottom Cold
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
- name: Upstairs Bathroom Hot
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
- name: Upstairs Bathroom Cold
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
- name: Emma Bedroom Hot
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
- name: Emma Bedroom Cold
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
- name: Basement Studio Hot
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
- name: Basement Studio Cold
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
- name: Living Room Back Hot
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
- name: Living Room Back Cold
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
- name: Mud Room Hot
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
- name: Mud Room Cold
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
- name: Stairwell Top Hot
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
- name: Stairwell Top Cold
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
- name: Kallen Bedroom Hot
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
- name: Kallen Bedroom Cold
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
- name: Master Bedroom Hot
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
- name: Master Bedroom Cold
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
- sensor:
- name: "Master Bedroom Target Temp"
@@ -457,6 +457,146 @@ input_number:
step: 1
unit_of_measurement: °F
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:
- platform: generic_thermostat

View File

@@ -34,9 +34,9 @@ template:
{{ states(sensor) | float }}
apparent_temperature_template: >
{% set apparent_temps = [
states.sensor.home_tempest_feels_like,
states.sensor.home_temperature_feels_like,
states.sensor.pirateweather_apparent_temperature,
states.sensor.home_temperature_feels_like,
states.sensor.home_tempest_feels_like,
states.sensor.stratton_ave_apparent_temperature
] %}
{% set sensor = apparent_temps | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
@@ -148,9 +148,9 @@ template:
{{ states(sensor) | float }}
apparent_temperature_template: >
{% set apparent_temps = [
states.sensor.home_tempest_feels_like,
states.sensor.home_temperature_feels_like,
states.sensor.pirateweather_apparent_temperature,
states.sensor.home_temperature_feels_like,
states.sensor.home_tempest_feels_like,
states.sensor.stratton_ave_apparent_temperature
] %}
{% set sensor = apparent_temps | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
@@ -699,7 +699,7 @@ template:
{% endif %}
- name: "Lightning Warning"
unique_id: edaddfc4-f7f0-4d75-aada-a2c588afe029
state: "{{ states('sensor.home_tempest_cloud_sensors_lightning_strikes_last_hour') | int > 0 }}"
state: "{{ (states('sensor.home_tempest_cloud_sensors_lightning_strikes_last_hour') | int > 0) or is_state('binary_sensor.home_tempest_cloud_binary_sensors_is_lightning','on') }}"
device_class: safety
attributes:
current_strikes: "{{ states('sensor.home_tempest_cloud_sensors_lightning_strikes_last_hour') | int }}"

View File

@@ -65,7 +65,7 @@ sensor:
hours: 24
- platform: history_stats
name: Emma A/C Compressor Time
entity_id: binary_sensor.emma_aircon_compressor
entity_id: binary_sensor.emma_bedroom_aircon_compressor
state: 'on'
type: time
end: '{{ now() }}'
@@ -73,7 +73,7 @@ sensor:
hours: 24
- platform: history_stats
name: Emma A/C Fan Time
entity_id: binary_sensor.emma_aircon_fan
entity_id: binary_sensor.emma_bedroom_aircon_fan
state: 'on'
type: time
end: '{{ now() }}'

View File

@@ -57,6 +57,6 @@ pyscript:
allow_all_imports: true
hass_is_global: true
animated_scenes:
# animated_scenes:
grad_vol:

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 }'

View File

@@ -822,51 +822,51 @@ template:
mdi:lightbulb
{% endif %}
switch:
- platform: animated_scenes
name: Christmas
restore: False
restore_power: False
ignore_off: False
lights:
- light.front_porch_light
colors:
- color_type: rgb_color
color: [255,0,0]
brightness: 255
- color_type: rgb_color
color: [0,255,0]
brightness: 255
transition: 10
change_frequency: 60
change_amount: all
change_sequence: True
animate_brightness: True
animate_color: True
- platform: animated_scenes
name: Christmas Day
restore: False
restore_power: False
ignore_off: False
lights:
- light.living_room_color_1
- light.living_room_color_2
- light.living_room_color_3
- light.tina_lamp_top
- light.tina_lamp_side
colors:
- color_type: rgb_color
color: [255,0,0]
brightness: 255
- color_type: rgb_color
color: [0,255,0]
brightness: 255
transition: 1
change_frequency: 5
change_amount: 3
change_sequence: False
animate_brightness: True
animate_color: True
# switch:
# - platform: animated_scenes
# name: Christmas
# restore: False
# restore_power: False
# ignore_off: False
# lights:
# - light.front_porch_light
# colors:
# - color_type: rgb_color
# color: [255,0,0]
# brightness: 255
# - color_type: rgb_color
# color: [0,255,0]
# brightness: 255
# transition: 10
# change_frequency: 60
# change_amount: all
# change_sequence: True
# animate_brightness: True
# animate_color: True
# - platform: animated_scenes
# name: Christmas Day
# restore: False
# restore_power: False
# ignore_off: False
# lights:
# - light.living_room_color_1
# - light.living_room_color_2
# - light.living_room_color_3
# - light.tina_lamp_top
# - light.tina_lamp_side
# colors:
# - color_type: rgb_color
# color: [255,0,0]
# brightness: 255
# - color_type: rgb_color
# color: [0,255,0]
# brightness: 255
# transition: 1
# change_frequency: 5
# change_amount: 3
# change_sequence: False
# animate_brightness: True
# animate_color: True
#! Unless there is a good reason, do not define multi-room scenes below.
#! Use scripts instead, to avoid some straight-up haunted house bullshit...

View File

@@ -371,24 +371,24 @@ notify:
- name: pc_parents
platform: group
services:
- service: notify.tony_asus
- service: notify.xia_desktop
- service: tony_asus
- service: xia_desktop
- name: pc_nerds
platform: group
services:
- service: notify.tony_asus
- service: notify.kallen_desktop
- service: tony_asus
- service: kallen_desktop
- name: pc_all
platform: group
services:
- service: notify.tony_asus
- service: notify.xia_desktop
- service: notify.kallen_desktop
- service: tony_asus
- service: xia_desktop
- service: kallen_desktop
- name: pc_not_tony
platform: group
services:
- service: notify.xia_desktop
- service: notify.kallen_desktop
- service: xia_desktop
- service: kallen_desktop
script:
volume_reset:

View File

@@ -125,6 +125,18 @@ alarm_control_panel:
template:
- 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
unique_id: fb4ab414-3ceb-44d2-8276-66027a936329
device_class: window

View File

@@ -156,7 +156,7 @@ template:
unique_id: 87653f3a-203c-4dbf-87e8-70bcacf6eb22
state: >
{% from 'sports.jinja' import sports_inhibit %}
{{ sports_inhibit('sensor.minnesota_golden_gophers_hockey') }}
{{ 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: >
@@ -166,7 +166,7 @@ template:
unique_id: bd15870d-bccb-4c52-9690-473c31bb4090
state: >
{% from 'sports.jinja' import sports_inhibit %}
{{ sports_inhibit('sensor.minnesota_state_mavericks_hockey') }}
{{ 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: >

View File

@@ -2,6 +2,9 @@ input_boolean:
server_maintenance:
name: Server Maintenance
icon: mdi:wrench-clock
recorder:
name: Recorder
icon: mdi:database
input_select:
log_level:
@@ -97,7 +100,9 @@ template:
{{ (time_diff('sensor.tony_asus_last_active') | int) > (states('input_number.basement_computers_idle_time') | int * 60) }}
- name: Tina Desktop Idle
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
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) }}"

176
packages/tina_desktop.yaml Normal file
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 }'

View File

@@ -118,14 +118,6 @@ script:
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:
@@ -142,14 +134,6 @@ script:
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:

View File

@@ -57,6 +57,7 @@ ## HACS Components
- [Union Pacific Big Boy Tracker](https://github.com/jheizer/up_4014_tracker)
- [WeatherFlow Forecast](https://github.com/briis/weatherflow_forecast)
- [NWS SPC Outlook](https://github.com/sedward5/nws_spc_outlook)
- [Music Assistant Queue Actions](https://github.com/droans/mass_queue)
</details>
@@ -113,6 +114,7 @@ ## HACS Lovelace Cards
- [Versatile Thermostat UI Card](https://github.com/jmcollin78/versatile-thermostat-ui-card)
- [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>

View File

@@ -2673,137 +2673,288 @@ kallen_night_meds:
reset_annc_switches:
alias: Reset Announcement Switches
sequence:
- service: input_boolean.turn_off
target:
- target:
entity_id:
- input_boolean.good_morning
- input_boolean.daily_briefing
- input_boolean.nightly_briefing
- input_boolean.kallen_morning_briefing
- input_boolean.kallen_nightly_briefing
- input_boolean.basement_briefing
data: {}
action: input_boolean.turn_off
alias: Turn off housewide briefing switches
- if:
- condition: state
entity_id: binary_sensor.basement_occupied
state:
- 'off'
then:
- action: input_boolean.turn_off
metadata: {}
target:
entity_id: input_boolean.basement_briefing
data: {}
alias: Turn off basement briefing switch if basement is not occupied
mode: single
icon: mdi:bullhorn-outline
emma_rainbow_lights:
alias: Emma Rainbow Lights
sequence:
- service: switch.turn_off
metadata: {}
data: {}
target:
entity_id:
- switch.adaptive_lighting_living_room
- switch.adaptive_lighting_sleep_mode_living_room
alias: Turn off adaptive lighting
- service: lifx.effect_stop
metadata: {}
data: {}
target:
entity_id: light.living_room_led_strip
alias: Stop any current light strip effects
- alias: Choose Effect
choose:
- choose:
- conditions:
- condition: template
value_template: '{{ effect in [''Rainbow'',null] }}'
alias: Rainbow
value_template: '{{ who == ''Living Room'' }}'
alias: Living Room
sequence:
- service: light.turn_on
metadata: {}
data:
effect: prism
target:
entity_id: light.living_room_overhead
alias: Turn on living room overhead in prism effect
- service: lifx.effect_move
metadata: {}
data:
speed: 8
direction: right
theme: exciting
power_on: true
target:
entity_id: light.living_room_led_strip
alias: Turn on living room LED strip in exciting theme with move effect
- conditions:
- condition: template
value_template: '{{ effect == ''Blue'' }}'
alias: Blue
sequence:
- service: light.turn_on
metadata: {}
data:
rgb_color:
- 0
- 0
- 255
brightness_pct: 100
target:
entity_id: light.living_room_lights
alias: Turn on living room lights, set to blue
- conditions:
- condition: template
value_template: '{{ effect == ''Purple'' }}'
alias: Purple
sequence:
- service: light.turn_on
metadata: {}
data:
rgb_color:
- 134
- 0
- 211
brightness_pct: 100
target:
entity_id: light.living_room_lights
alias: Turn on living room lights, set to purple
- conditions:
- alias: Green
condition: template
value_template: '{{ effect == ''Green'' }}'
sequence:
- alias: Turn on living room lights, set to green
service: light.turn_on
metadata: {}
data:
rgb_color:
- 0
- 255
- 0
brightness_pct: 100
target:
entity_id: light.living_room_lights
- conditions:
- condition: template
value_template: '{{ effect == ''Tokyo'' }}'
alias: Tokyo
sequence:
- service: input_boolean.turn_on
metadata: {}
- metadata: {}
data: {}
target:
entity_id: input_boolean.living_room_dynamic_scenes
alias: Turn on dynamic scenes
- service: input_select.select_option
metadata: {}
data:
option: Tokyo
target:
entity_id: input_select.living_room_scenes
alias: Activate Tokyo scene in Living Room
- alias: Turn on living room LED strip in intense theme with move effect
service: lifx.effect_move
metadata: {}
data:
speed: 8
direction: right
theme: intense
power_on: true
entity_id:
- switch.adaptive_lighting_living_room
- switch.adaptive_lighting_sleep_mode_living_room
alias: Turn off adaptive lighting
action: switch.turn_off
- metadata: {}
data: {}
target:
entity_id: light.living_room_led_strip
mode: restart
icon: fas:rainbow
alias: Stop any current light strip effects
action: lifx.effect_stop
- alias: Choose Effect
choose:
- conditions:
- condition: template
value_template: '{{ effect in [''Rainbow'',null] }}'
alias: Rainbow
sequence:
- metadata: {}
data:
effect: prism
target:
entity_id: light.living_room_overhead
alias: Turn on living room overhead in prism effect
action: light.turn_on
- metadata: {}
data:
speed: 8
direction: right
theme: exciting
power_on: true
target:
entity_id: light.living_room_led_strip
alias: Turn on living room LED strip in exciting theme with move effect
action: lifx.effect_move
- conditions:
- condition: template
value_template: '{{ effect == ''Blue'' }}'
alias: Blue
sequence:
- metadata: {}
data:
rgb_color:
- 0
- 0
- 255
brightness_pct: 100
target:
entity_id: light.living_room_lights
alias: Turn on living room lights, set to blue
action: light.turn_on
- conditions:
- condition: template
value_template: '{{ effect == ''Purple'' }}'
alias: Purple
sequence:
- metadata: {}
data:
rgb_color:
- 134
- 0
- 211
brightness_pct: 100
target:
entity_id: light.living_room_lights
alias: Turn on living room lights, set to purple
action: light.turn_on
- conditions:
- alias: Green
condition: template
value_template: '{{ effect == ''Green'' }}'
sequence:
- alias: Turn on living room lights, set to green
metadata: {}
data:
rgb_color:
- 0
- 255
- 0
brightness_pct: 100
target:
entity_id: light.living_room_lights
action: light.turn_on
- conditions:
- condition: template
value_template: '{{ effect == ''Tokyo'' }}'
alias: Tokyo
sequence:
- metadata: {}
data: {}
target:
entity_id: input_boolean.living_room_dynamic_scenes
alias: Turn on dynamic scenes
action: input_boolean.turn_on
- metadata: {}
data:
option: Tokyo
target:
entity_id: input_select.living_room_scenes
alias: Activate Tokyo scene in Living Room
action: input_select.select_option
- alias: Turn on living room LED strip in intense theme with move effect
metadata: {}
data:
speed: 8
direction: right
theme: intense
power_on: true
target:
entity_id: light.living_room_led_strip
action: lifx.effect_move
- conditions:
- alias: Basement Studio
condition: template
value_template: '{{ who == ''Basement Studio'' }}'
sequence:
- alias: Turn off adaptive lighting
metadata: {}
data: {}
action: switch.turn_off
target:
entity_id:
- switch.adaptive_lighting_basement_studio
- switch.adaptive_lighting_sleep_mode_basement_studio
- alias: Stop any current light strip effects
metadata: {}
data: {}
action: lifx.effect_stop
target:
entity_id: light.basement_led_strip_1
- alias: Choose Effect
choose:
- conditions:
- condition: template
value_template: '{{ effect in [''Rainbow'',null] }}'
alias: Rainbow
sequence:
- metadata: {}
data:
effect: prism
target:
entity_id: light.basement_tall_lamp
alias: Turn on basement tall lamp in prism effect
action: light.turn_on
- metadata: {}
data:
effect: prism
target:
entity_id: light.basement_short_lamp
alias: Turn on basement short lamp in prism effect
action: light.turn_on
- metadata: {}
data:
effect: prism
target:
entity_id: light.basement_stairwell
alias: Turn on basement stairwell in prism effect
action: light.turn_on
- metadata: {}
data:
speed: 8
direction: right
theme: exciting
power_on: true
target:
entity_id: light.basement_led_strip_1
alias: Turn on basement studio LED strip in exciting theme with move effect
action: lifx.effect_move
- conditions:
- condition: template
value_template: '{{ effect == ''Blue'' }}'
alias: Blue
sequence:
- metadata: {}
data:
rgb_color:
- 0
- 0
- 255
brightness_pct: 100
target:
entity_id: light.basement_studio_lights
alias: Turn on basement studio lights, set to blue
action: light.turn_on
- conditions:
- condition: template
value_template: '{{ effect == ''Purple'' }}'
alias: Purple
sequence:
- metadata: {}
data:
rgb_color:
- 134
- 0
- 211
brightness_pct: 100
target:
entity_id: light.basement_studio_lights
alias: Turn on basement studio lights, set to purple
action: light.turn_on
- conditions:
- alias: Green
condition: template
value_template: '{{ effect == ''Green'' }}'
sequence:
- alias: Turn on basement studio lights, set to green
metadata: {}
data:
rgb_color:
- 0
- 255
- 0
brightness_pct: 100
target:
entity_id: light.basement_studio_lights
action: light.turn_on
- conditions:
- condition: template
value_template: '{{ effect == ''Tokyo'' }}'
alias: Tokyo
sequence:
- metadata: {}
data: {}
target:
entity_id: input_boolean.basement_studio_dynamic_scenes
alias: Turn on dynamic scenes
action: input_boolean.turn_on
- metadata: {}
data:
option: Tokyo
target:
entity_id: input_select.basement_studio_scenes
alias: Activate Tokyo scene in basement studio
action: input_select.select_option
- alias: Turn on basement studio LED strip in intense theme with move effect
metadata: {}
data:
speed: 8
direction: right
theme: intense
power_on: true
target:
entity_id: light.basement_led_strip_1
action: lifx.effect_move
mode: queued
icon: fa7-solid:rainbow
fields:
effect:
selector:
@@ -2819,6 +2970,18 @@ emma_rainbow_lights:
description: What type of effect would you like to run?
default: Rainbow
required: true
who:
selector:
select:
options:
- Living Room
- Basement Studio
multiple: false
default: Living Room
name: Who
description: In which room should the effect run?
required: true
max: 10
rabbit_feeding:
alias: Rabbit Feeding
sequence:

View File

@@ -71,12 +71,12 @@
{% else %}
"Collin's room will be left alone, as he is spending the night elsewhere tonight. "
{% endif %}
{% if states('input_select.scheduled_climate_mode_emma_bedroom_aircon') != 'N/A' %}
{% if is_state('input_select.scheduled_climate_mode_emma_bedroom_aircon','AC') and is_state('input_boolean.hot_day','on') %}
{% if states('input_select.scheduled_climate_mode_emma_bedroom') != 'N/A' %}
{% 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_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_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_climate') }}. "
{% 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') }}. "