mirror of
https://github.com/CCOSTAN/Home-AssistantConfig.git
synced 2025-08-29 09:15:55 +00:00
Compare commits
54 Commits
b227b3d01d
...
master
Author | SHA1 | Date | |
---|---|---|---|
|
1af88bcbb2 | ||
|
4483486059 | ||
|
f017a9ea70 | ||
|
47d5359a40 | ||
|
74e2042d57 | ||
|
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 |
@@ -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.1
|
@@ -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
|
@@ -33,7 +33,6 @@
|
||||
|
||||
#Turn it off!
|
||||
action:
|
||||
- service: script.garage_lights_off # C by GE Lights (https://amzn.to/30w3UWy)
|
||||
|
||||
- service: homeassistant.turn_off
|
||||
data:
|
||||
|
@@ -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,3 +1,4 @@
|
||||
# https://www.vcloudinfo.com/click-here
|
||||
###################################
|
||||
## ZWave Section -
|
||||
## Home Assistant runs on my [Raspberry Pi 3](https://amzn.to/2e3DOBY) with [Aeon Labs Z Wave Stick (GEN 5)](https://amzn.to/2eAiAP0).
|
||||
@@ -57,11 +58,6 @@
|
||||
- service: light.turn_off
|
||||
entity_id: light.garage_hallway
|
||||
|
||||
- delay:
|
||||
minutes: 30
|
||||
|
||||
- service: script.garage_lights_off # C by GE Lights (https://amzn.to/30w3UWy)
|
||||
|
||||
##############################################################
|
||||
- alias: Shutdown Helper light
|
||||
id: 124f95f6-78ca-4c22-9348-1f3a1da2d803
|
||||
|
@@ -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
|
||||
|
@@ -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,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') }}
|
||||
|
||||
#-------------------------------------------
|
||||
|
||||
|
@@ -1,3 +1,4 @@
|
||||
# https://www.vcloudinfo.com/click-here
|
||||
#-------------------------------------------
|
||||
# C by GE Lights - https://amzn.to/30w3UWy
|
||||
# @CCOSTAN
|
||||
@@ -29,37 +30,3 @@ script:
|
||||
entity_id: media_player.paige_room
|
||||
media_content_id: paigelighton
|
||||
media_content_type: routine
|
||||
|
||||
garage_lights_off:
|
||||
alias: 'ALL Garage Lights Off'
|
||||
sequence:
|
||||
|
||||
- service: media_player.play_media
|
||||
data:
|
||||
entity_id: media_player.garage
|
||||
media_content_id: 'turn off c life 3'
|
||||
media_content_type: custom
|
||||
|
||||
- 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
|
||||
media_content_id: 'turn off c sleep 1'
|
||||
media_content_type: custom
|
||||
|
||||
- delay: "00:01:30"
|
||||
|
||||
- service: media_player.play_media
|
||||
data:
|
||||
entity_id: media_player.garage
|
||||
media_content_id: 'turn off c sleep 2'
|
||||
media_content_type: custom
|
||||
|
@@ -1,70 +1,278 @@
|
||||
######################################################################
|
||||
## 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: history_stats
|
||||
name: Upstairs AC Runtime Since Last Filter Change
|
||||
entity_id: climate.upstairs
|
||||
attribute: hvac_action
|
||||
value: 'cooling'
|
||||
type: time
|
||||
start: "{{ states('input_datetime.upstairs_last_filter_change') }}"
|
||||
end: "{{ now() }}"
|
||||
- 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: history_stats
|
||||
name: Downstairs AC Runtime Since Last Filter Change
|
||||
entity_id: climate.downstairs
|
||||
attribute: hvac_action
|
||||
value: 'cooling'
|
||||
type: time
|
||||
start: "{{ states('input_datetime.downstairs_last_filter_change') }}"
|
||||
end: "{{ now() }}"
|
||||
- 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_filter_change_date:
|
||||
alias: Reset Downstairs Filter Change Date
|
||||
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 AC runtime exceeds threshold since last filter change"
|
||||
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
|
||||
above: 800 # hours
|
||||
action:
|
||||
- service: script.notify_engine
|
||||
- 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 hours. Last changed {{ ((now() - states.input_datetime.downstairs_last_filter_change.last_changed).total_seconds() / 86400) | round(0) }} days ago."
|
||||
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 AC runtime exceeds threshold since last filter change"
|
||||
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
|
||||
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 hours. Last changed {{ ((now() - states.input_datetime.upstairs_last_filter_change.last_changed).total_seconds() / 86400) | round(0) }} days ago."
|
||||
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 Announcement'
|
||||
id: 7812fdaf-a3f8-498b-8f07-28e977e528fe
|
||||
trigger:
|
||||
- platform: state
|
||||
entity_id:
|
||||
- climate.downstairs
|
||||
- climate.upstairs
|
||||
from: 'off'
|
||||
- platform: state
|
||||
entity_id:
|
||||
- climate.downstairs
|
||||
- climate.upstairs
|
||||
to: '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: "[Tell Household the Fridge Door is Open for more than 5 minutes]"
|
||||
|
||||
- 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
|
||||
@@ -227,7 +269,6 @@ automation:
|
||||
DoorClosed: "The {{ trigger.entity_id.split('.')[1]|replace('_', ' ') }} is now {{ (trigger.to_state.state)|replace('_', ' ') }}."
|
||||
call_garage_check: 1
|
||||
- delay: "00:10:00"
|
||||
- service: script.garage_lights_off
|
||||
|
||||
default:
|
||||
- service: script.speech_engine
|
||||
@@ -274,11 +315,11 @@ automation:
|
||||
value1: >
|
||||
"The wind speed is {{ states('sensor.pirateweather_wind_speed')|round}} miles per hour. For safety, please close the garage doors.
|
||||
{% if is_state('cover.large_garage_door', 'open') -%}
|
||||
The Large Garage Door is open
|
||||
Large Garage Door: open
|
||||
{% endif -%}
|
||||
{% if is_state('cover.small_garage_door', 'open') -%}
|
||||
{% if is_state('cover.large_garage_door', 'open') -%}and
|
||||
{%- endif %} The small Garage Door is open.
|
||||
{%- endif %} Small Garage Door: open.
|
||||
{% endif %}"
|
||||
|
||||
##############################################################################
|
||||
@@ -337,5 +378,122 @@ automation:
|
||||
|
||||
- service: script.speech_engine
|
||||
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]"
|
||||
value1: "Check the garage doors. The Small garage is {{ states('cover.small_garage_door')}} and the large garage is {{ states('cover.large_garage_door')}} [Always mention the specific garage door that is currently 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
|
||||
|
||||
|
||||
|
||||
- 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
|
||||
|
||||
|
||||
|
||||
|
||||
|
@@ -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 }}"
|
||||
|
||||
|
@@ -1,24 +0,0 @@
|
||||
#-------------------------------------------
|
||||
# @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'
|
@@ -15,4 +15,4 @@ automation:
|
||||
|
||||
action:
|
||||
- service: switch.toggle
|
||||
entity_id: switch.office_lamp_switch_socket
|
||||
entity_id: switch.office_lamp_switch
|
||||
|
@@ -38,7 +38,7 @@ automation:
|
||||
trigger:
|
||||
- platform: state
|
||||
entity_id: binary_sensor.powerwall_grid_status
|
||||
to: 'False'
|
||||
to: 'off'
|
||||
|
||||
action:
|
||||
- service: homeassistant.turn_off
|
||||
@@ -102,7 +102,7 @@ automation:
|
||||
trigger:
|
||||
- platform: state
|
||||
entity_id: binary_sensor.powerwall_grid_status
|
||||
to: 'False'
|
||||
to: 'off'
|
||||
for:
|
||||
minutes: 6
|
||||
|
||||
@@ -130,10 +130,10 @@ automation:
|
||||
trigger:
|
||||
- platform: state
|
||||
entity_id: binary_sensor.powerwall_grid_status
|
||||
from: 'False'
|
||||
to: 'True'
|
||||
from: 'off'
|
||||
to: 'on'
|
||||
for:
|
||||
minutes: 5
|
||||
minutes: 10
|
||||
|
||||
condition:
|
||||
- condition: template
|
||||
@@ -151,7 +151,7 @@ automation:
|
||||
- service: climate.set_hvac_mode
|
||||
data:
|
||||
entity_id: climate.downstairs
|
||||
hvac_mode: auto
|
||||
hvac_mode: cool
|
||||
- service: climate.set_hvac_mode
|
||||
data:
|
||||
entity_id: climate.upstairs
|
||||
|
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
|
@@ -8,7 +8,7 @@ automation:
|
||||
trigger:
|
||||
- platform: numeric_state
|
||||
entity_id: sensor.speedtest_download
|
||||
below: 400
|
||||
below: 300
|
||||
- platform: numeric_state
|
||||
entity_id: sensor.speedtest_upload
|
||||
below: 300
|
||||
@@ -30,7 +30,7 @@ automation:
|
||||
value1: >-
|
||||
Download: {{ states('sensor.speedtest_download') }} Mbps,
|
||||
Upload: {{ states('sensor.speedtest_upload') }} Mbps.
|
||||
value2: "One or both speeds are below 400 Mbps."
|
||||
value2: "One or both speeds are below 300 Mbps."
|
||||
who: "parents"
|
||||
group: "information"
|
||||
level: "active"
|
||||
@@ -38,18 +38,18 @@ automation:
|
||||
|
||||
- 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 400/300 Mbps."
|
||||
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: 400
|
||||
above: 300
|
||||
- platform: numeric_state
|
||||
entity_id: sensor.speedtest_upload
|
||||
above: 300
|
||||
condition:
|
||||
- condition: numeric_state
|
||||
entity_id: sensor.speedtest_download
|
||||
above: 400
|
||||
above: 300
|
||||
- condition: numeric_state
|
||||
entity_id: sensor.speedtest_upload
|
||||
above: 300
|
||||
|
@@ -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
|
||||
|
@@ -14,5 +14,4 @@ interior_off:
|
||||
- switch.lr_amp
|
||||
- group.tvs
|
||||
- service: script.paige_lights_off # C by GE Lights (https://amzn.to/30w3UWy)
|
||||
- service: script.garage_lights_off # C by GE Lights (https://amzn.to/30w3UWy)
|
||||
# - service: script.noon_lights_off # Noon Home Smart Lights (https://amzn.to/3fOIPx6)
|
||||
|
@@ -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
|
||||
|
@@ -18,15 +18,15 @@
|
||||
|
||||
>-
|
||||
{%- macro dark_outside() -%}
|
||||
The sun has set. I will turn on the outside lights.
|
||||
[Because the sun has set, outside lights have been turned on]
|
||||
{%- endmacro -%}
|
||||
|
||||
{%- macro responsibilities() -%}
|
||||
{%- macro garbage_day() -%}
|
||||
{% set day_of_week = now().strftime('%a') %}
|
||||
{% if day_of_week in ['Wed', 'Sun'] %}
|
||||
Today is garbage day.
|
||||
{% if day_of_week == 'Wed' %}
|
||||
Both Recycling and regular Garbage goes out.
|
||||
Both Recycling and regular Garbage goes out.
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{%- endmacro -%}
|
||||
@@ -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,18 +162,31 @@
|
||||
{%- 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 %}
|
||||
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 a helpful suggestion based on the current UV index or weather conditions]
|
||||
{% endif %}
|
||||
{%- endmacro -%}
|
||||
|
||||
{%- macro holiday() -%}
|
||||
{% if states.sensor.holiday.state != '' %}
|
||||
Today is {{ states.sensor.holiday.state }}. [Give an interesting fact or quote related to today]
|
||||
Today is {{ states.sensor.holiday.state }}.
|
||||
{% endif %}
|
||||
{%- endmacro -%}
|
||||
|
||||
@@ -184,7 +197,7 @@
|
||||
{%- elif states('sensor.fathers_countdown') | int(9999)< 20 -%}
|
||||
and don't forget, there are {{ states.sensor.fathers_countdown.state }} days until Fathers day!
|
||||
{%- elif states('sensor.easter_countdown') | int(9999)< 15 -%}
|
||||
and don't forget, there are {{ states.sensor.easter_countdown.state }} days until Easter Sunday!
|
||||
and don't forget, there are {{ states.sensor.easter_countdown.state }} colorful days until Easter Sunday!
|
||||
{%- elif states('sensor.thanksgiving_day_countdown') | int(9999)< 10 and states('sensor.thanksgiving_day_countdown') | int(9999)> 0 -%}
|
||||
and don't forget, there are {{ states.sensor.thanksgiving_day_countdown.state }} thankful days until Thanksgiving
|
||||
{%- elif states('sensor.thanksgiving_day_countdown') | int(9999)< 1 -%}
|
||||
@@ -207,12 +220,8 @@
|
||||
{{state_attr('sensor.bear_stone_common_air_quality_index', 'description')}}
|
||||
{% endmacro %}
|
||||
|
||||
{% macro inspirational_quote() %}
|
||||
[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]
|
||||
[incorporate into the message a relevant fact about something that happened in the past on this day]
|
||||
{% endmacro %}
|
||||
|
||||
{# a macro that removes all newline characters, empty spaces, and returns formatted text and replaces underscores with spaces #}
|
||||
@@ -237,59 +246,45 @@
|
||||
{% set day = current_date.strftime('%d') %}
|
||||
{% set year = current_date.strftime('%Y') %}
|
||||
{% set time = current_date.strftime('%I:%M %p') %}
|
||||
Current date time: {{ month }} {{ day }}, {{ year }} {{ time }}
|
||||
[Current date time: {{ month }} {{ day }}, {{ year }} {{ time }}]
|
||||
|
||||
Residents: Location
|
||||
- Carlo: {{ 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: {{ 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: {{ 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: {{ 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 -%}
|
||||
{% if range(1, 100) | random <= 25 %}
|
||||
and our cat Molly: Always home.
|
||||
Cat Molly: Always home.
|
||||
{% endif %}
|
||||
Previous broadcast: "{{ state_attr('sensor.openai_response', 'response') }}"
|
||||
[For each person, mention their location. For those not at home, briefly state where they are and approximately how long they have been there, using relative time e.g., about 30 minutes, around 2 hours, not exact timestamps. If the same location update has already been broadcasted, do not repeat it.]
|
||||
|
||||
New Information:
|
||||
]
|
||||
[Sensor Data:
|
||||
{% 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 %}
|
||||
|
||||
@@ -331,7 +326,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 %}
|
||||
|
||||
@@ -345,8 +340,8 @@
|
||||
{{ light_check() }}
|
||||
{% endif %}
|
||||
|
||||
{% if call_responsibilities == 1 %}
|
||||
{{ responsibilities() }}
|
||||
{% if call_garbage_day == 1 %}
|
||||
{{ garbage_day() }}
|
||||
{% endif %}
|
||||
|
||||
{% if now().strftime('%H')|int(0) > 21 %}
|
||||
@@ -358,7 +353,9 @@
|
||||
{% endif %}
|
||||
|
||||
{# call a Random fact about the house or inspiration quote #}
|
||||
{{ ([moon, uv, holiday, days_until, outside_weather, outside_weather, inspirational_quote, fact_of_the_day]|random)() }}
|
||||
{{ ([moon, uv, holiday, days_until, outside_weather, outside_weather, fact_of_the_day]|random)() }}
|
||||
]
|
||||
[Previous broadcast: "{{ state_attr('sensor.openai_response', 'response') }}" ]
|
||||
|
||||
{%- endmacro -%}
|
||||
{{- cleanup(mother_of_all_macros()) -}}
|
||||
|
@@ -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="VySBY" 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.1">
|
||||
<title>2025.8.1</title>
|
||||
<linearGradient id="sPIxN" x2="0" y2="100%">
|
||||
<stop offset="0" stop-opacity=".1" stop-color="#EEE"/>
|
||||
<stop offset="1" stop-opacity=".1"/>
|
||||
</linearGradient>
|
||||
<mask id="OpUSW"><rect width="615" height="200" rx="30" fill="#FFF"/></mask>
|
||||
<g mask="url(#OpUSW)">
|
||||
<mask id="BjVMm"><rect width="615" height="200" rx="30" fill="#FFF"/></mask>
|
||||
<g mask="url(#BjVMm)">
|
||||
<rect width="615" height="200" fill="#08C" x="0"/>
|
||||
<rect width="615" height="200" fill="url(#VySBY)"/>
|
||||
<rect width="615" height="200" fill="url(#sPIxN)"/>
|
||||
</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.1</text>
|
||||
<text x="55" y="138" textLength="500">2025.8.1</text>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 811 B After Width: | Height: | Size: 811 B |
Reference in New Issue
Block a user