Compare commits
18 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
f6c2f99b11
|
|||
|
f4e809317b
|
|||
|
71c4affd3c
|
|||
|
eef92467de
|
|||
|
eab0a507b7
|
|||
|
979e253ff0
|
|||
|
3aa5a1a462
|
|||
|
fc9bcc9db6
|
|||
|
57023115f1
|
|||
|
faeeb64696
|
|||
|
cc2f328dec
|
|||
|
8e8430cba0
|
|||
|
7f91e3ed04
|
|||
|
802fb39608
|
|||
|
9bc654bc70
|
|||
|
6e9e35a6a4
|
|||
|
bf094bf56a
|
|||
|
f614b3965f
|
@@ -1 +1 @@
|
||||
2026.2.3
|
||||
2026.3.4
|
||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -4,6 +4,7 @@
|
||||
/.google.token
|
||||
/.ssh
|
||||
/.codegpt
|
||||
/.cache
|
||||
|
||||
# ignore some directories.
|
||||
/www/*
|
||||
|
||||
126
automations.yaml
126
automations.yaml
@@ -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:
|
||||
@@ -6405,3 +6411,123 @@
|
||||
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
|
||||
|
||||
@@ -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
|
||||
@@ -469,6 +469,7 @@ prometheus:
|
||||
- sensor.*_response_time
|
||||
- sensor.*_status
|
||||
- sensor.adguard*
|
||||
- sensor.*response_time*
|
||||
include_entities:
|
||||
- media_player.living_room_tv
|
||||
- media_player.basement_tv
|
||||
|
||||
@@ -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() }}'
|
||||
|
||||
@@ -57,6 +57,6 @@ pyscript:
|
||||
allow_all_imports: true
|
||||
hass_is_global: true
|
||||
|
||||
animated_scenes:
|
||||
# animated_scenes:
|
||||
|
||||
grad_vol:
|
||||
@@ -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...
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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') }}. "
|
||||
|
||||
Reference in New Issue
Block a user