mirror of
https://github.com/CCOSTAN/Home-AssistantConfig.git
synced 2025-08-16 10:34:40 +00:00
Compare commits
65 Commits
6407f68058
...
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 |
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.5.3
|
||||
2025.8.0
|
@@ -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
|
||||
|
@@ -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
|
@@ -30,14 +30,14 @@
|
||||
- light.fridge
|
||||
- light.k4
|
||||
- group.kitchen_accents
|
||||
- switch.office_lamp_switch_socket
|
||||
- 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_socket
|
||||
- switch.office_lamp_switch
|
||||
- service: number.set_value
|
||||
target:
|
||||
entity_id: number.alarm_panel_1_screen_brightness
|
||||
|
@@ -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
|
@@ -40,4 +40,3 @@
|
||||
- service: switch.turn_off
|
||||
entity_id: switch.back_landscaping
|
||||
|
||||
|
||||
|
@@ -28,8 +28,6 @@
|
||||
- light.main_slider
|
||||
- light.garage_attic
|
||||
- light.bedroom_lights
|
||||
- light.den_2
|
||||
- light.den1
|
||||
- light.dinette_lights
|
||||
- light.dining_room_lights
|
||||
- light.foyer
|
||||
|
@@ -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
|
@@ -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,34 +64,7 @@ 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
|
||||
|
||||
|
@@ -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,7 +3,6 @@ media_players:
|
||||
- media_player.livingroomcc
|
||||
- media_player.living_room_tv
|
||||
- media_player.living_room_ultra
|
||||
- media_player.upstairs_living_room
|
||||
- media_player.bedroom_tablet
|
||||
- media_player.living_room
|
||||
- media_player.front_room_flex
|
||||
@@ -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
|
||||
|
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') }}
|
||||
|
||||
#-------------------------------------------
|
||||
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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 }}"
|
||||
|
||||
|
@@ -15,4 +15,4 @@ automation:
|
||||
|
||||
action:
|
||||
- service: switch.toggle
|
||||
entity_id: switch.office_lamp_switch_socket
|
||||
entity_id: switch.office_lamp_switch
|
||||
|
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
|
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,42 @@ 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: >-
|
||||
@@ -103,7 +121,8 @@ sensor:
|
||||
{% else %}
|
||||
{{ qty }} {{ p1 }} on.
|
||||
{% endif %}
|
||||
|
||||
unit_of_measurement: 'count'
|
||||
icon_template: mdi:binary-sensor
|
||||
protect_count:
|
||||
friendly_name: 'Number of Smoke Detectors'
|
||||
value_template: >
|
||||
@@ -116,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
|
||||
#############################################################
|
||||
|
@@ -10,29 +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
|
||||
- binary_sensor.*_motion_*
|
||||
- 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.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
|
||||
@@ -42,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
|
||||
|
@@ -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
|
||||
|
@@ -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 #}
|
||||
@@ -239,55 +252,45 @@
|
||||
{% set time = current_date.strftime('%I:%M %p') %}
|
||||
Current date time: {{ month }} {{ day }}, {{ year }} {{ time }}
|
||||
|
||||
Residents: Location
|
||||
- Carlo (Dad): {{ states('person.carlo') }} at
|
||||
Resident: Location
|
||||
- Carlo:
|
||||
{%- if states('sensor.carlo_place') != 'unknown' %}
|
||||
{{ states('sensor.carlo_place') }}
|
||||
{% else -%}
|
||||
Away
|
||||
{% endif -%}
|
||||
{%- if states('person.carlo') != 'home' %}
|
||||
(Direction of travel: {{ state_attr('sensor.carlo_place', 'direction_of_travel') }})
|
||||
{% endif -%}
|
||||
- Stacey (Mom): {{ states('person.stacey') }} at
|
||||
- Stacey:
|
||||
{%- if states('sensor.stacey_place') != 'unknown' %}
|
||||
{{ states('sensor.stacey_place') }}
|
||||
{% else -%}
|
||||
Away
|
||||
{% endif -%}
|
||||
{%- if states('person.stacey') != 'home' %}
|
||||
(Direction of travel: {{ state_attr('sensor.stacey_place', 'direction_of_travel') }})
|
||||
{% endif -%}
|
||||
- Justin (Son): {{ states('person.justin') }} at
|
||||
- Justin:
|
||||
{%- if states('sensor.justin_place') != 'unknown' %}
|
||||
{{ states('sensor.justin_place') }}
|
||||
{% else -%}
|
||||
Away
|
||||
{% endif -%}
|
||||
{%- if states('person.justin') != 'home' %}
|
||||
(Direction of travel: {{ state_attr('sensor.justin_place', 'direction_of_travel') }})
|
||||
{% endif -%}
|
||||
- Paige (Daughter): {{ states('person.paige') }} at
|
||||
- Paige:
|
||||
{%- if states('sensor.paige_place') != 'unknown' %}
|
||||
{{ states('sensor.paige_place') }}
|
||||
{% else -%}
|
||||
Away
|
||||
{% endif -%}
|
||||
{%- if states('person.paige') != 'home' %}
|
||||
(Direction of travel: {{ state_attr('sensor.paige_place', 'direction_of_travel') }})
|
||||
{% endif -%}
|
||||
and our cat Molly: Always home.
|
||||
{% if range(1, 100) | random <= 25 %}
|
||||
and our cat Molly: Always home.
|
||||
{% endif %}
|
||||
Previous broadcast: "{{ state_attr('sensor.openai_response', 'response') }}"
|
||||
[Mention where each person is and approximately how long they have been there, using conversational and friendly language or if they are not at home or just arrived. Avoid repeating information from the previous broadcast if it was within the hour]
|
||||
[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 %}
|
||||
|
||||
@@ -329,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 %}
|
||||
|
||||
@@ -343,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.5.3">
|
||||
<title>2025.5.3</title>
|
||||
<linearGradient id="OdOtw" 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="ZMpqU"><rect width="615" height="200" rx="30" fill="#FFF"/></mask>
|
||||
<g mask="url(#ZMpqU)">
|
||||
<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(#OdOtw)"/>
|
||||
<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.5.3</text>
|
||||
<text x="55" y="138" textLength="500">2025.5.3</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