mirror of
https://github.com/CCOSTAN/Home-AssistantConfig.git
synced 2025-08-16 02:25:10 +00:00
Compare commits
83 Commits
7ffa991419
...
master
Author | SHA1 | Date | |
---|---|---|---|
|
d692d926dc | ||
|
edbb6aa608 | ||
|
ee0c57ad6c | ||
|
7a45a6007b | ||
|
bf202e770b | ||
|
a0a93dceec | ||
|
7403198c25 | ||
|
e4c9dfb49a | ||
|
3ea720af36 | ||
|
cfbc7ee771 | ||
|
4ce67e83d5 | ||
|
ab5534b33a | ||
|
67295d027b | ||
|
fe64a69be0 | ||
|
136fa6b97d | ||
|
8c1f63cb68 | ||
|
a9c5e52671 | ||
|
4d93cc691c | ||
|
3b38233914 | ||
|
5363853618 | ||
|
fafaa32294 | ||
|
389a3c348f | ||
|
e87e4e90fa | ||
|
9e208fca4e | ||
|
f3a4c5087b | ||
|
833143e445 | ||
|
f1fc8e8012 | ||
|
561b454518 | ||
|
4d0268c009 | ||
|
93fcd66d9c | ||
|
ff868369db | ||
|
61811ede4f | ||
|
ac4d927968 | ||
|
220bf64e51 | ||
|
917469361d | ||
|
ff24c6cf9d | ||
|
0a285a0cbf | ||
|
c314ff2aed | ||
|
536e352b1a | ||
|
c5ab958dbf | ||
|
571b964dd3 | ||
|
a2be180639 | ||
|
8b0844299b | ||
|
db41e60123 | ||
|
cfcbdd0460 | ||
|
97213e22ad | ||
|
0e5a962863 | ||
|
d2a157afe2 | ||
|
7dd07a011d | ||
|
b227b3d01d | ||
|
38103c586e | ||
|
30c9b3e193 | ||
|
4ca34cee22 | ||
|
4a1989e080 | ||
|
da13093f1b | ||
|
92ab5e1b0a | ||
|
6f5090b5e4 | ||
|
1c57ffa991 | ||
|
ec8ada20e2 | ||
|
fbd7fe53db | ||
|
c188e11582 | ||
|
0541e70e90 | ||
|
48c2bd036a | ||
|
a8e116e9b9 | ||
|
8eeeaf4c5f | ||
|
6407f68058 | ||
|
4776b9ddf3 | ||
|
9b1b76e877 | ||
|
047f3a3a8c | ||
|
ffb52d7302 | ||
|
4caff5def4 | ||
|
bcee75652d | ||
|
2600a391cb | ||
|
e9127ee527 | ||
|
08bcbae544 | ||
|
184a084f9f | ||
|
6d2830f9af | ||
|
40c08da183 | ||
|
f0255cb46e | ||
|
e7e3a68e60 | ||
|
9752103e55 | ||
|
be0ecbe727 | ||
|
791b504aa6 |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -16,6 +16,7 @@
|
||||
core.*
|
||||
core
|
||||
.uuid
|
||||
.git-credentials
|
||||
|
||||
# Home Assistant specific
|
||||
*.DISABLED
|
||||
|
@@ -259,10 +259,8 @@ Defining Guest Mode - /config/input_boolean/home_modes.yaml#L1-L4</a><br>
|
||||
Using Guest mode as a condition - /config/script/speech_engine.yaml#L26-L28</a><br>
|
||||
<p></details>
|
||||
<details>
|
||||
<summary>Track garbage days and chore days for the kids. Voice reminders and Alexa intergration/request for info.'</summary><p align="center">
|
||||
<summary>Track garbage days. Voice reminders and Alexa intergration/request for info.'</summary><p align="center">
|
||||
<a href=https://github.com/CCOSTAN/Home-AssistantConfig/blob/master/config/input_boolean/hidden_booleans.yaml#L5-L7>
|
||||
Defining responsibilities trigger - /config/input_boolean/hidden_booleans.yaml#L5-L7</a><br>
|
||||
<a href=https://github.com/CCOSTAN/Home-AssistantConfig/blob/master/config/script/speech_engine.yaml#L56-L68>
|
||||
Responsibility Speech Code - /config/script/speech_engine.yaml#L56-L68</a><br>
|
||||
<p></details>
|
||||
<details>
|
||||
@@ -956,8 +954,8 @@ Process Monitor Package - /config/packages/processmonitor.yaml</a><br>
|
||||
|
||||
The [issues section](https://github.com/CCOSTAN/Home-AssistantConfig/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc) on github is where I store all my wishful ideas and future enhancements.
|
||||
Feel free to join the conversations there.
|
||||
[](https://www.vcloudinfo.com/2017/11/building-worlds-greatest-smart-alarm.html)
|
||||
[](https://www.vcloudinfo.com/2017/07/visualizing-smart-home-using-home.html)
|
||||
[](https://www.vcloudinfo.com/2017/11/building-worlds-greatest-smart-alarm.html)
|
||||
[](https://www.vcloudinfo.com/2017/07/visualizing-smart-home-using-home.html)
|
||||
|
||||
**All files are now being edited with [Cursor.ai](https://www.cursor.com/).**
|
||||
|
||||
|
@@ -1 +1 @@
|
||||
2025.1.4
|
||||
2025.8.0
|
187
config/UI YAML/Overview/Light_Stack.yaml
Executable file
187
config/UI YAML/Overview/Light_Stack.yaml
Executable file
@@ -0,0 +1,187 @@
|
||||
cards:
|
||||
- type: custom:mushroom-vacuum-card
|
||||
entity: vacuum.l10s_vacuum
|
||||
icon_animation: true
|
||||
commands:
|
||||
- return_home
|
||||
- start_pause
|
||||
- locate
|
||||
double_tap_action:
|
||||
action: none
|
||||
tap_action:
|
||||
action: navigate
|
||||
navigation_path: /lovelace/vacuum
|
||||
visibility:
|
||||
- condition: state
|
||||
entity: vacuum.l10s_vacuum
|
||||
state_not: docked
|
||||
primary_info: name
|
||||
fill_container: true
|
||||
grid_options:
|
||||
rows: 1
|
||||
columns: full
|
||||
layout: horizontal
|
||||
- type: custom:search-card
|
||||
max_results: 10
|
||||
- type: custom:bubble-card
|
||||
card_type: button
|
||||
button_type: slider
|
||||
entity: light.living_room_lights
|
||||
name: Living Room Lights
|
||||
icon: mdi:sofa
|
||||
show_state: true
|
||||
show_attribute: false
|
||||
show_last_changed: true
|
||||
tap_action:
|
||||
action: navigate
|
||||
navigation_path: "#living_room"
|
||||
grid_options:
|
||||
columns: 6
|
||||
rows: 1
|
||||
card_layout: large
|
||||
- type: vertical-stack
|
||||
cards:
|
||||
- type: custom:bubble-card
|
||||
card_type: pop-up
|
||||
hash: "#living_room"
|
||||
button_type: slider
|
||||
entity: light.living_room_lights
|
||||
name: Living Room Lights
|
||||
icon: mdi:sofa
|
||||
show_attribute: false
|
||||
slide_to_close_distance: "100000"
|
||||
trigger: []
|
||||
bg_opacity: "35"
|
||||
show_state: true
|
||||
show_last_changed: true
|
||||
tap_action:
|
||||
action: toggle
|
||||
- type: custom:bubble-card
|
||||
card_type: button
|
||||
button_type: slider
|
||||
entity: light.m1_front_left
|
||||
name: Front Left
|
||||
icon: mdi:light-recessed
|
||||
show_state: true
|
||||
show_attribute: false
|
||||
show_last_changed: true
|
||||
sub_button: []
|
||||
grid_options:
|
||||
columns: 6
|
||||
rows: 1
|
||||
columns: 2
|
||||
- type: custom:bubble-card
|
||||
card_type: button
|
||||
button_type: slider
|
||||
entity: light.m1_front_right
|
||||
name: Front Right
|
||||
icon: mdi:light-recessed
|
||||
show_state: true
|
||||
show_attribute: false
|
||||
show_last_changed: true
|
||||
sub_button: []
|
||||
grid_options:
|
||||
columns: 6
|
||||
rows: 1
|
||||
- type: custom:bubble-card
|
||||
card_type: button
|
||||
button_type: slider
|
||||
entity: light.m1_back_left
|
||||
name: Back Left
|
||||
icon: mdi:light-recessed
|
||||
show_state: true
|
||||
show_attribute: false
|
||||
show_last_changed: true
|
||||
sub_button: []
|
||||
grid_options:
|
||||
columns: 6
|
||||
rows: 1
|
||||
- type: custom:bubble-card
|
||||
card_type: button
|
||||
button_type: slider
|
||||
entity: light.m1_back_right
|
||||
name: Back Right
|
||||
icon: mdi:light-recessed
|
||||
show_state: true
|
||||
show_attribute: false
|
||||
show_last_changed: true
|
||||
sub_button: []
|
||||
grid_options:
|
||||
columns: 6
|
||||
rows: 1
|
||||
grid_options:
|
||||
columns: 12
|
||||
rows: auto
|
||||
- type: custom:bubble-card
|
||||
card_type: button
|
||||
button_type: switch
|
||||
entity: group.interior_switches
|
||||
name: Interior Switches
|
||||
icon: mdi:lightning-bolt
|
||||
show_state: true
|
||||
show_attribute: false
|
||||
show_last_changed: false
|
||||
button_action:
|
||||
tap_action:
|
||||
action: more-info
|
||||
grid_options:
|
||||
columns: 6
|
||||
rows: 1
|
||||
tap_action:
|
||||
action: toggle
|
||||
card_layout: large
|
||||
- type: custom:bubble-card
|
||||
card_type: button
|
||||
button_type: state
|
||||
entity: group.exterior_lights
|
||||
name: Exterior Lights
|
||||
icon: mdi:palm-tree
|
||||
show_state: true
|
||||
show_attribute: false
|
||||
show_last_changed: true
|
||||
grid_options:
|
||||
columns: 6
|
||||
rows: 1
|
||||
- type: custom:bubble-card
|
||||
card_type: button
|
||||
entity: sensor.lights_on_count
|
||||
name: Lights On
|
||||
icon: mdi:lightbulb-on-outline
|
||||
show_state: true
|
||||
tap_action:
|
||||
action: navigate
|
||||
navigation_path: "#lights-popup"
|
||||
button_action:
|
||||
tap_action:
|
||||
action: navigate
|
||||
navigation_path: "#lights-popup"
|
||||
- type: vertical-stack
|
||||
cards:
|
||||
- type: custom:bubble-card
|
||||
card_type: pop-up
|
||||
hash: "#lights-popup"
|
||||
name: Lights Control
|
||||
icon: mdi:lightbulb-group
|
||||
width_desktop: 500px
|
||||
show_header: true
|
||||
entity: sensor.lights_on_count
|
||||
button_type: name
|
||||
- type: custom:auto-entities
|
||||
filter:
|
||||
include:
|
||||
- domain: light
|
||||
exclude:
|
||||
- state: "off"
|
||||
- state: unavailable
|
||||
- hidden_by: user
|
||||
show_empty: true
|
||||
entity: sensor.lights_on_count
|
||||
button_type: state
|
||||
show_name: true
|
||||
card:
|
||||
type: custom:auto-entities
|
||||
card:
|
||||
type: entities
|
||||
filter:
|
||||
include: []
|
||||
exclude: []
|
53
config/UI YAML/Overview/Power_Stack.yaml
Executable file
53
config/UI YAML/Overview/Power_Stack.yaml
Executable file
@@ -0,0 +1,53 @@
|
||||
# Power Stack Card Configuration
|
||||
# For more information visit: https://www.vcloudinfo.com/click-here
|
||||
|
||||
type: vertical-stack
|
||||
cards:
|
||||
- type: grid
|
||||
cards:
|
||||
- type: custom:power-flow-card-plus
|
||||
entities:
|
||||
battery:
|
||||
state_of_charge: sensor.powerwall_charge
|
||||
entity: sensor.powerwall_battery_power
|
||||
use_metadata: false
|
||||
invert_state: false
|
||||
state_of_charge_unit_white_space: true
|
||||
show_state_of_charge: true
|
||||
grid:
|
||||
secondary_info: {}
|
||||
entity: sensor.powerwall_site_power
|
||||
solar:
|
||||
display_zero_state: true
|
||||
secondary_info: {}
|
||||
entity: sensor.powerwall_solar_power
|
||||
icon: mdi:white-balance-sunny
|
||||
color_icon: true
|
||||
home:
|
||||
secondary_info: {}
|
||||
entity: sensor.powerwall_load_power
|
||||
clickable_entities: true
|
||||
display_zero_lines:
|
||||
mode: grey_out
|
||||
transparency: 50
|
||||
grey_color:
|
||||
- 189
|
||||
- 189
|
||||
- 189
|
||||
use_new_flow_rate_model: true
|
||||
w_decimals: 0
|
||||
kw_decimals: 1
|
||||
min_flow_rate: 0.75
|
||||
max_flow_rate: 4
|
||||
max_expected_power: 2000
|
||||
min_expected_power: 0.01
|
||||
watt_threshold: 1000
|
||||
transparency_zero_lines: 0
|
||||
grid_options:
|
||||
columns: full
|
||||
rows: auto
|
||||
- type: vertical-stack
|
||||
cards:
|
||||
- type: energy-solar-graph
|
||||
- type: energy-water-graph
|
||||
|
@@ -50,7 +50,7 @@
|
||||
{%- endmacro -%}
|
||||
|
||||
{{greeting_sentence(person)}}
|
||||
call_responsibilities: 1
|
||||
call_garbage_day: 1
|
||||
call_no_announcement: 1
|
||||
call_garage_check: 1
|
||||
call_window_check: 1
|
||||
|
@@ -26,7 +26,7 @@
|
||||
- service: script.speech_engine
|
||||
data:
|
||||
call_inside_weather: 1
|
||||
call_responsibilities: 1
|
||||
call_garbage_day: 1
|
||||
call_outside_weather: 1
|
||||
call_garage_check: 1
|
||||
call_window_check: 1
|
||||
|
25
config/automation/Speech/locator.yaml
Executable file
25
config/automation/Speech/locator.yaml
Executable file
@@ -0,0 +1,25 @@
|
||||
#-------------------------------------------
|
||||
# Locator Automation
|
||||
# Description: Announces the location of all family members when triggered
|
||||
#
|
||||
# Features:
|
||||
# - Triggered by input_boolean.locator (for Alexa integration)
|
||||
# - Uses speech_engine script to announce where everyone is
|
||||
# - Designed for use with Alexa ("Alexa, turn on locator")
|
||||
#
|
||||
# Follow me on https://www.vcloudinfo.com/click-here
|
||||
#-------------------------------------------
|
||||
- alias: 'Locator'
|
||||
id: locator-announcement-001
|
||||
mode: single
|
||||
trigger:
|
||||
- platform: state
|
||||
entity_id: input_boolean.locator
|
||||
to: 'on'
|
||||
action:
|
||||
- service: script.speech_engine
|
||||
data:
|
||||
call_no_announcement: 1
|
||||
- service: input_boolean.turn_off
|
||||
data:
|
||||
entity_id: input_boolean.locator
|
@@ -1,19 +0,0 @@
|
||||
######################################################################
|
||||
## Announce when one of the nests kick in
|
||||
## Announce over all Chromecast Audios
|
||||
######################################################################
|
||||
- alias: 'Nest Status'
|
||||
id: 7812fdaf-a3f8-498b-8f07-28e977e528fe
|
||||
trigger:
|
||||
|
||||
- platform: state
|
||||
entity_id:
|
||||
- climate.downstairs
|
||||
- climate.upstairs
|
||||
from: 'off'
|
||||
|
||||
action:
|
||||
- service: script.speech_engine
|
||||
data:
|
||||
NestStatus: "The {{ trigger.entity_id.split('.')[1].split('_')[0]}} {{ trigger.entity_id.split('.')[1].split('_')[1]}} has now been turned on for {{(trigger.to_state.state)}}."
|
||||
call_window_check: 1
|
@@ -1,22 +0,0 @@
|
||||
#-------------------------------------------
|
||||
# Responsibilities Announcement
|
||||
# Description: Triggers a speech announcement for daily responsibilities
|
||||
#
|
||||
# Features:
|
||||
# - Announces garbage day and recycling reminders
|
||||
# - Triggered by an input_boolean entity
|
||||
#
|
||||
# Integration: Uses speech_engine script for announcements
|
||||
# Follow me on https://www.vcloudinfo.com/click-here
|
||||
#-------------------------------------------
|
||||
- alias: 'responsibilities'
|
||||
id: f39bd8db-a348-4024-a6a6-a3e3c836646c
|
||||
trigger:
|
||||
- platform: state
|
||||
entity_id: input_boolean.responsibilities
|
||||
to: 'on'
|
||||
|
||||
action:
|
||||
- service: script.speech_engine
|
||||
data:
|
||||
call_responsibilities: 1
|
@@ -1,43 +0,0 @@
|
||||
######################################################################
|
||||
## Stuff that needs to happen at 08:30am.
|
||||
######################################################################
|
||||
|
||||
- alias: 'Kids 700'
|
||||
id: 3e0c4f40-0d55-42a0-9af9-37124b1b9b8b
|
||||
mode: single
|
||||
trigger:
|
||||
- platform: time
|
||||
at: '08:30:00'
|
||||
|
||||
condition:
|
||||
- condition: state
|
||||
entity_id: group.family
|
||||
state: home
|
||||
- condition: state
|
||||
entity_id: input_boolean.school_mode
|
||||
state: 'on'
|
||||
- condition: time
|
||||
weekday:
|
||||
- mon
|
||||
- tue
|
||||
- wed
|
||||
- thu
|
||||
- fri
|
||||
|
||||
action:
|
||||
- service: homeassistant.turn_on
|
||||
entity_id:
|
||||
- light.d1
|
||||
- light.d2
|
||||
- switch.office_lamp_switch_socket
|
||||
- service: light.turn_off
|
||||
entity_id:
|
||||
- light.dining_room_lights
|
||||
|
||||
- wait_template: >-
|
||||
{{ states.sun.sun.state == 'above_horizon' }}
|
||||
- service: homeassistant.turn_off
|
||||
entity_id:
|
||||
- group.kitchen_accents
|
||||
- service: light.turn_off
|
||||
entity_id: all
|
@@ -1,36 +0,0 @@
|
||||
######################################################################
|
||||
## Stuff that needs to happen at 08:00am.
|
||||
######################################################################
|
||||
|
||||
- alias: 'Timed 0800'
|
||||
id: 7bf33e23-021c-4e11-946b-b052b81fd2bc
|
||||
mode: single
|
||||
trigger:
|
||||
- platform: time
|
||||
at: '08:00:00'
|
||||
|
||||
condition:
|
||||
- condition: state
|
||||
entity_id: group.family
|
||||
state: home
|
||||
- condition: state
|
||||
entity_id: input_boolean.school_mode
|
||||
state: 'on'
|
||||
- condition: time
|
||||
weekday:
|
||||
- mon
|
||||
- tue
|
||||
- wed
|
||||
- thu
|
||||
- fri
|
||||
|
||||
action:
|
||||
- service: homeassistant.turn_on
|
||||
entity_id:
|
||||
- group.kitchen_accents
|
||||
- delay: 00:15:00
|
||||
- service: homeassistant.turn_on
|
||||
entity_id:
|
||||
- light.sink
|
||||
- light.fridge
|
||||
- light.k4
|
@@ -1,12 +1,13 @@
|
||||
######################################################################
|
||||
## Automation for 08:30 AM Daily Tasks
|
||||
## Automation for 07:00 AM Daily Tasks
|
||||
## https://www.vcloudinfo.com/click-here
|
||||
## This automation handles actions to be performed at 8:30 AM,
|
||||
## typically related to the family's morning routine.
|
||||
######################################################################
|
||||
|
||||
- alias: 'Kids left for the day'
|
||||
id: 7cc9a7d6-8918-4a4a-98e7-a46abc9df4f1
|
||||
- alias: 'Kids 830'
|
||||
id: 3e0c4f40-0d55-42a0-9af9-37124b1b9b8b
|
||||
mode: single
|
||||
trigger:
|
||||
- platform: time
|
||||
at: '08:30:00'
|
||||
@@ -15,22 +16,38 @@
|
||||
- condition: state
|
||||
entity_id: group.family
|
||||
state: home
|
||||
|
||||
- condition: state
|
||||
entity_id: input_boolean.guest_mode
|
||||
state: 'off'
|
||||
- condition: state
|
||||
entity_id: input_boolean.school_mode
|
||||
state: 'on'
|
||||
- condition: time
|
||||
weekday:
|
||||
- mon
|
||||
- tue
|
||||
- wed
|
||||
- thu
|
||||
- fri
|
||||
entity_id: sun.sun
|
||||
state: below_horizon
|
||||
|
||||
action:
|
||||
- wait_template: "{{ is_state('group.garage_doors', 'open') }}"
|
||||
timeout: '00:45:00'
|
||||
- delay: 00:03:00
|
||||
- service: homeassistant.turn_on
|
||||
entity_id:
|
||||
- light.d1
|
||||
- light.d2
|
||||
- light.sink
|
||||
- light.fridge
|
||||
- light.k4
|
||||
- group.kitchen_accents
|
||||
- switch.office_lamp_switch
|
||||
|
||||
- wait_template: >-
|
||||
{{ states.sun.sun.state == 'above_horizon' }}
|
||||
- service: homeassistant.turn_on
|
||||
entity_id:
|
||||
- switch.alarm_panel_1_motion_detection
|
||||
- switch.office_lamp_switch
|
||||
- service: number.set_value
|
||||
target:
|
||||
entity_id: number.alarm_panel_1_screen_brightness
|
||||
data:
|
||||
value: 100
|
||||
|
||||
- service: button.press
|
||||
entity_id: button.alarm_panel_1_restart_browser
|
||||
- service: homeassistant.turn_off
|
||||
entity_id:
|
||||
- group.kitchen_accents
|
||||
- service: light.turn_off
|
||||
entity_id: all
|
||||
|
@@ -17,7 +17,7 @@
|
||||
- wait_template: >-
|
||||
{{ not is_state('media_player.livingroomCC', 'playing') }}
|
||||
- wait_template: >-
|
||||
{{ not is_state('media_player.whole_house', 'playing') }}
|
||||
{{ not is_state('media_player.everywhere', 'playing') }}
|
||||
|
||||
- service: script.speech_engine
|
||||
data:
|
||||
|
@@ -14,7 +14,7 @@
|
||||
to: 'off'
|
||||
for: '00:02:00'
|
||||
- platform: state
|
||||
entity_id: media_player.whole_house
|
||||
entity_id: media_player.everywhere
|
||||
to: 'off'
|
||||
for: '00:02:00'
|
||||
|
||||
@@ -42,3 +42,31 @@
|
||||
- service: switch.turn_off
|
||||
data:
|
||||
entity_id: "{{ trigger.entity_id }}"
|
||||
|
||||
|
||||
- alias: 'Bedroom Screensaver Watchdog'
|
||||
id: Bedroom-Screensaver-Watchdog-automation
|
||||
trigger:
|
||||
- platform: state
|
||||
entity_id: binary_sensor.sleepnumber_carlo_carlo_is_in_bed
|
||||
to: 'on'
|
||||
- platform: state
|
||||
entity_id: binary_sensor.sleepnumber_carlo_stacey_is_in_bed
|
||||
to: 'on'
|
||||
- platform: state
|
||||
entity_id: switch.alarm_panel_1_screensaver
|
||||
to: 'off'
|
||||
|
||||
condition:
|
||||
- condition: or
|
||||
conditions:
|
||||
- condition: state
|
||||
entity_id: binary_sensor.sleepnumber_carlo_carlo_is_in_bed
|
||||
state: 'on'
|
||||
- condition: state
|
||||
entity_id: binary_sensor.sleepnumber_carlo_stacey_is_in_bed
|
||||
state: 'on'
|
||||
|
||||
action:
|
||||
- service: switch.turn_on
|
||||
entity_id: switch.alarm_panel_1_screensaver
|
||||
|
@@ -1,28 +0,0 @@
|
||||
###################################
|
||||
# @CCOSTAN
|
||||
# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
|
||||
## Start Up Section
|
||||
## Video Explanation can be found here :
|
||||
## https://www.vcloudinfo.com/2019/06/how-to-use-template-conditions-in-home-assistant.html
|
||||
###################################
|
||||
|
||||
- alias: Check if it's summer vacation on startup.
|
||||
id: 65f91ec6-b9ad-45de-9ffa-023598980019
|
||||
|
||||
trigger:
|
||||
- platform: homeassistant
|
||||
event: start
|
||||
- platform: time_pattern
|
||||
hours: '/12'
|
||||
|
||||
condition:
|
||||
- condition: template
|
||||
value_template: >
|
||||
{% set month=states("sensor.date").split('-')[1] | int %}
|
||||
{%- if month == 4 or month == 5 or month == 6 or month == 7 -%}
|
||||
true
|
||||
{%- endif -%}
|
||||
|
||||
action:
|
||||
- service: input_boolean.turn_off
|
||||
entity_id: input_boolean.school_mode
|
@@ -35,6 +35,7 @@
|
||||
- group.exterior_lights
|
||||
- light.outdoor_front_lights
|
||||
- group.outdoor_seasonal
|
||||
- group.kitchen_accents
|
||||
|
||||
- service: input_boolean.turn_off
|
||||
entity_id:
|
||||
|
@@ -21,8 +21,14 @@
|
||||
after: '07:00:00'
|
||||
before: '11:00:00'
|
||||
action:
|
||||
- service: light.turn_on
|
||||
- service: homeassistant.turn_on
|
||||
entity_id:
|
||||
- switch.lr_amp
|
||||
- light.kitchen_lights
|
||||
- service: switch.turn_on
|
||||
entity_id: switch.lr_amp
|
||||
- switch.alarm_panel_1_motion_detection
|
||||
- service: number.set_value
|
||||
target:
|
||||
entity_id: number.alarm_panel_1_screen_brightness
|
||||
data:
|
||||
value: 100
|
||||
|
@@ -12,6 +12,16 @@
|
||||
- platform: state
|
||||
entity_id: group.family
|
||||
to: 'not_home'
|
||||
- platform: sun
|
||||
event: sunrise
|
||||
offset: '-02:00:00'
|
||||
- platform: sun
|
||||
event: sunset
|
||||
offset: '+00:30:00'
|
||||
- platform: time
|
||||
at:
|
||||
- '03:00:00'
|
||||
- '12:00:00'
|
||||
|
||||
condition:
|
||||
- condition: state
|
||||
@@ -30,4 +40,3 @@
|
||||
- service: switch.turn_off
|
||||
entity_id: switch.back_landscaping
|
||||
|
||||
|
||||
|
@@ -15,23 +15,6 @@
|
||||
data:
|
||||
flash: long
|
||||
|
||||
- service: input_boolean.turn_off
|
||||
entity_id: input_boolean.flash
|
||||
|
||||
- alias: 'Flash Timer Lights'
|
||||
id: caac7e80-6f43-4029-ad40-420e70f67cd7
|
||||
trigger:
|
||||
- platform: state
|
||||
entity_id: input_boolean.flash
|
||||
to: 'on'
|
||||
from: 'off'
|
||||
- platform: event
|
||||
#Sent from IFTTT Webhooks : {"action":"Flash_Timer"}
|
||||
event_type: ifttt_webhook_received
|
||||
event_data:
|
||||
action: Flash_Timer
|
||||
|
||||
action:
|
||||
- service: light.turn_on
|
||||
entity_id:
|
||||
- light.bedroom
|
||||
@@ -44,6 +27,18 @@
|
||||
- light.office_lamp
|
||||
- light.main_slider
|
||||
- light.garage_attic
|
||||
- light.bedroom_lights
|
||||
- light.dinette_lights
|
||||
- light.dining_room_lights
|
||||
- light.foyer
|
||||
- light.garage_lights
|
||||
- light.hallway_lights
|
||||
- light.kitchen_lights
|
||||
- light.living_room_accents
|
||||
- light.living_room_lights
|
||||
- light.office_lights
|
||||
- light.upstairs_lights
|
||||
- light.garage_hallway
|
||||
# - light.den_lamp
|
||||
data:
|
||||
flash: long
|
||||
|
@@ -1,44 +0,0 @@
|
||||
######################################################################
|
||||
## Weekday Morning Routines for the Wife and Kiddos.
|
||||
######################################################################
|
||||
|
||||
- alias: 'Good Morning Routine'
|
||||
id: 1432bac8-311b-4618-8f8f-19dd848791b6
|
||||
trigger:
|
||||
- platform: state
|
||||
entity_id: input_boolean.good_morning
|
||||
to: 'on'
|
||||
from: 'off'
|
||||
- platform: state
|
||||
entity_id:
|
||||
- binary_sensor.sleepnumber_carlo_stacey_is_in_bed
|
||||
to: 'off'
|
||||
for: '00:05:00'
|
||||
|
||||
condition:
|
||||
- condition: state
|
||||
entity_id: group.family
|
||||
state: home
|
||||
- condition: state
|
||||
entity_id: input_boolean.school_mode
|
||||
state: 'on'
|
||||
- condition: time
|
||||
after: '05:30:00'
|
||||
before: '08:00:00'
|
||||
- condition: time
|
||||
weekday:
|
||||
- mon
|
||||
- tue
|
||||
- wed
|
||||
- thu
|
||||
- fri
|
||||
|
||||
action:
|
||||
- service: light.turn_on
|
||||
entity_id:
|
||||
- light.s1
|
||||
- light.s4
|
||||
- service: switch.turn_on
|
||||
entity_id: group.kitchen_accents
|
||||
- service: input_boolean.turn_off
|
||||
entity_id: input_boolean.good_morning
|
@@ -51,7 +51,14 @@
|
||||
- group.outdoor_seasonal
|
||||
- switch.kitchen_accent_2
|
||||
- group.master_bathroom_accents
|
||||
- switch.alarm_panel_1_motion_detection
|
||||
- service: script.interior_off
|
||||
- service: number.set_value
|
||||
target:
|
||||
entity_id: number.alarm_panel_1_screen_brightness
|
||||
data:
|
||||
value: 0
|
||||
|
||||
|
||||
- alias: 'Bed Presence AMP Trigger'
|
||||
id: 26846f7b-bc76-43d2-99be-af552d2300f
|
||||
@@ -66,7 +73,6 @@
|
||||
entity_id: group.bed
|
||||
to: 'off'
|
||||
id: "out_of_bed"
|
||||
|
||||
action:
|
||||
choose:
|
||||
- alias: "SomeOne in Bed"
|
||||
@@ -83,8 +89,13 @@
|
||||
- switch.kitchen_accent_2
|
||||
- light.outdoor_bathroom
|
||||
- group.master_bathroom_accents
|
||||
- group.landscaping
|
||||
|
||||
- group.landscaping
|
||||
- switch.alarm_panel_1_motion_detection
|
||||
- service: number.set_value
|
||||
target:
|
||||
entity_id: number.alarm_panel_1_screen_brightness
|
||||
data:
|
||||
value: 0
|
||||
default:
|
||||
- service: homeassistant.turn_on
|
||||
target:
|
||||
|
@@ -1,49 +0,0 @@
|
||||
blueprint:
|
||||
name: Motion-activated Light
|
||||
domain: automation
|
||||
source_url: https://github.com/home-assistant/core/blob/dev/homeassistant/components/automation/blueprints/motion_light.yaml
|
||||
input:
|
||||
motion_entity:
|
||||
name: Motion Sensor
|
||||
selector:
|
||||
entity:
|
||||
domain: binary_sensor
|
||||
device_class: motion
|
||||
light_target:
|
||||
name: Light
|
||||
selector:
|
||||
target:
|
||||
entity:
|
||||
domain: light
|
||||
no_motion_wait:
|
||||
name: Wait time
|
||||
description: Time to wait until the light should be turned off.
|
||||
default: 120
|
||||
selector:
|
||||
number:
|
||||
min: 0
|
||||
max: 3600
|
||||
unit_of_measurement: seconds
|
||||
|
||||
# If motion is detected within the delay,
|
||||
# we restart the script.
|
||||
mode: restart
|
||||
max_exceeded: silent
|
||||
|
||||
trigger:
|
||||
platform: state
|
||||
entity_id: !input motion_entity
|
||||
from: "off"
|
||||
to: "on"
|
||||
|
||||
action:
|
||||
- service: light.turn_on
|
||||
target: !input light_target
|
||||
- wait_for_trigger:
|
||||
platform: state
|
||||
entity_id: !input motion_entity
|
||||
from: "on"
|
||||
to: "off"
|
||||
- delay: !input no_motion_wait
|
||||
- service: light.turn_off
|
||||
target: !input light_target
|
@@ -1,41 +0,0 @@
|
||||
blueprint:
|
||||
name: Send notification when a person leaves a zone
|
||||
domain: automation
|
||||
source_url: https://github.com/home-assistant/core/blob/dev/homeassistant/components/automation/blueprints/notify_leaving_zone.yaml
|
||||
input:
|
||||
person_entity:
|
||||
name: Person
|
||||
selector:
|
||||
entity:
|
||||
domain: person
|
||||
zone_entity:
|
||||
name: Zone
|
||||
selector:
|
||||
entity:
|
||||
domain: zone
|
||||
notify_device:
|
||||
name: Device to notify
|
||||
description: Device needs to run the official Home Assistant app to receive notifications.
|
||||
selector:
|
||||
device:
|
||||
integration: mobile_app
|
||||
|
||||
trigger:
|
||||
platform: state
|
||||
entity_id: !input person_entity
|
||||
|
||||
variables:
|
||||
zone_entity: !input zone_entity
|
||||
zone_state: "{{ states[zone_entity].name }}"
|
||||
person_entity: !input person_entity
|
||||
person_name: "{{ states[person_entity].name }}"
|
||||
|
||||
condition:
|
||||
condition: template
|
||||
value_template: "{{ trigger.from_state.state == zone_state and trigger.to_state.state != zone_state }}"
|
||||
|
||||
action:
|
||||
domain: mobile_app
|
||||
type: notify
|
||||
device_id: !input notify_device
|
||||
message: "{{ person_name }} has left {{ zone_state }}"
|
@@ -1,74 +0,0 @@
|
||||
blueprint:
|
||||
name: Confirmable Notification
|
||||
description: >-
|
||||
A script that sends an actionable notification with a confirmation before
|
||||
running the specified action.
|
||||
domain: script
|
||||
source_url: https://github.com/home-assistant/core/blob/master/homeassistant/components/script/blueprints/confirmable_notification.yaml
|
||||
input:
|
||||
notify_device:
|
||||
name: Device to notify
|
||||
description: Device needs to run the official Home Assistant app to receive notifications.
|
||||
selector:
|
||||
device:
|
||||
integration: mobile_app
|
||||
title:
|
||||
name: "Title"
|
||||
description: "The title of the button shown in the notification."
|
||||
default: ""
|
||||
selector:
|
||||
text:
|
||||
message:
|
||||
name: "Message"
|
||||
description: "The message body"
|
||||
selector:
|
||||
text:
|
||||
confirm_text:
|
||||
name: "Confirmation Text"
|
||||
description: "Text to show on the confirmation button"
|
||||
default: "Confirm"
|
||||
selector:
|
||||
text:
|
||||
confirm_action:
|
||||
name: "Confirmation Action"
|
||||
description: "Action to run when notification is confirmed"
|
||||
default: []
|
||||
selector:
|
||||
action:
|
||||
dismiss_text:
|
||||
name: "Dismiss Text"
|
||||
description: "Text to show on the dismiss button"
|
||||
default: "Dismiss"
|
||||
selector:
|
||||
text:
|
||||
dismiss_action:
|
||||
name: "Dismiss Action"
|
||||
description: "Action to run when notification is dismissed"
|
||||
default: []
|
||||
selector:
|
||||
action:
|
||||
|
||||
mode: restart
|
||||
|
||||
sequence:
|
||||
- alias: "Send notification"
|
||||
domain: mobile_app
|
||||
type: notify
|
||||
device_id: !input notify_device
|
||||
title: !input title
|
||||
message: !input message
|
||||
data:
|
||||
actions:
|
||||
- action: "CONFIRM"
|
||||
title: !input confirm_text
|
||||
- action: "DISMISS"
|
||||
title: !input dismiss_text
|
||||
- alias: "Awaiting response"
|
||||
wait_for_trigger:
|
||||
- platform: event
|
||||
event_type: mobile_app_notification_action
|
||||
- choose:
|
||||
- conditions: "{{ wait.trigger.event.data.action == 'CONFIRM' }}"
|
||||
sequence: !input confirm_action
|
||||
- conditions: "{{ wait.trigger.event.data.action == 'DISMISS' }}"
|
||||
sequence: !input dismiss_action
|
@@ -64,41 +64,10 @@ light: !include light_groups.yaml
|
||||
ifttt:
|
||||
key: !secret ifttt_key
|
||||
|
||||
logbook:
|
||||
exclude:
|
||||
entities:
|
||||
- automation.detect_lights_and_adjust_the_brightness_when_turned_on_based_on_time
|
||||
- automation.cuckoo_clock
|
||||
- binary_sensor.office_motion
|
||||
- group.garage_doors
|
||||
- media_player.LivingRoomCC
|
||||
- py.warnings
|
||||
- sensor.small_garage_status
|
||||
- sensor.large_garage_status
|
||||
- sensor.small_garage_time_in_state
|
||||
- sensor.large_garage_time_in_state
|
||||
- sensor.large_garage_wifi_signal_strength
|
||||
- sensor.small_garage_wifi_signal_strength
|
||||
- sensor.small_garage_reflection_rate
|
||||
- sensor.large_garage_reflection_rate
|
||||
- sensor.pi_hole_ads_blocked_today
|
||||
- sensor.pi_hole_ads_percentage_blocked_today
|
||||
- sensor.pi_hole_dns_queries_today
|
||||
- sensor.time
|
||||
- sensor.date
|
||||
- sensor.floorplan_date
|
||||
- sensor.floorplan_time
|
||||
- sensor.ha_uptime
|
||||
- sensor.sleepnumber_carlo_stacey_pressure
|
||||
- sensor.sleepnumber_carlo_carlo_pressure
|
||||
|
||||
logbook: !include logbook.yaml
|
||||
logger: !include logger.yaml
|
||||
recorder: !include recorder.yaml
|
||||
|
||||
# zwave:
|
||||
# usb_path: /dev/ttyACM0
|
||||
# config_path: /srv/hass/hass_venv/lib/python3.4/site-packages/libopenzwave-0.3.1-py3.4-linux-armv7l.egg/config
|
||||
|
||||
tts:
|
||||
|
||||
homekit: !include homekit.yaml
|
||||
|
@@ -4,8 +4,6 @@ Interior_Lights:
|
||||
- group.kitchen_accents
|
||||
- light.bedroom
|
||||
- light.bedroom_lights
|
||||
- light.den_2
|
||||
- light.den1
|
||||
- light.dinette_lights
|
||||
- light.dining_room_lights
|
||||
- light.foyer
|
||||
|
@@ -1,9 +0,0 @@
|
||||
home_modes:
|
||||
|
||||
entities:
|
||||
- input_boolean.guest_mode
|
||||
- input_boolean.school_mode
|
||||
- input_boolean.alert_mode
|
||||
- input_boolean.speech_notifications
|
||||
- input_boolean.text_notifications
|
||||
|
@@ -3,8 +3,7 @@ media_players:
|
||||
- media_player.livingroomcc
|
||||
- media_player.living_room_tv
|
||||
- media_player.living_room_ultra
|
||||
- media_player.upstairs_living_room
|
||||
# - media_player.bedroom_alarm_panel
|
||||
- media_player.bedroom_tablet
|
||||
- media_player.living_room
|
||||
- media_player.front_room_flex
|
||||
- media_player.garage
|
||||
@@ -24,6 +23,5 @@ tvs:
|
||||
- media_player.roku_3810x_923c
|
||||
- media_player.roku_living_room
|
||||
- media_player.tv_samsung_q70_series_65
|
||||
- media_player.upstairs_living_room
|
||||
|
||||
|
||||
|
@@ -14,12 +14,12 @@ Interior Switches:
|
||||
- switch.lr_amp
|
||||
- switch.master_bathroom_accent_1
|
||||
- switch.master_bathroom_accent_2
|
||||
- switch.pool_deck
|
||||
#- switch.pool_deck - Not being used right now
|
||||
- switch.foyer_outlet
|
||||
- switch.den_outlet
|
||||
- switch.living_room_outlet
|
||||
- switch.living_room_tv_outlet
|
||||
- switch.office_lamp_switch_socket
|
||||
- switch.office_lamp_switch
|
||||
- switch.front_office_lamp
|
||||
|
||||
Kitchen Accents:
|
||||
|
@@ -1,13 +0,0 @@
|
||||
Triggers:
|
||||
|
||||
entities:
|
||||
- input_boolean.responsibilities
|
||||
- input_boolean.home_stats
|
||||
- input_boolean.flash
|
||||
- input_boolean.guard_dog
|
||||
- input_boolean.sleepy_dog
|
||||
- input_boolean.good_morning
|
||||
- input_boolean.good_night
|
||||
- input_boolean.meal_time
|
||||
- input_boolean.tv_time
|
||||
- input_boolean.work
|
@@ -1,18 +0,0 @@
|
||||
Weather:
|
||||
entities:
|
||||
- climate.downstairs
|
||||
# - sensor.downstairs_thermostat_humidity
|
||||
- climate.upstairs
|
||||
# - sensor.upstairs_thermostat_humidity
|
||||
- sensor.pirateweather_cloud_coverage
|
||||
- sensor.pirateweather_minutely_summary
|
||||
# - sensor.pirateweather_nearest_storm_distance
|
||||
- sensor.pirateweather_precip_intensity
|
||||
# - sensor.pirateweather_daily_max_precip_intensity
|
||||
- sensor.pirateweather_wind_speed
|
||||
- sensor.pirateweather_humidity
|
||||
- sensor.pirateweather_temperature
|
||||
- sensor.pirateweather_uv_index
|
||||
- sensor.moon
|
||||
# - sensor.launch_window
|
||||
- sensor.next_launch
|
@@ -1,7 +1,3 @@
|
||||
home_stats:
|
||||
name: Home Stats
|
||||
initial: off
|
||||
|
||||
responsibilities:
|
||||
name: responsibilities
|
||||
initial: off
|
||||
|
@@ -3,11 +3,6 @@ guest_mode:
|
||||
icon: mdi:account-alert
|
||||
initial: off
|
||||
|
||||
school_mode:
|
||||
name: School Mode
|
||||
icon: mdi:school
|
||||
initial: on
|
||||
|
||||
alert_mode:
|
||||
name: Alert Mode
|
||||
icon: mdi:alert-octagram
|
||||
|
@@ -2,11 +2,6 @@
|
||||
good_night:
|
||||
name: Good Night
|
||||
initial: off
|
||||
|
||||
good_morning:
|
||||
name: Good Morning
|
||||
initial: off
|
||||
|
||||
meal_time:
|
||||
name: Meal Time
|
||||
initial: off
|
||||
@@ -30,3 +25,7 @@ color_tornado:
|
||||
guard_dog:
|
||||
name: Guard Dog
|
||||
initial: off
|
||||
locator:
|
||||
name: Locator
|
||||
icon: mdi:map-marker-account
|
||||
initial: off
|
||||
|
42
config/logbook.yaml
Normal file
42
config/logbook.yaml
Normal file
@@ -0,0 +1,42 @@
|
||||
#-------------------------------------------
|
||||
# Logbook Configuration
|
||||
# Description: Settings for the Home Assistant logbook component
|
||||
# This component is responsible for displaying items in the logbook.
|
||||
# Follow me on https://www.vcloudinfo.com/click-here
|
||||
# Original Repo: https://github.com/CCOSTAN/Home-AssistantConfig
|
||||
#-------------------------------------------
|
||||
|
||||
exclude:
|
||||
entity_globs:
|
||||
- sensor.*_location
|
||||
- sensor.*_place
|
||||
- sensor.*_geocoded_location
|
||||
- sensor.pirateweather_*
|
||||
- weather.*
|
||||
entities:
|
||||
- automation.cuckoo_clock
|
||||
- automation.detect_lights_and_adjust_the_brightness_when_turned_on_based_on_time
|
||||
- binary_sensor.office_motion
|
||||
- binary_sensor.refrigerator_door_open
|
||||
- binary_sensor.rheem_wh_running
|
||||
- group.garage_doors
|
||||
- media_player.LivingRoomCC
|
||||
- sensor.date
|
||||
- sensor.downstairs_ac_cooling_numeric
|
||||
- sensor.ha_uptime
|
||||
- sensor.large_garage_reflection_rate
|
||||
- sensor.large_garage_status
|
||||
- sensor.large_garage_time_in_state
|
||||
- sensor.large_garage_wifi_signal_strength
|
||||
- sensor.pi_hole_ads_blocked_today
|
||||
- sensor.pi_hole_ads_percentage_blocked_today
|
||||
- sensor.pi_hole_dns_queries_today
|
||||
- sensor.rheem_wh_running_state
|
||||
- sensor.sleepnumber_carlo_carlo_pressure
|
||||
- sensor.sleepnumber_carlo_stacey_pressure
|
||||
- sensor.small_garage_reflection_rate
|
||||
- sensor.small_garage_status
|
||||
- sensor.small_garage_time_in_state
|
||||
- sensor.small_garage_wifi_signal_strength
|
||||
- sensor.time
|
||||
- sensor.upstairs_ac_cooling_numeric
|
@@ -14,13 +14,12 @@
|
||||
|
||||
default: info
|
||||
logs:
|
||||
AIOGitHubAPI: error
|
||||
aiohttp.access: critical
|
||||
aiohttp.server: critical
|
||||
aiounifi: error
|
||||
custom_components.hacs: error
|
||||
hacs: error
|
||||
queueman: error
|
||||
AIOGitHubAPI: error
|
||||
homeassistant.core: error
|
||||
homeassistant.config_entries: error
|
||||
homeassistant.components.automation: warn
|
||||
@@ -29,10 +28,14 @@ logs:
|
||||
homeassistant.components.device_tracker: error
|
||||
homeassistant.components.discovery: warn
|
||||
homeassistant.components.feedreader: error
|
||||
homeassistant.components.history: error
|
||||
homeassistant.components.http: warn
|
||||
homeassistant.components.ipp: critical
|
||||
homeassistant.components.logbook: error
|
||||
homeassistant.components.media_player: info
|
||||
homeassistant.components.mqtt: error
|
||||
homeassistant.components.mqtt.discovery: critical
|
||||
homeassistant.components.persistent_notification: critical
|
||||
homeassistant.components.rest.sensor: critical
|
||||
homeassistant.components.recorder: error
|
||||
homeassistant.components.sensor.pi_hole: critical
|
||||
@@ -47,9 +50,11 @@ logs:
|
||||
homeassistant.helpers.script: info
|
||||
homeassistant.helpers.entity: critical
|
||||
homeassistant.loader: warn
|
||||
homeassistant.components.websocket_api: error
|
||||
pubnub: critical
|
||||
py.warnings: error
|
||||
pyhap.hap_server: warn
|
||||
queueman: error
|
||||
urllib3.connectionpool: error
|
||||
requests.packages.urllib3.connectionpool: critical
|
||||
root: warn
|
||||
|
@@ -12,4 +12,3 @@ sensor:
|
||||
{{ states.media_player | selectattr('attributes.last_called','eq',True) | map(attribute='entity_id') | first | default('none') }}
|
||||
|
||||
#-------------------------------------------
|
||||
|
||||
|
35
config/packages/backups.yaml
Executable file
35
config/packages/backups.yaml
Executable file
@@ -0,0 +1,35 @@
|
||||
#-------------------------------------------
|
||||
# @CCOSTAN
|
||||
# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
|
||||
#-------------------------------------------
|
||||
# Added Duplicati to HA - https://github.com/CCOSTAN/Home-AssistantConfig/issues/1498
|
||||
|
||||
#-------------------------------------------
|
||||
automation:
|
||||
- alias: 'Backup Job Failed Notification'
|
||||
id: 5b3a4c89-1234-4567-8901-23456789abcf
|
||||
trigger:
|
||||
- platform: state
|
||||
entity_id: sensor.dockerconfigs_backup_error_message
|
||||
from: '-'
|
||||
action:
|
||||
- service: script.notify_engine
|
||||
data:
|
||||
who: 'carlo'
|
||||
value1: 'Backup Job Error!'
|
||||
value2: "Error: {{ states('sensor.dockerconfigs_backup_error_message') }}"
|
||||
|
||||
- alias: 'Backup Size Change Alert'
|
||||
id: 5b3a4c89-1234-4567-8901-23456789abd0
|
||||
trigger:
|
||||
- platform: numeric_state
|
||||
entity_id: sensor.dockerconfigs_backup_target_size
|
||||
above: 10000000000 # Alert if backup size is over 10GB
|
||||
action:
|
||||
- service: script.notify_engine
|
||||
data:
|
||||
who: 'carlo'
|
||||
value1: 'Backup Size Warning'
|
||||
value2: >
|
||||
Backup target size has grown to {{ states('sensor.dockerconfigs_backup_target_size') | float / 1000000000 }} GB.
|
||||
Please verify backup contents and available storage.
|
@@ -42,14 +42,6 @@ script:
|
||||
|
||||
- delay: "00:01:30"
|
||||
|
||||
- service: media_player.play_media
|
||||
data:
|
||||
entity_id: media_player.garage
|
||||
media_content_id: 'turn off c life 4'
|
||||
media_content_type: custom
|
||||
|
||||
- delay: "00:01:30"
|
||||
|
||||
- service: media_player.play_media
|
||||
data:
|
||||
entity_id: media_player.garage
|
||||
|
273
config/packages/climate.yaml
Normal file
273
config/packages/climate.yaml
Normal file
@@ -0,0 +1,273 @@
|
||||
######################################################################
|
||||
## AC related automations
|
||||
## For more info visit https://www.vcloudinfo.com/click-here
|
||||
## Contact: @CCOSTAN
|
||||
######################################################################
|
||||
|
||||
input_datetime:
|
||||
downstairs_last_filter_change:
|
||||
name: Downstairs Last Filter Change
|
||||
has_date: true
|
||||
has_time: true
|
||||
upstairs_last_filter_change:
|
||||
name: Upstairs Last Filter Change
|
||||
has_date: true
|
||||
has_time: true
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Binary sensors – true when the thermostat reports the compressor is running
|
||||
# ---------------------------------------------------------------------------
|
||||
binary_sensor:
|
||||
- platform: template
|
||||
sensors:
|
||||
downstairs_ac_cooling:
|
||||
friendly_name: "Downstairs AC is Cooling"
|
||||
value_template: >
|
||||
{{ state_attr('climate.downstairs', 'hvac_action') == 'cooling' }}
|
||||
upstairs_ac_cooling:
|
||||
friendly_name: "Upstairs AC is Cooling"
|
||||
value_template: >
|
||||
{{ state_attr('climate.upstairs', 'hvac_action') == 'cooling' }}
|
||||
|
||||
sensor:
|
||||
- platform: template
|
||||
sensors:
|
||||
downstairs_ac_cooling_numeric:
|
||||
friendly_name: "Downstairs AC Cooling Numeric"
|
||||
value_template: "{{ 1 if is_state('binary_sensor.downstairs_ac_cooling', 'on') else 0 }}"
|
||||
upstairs_ac_cooling_numeric:
|
||||
friendly_name: "Upstairs AC Cooling Numeric "
|
||||
value_template: "{{ 1 if is_state('binary_sensor.upstairs_ac_cooling', 'on') else 0 }}"
|
||||
|
||||
- platform: integration
|
||||
name: Downstairs AC Runtime Raw
|
||||
source: sensor.downstairs_ac_cooling_numeric
|
||||
unit_time: h
|
||||
method: left
|
||||
round: 2
|
||||
- platform: integration
|
||||
name: Upstairs AC Runtime Raw
|
||||
source: sensor.upstairs_ac_cooling_numeric
|
||||
unit_time: h
|
||||
method: left
|
||||
round: 2
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Utility‑meters that act like odometers (reset when you swap the filter)
|
||||
# ---------------------------------------------------------------------------
|
||||
utility_meter:
|
||||
downstairs_ac_runtime_since_last_filter_change:
|
||||
source: sensor.downstairs_ac_runtime_raw
|
||||
upstairs_ac_runtime_since_last_filter_change:
|
||||
source: sensor.upstairs_ac_runtime_raw
|
||||
|
||||
script:
|
||||
reset_downstairs_filter:
|
||||
alias: Reset Downstairs Filter
|
||||
mode: queued
|
||||
sequence:
|
||||
- service: input_datetime.set_datetime
|
||||
data:
|
||||
entity_id: input_datetime.downstairs_last_filter_change
|
||||
datetime: "{{ now().strftime('%Y-%m-%d %H:%M:%S') }}"
|
||||
- service: utility_meter.reset
|
||||
target:
|
||||
entity_id: sensor.downstairs_ac_runtime_since_last_filter_change
|
||||
|
||||
reset_upstairs_filter:
|
||||
alias: Reset Upstairs Filter
|
||||
mode: queued
|
||||
sequence:
|
||||
- service: input_datetime.set_datetime
|
||||
data:
|
||||
entity_id: input_datetime.upstairs_last_filter_change
|
||||
datetime: "{{ now().strftime('%Y-%m-%d %H:%M:%S') }}"
|
||||
- service: utility_meter.reset
|
||||
target:
|
||||
entity_id: sensor.upstairs_ac_runtime_since_last_filter_change
|
||||
|
||||
automation:
|
||||
- alias: Notify Downstairs Filter Change Due
|
||||
description: Notify when downstairs runtime exceeds threshold since last filter change
|
||||
trigger:
|
||||
- platform: numeric_state
|
||||
entity_id: sensor.downstairs_ac_runtime_since_last_filter_change
|
||||
above: 800 # hours
|
||||
action:
|
||||
- service: script.notify_engine # <-- keep your existing notify helper
|
||||
data:
|
||||
title: "Home Maintenance Reminder"
|
||||
value1: "It's time to change your Downstairs AC filter."
|
||||
value2: >
|
||||
Runtime has exceeded 800 h. Last changed {{ ((now() - states.input_datetime.downstairs_last_filter_change.last_changed).total_seconds() / 86400) | round(0) }} days ago.
|
||||
who: "Carlo"
|
||||
group: "maintenance"
|
||||
level: "active"
|
||||
|
||||
- alias: Notify Upstairs Filter Change Due
|
||||
description: Notify when upstairs runtime exceeds threshold since last filter change
|
||||
trigger:
|
||||
- platform: numeric_state
|
||||
entity_id: sensor.upstairs_ac_runtime_since_last_filter_change
|
||||
above: 450 # hours
|
||||
action:
|
||||
- service: script.notify_engine
|
||||
data:
|
||||
title: "Home Maintenance Reminder"
|
||||
value1: "It's time to change your Upstairs AC filter."
|
||||
value2: >
|
||||
Runtime has exceeded 450 h. Last changed {{ ((now() - states.input_datetime.upstairs_last_filter_change.last_changed).total_seconds() / 86400) | round(0) }} days ago.
|
||||
who: "Carlo"
|
||||
group: "maintenance"
|
||||
|
||||
- alias: 'AC Status off Announcement'
|
||||
id: 7812fdaf-a3f8-498b-8f07-28e977e528fe
|
||||
trigger:
|
||||
- platform: state
|
||||
entity_id:
|
||||
- climate.downstairs
|
||||
- climate.upstairs
|
||||
from: 'off'
|
||||
action:
|
||||
- service: script.speech_engine
|
||||
data:
|
||||
NestStatus: "The {{ trigger.entity_id.split('.')[1].split('_')[0]}} {{ trigger.entity_id.split('.')[1].split('_')[1]}} has now been turned on for {{(trigger.to_state.state)}}."
|
||||
call_window_check: 1
|
||||
|
||||
- alias: Prevent Upstairs Nest Below 76
|
||||
id: 7812fdaf-a3f8-498b-8f07-28e977e528ff
|
||||
trigger:
|
||||
- platform: numeric_state
|
||||
entity_id: climate.upstairs
|
||||
attribute: temperature
|
||||
below: 76
|
||||
action:
|
||||
- delay: "00:03:00"
|
||||
- service: climate.set_temperature
|
||||
data:
|
||||
entity_id: climate.upstairs
|
||||
temperature: 77
|
||||
|
||||
- alias: Set Downstairs Nest to 76 When both in bed
|
||||
id: set_downstairs_nest_76_both_in_bed
|
||||
trigger:
|
||||
- platform: numeric_state
|
||||
entity_id: climate.downstairs
|
||||
attribute: temperature
|
||||
above: 76
|
||||
- platform: state
|
||||
entity_id: group.bed
|
||||
to: 'on'
|
||||
condition:
|
||||
- condition: and
|
||||
conditions:
|
||||
- condition: state
|
||||
entity_id: binary_sensor.sleepnumber_carlo_carlo_is_in_bed
|
||||
state: 'on'
|
||||
- condition: state
|
||||
entity_id: binary_sensor.sleepnumber_carlo_stacey_is_in_bed
|
||||
state: 'on'
|
||||
- condition: numeric_state
|
||||
entity_id: climate.downstairs
|
||||
attribute: temperature
|
||||
above: 76
|
||||
- condition: state
|
||||
entity_id: sun.sun
|
||||
state: 'below_horizon'
|
||||
action:
|
||||
- service: climate.set_temperature
|
||||
data:
|
||||
entity_id: climate.downstairs
|
||||
temperature: 76
|
||||
- alias: 'Set Downstairs Thermostat to 79 During Daylight'
|
||||
id: set_downstairs_thermostat_79_daylight
|
||||
mode: single
|
||||
trigger:
|
||||
- platform: state
|
||||
entity_id: sun.sun
|
||||
to: 'above_horizon'
|
||||
- platform: numeric_state
|
||||
entity_id: climate.downstairs
|
||||
attribute: temperature
|
||||
below: 79
|
||||
condition:
|
||||
- condition: state
|
||||
entity_id: sun.sun
|
||||
state: 'above_horizon'
|
||||
- condition: template
|
||||
value_template: "{{ state_attr('climate.downstairs', 'temperature') < 79 }}"
|
||||
- condition: state
|
||||
entity_id: input_boolean.guest_mode
|
||||
state: 'off'
|
||||
action:
|
||||
- service: climate.set_temperature
|
||||
data:
|
||||
entity_id: climate.downstairs
|
||||
temperature: 80
|
||||
|
||||
# Set thermostats to eco mode when everyone is away
|
||||
- alias: 'Set Thermostats to Eco When Away'
|
||||
id: 1e2d3c4b-eco-thermostat-away
|
||||
mode: single
|
||||
trigger:
|
||||
- platform: state
|
||||
entity_id: group.family
|
||||
to: 'not_home'
|
||||
condition:
|
||||
- condition: state
|
||||
entity_id: group.family
|
||||
state: 'not_home'
|
||||
- condition: state
|
||||
entity_id: input_boolean.guest_mode
|
||||
state: 'off'
|
||||
action:
|
||||
- service: climate.set_preset_mode
|
||||
data:
|
||||
entity_id:
|
||||
- climate.downstairs
|
||||
- climate.upstairs
|
||||
preset_mode: 'eco'
|
||||
|
||||
# Automation: Set Thermostats Back to Cool Mode
|
||||
- alias: 'Set Thermostats to Cool When Home'
|
||||
id: 1e2d3c4b-cool-thermostat-home
|
||||
mode: single
|
||||
trigger:
|
||||
- platform: state
|
||||
entity_id: group.family
|
||||
to: 'home'
|
||||
- platform: state
|
||||
entity_id: person.justin
|
||||
to: 'home'
|
||||
condition:
|
||||
- condition: or
|
||||
conditions:
|
||||
- condition: state
|
||||
entity_id: group.family
|
||||
state: 'home'
|
||||
- condition: state
|
||||
entity_id: person.justin
|
||||
state: 'home'
|
||||
- condition: state
|
||||
entity_id: input_boolean.guest_mode
|
||||
state: 'off'
|
||||
action:
|
||||
- choose:
|
||||
- conditions:
|
||||
- condition: state
|
||||
entity_id: group.family
|
||||
state: 'home'
|
||||
sequence:
|
||||
- service: climate.set_preset_mode
|
||||
data:
|
||||
entity_id: climate.downstairs
|
||||
preset_mode: 'none'
|
||||
- conditions:
|
||||
- condition: state
|
||||
entity_id: person.justin
|
||||
state: 'home'
|
||||
sequence:
|
||||
- service: climate.set_preset_mode
|
||||
data:
|
||||
entity_id: climate.upstairs
|
||||
preset_mode: 'none'
|
@@ -1,81 +0,0 @@
|
||||
#-------------------------------------------
|
||||
# Conico Cameras Configuration
|
||||
# Description: Integrates Conico Cameras with Alexa Media Player
|
||||
# Last Updated: 2023-11-15
|
||||
#
|
||||
# Features:
|
||||
# - Displays garage camera feed on Echo Show devices
|
||||
# - Displays driveway camera feed when front door opens
|
||||
# - Triggers based on garage door state and occupancy changes
|
||||
#
|
||||
# Hardware:
|
||||
# - Conico Camera: https://amzn.to/2Kl1eHo
|
||||
# - Amazon Echo Show devices
|
||||
#
|
||||
# Integration: Alexa Media Player
|
||||
#
|
||||
# Original Repo: https://github.com/CCOSTAN/Home-AssistantConfig
|
||||
# Blog Post: https://www.vcloudinfo.com/2019/03/integrating-smart-cameras-with-alexa-echo-shows.html
|
||||
# Follow me on https://www.vcloudinfo.com/click-here
|
||||
#-------------------------------------------
|
||||
|
||||
|
||||
automation:
|
||||
- alias: 'Garage Camera on Alexa Shows'
|
||||
id: 4373df2a-77f2-4e19-be7c-46c7b27ca583
|
||||
mode: single
|
||||
trigger:
|
||||
- platform: state
|
||||
entity_id:
|
||||
- cover.large_garage_door
|
||||
- cover.small_garage_door
|
||||
from: 'closed'
|
||||
to: 'open'
|
||||
|
||||
- platform: state
|
||||
entity_id: binary_sensor.mcu1_gpio12 #interior Garage Doors
|
||||
from: 'off'
|
||||
to: 'on'
|
||||
|
||||
- platform: state
|
||||
entity_id:
|
||||
- person.carlo
|
||||
- person.stacey
|
||||
- person.paige
|
||||
- person.justin
|
||||
to: 'not_home'
|
||||
from: 'home'
|
||||
|
||||
action:
|
||||
- choose:
|
||||
- conditions: "{{ is_state('binary_sensor.sleepnumber_carlo_stacey_is_in_bed','on') }}"
|
||||
sequence:
|
||||
- service: media_player.play_media
|
||||
data:
|
||||
entity_id: media_player.stacey_bedroom
|
||||
media_content_id: 'show garage camera from home assistant'
|
||||
media_content_type: custom
|
||||
- delay: '00:10:00'
|
||||
- service: media_player.play_media
|
||||
data:
|
||||
entity_id: media_player.stacey_bedroom
|
||||
media_content_id: 'hide garage camera'
|
||||
media_content_type: custom
|
||||
|
||||
default:
|
||||
- service: media_player.play_media
|
||||
target:
|
||||
entity_id: media_player.kitchen
|
||||
data:
|
||||
media_content_id: 'show garage camera from home assistant'
|
||||
media_content_type: custom
|
||||
- delay: '00:20:00'
|
||||
- service: media_player.play_media
|
||||
target:
|
||||
entity_id: media_player.kitchen
|
||||
data:
|
||||
media_content_id: 'hide garage camera'
|
||||
media_content_type: custom
|
||||
|
||||
- service: script.garage_lights_off
|
||||
|
38
config/packages/fridge.yaml
Normal file
38
config/packages/fridge.yaml
Normal file
@@ -0,0 +1,38 @@
|
||||
#-------------------------------------------
|
||||
# @CCOSTAN
|
||||
# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
|
||||
# Support for LG Fridges (https://amzn.to/3lOYTCv)
|
||||
# Added ThinLg HACS integration for Fridge sensors - https://github.com/ollo69/ha-smartthinq-sensors
|
||||
#-------------------------------------------
|
||||
|
||||
automation:
|
||||
- alias: 'Fridge Door Open'
|
||||
id: 2346efcd-e8a8-4e86-b5b6-43eBl1nkFr1dge95D00r0pen
|
||||
mode: single
|
||||
trigger:
|
||||
- platform: state
|
||||
entity_id: binary_sensor.refrigerator_door_open
|
||||
to: 'on'
|
||||
for:
|
||||
minutes: 5
|
||||
condition:
|
||||
- condition: state
|
||||
entity_id: binary_sensor.refrigerator_door_open
|
||||
state: 'on'
|
||||
action:
|
||||
- service: script.notify_engine
|
||||
data:
|
||||
title: 'Fridge Door Open'
|
||||
value1: >
|
||||
The fridge door has been open for more than 5 minutes. Please check and close the fridge door to avoid temperature issues.
|
||||
who: 'family'
|
||||
group: 'information'
|
||||
|
||||
- wait_template: "{{ states.group.family.state == 'home' }}"
|
||||
|
||||
- service: script.speech_engine
|
||||
data:
|
||||
value1: "Attention! The fridge door has been open for more than 5 minutes. Please close the fridge door."
|
||||
|
||||
- delay: 00:30:00
|
||||
- event: event_fridge_door_open
|
@@ -79,11 +79,53 @@ group:
|
||||
- cover.large_garage_door
|
||||
- cover.small_garage_door
|
||||
|
||||
automation:
|
||||
|
||||
######################################################################
|
||||
## Automation: Auto-open Large Garage Door when someone comes home
|
||||
######################################################################
|
||||
- alias: 'Auto Open Large Garage Door On Arrival'
|
||||
id: 7e2b1c3a-4b1e-4b2a-9c1a-automated_garage_door
|
||||
mode: single
|
||||
trigger:
|
||||
- platform: state
|
||||
entity_id:
|
||||
- person.carlo
|
||||
- person.stacey
|
||||
- person.justin
|
||||
from: 'driving'
|
||||
to: 'home'
|
||||
condition:
|
||||
- condition: state
|
||||
entity_id: cover.large_garage_door
|
||||
state: 'closed'
|
||||
- condition: state
|
||||
entity_id: group.bed
|
||||
state: 'off'
|
||||
- condition: state
|
||||
entity_id: group.family
|
||||
state: 'home'
|
||||
action:
|
||||
- service: cover.open_cover
|
||||
target:
|
||||
entity_id: cover.large_garage_door
|
||||
- service: input_text.set_value
|
||||
target:
|
||||
entity_id: input_text.last_person_home
|
||||
data:
|
||||
value: "{{ trigger.to_state.entity_id.split('.')[1] }}"
|
||||
- service: script.notify_engine
|
||||
data:
|
||||
who: 'parents'
|
||||
value1: "Large Garage has been auto-opened for {{ states('input_text.last_person_home') }}."
|
||||
title: 'Garage Auto-Opened'
|
||||
group: 'Welcome_Home'
|
||||
camera_entity: camera.garagecam
|
||||
|
||||
######################################################################
|
||||
## Send a notification to anyone coming home asking if they want to open the garage door.
|
||||
######################################################################
|
||||
|
||||
automation:
|
||||
- alias: 'Garage Helper'
|
||||
id: 365adc21-5e96-4e78-9e94-089901a29430
|
||||
mode: parallel
|
||||
@@ -92,7 +134,7 @@ automation:
|
||||
entity_id:
|
||||
- person.carlo
|
||||
- person.stacey
|
||||
from: 'not_home'
|
||||
# from: 'driving'
|
||||
to: 'home'
|
||||
condition:
|
||||
- condition: state
|
||||
@@ -339,3 +381,119 @@ automation:
|
||||
data:
|
||||
value1: "Check the garage doors. The Small garage is {{ states('cover.small_garage_door')}} and the large garage is {{ states('cover.large_garage_door')}} [Only mention the garage door that is open and remind us to close it for the night]"
|
||||
|
||||
- alias: 'Garage Camera on Alexa Shows'
|
||||
id: 4373df2a-77f2-4e19-be7c-46c7b27ca583
|
||||
mode: single
|
||||
trigger:
|
||||
- platform: state
|
||||
entity_id:
|
||||
- cover.large_garage_door
|
||||
- cover.small_garage_door
|
||||
from: 'closed'
|
||||
to: 'open'
|
||||
|
||||
- platform: state
|
||||
entity_id: binary_sensor.mcu1_gpio12 #interior Garage Doors
|
||||
from: 'off'
|
||||
to: 'on'
|
||||
|
||||
- platform: state
|
||||
entity_id:
|
||||
- person.carlo
|
||||
- person.stacey
|
||||
- person.paige
|
||||
- person.justin
|
||||
to: 'not_home'
|
||||
from: 'home'
|
||||
|
||||
action:
|
||||
- choose:
|
||||
- conditions: "{{ is_state('binary_sensor.sleepnumber_carlo_stacey_is_in_bed','on') }}"
|
||||
sequence:
|
||||
- service: media_player.play_media
|
||||
data:
|
||||
entity_id: media_player.stacey_bedroom
|
||||
media_content_id: 'show garage camera from home assistant'
|
||||
media_content_type: custom
|
||||
- delay: '00:10:00'
|
||||
- service: media_player.play_media
|
||||
data:
|
||||
entity_id: media_player.stacey_bedroom
|
||||
media_content_id: 'hide garage camera'
|
||||
media_content_type: custom
|
||||
|
||||
default:
|
||||
- service: media_player.play_media
|
||||
target:
|
||||
entity_id: media_player.kitchen
|
||||
data:
|
||||
media_content_id: 'show garage camera from home assistant'
|
||||
media_content_type: custom
|
||||
- delay: '00:20:00'
|
||||
- service: media_player.play_media
|
||||
target:
|
||||
entity_id: media_player.kitchen
|
||||
data:
|
||||
media_content_id: 'hide garage camera'
|
||||
media_content_type: custom
|
||||
|
||||
- service: script.garage_lights_off
|
||||
|
||||
- alias: 'Garage Camera on Alexa Shows'
|
||||
id: 4373df2a-77f2-4e19-be7c-46c7b27ca583
|
||||
mode: single
|
||||
trigger:
|
||||
- platform: state
|
||||
entity_id:
|
||||
- cover.large_garage_door
|
||||
- cover.small_garage_door
|
||||
from: 'closed'
|
||||
to: 'open'
|
||||
|
||||
- platform: state
|
||||
entity_id: binary_sensor.mcu1_gpio12 #interior Garage Doors
|
||||
from: 'off'
|
||||
to: 'on'
|
||||
|
||||
- platform: state
|
||||
entity_id:
|
||||
- person.carlo
|
||||
- person.stacey
|
||||
- person.paige
|
||||
- person.justin
|
||||
to: 'not_home'
|
||||
from: 'home'
|
||||
|
||||
action:
|
||||
- choose:
|
||||
- conditions: "{{ is_state('binary_sensor.sleepnumber_carlo_stacey_is_in_bed','on') }}"
|
||||
sequence:
|
||||
- service: media_player.play_media
|
||||
data:
|
||||
entity_id: media_player.stacey_bedroom
|
||||
media_content_id: 'show garage camera from home assistant'
|
||||
media_content_type: custom
|
||||
- delay: '00:10:00'
|
||||
- service: media_player.play_media
|
||||
data:
|
||||
entity_id: media_player.stacey_bedroom
|
||||
media_content_id: 'hide garage camera'
|
||||
media_content_type: custom
|
||||
|
||||
default:
|
||||
- service: media_player.play_media
|
||||
target:
|
||||
entity_id: media_player.kitchen
|
||||
data:
|
||||
media_content_id: 'show garage camera from home assistant'
|
||||
media_content_type: custom
|
||||
- delay: '00:20:00'
|
||||
- service: media_player.play_media
|
||||
target:
|
||||
entity_id: media_player.kitchen
|
||||
data:
|
||||
media_content_id: 'hide garage camera'
|
||||
media_content_type: custom
|
||||
|
||||
- service: script.garage_lights_off
|
||||
|
||||
|
@@ -42,6 +42,6 @@ automation:
|
||||
- service: script.notify_engine
|
||||
data:
|
||||
title: "🔥 Proxmox Garage Alert!"
|
||||
value1: "The average temperature of your Proxmox servers is above 90°F!"
|
||||
value1: "The average temperature of your Proxmox servers is above 145°F!"
|
||||
who: 'carlo'
|
||||
group: 'information'
|
||||
|
@@ -3,7 +3,6 @@
|
||||
# @CCOSTAN
|
||||
# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
|
||||
#-------------------------------------------
|
||||
|
||||
input_select:
|
||||
log_level:
|
||||
name: Log Level
|
||||
@@ -34,4 +33,3 @@ automation:
|
||||
- service: logger.set_level
|
||||
data:
|
||||
homeassistant.components: "{{ states.input_select.log_level.state }}"
|
||||
|
||||
|
24
config/packages/minecraft.yaml
Executable file
24
config/packages/minecraft.yaml
Executable file
@@ -0,0 +1,24 @@
|
||||
#-------------------------------------------
|
||||
# @CCOSTAN
|
||||
# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
|
||||
# Minecraft related stuff
|
||||
#-------------------------------------------
|
||||
automation:
|
||||
- alias: Someone on the MC server!
|
||||
id: e7cc50d1-2374-4923-8e0c-2a59ff593cf8
|
||||
trigger:
|
||||
- platform: state
|
||||
entity_id: sensor.minecraft_players_online
|
||||
|
||||
action:
|
||||
- service: script.notify_engine
|
||||
data:
|
||||
value1: >
|
||||
{% if states.sensor.minecraft_players_online.state|int > 0 %}
|
||||
{{ states.sensor.minecraft_players_online.state }} player(s) connected to Minecraft server
|
||||
{% else %}
|
||||
All players disconnected from Minecraft server
|
||||
{% endif %}
|
||||
title: "Minecraft Server Status"
|
||||
who: 'carlo'
|
||||
group: 'information'
|
@@ -1,63 +0,0 @@
|
||||
#-------------------------------------------
|
||||
# @CCOSTAN
|
||||
# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
|
||||
# Neato Support for D7 Connected Botvac - control my [Neato Vacuum](http://amzn.to/2kqnnqu) with Home Assistant.
|
||||
#-------------------------------------------
|
||||
# homeassistant:
|
||||
# customize_glob:
|
||||
# "*.*_sleep_hours":
|
||||
# unit_of_measurement: hours
|
||||
# icon: mdi:sleep
|
||||
#
|
||||
#
|
||||
#-------------------------------------------
|
||||
sensor:
|
||||
platform: minecraft
|
||||
name: Bear Stone
|
||||
server: !secret minecraft
|
||||
#-------------------------------------------
|
||||
group:
|
||||
Minecraft:
|
||||
entities:
|
||||
- sensor.bear_stone
|
||||
|
||||
##############################################################################
|
||||
### Automations - Detect when things are not right. Like any Good Watchdog.
|
||||
##############################################################################
|
||||
#automation:
|
||||
#Tweets pushed out to X.
|
||||
automation:
|
||||
- alias: Someone on the MC server!
|
||||
id: e7cc50d1-2374-4923-8e0c-2a59ff593cf8
|
||||
trigger:
|
||||
- platform: state
|
||||
entity_id: sensor.bear_stone
|
||||
|
||||
action:
|
||||
- service: light.turn_on
|
||||
entity_id: light.justin_go
|
||||
data:
|
||||
color_name: >
|
||||
{% if states.sensor.bear_stone.state|int == 1 %}
|
||||
gold
|
||||
{% elif states.sensor.bear_stone.state|int == 2 %}
|
||||
green
|
||||
{% elif states.sensor.bear_stone.state|int == 3 %}
|
||||
blue
|
||||
{% else %}
|
||||
red
|
||||
{% endif %}
|
||||
|
||||
- service: >
|
||||
{% if states.sensor.bear_stone.state|int > 0 %}
|
||||
light.turn_on
|
||||
{% else %}
|
||||
light.turn_off
|
||||
{% endif %}
|
||||
entity_id: light.justin_go
|
||||
|
||||
- service: light.turn_on
|
||||
entity_id:
|
||||
- light.justin_go
|
||||
data:
|
||||
flash: short
|
@@ -15,4 +15,4 @@ automation:
|
||||
|
||||
action:
|
||||
- service: switch.toggle
|
||||
entity_id: switch.office_lamp_switch_socket
|
||||
entity_id: switch.office_lamp_switch
|
||||
|
@@ -22,7 +22,7 @@ automation:
|
||||
condition:
|
||||
- condition: time
|
||||
before: '03:00'
|
||||
after: '04:00'
|
||||
after: '05:00'
|
||||
|
||||
action:
|
||||
- service: script.notify_engine_two_button
|
||||
|
55
config/packages/printer.yaml
Executable file
55
config/packages/printer.yaml
Executable file
@@ -0,0 +1,55 @@
|
||||
#-------------------------------------------
|
||||
# @CCOSTAN
|
||||
# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
|
||||
# inspired by https://community.home-assistant.io/t/epson-wf-3540-ink-level-monitoring/21813
|
||||
#-------------------------------------------
|
||||
|
||||
##############################################################################
|
||||
### Automations - Detect when things are not right. Like any Good Watchdog.
|
||||
##############################################################################
|
||||
|
||||
automation:
|
||||
- alias: 'Printer Ink Alert'
|
||||
id: 6ef2a695-0b76-4eb5-b67c-2ff6f74f40b8
|
||||
initial_state: 'on'
|
||||
trigger:
|
||||
- platform: numeric_state
|
||||
entity_id:
|
||||
- sensor.canon_ts300_series_black
|
||||
- sensor.canon_ts300_series_color
|
||||
below: 15
|
||||
condition:
|
||||
condition: time
|
||||
weekday:
|
||||
- wed
|
||||
action:
|
||||
- service: script.notify_engine
|
||||
data:
|
||||
value1: "{{ trigger.to_state.attributes.friendly_name }} is at {{ trigger.to_state.state }} "
|
||||
who: 'carlo'
|
||||
apns_id: 'information'
|
||||
|
||||
- alias: 'Printer Status Notifications'
|
||||
id: 6ef2a695-0b76-4eb5-b67c-2ff6f74f40b9
|
||||
trigger:
|
||||
- platform: state
|
||||
entity_id: sensor.canon_ts300_series
|
||||
from: 'unavailable'
|
||||
to: 'idle'
|
||||
- platform: state
|
||||
entity_id: sensor.canon_ts300_series
|
||||
to: 'printing'
|
||||
action:
|
||||
- service: notify.alexa_media_front_room_flex
|
||||
data:
|
||||
message: >
|
||||
{% if trigger.to_state.state == 'idle' %}
|
||||
Printer has powered on and is ready
|
||||
{% else %}
|
||||
Printer is now printing
|
||||
{% endif %}
|
||||
data:
|
||||
type: announce
|
||||
|
||||
|
||||
#-------------------------------------------
|
36
config/packages/proxmox.yaml
Normal file
36
config/packages/proxmox.yaml
Normal file
@@ -0,0 +1,36 @@
|
||||
#-------------------------------------------
|
||||
# Setting up nightly reboot schedule for Frigate server via Proxmox
|
||||
# https://www.vcloudinfo.com/click-here
|
||||
#-------------------------------------------
|
||||
|
||||
automation:
|
||||
- alias: "Nightly Frigate Server Reboot"
|
||||
id: nightly_frigate_reboot
|
||||
description: "Reboots the Frigate server every day at 5 AM"
|
||||
trigger:
|
||||
- platform: time
|
||||
at: "05:00:00"
|
||||
action:
|
||||
- service: button.press
|
||||
target:
|
||||
entity_id: button.qemu_docker2_101_reboot
|
||||
mode: single
|
||||
|
||||
- alias: "Notify Carlo of Proxmox Updates"
|
||||
id: notify_carlo_proxmox_updates
|
||||
description: "Sends a notification to Carlo when there are updates available for the Proxmox hosts."
|
||||
trigger:
|
||||
- platform: state
|
||||
entity_id: binary_sensor.node_proxmox02_updates_packages
|
||||
to: 'on'
|
||||
- platform: state
|
||||
entity_id: binary_sensor.node_proxmox1_updates_packages
|
||||
to: 'on'
|
||||
action:
|
||||
- service: script.notify_engine
|
||||
data:
|
||||
who: carlo
|
||||
title: "Proxmox Updates Available"
|
||||
value1: "There are updates available for the Proxmox hosts. Please review and apply updates as needed."
|
||||
group: "information"
|
||||
mode: single
|
@@ -58,6 +58,18 @@ automation:
|
||||
data:
|
||||
value1: "Please be aware that the hot water has dropped below 30% availability. Please consider taking a shower at another time. Gallons used today: {{sensor.phyn_daily_water_usage}}"
|
||||
|
||||
- service: notify.alexa_media_master_bathroom
|
||||
data:
|
||||
message: "Please be aware that the hot water has dropped below 30% availability. Please wrap up your shower soon."
|
||||
data:
|
||||
type: announce
|
||||
|
||||
- service: notify.alexa_media_upstairs
|
||||
data:
|
||||
message: "Please be aware that the hot water has dropped below 30% availability. Please wrap up your shower soon."
|
||||
data:
|
||||
type: announce
|
||||
|
||||
- wait_template: "{{ states('sensor.rheem_wh_available_hot_water')|float > 50 }}"
|
||||
timeout: '01:00:00' # Adjust timeout as needed
|
||||
- service: script.speech_engine
|
||||
|
72
config/packages/speedtest.yaml
Normal file
72
config/packages/speedtest.yaml
Normal file
@@ -0,0 +1,72 @@
|
||||
# Automation to notify Carlo if internet speeds fall below 400 Mbps
|
||||
# For more info or questions, visit https://www.vcloudinfo.com/click-here
|
||||
|
||||
automation:
|
||||
- alias: "Notify Carlo if Internet Speed is Slow"
|
||||
id: notify-carlo-slow-internet-speed
|
||||
description: "Sends a notification to Carlo's phone if download or upload speed falls below 400 Mbps."
|
||||
trigger:
|
||||
- platform: numeric_state
|
||||
entity_id: sensor.speedtest_download
|
||||
below: 300
|
||||
- platform: numeric_state
|
||||
entity_id: sensor.speedtest_upload
|
||||
below: 300
|
||||
|
||||
condition:
|
||||
- condition: state
|
||||
entity_id: group.bed
|
||||
state: 'off'
|
||||
- condition: template # Checks to make sure the system hasn't been restarted in the past 10 minutes
|
||||
value_template: >-
|
||||
{% set uptime = states('sensor.ha_uptime') | as_datetime %}
|
||||
{% set now = now() %}
|
||||
{{ (now - uptime).total_seconds() / 60 >= 10 }}
|
||||
|
||||
action:
|
||||
- service: script.notify_engine
|
||||
data:
|
||||
title: "⚠️ Internet Speed Alert"
|
||||
value1: >-
|
||||
Download: {{ states('sensor.speedtest_download') }} Mbps,
|
||||
Upload: {{ states('sensor.speedtest_upload') }} Mbps.
|
||||
value2: "One or both speeds are below 300 Mbps."
|
||||
who: "parents"
|
||||
group: "information"
|
||||
level: "active"
|
||||
mode: single
|
||||
|
||||
- alias: "Notify Carlo if Internet Speed is Restored"
|
||||
id: notify-carlo-internet-speed-restored
|
||||
description: "Sends a notification to Carlo's phone when download and upload speeds are back above 300/300 Mbps."
|
||||
trigger:
|
||||
- platform: numeric_state
|
||||
entity_id: sensor.speedtest_download
|
||||
above: 300
|
||||
- platform: numeric_state
|
||||
entity_id: sensor.speedtest_upload
|
||||
above: 300
|
||||
condition:
|
||||
- condition: numeric_state
|
||||
entity_id: sensor.speedtest_download
|
||||
above: 300
|
||||
- condition: numeric_state
|
||||
entity_id: sensor.speedtest_upload
|
||||
above: 300
|
||||
- condition: template # Checks to make sure the system hasn't been restarted in the past 10 minutes
|
||||
value_template: >-
|
||||
{% set uptime = states('sensor.ha_uptime') | as_datetime %}
|
||||
{% set now = now() %}
|
||||
{{ (now - uptime).total_seconds() / 60 >= 10 }}
|
||||
action:
|
||||
- service: script.notify_engine
|
||||
data:
|
||||
title: "✅ Internet Speed Restored"
|
||||
value1: >-
|
||||
Download: {{ states('sensor.speedtest_download') }} Mbps,
|
||||
Upload: {{ states('sensor.speedtest_upload') }} Mbps.
|
||||
value2: "Internet speeds are back to normal."
|
||||
who: "parents"
|
||||
group: "information"
|
||||
level: "active"
|
||||
mode: single
|
@@ -11,16 +11,23 @@ command_line:
|
||||
unique_id: lines_of_code
|
||||
command: "find /config -name '*.yaml' | xargs cat | wc -l"
|
||||
scan_interval: 20000
|
||||
value_template: "{{ value | int }}"
|
||||
unit_of_measurement: "count"
|
||||
- sensor:
|
||||
name: 'GitHub Open Issues'
|
||||
unique_id: github_open_issues
|
||||
command: 'curl -s https://api.github.com/repos/ccostan/home-assistantconfig'
|
||||
scan_interval: 20000
|
||||
value_template: '{{ value_json.open_issues }}'
|
||||
unit_of_measurement: 'count'
|
||||
|
||||
- sensor:
|
||||
name: 'GitHub Stats'
|
||||
unique_id: github_stats_command
|
||||
command: 'curl https://api.github.com/repos/ccostan/home-assistantconfig'
|
||||
name: 'GitHub Stargazers'
|
||||
unique_id: github_stargazers
|
||||
command: 'curl -s https://api.github.com/repos/ccostan/home-assistantconfig'
|
||||
scan_interval: 20000
|
||||
value_template: '{{ value_json.name }}'
|
||||
json_attributes:
|
||||
- open_issues
|
||||
- stargazers_count
|
||||
value_template: '{{ value_json.stargazers_count }}'
|
||||
unit_of_measurement: 'count'
|
||||
|
||||
sensor:
|
||||
- platform: history_stats
|
||||
@@ -66,31 +73,56 @@ sensor:
|
||||
friendly_name: 'Number of Sensors'
|
||||
value_template: >-
|
||||
{{ states.sensor | list | count }}
|
||||
unit_of_measurement: 'count'
|
||||
icon_template: mdi:counter
|
||||
|
||||
automation_count:
|
||||
friendly_name: 'Number of Automations'
|
||||
value_template: >-
|
||||
{{ states.automation| list | count }}
|
||||
{{ states.automation | list | count }}
|
||||
unit_of_measurement: 'count'
|
||||
icon_template: mdi:robot
|
||||
|
||||
script_count:
|
||||
friendly_name: 'Number of Scripts'
|
||||
value_template: >
|
||||
value_template: >-
|
||||
{{ states.script | list | count }}
|
||||
unit_of_measurement: 'count'
|
||||
icon_template: mdi:script-text
|
||||
|
||||
binary_sensor_count:
|
||||
friendly_name: 'Number of Binary Sensors'
|
||||
value_template: >-
|
||||
{{ states.binary_sensor | list | count }}
|
||||
|
||||
unit_of_measurement: 'count'
|
||||
icon_template: mdi:binary-sensor
|
||||
tracker_count:
|
||||
friendly_name: 'Number of Devices'
|
||||
value_template: >-
|
||||
{{ states.device_tracker| list | count }}
|
||||
unit_of_measurement: 'count'
|
||||
icon_template: mdi:account-group
|
||||
|
||||
lights_count:
|
||||
friendly_name: 'Number of Lights'
|
||||
value_template: >
|
||||
{{ states.light | list | count }}
|
||||
unit_of_measurement: 'count'
|
||||
icon_template: mdi:lightbulb
|
||||
lights_on_count:
|
||||
friendly_name: "Number of lights on"
|
||||
value_template: >-
|
||||
{% set lights = states.light | selectattr('state', 'eq', 'on') | list %}
|
||||
{% set qty = lights | count %}
|
||||
{% set p1 = 'lights are' if qty > 1 else 'light is' %}
|
||||
|
||||
{% if qty == 0 %}
|
||||
No lights on.
|
||||
{% else %}
|
||||
{{ qty }} {{ p1 }} on.
|
||||
{% endif %}
|
||||
unit_of_measurement: 'count'
|
||||
icon_template: mdi:binary-sensor
|
||||
protect_count:
|
||||
friendly_name: 'Number of Smoke Detectors'
|
||||
value_template: >
|
||||
@@ -103,9 +135,12 @@ sensor:
|
||||
{% else %}
|
||||
0
|
||||
{% endif %}
|
||||
unit_of_measurement: 'count'
|
||||
icon_template: mdi:smoke-detector
|
||||
camera_count:
|
||||
friendly_name: 'Number of online Cameras'
|
||||
value_template: >
|
||||
{{ states.camera | list | count }}
|
||||
|
||||
unit_of_measurement: 'count'
|
||||
icon_template: mdi:camera
|
||||
#############################################################
|
||||
|
109
config/packages/superbowl.yaml
Executable file
109
config/packages/superbowl.yaml
Executable file
@@ -0,0 +1,109 @@
|
||||
#-------------------------------------------
|
||||
# Setting up some fun flash lights if anyone scores in the superbowl. Will need to update the sensors each year though.
|
||||
# @CCOSTAN
|
||||
# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
|
||||
# https://github.com/CCOSTAN/Home-AssistantConfig/issues/1502#
|
||||
#-------------------------------------------
|
||||
|
||||
automation:
|
||||
- alias: 'Super Bowl Team Score Change'
|
||||
id: 5b3a4c89-1234-4567-8901-23456789abcd
|
||||
mode: single
|
||||
trigger:
|
||||
- platform: state
|
||||
entity_id: sensor.team_tracker_kc
|
||||
attribute: team_score
|
||||
- platform: state
|
||||
entity_id: sensor.team_tracker_phi
|
||||
attribute: team_score
|
||||
condition:
|
||||
- condition: template
|
||||
value_template: "{{ now().month == 2 }}"
|
||||
action:
|
||||
- service: input_boolean.turn_on
|
||||
target:
|
||||
entity_id: input_boolean.flash
|
||||
- service: light.turn_on
|
||||
target:
|
||||
entity_id:
|
||||
- light.outdoor_front_lights
|
||||
- light.living_room_accents
|
||||
- light.m1_back_left
|
||||
- light.m1_back_right
|
||||
- light.m1_front_left
|
||||
- light.m1_front_right
|
||||
- light.main_slider
|
||||
data:
|
||||
rgb_color: >
|
||||
{% if trigger.entity_id == 'sensor.team_tracker_phi' %}
|
||||
[0, 255, 0]
|
||||
{% else %}
|
||||
[255, 0, 0]
|
||||
{% endif %}
|
||||
brightness: 255
|
||||
- delay:
|
||||
minutes: 5
|
||||
- service: light.turn_on
|
||||
target:
|
||||
entity_id:
|
||||
- light.m1_back_left
|
||||
- light.m1_back_right
|
||||
data:
|
||||
brightness: 255
|
||||
rgb_color: [255, 255, 255]
|
||||
|
||||
- alias: 'Super Bowl Winner Celebration'
|
||||
id: 5b3a4c89-1234-4567-8901-23456789abce
|
||||
mode: single
|
||||
trigger:
|
||||
- platform: state
|
||||
entity_id:
|
||||
- sensor.team_tracker_kc
|
||||
- sensor.team_tracker_phi
|
||||
attribute: team_winner
|
||||
to: 'true'
|
||||
condition:
|
||||
- condition: template
|
||||
value_template: "{{ now().month == 2 }}"
|
||||
action:
|
||||
- service: light.turn_on
|
||||
target:
|
||||
entity_id:
|
||||
- light.outdoor_front_lights
|
||||
- light.living_room_accents
|
||||
- light.m1_back_left
|
||||
- light.m1_back_right
|
||||
- light.m1_front_left
|
||||
- light.m1_front_right
|
||||
- light.main_slider
|
||||
data:
|
||||
rgb_color: >
|
||||
{% if trigger.entity_id == 'sensor.team_tracker_phi' %}
|
||||
[0, 255, 0]
|
||||
{% else %}
|
||||
[255, 0, 0]
|
||||
{% endif %}
|
||||
brightness: 255
|
||||
effect: 'colorloop'
|
||||
- delay:
|
||||
minutes: 3
|
||||
- service: light.turn_on
|
||||
target:
|
||||
entity_id:
|
||||
- light.outdoor_front_lights
|
||||
- light.living_room_accents
|
||||
- light.m1_back_left
|
||||
- light.m1_back_right
|
||||
- light.m1_front_left
|
||||
- light.m1_front_right
|
||||
- light.main_slider
|
||||
data:
|
||||
rgb_color: >
|
||||
{% if trigger.entity_id == 'sensor.team_tracker_phi' %}
|
||||
[0, 255, 0]
|
||||
{% else %}
|
||||
[255, 0, 0]
|
||||
{% endif %}
|
||||
brightness: 255
|
||||
effect: 'none'
|
||||
|
@@ -55,7 +55,7 @@ automation:
|
||||
entity_id:
|
||||
- media_player.livingroomCC
|
||||
# - media_player.entry_alarm_panel
|
||||
# - media_player.bedroom_alarm_panel
|
||||
# - media_player.bedroom_tablet
|
||||
data:
|
||||
options:
|
||||
voice: JennyNeural
|
||||
|
@@ -46,7 +46,7 @@ automation:
|
||||
entity_id:
|
||||
- media_player.livingroomCC
|
||||
# - media_player.entry_alarm_panel
|
||||
# - media_player.bedroom_alarm_panel
|
||||
# - media_player.bedroom_tablet
|
||||
data:
|
||||
media_content_id: >
|
||||
"https://raw.githubusercontent.com/CCOSTAN/Home-AssistantConfig/master/config/sounds/speechcons/self_destruct.mp3"
|
||||
@@ -55,8 +55,6 @@ automation:
|
||||
entity_id: all
|
||||
data:
|
||||
flash: long
|
||||
# - service: switch.turn_off
|
||||
# entity_id: all
|
||||
|
||||
- service: light.turn_off
|
||||
entity_id: all
|
||||
|
@@ -48,10 +48,18 @@ automation:
|
||||
value_template: "{{ states('sensor.l10s_vacuum_error') not in ['no_error', 'unavailable'] }}"
|
||||
|
||||
action:
|
||||
|
||||
- service: script.notify_engine
|
||||
data:
|
||||
title: 'Help vacuum'
|
||||
value1: "{{ states('sensor.l10s_vacuum_error') }} - {{states('sensor.l10s_vacuum_current_room')}}"
|
||||
who: 'family'
|
||||
ios_category: 'camera'
|
||||
camera_entity: 'camera.l10s_vacuum_map'
|
||||
content_type: 'jpeg'
|
||||
group: 'information'
|
||||
|
||||
- wait_template: "{{ is_state('group.bed', 'off') }}"
|
||||
timeout:
|
||||
seconds: 600
|
||||
continue_on_timeout: true
|
||||
- wait_template: "{{ is_state('group.family', 'home') }}"
|
||||
- delay: 00:03:00
|
||||
|
||||
@@ -61,20 +69,9 @@ automation:
|
||||
- service: script.speech_engine
|
||||
data:
|
||||
value1: >
|
||||
{% set error_description = state_attr('sensor.l10s_vacuum_error', 'description') %}
|
||||
{{ "Vacuum is complaining: " ~ error_description ~ " [ask Residents to help]" }}
|
||||
{{ "Vacuum error: " ~ states('sensor.l10s_vacuum_error') ~ " [ask Residents to help]" }}
|
||||
Currently in {{states('sensor.l10s_vacuum_current_room')}}"
|
||||
|
||||
- service: script.notify_engine
|
||||
data:
|
||||
title: 'Help vacuum'
|
||||
value1: "{{ state_attr('sensor.l10s_vacuum_error', 'description') }} - {{states('sensor.l10s_vacuum_current_room')}}"
|
||||
who: 'family'
|
||||
ios_category: 'camera'
|
||||
camera_entity: 'camera.l10s_vacuum_map'
|
||||
content_type: 'jpeg'
|
||||
group: 'information'
|
||||
|
||||
- delay: 00:01:00
|
||||
- service: vacuum.locate
|
||||
entity_id: vacuum.l10s_vacuum
|
||||
|
@@ -10,31 +10,54 @@
|
||||
# Original Repo: https://github.com/CCOSTAN/Home-AssistantConfig
|
||||
#-------------------------------------------
|
||||
#db_url: sqlite:///data/home-assistant_v2.db
|
||||
purge_keep_days: 14
|
||||
include:
|
||||
entities:
|
||||
- device_tracker.spaceship_location_tracker
|
||||
purge_keep_days: 30
|
||||
exclude:
|
||||
domains:
|
||||
- device_tracker
|
||||
- camera
|
||||
- device_tracker
|
||||
- event
|
||||
- feedreader
|
||||
- image
|
||||
- media_player
|
||||
- persistent_notification
|
||||
- sun
|
||||
- update
|
||||
- zone
|
||||
entity_globs:
|
||||
- sensor.*uptime*
|
||||
- sensor.vpn_client_*
|
||||
- binary_sensor.*_motion
|
||||
- binary_sensor.*_motion_*
|
||||
- binary_sensor.*is_present
|
||||
# - binary_sensor.*occupancy*
|
||||
- light.sleepnumber_*
|
||||
- number.sleepnumber_*
|
||||
- number.*_effect_speed
|
||||
- media_player.*echo*
|
||||
- select.sleepnumber_*
|
||||
- select.l10s_vacuum_*
|
||||
- select.*_wiring
|
||||
- sensor.*_activity
|
||||
- sensor.*_battery
|
||||
- sensor.*_battery_state
|
||||
- sensor.*_bssid
|
||||
- sensor.*_first_connection*
|
||||
- sensor.*_last_connection*
|
||||
- binary_sensor.*_motion
|
||||
- binary_sensor.*is_present
|
||||
- sensor.*_last_update*
|
||||
- sensor.*_last_boot
|
||||
- sensor.*_since
|
||||
- sensor.*uptime*
|
||||
- sensor.sun_next_*
|
||||
- sensor.vpn_client_*
|
||||
- switch.*_do_not_disturb_*
|
||||
- switch.*_repeat_switch
|
||||
|
||||
entities:
|
||||
- automation.update_garage_get_status
|
||||
- binary_sensor.camera1_motion_sensor
|
||||
- binary_sensor.camera2_motion_sensor
|
||||
- binary_sensor.camera3_motion_sensor
|
||||
- binary_sensor.bear_stone
|
||||
- binary_sensor.powerwall_charging
|
||||
- media_player.carlo_s_4th_fire
|
||||
- media_player.alarm_panel_2
|
||||
- script.speech_processing
|
||||
- number.alarm_panel_1_screen_brightness
|
||||
- script.amp_settings
|
||||
- script.speech_processing
|
||||
- sensor.bear_stone
|
||||
- sensor.carlo_ap
|
||||
- sensor.carlo_fast
|
||||
- sensor.clock_am_pm
|
||||
@@ -44,23 +67,27 @@ exclude:
|
||||
- sensor.clock_time
|
||||
- sensor.clock_time_2
|
||||
- sensor.date
|
||||
- sensor.dockerconfigs_backup_date
|
||||
- sensor.dockerconfigs_backup_error_message
|
||||
- sensor.dockerconfigs_backup_status
|
||||
- sensor.external_ip
|
||||
- sensor.floorplan_date
|
||||
- sensor.floorplan_time
|
||||
- sensor.floorplan_time_2
|
||||
- sensor.ha_uptime
|
||||
- sensor.large_garage_door_since
|
||||
- sensor.small_garage_door_since
|
||||
- sensor.last_alexa
|
||||
- sensor.lights_on_count
|
||||
- sensor.low_battery
|
||||
- sensor.network
|
||||
- sensor.network_detail
|
||||
- sensor.pi_hole_ads_blocked_today
|
||||
- sensor.pi_hole_ads_percentage_blocked_today
|
||||
- sensor.pi_hole_dns_queries_today
|
||||
- sensor.small_garage_door_since
|
||||
- sensor.large_garage_door_since
|
||||
- sensor.stacey_iphone11_activity
|
||||
- sensor.time
|
||||
- sensor.rachio_watering_time
|
||||
- binary_sensor.rheem_wh_running
|
||||
- sun.sun
|
||||
- zone.home
|
||||
- sensor.stacey_iphone11_activity
|
||||
- sensor.stacey_iphone11_audio_output
|
||||
- sensor.time
|
||||
- switch.bear_stone
|
||||
- switch.alarm_panel_1_screensaver
|
||||
|
||||
event_types:
|
||||
- alexa_smart_home
|
||||
|
@@ -23,8 +23,7 @@ amp_settings:
|
||||
{% if media_player | length == 0 %}
|
||||
{% set media_player = [
|
||||
'media_player.livingroomcc',
|
||||
'media_player.alarm_clock',
|
||||
'media_player.bedroom_alarm_panel'
|
||||
'media_player.bedroom_tablet'
|
||||
] %}
|
||||
{% endif %}
|
||||
|
||||
|
@@ -3,11 +3,12 @@
|
||||
# action:
|
||||
# service: script.speech_engine
|
||||
# data:
|
||||
# value1:
|
||||
# call_no_announcement:
|
||||
# call_dark_outside:
|
||||
# call_window_check:
|
||||
# call_garage_check:
|
||||
# call_responsibilities
|
||||
# call_garbage_day
|
||||
# call_light_check
|
||||
# call_inside_weather
|
||||
# call_outside_weather
|
||||
@@ -50,9 +51,8 @@ speech_engine:
|
||||
# Include the speech message from the "speech/briefing.yaml" template file
|
||||
speech_message: !include ../templates/speech/briefing.yaml
|
||||
|
||||
# Turn off the "input_boolean.home_stats" and "input_boolean.responsibilities" input booleans
|
||||
# Turn off the "input_boolean.home_stats"
|
||||
- service: input_boolean.turn_off
|
||||
data:
|
||||
entity_id:
|
||||
- input_boolean.home_stats
|
||||
- input_boolean.responsibilities
|
||||
|
@@ -83,7 +83,7 @@ speech_processing:
|
||||
voice: JennyNeural
|
||||
message: >-
|
||||
{{ agent.response.speech.plain.speech }}
|
||||
cache: true
|
||||
cache: false
|
||||
|
||||
- event: openai_response
|
||||
event_data:
|
||||
|
@@ -1,18 +1,48 @@
|
||||
# ## These scripts are run from /home/pi
|
||||
#
|
||||
# #!/bin/bash
|
||||
#
|
||||
# cd /home/hass/.homeassistant
|
||||
# source /srv/hass/hass_venv/bin/activate
|
||||
#
|
||||
# echo "Processing update"
|
||||
# pip3 install --upgrade homeassistant
|
||||
#
|
||||
# hass --script check_config
|
||||
# exit
|
||||
# - This script is used to update the Home Assistant Docker containers
|
||||
# - It will pull the latest images, check if the image ID has changed, and restart the container if needed
|
||||
# - It will also cleanup unused resources after the update
|
||||
|
||||
# Original Repo: https://github.com/CCOSTAN/Home-AssistantConfig
|
||||
# Follow me on https://www.vcloudinfo.com/click-here
|
||||
|
||||
#!/bin/bash
|
||||
cd /home/hass/docker_files
|
||||
docker-compose down
|
||||
|
||||
# Update system packages
|
||||
sudo apt-get update && sudo apt-get upgrade -y
|
||||
|
||||
# Pull the latest images
|
||||
docker-compose pull
|
||||
docker-compose up -d
|
||||
|
||||
# Get list of services from docker-compose.yml
|
||||
EXISTING_SERVICES=$(docker-compose config --services)
|
||||
|
||||
# Get list of running service containers
|
||||
RUNNING_CONTAINERS=$(docker-compose ps --services)
|
||||
|
||||
# Loop through each running service and check if its image has changed
|
||||
for service in $RUNNING_CONTAINERS; do
|
||||
if echo "$EXISTING_SERVICES" | grep -qw "$service"; then
|
||||
# Get the current running image ID (remove sha256: prefix)
|
||||
CURRENT_IMAGE_ID=$(docker inspect --format='{{.Image}}' "$service" 2>/dev/null | sed 's/^sha256://')
|
||||
|
||||
# Get the latest image ID from docker-compose
|
||||
LATEST_IMAGE_ID=$(docker-compose images -q "$service" 2>/dev/null)
|
||||
|
||||
# If the image ID is different, restart the container
|
||||
if [ "$CURRENT_IMAGE_ID" != "$LATEST_IMAGE_ID" ] && [ -n "$LATEST_IMAGE_ID" ]; then
|
||||
echo "Updating container: $service"
|
||||
docker-compose stop "$service"
|
||||
docker-compose rm -f "$service"
|
||||
docker-compose up -d "$service"
|
||||
else
|
||||
echo "No update needed for: $service"
|
||||
fi
|
||||
else
|
||||
echo "Skipping non-existent service: $service"
|
||||
fi
|
||||
done
|
||||
|
||||
# Cleanup unused resources
|
||||
docker container prune -f
|
||||
docker image prune -f
|
||||
docker volume prune -f
|
||||
|
@@ -1,14 +0,0 @@
|
||||
## These scripts are run from /home/pi
|
||||
|
||||
#!/bin/bash
|
||||
|
||||
echo "Setting up Environment"
|
||||
cd /home/hass/.homeassistant
|
||||
source /srv/hass/hass_venv/bin/activate
|
||||
|
||||
echo "Processing update"
|
||||
pip3 install --upgrade git+git://github.com/balloob/home-assistant.git@dev
|
||||
|
||||
echo "Code Check"
|
||||
hass --script check_config
|
||||
exit
|
@@ -21,7 +21,7 @@
|
||||
The sun has set. I will turn on the outside lights.
|
||||
{%- endmacro -%}
|
||||
|
||||
{%- macro responsibilities() -%}
|
||||
{%- macro garbage_day() -%}
|
||||
{% set day_of_week = now().strftime('%a') %}
|
||||
{% if day_of_week in ['Wed', 'Sun'] %}
|
||||
Today is garbage day.
|
||||
@@ -49,21 +49,21 @@
|
||||
{{ friendly_name }}: {{ state }} {{ unit }}
|
||||
{%- elif 'Precip' in friendly_name -%}
|
||||
{{ friendly_name }}: {{ state }} {{ unit }}
|
||||
{%- elif 'Wind Speed' in friendly_name and state | float > 15 -%}
|
||||
{%- elif 'Wind Speed' in friendly_name and state | float(0) > 15 -%}
|
||||
{{ friendly_name }}: {{ state }} {{ unit }}
|
||||
{%- elif 'Cloud Coverage' in friendly_name and state | float > 75 -%}
|
||||
{%- elif 'Cloud Coverage' in friendly_name and state | float(0) > 75 -%}
|
||||
{{ friendly_name }}: {{ state }} {{ unit }}
|
||||
{%- elif 'Humidity' in friendly_name and (state | float < 50 or state | float > 85) -%}
|
||||
{%- elif 'Humidity' in friendly_name and (state | float(0) < 50 or state | float(0) > 85) -%}
|
||||
{{ friendly_name }}: {{ state }} {{ unit }}
|
||||
{%- elif 'Nearest Storm Distance' in friendly_name and state | float <= 10 -%}
|
||||
{%- elif 'Nearest Storm Distance' in friendly_name and state | float(0) <= 10 -%}
|
||||
{{ friendly_name }}: {{ state }} {{ unit }}
|
||||
{%- endif -%}
|
||||
{%- endif %}
|
||||
{% endfor -%}
|
||||
|
||||
{%- if states('sensor.nws_alerts')|int > 0 -%}
|
||||
{%- if states('sensor.nws_alerts') | int(0) > 0 -%}
|
||||
{%- set alert_description = state_attr('sensor.nws_alerts', 'Alerts') %}
|
||||
[Summarize the included weather alert and give overall details on any storms releavant to the residents of the home. Use the Situation Overview Section to best understand what is going on - Be sure to highlight any impacts to Seminole County or Tallahassee]
|
||||
[Summarize the included weather alert and give overall details on any storms relevant to the residents of the home. Use the Situation Overview Section to best understand what is going on - Be sure to highlight any impacts to Seminole County or Tallahassee]
|
||||
{{ alert_description }}
|
||||
[END of Weather Alert]
|
||||
{%- endif %}
|
||||
@@ -162,12 +162,25 @@
|
||||
{%- endmacro -%}
|
||||
|
||||
{%- macro uv() -%}
|
||||
{% if states.sensor.pirateweather_uv_index.state|int(9999)>= 6 and states.sensor.pirateweather_uv_index.state|int(9999)<= 7.9 %}
|
||||
Today's UV index is {{ states.sensor.pirateweather_uv_index.state }}. You should wear sunscreen if going outside.
|
||||
{% elif states.sensor.pirateweather_uv_index.state|int(9999)>= 8 and states.sensor.pirateweather_uv_index.state|int(9999)<=10.9 %}
|
||||
Today's UV index is {{ states.sensor.pirateweather_uv_index.state }}. This is VERY HIGH. Be sure wear sunscreen and re-apply.
|
||||
{% elif states.sensor.pirateweather_uv_index.state|int(9999)>= 11 %}
|
||||
Today's UV index is {{ states.sensor.pirateweather_uv_index.state }}. This is EXTREME. You should be very cautious going outside.
|
||||
{% if states.sensor.pirateweather_uv_index.state|int(9999)>= 6 %}
|
||||
Today's UV index is {{ states.sensor.pirateweather_uv_index.state }}.
|
||||
{%- for entity in states.sensor if 'pirateweather' in entity.entity_id %}
|
||||
{%- set state = entity.state %}
|
||||
{%- set unit = entity.attributes.unit_of_measurement if 'unit_of_measurement' in entity.attributes else '' %}
|
||||
{%- set friendly_name = ' '.join(entity.attributes.friendly_name.split(' ')[1:]) %}
|
||||
{%- if state not in ['0', '0.0', 'none'] and 'UV Index' not in friendly_name %}
|
||||
{%- if 'Temperature' in friendly_name -%}
|
||||
{{ friendly_name }}: {{ state }} {{ unit }}
|
||||
{%- elif 'Minutely' in friendly_name -%}
|
||||
{{ friendly_name }}: {{ state }} {{ unit }}
|
||||
{%- elif 'Cloud Coverage' in friendly_name and state | float > 75 -%}
|
||||
{{ friendly_name }}: {{ state }} {{ unit }}
|
||||
{%- elif 'Humidity' in friendly_name and (state | float < 50 or state | float > 85) -%}
|
||||
{{ friendly_name }}: {{ state }} {{ unit }}
|
||||
{%- endif -%}
|
||||
{%- endif %}
|
||||
{% endfor -%}
|
||||
[Give helpful tip based on the current UV index and weather conditions]
|
||||
{% endif %}
|
||||
{%- endmacro -%}
|
||||
|
||||
@@ -208,11 +221,11 @@
|
||||
{% endmacro %}
|
||||
|
||||
{% macro inspirational_quote() %}
|
||||
[Include an inspirational quote relevant to the day or situation at the end of the message. "]
|
||||
[Include an inspirational quote relevant to the day or situation at the end of the message"]
|
||||
{% endmacro %}
|
||||
|
||||
{% macro fact_of_the_day() %}
|
||||
[Include a fact about something that happened in the past on this day at the end of the message]
|
||||
[Include a relevant fact about something that happened in the past on this day at the end of the message]
|
||||
{% endmacro %}
|
||||
|
||||
{# a macro that removes all newline characters, empty spaces, and returns formatted text and replaces underscores with spaces #}
|
||||
@@ -238,23 +251,46 @@
|
||||
{% set year = current_date.strftime('%Y') %}
|
||||
{% set time = current_date.strftime('%I:%M %p') %}
|
||||
Current date time: {{ month }} {{ day }}, {{ year }} {{ time }}
|
||||
Residents: Location
|
||||
- Carlo (Dad): {{ states('person.carlo') }} at {{ states('sensor.carlo_place') if states('sensor.carlo_place') != unknown else 'Away' }}
|
||||
- Stacey (Mom): {{ states('person.stacey')}} at {{ states('sensor.stacey_place') if states('sensor.stacey_place') != unknown else 'Away' }}
|
||||
- Justin (Son): {{ states('person.justin') }} at {{ states('sensor.justin_place') if states('sensor.justin_place') != unknown else 'Away' }}
|
||||
- Paige (Daughter): {{ states('person.paige') }} at {{ states('sensor.paige_place') if states('sensor.paige_place') != unknown else 'Away' }}
|
||||
and our cat Molly: Always home.
|
||||
Previous broadcast: "{{ state_attr('sensor.openai_response', 'response') }}"
|
||||
[Announce where everyone is if they are not at home. Avoid repeating information from the previous broadcast if it was within the hour]
|
||||
|
||||
Resident: Location
|
||||
- Carlo:
|
||||
{%- if states('sensor.carlo_place') != 'unknown' %}
|
||||
{{ states('sensor.carlo_place') }}
|
||||
{% else -%}
|
||||
Away
|
||||
{% endif -%}
|
||||
- Stacey:
|
||||
{%- if states('sensor.stacey_place') != 'unknown' %}
|
||||
{{ states('sensor.stacey_place') }}
|
||||
{% else -%}
|
||||
Away
|
||||
{% endif -%}
|
||||
- Justin:
|
||||
{%- if states('sensor.justin_place') != 'unknown' %}
|
||||
{{ states('sensor.justin_place') }}
|
||||
{% else -%}
|
||||
Away
|
||||
{% endif -%}
|
||||
- Paige:
|
||||
{%- if states('sensor.paige_place') != 'unknown' %}
|
||||
{{ states('sensor.paige_place') }}
|
||||
{% else -%}
|
||||
Away
|
||||
{% endif -%}
|
||||
{% if range(1, 100) | random <= 25 %}
|
||||
and our cat Molly: Always home.
|
||||
{% endif %}
|
||||
Previous broadcast: "{{ state_attr('sensor.openai_response', 'response') }}"
|
||||
[For each person, mention their location. If the same location update has already been broadcasted, do not repeat it.]
|
||||
|
||||
New Information:
|
||||
{% if call_no_announcement != 1 %}
|
||||
{% if now().strftime('%H')|int(9999)< 12 and now().strftime('%H')|int(9999)> 6 %}
|
||||
Good morning.
|
||||
Good morning. [if there is only one person home, address them specifically]
|
||||
{% elif now().strftime('%H')|int(9999)>= 12 and now().strftime('%H')|int(9999)< 17 %}
|
||||
Good afternoon.
|
||||
Good afternoon. [if there is only one person home, address them specifically]
|
||||
{% else %}
|
||||
Good evening.
|
||||
Good evening. [if there is only one person home, address them specifically]
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
@@ -296,7 +332,7 @@
|
||||
{{ dark_outside() }}
|
||||
{% endif %}
|
||||
|
||||
{% if call_garage_check == 999 or is_state('sun.sun', '9999') %}
|
||||
{% if call_garage_check == 1 or is_state('sun.sun', 'below_horizon') %}
|
||||
{{ garage_check() }}
|
||||
{% endif %}
|
||||
|
||||
@@ -310,8 +346,8 @@
|
||||
{{ light_check() }}
|
||||
{% endif %}
|
||||
|
||||
{% if call_responsibilities == 1 %}
|
||||
{{ responsibilities() }}
|
||||
{% if call_garbage_day == 1 %}
|
||||
{{ garbage_day() }}
|
||||
{% endif %}
|
||||
|
||||
{% if now().strftime('%H')|int(0) > 21 %}
|
||||
|
@@ -1,16 +1,16 @@
|
||||
<svg width="61.5" height="20" viewBox="0 0 615 200" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="2025.1.4">
|
||||
<title>2025.1.4</title>
|
||||
<linearGradient id="rXKUv" x2="0" y2="100%">
|
||||
<svg width="61.5" height="20" viewBox="0 0 615 200" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="2025.8.0">
|
||||
<title>2025.8.0</title>
|
||||
<linearGradient id="izQWP" x2="0" y2="100%">
|
||||
<stop offset="0" stop-opacity=".1" stop-color="#EEE"/>
|
||||
<stop offset="1" stop-opacity=".1"/>
|
||||
</linearGradient>
|
||||
<mask id="DcNWe"><rect width="615" height="200" rx="30" fill="#FFF"/></mask>
|
||||
<g mask="url(#DcNWe)">
|
||||
<mask id="wVyMz"><rect width="615" height="200" rx="30" fill="#FFF"/></mask>
|
||||
<g mask="url(#wVyMz)">
|
||||
<rect width="615" height="200" fill="#08C" x="0"/>
|
||||
<rect width="615" height="200" fill="url(#rXKUv)"/>
|
||||
<rect width="615" height="200" fill="url(#izQWP)"/>
|
||||
</g>
|
||||
<g aria-hidden="true" fill="#fff" text-anchor="start" font-family="Verdana,DejaVu Sans,sans-serif" font-size="110">
|
||||
<text x="65" y="148" textLength="500" fill="#000" opacity="0.25">2025.1.4</text>
|
||||
<text x="55" y="138" textLength="500">2025.1.4</text>
|
||||
<text x="65" y="148" textLength="500" fill="#000" opacity="0.25">2025.8.0</text>
|
||||
<text x="55" y="138" textLength="500">2025.8.0</text>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 811 B After Width: | Height: | Size: 811 B |
Reference in New Issue
Block a user