mirror of
https://github.com/CCOSTAN/Home-AssistantConfig.git
synced 2025-08-16 10:34:40 +00:00
Compare commits
12 Commits
6407f68058
...
4a1989e080
Author | SHA1 | Date | |
---|---|---|---|
|
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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
68
config/packages/climate.yaml
Normal file
68
config/packages/climate.yaml
Normal file
@@ -0,0 +1,68 @@
|
||||
input_datetime:
|
||||
downstairs_last_filter_change:
|
||||
name: Last Filter Change
|
||||
has_date: true
|
||||
has_time: true
|
||||
|
||||
upstairs_last_filter_change:
|
||||
name: Last Filter Change
|
||||
has_date: true
|
||||
has_time: true
|
||||
|
||||
sensor:
|
||||
- platform: history_stats
|
||||
name: Upstairs AC Runtime Since Last Filter Change
|
||||
entity_id: climate.upstairs
|
||||
state: 'cooling'
|
||||
type: time
|
||||
start: "{{ states('input_datetime.upstairs_last_filter_change') }}"
|
||||
end: "{{ now() }}"
|
||||
|
||||
- platform: history_stats
|
||||
name: Downstairs AC Runtime Since Last Filter Change
|
||||
entity_id: climate.downstairs
|
||||
state: 'cooling'
|
||||
type: time
|
||||
start: "{{ states('input_datetime.downstairs_last_filter_change') }}"
|
||||
end: "{{ now() }}"
|
||||
|
||||
script:
|
||||
reset_filter_change_date:
|
||||
alias: Reset Downstairs Filter Change Date
|
||||
sequence:
|
||||
- service: input_datetime.set_datetime
|
||||
data:
|
||||
entity_id: input_datetime.downstairs_last_filter_change
|
||||
datetime: "{{ now().strftime('%Y-%m-%d %H:%M:%S') }}"
|
||||
|
||||
automation:
|
||||
- alias: Notify Downstairs Filter Change Due
|
||||
description: "Notify when AC runtime exceeds threshold since last filter change"
|
||||
trigger:
|
||||
- platform: numeric_state
|
||||
entity_id: sensor.downstairs_ac_runtime_since_last_filter_change
|
||||
above: 800
|
||||
action:
|
||||
- service: script.notify_engine
|
||||
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."
|
||||
who: "Carlo"
|
||||
group: "maintenance"
|
||||
level: "active"
|
||||
|
||||
- alias: Notify Upstairs Filter Change Due
|
||||
description: "Notify when AC runtime exceeds threshold since last filter change"
|
||||
trigger:
|
||||
- platform: numeric_state
|
||||
entity_id: sensor.upstairs_ac_runtime_since_last_filter_change
|
||||
above: 450
|
||||
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."
|
||||
who: "Carlo"
|
||||
group: "maintenance"
|
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: 400
|
||||
- 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 400 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 400/300 Mbps."
|
||||
trigger:
|
||||
- platform: numeric_state
|
||||
entity_id: sensor.speedtest_download
|
||||
above: 400
|
||||
- platform: numeric_state
|
||||
entity_id: sensor.speedtest_upload
|
||||
above: 300
|
||||
condition:
|
||||
- condition: numeric_state
|
||||
entity_id: sensor.speedtest_download
|
||||
above: 400
|
||||
- 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
|
@@ -240,7 +240,7 @@
|
||||
Current date time: {{ month }} {{ day }}, {{ year }} {{ time }}
|
||||
|
||||
Residents: Location
|
||||
- Carlo (Dad): {{ states('person.carlo') }} at
|
||||
- Carlo: {{ states('person.carlo') }} at
|
||||
{%- if states('sensor.carlo_place') != 'unknown' %}
|
||||
{{ states('sensor.carlo_place') }}
|
||||
{% else -%}
|
||||
@@ -249,7 +249,7 @@
|
||||
{%- if states('person.carlo') != 'home' %}
|
||||
(Direction of travel: {{ state_attr('sensor.carlo_place', 'direction_of_travel') }})
|
||||
{% endif -%}
|
||||
- Stacey (Mom): {{ states('person.stacey') }} at
|
||||
- Stacey: {{ states('person.stacey') }} at
|
||||
{%- if states('sensor.stacey_place') != 'unknown' %}
|
||||
{{ states('sensor.stacey_place') }}
|
||||
{% else -%}
|
||||
@@ -258,7 +258,7 @@
|
||||
{%- if states('person.stacey') != 'home' %}
|
||||
(Direction of travel: {{ state_attr('sensor.stacey_place', 'direction_of_travel') }})
|
||||
{% endif -%}
|
||||
- Justin (Son): {{ states('person.justin') }} at
|
||||
- Justin: {{ states('person.justin') }} at
|
||||
{%- if states('sensor.justin_place') != 'unknown' %}
|
||||
{{ states('sensor.justin_place') }}
|
||||
{% else -%}
|
||||
@@ -267,7 +267,7 @@
|
||||
{%- if states('person.justin') != 'home' %}
|
||||
(Direction of travel: {{ state_attr('sensor.justin_place', 'direction_of_travel') }})
|
||||
{% endif -%}
|
||||
- Paige (Daughter): {{ states('person.paige') }} at
|
||||
- Paige: {{ states('person.paige') }} at
|
||||
{%- if states('sensor.paige_place') != 'unknown' %}
|
||||
{{ states('sensor.paige_place') }}
|
||||
{% else -%}
|
||||
@@ -276,9 +276,11 @@
|
||||
{%- 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.
|
||||
{% 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. 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:
|
||||
{% if call_no_announcement != 1 %}
|
||||
|
@@ -1,13 +1,13 @@
|
||||
<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%">
|
||||
<linearGradient id="LVgDG" 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="tSijn"><rect width="615" height="200" rx="30" fill="#FFF"/></mask>
|
||||
<g mask="url(#tSijn)">
|
||||
<rect width="615" height="200" fill="#08C" x="0"/>
|
||||
<rect width="615" height="200" fill="url(#OdOtw)"/>
|
||||
<rect width="615" height="200" fill="url(#LVgDG)"/>
|
||||
</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>
|
||||
|
Before Width: | Height: | Size: 811 B After Width: | Height: | Size: 811 B |
Reference in New Issue
Block a user