Files
Home-AssistantConfig/config/packages/garadget.yaml
Carlo Costanzo 7464db41f4 Enhance Home Assistant configuration with new sensors, state classes, and infrastructure monitoring
- Updated proxmox.yaml to include state_class for disk usage sensors and improved availability checks.
- Modified space.yaml to add state_class for the Earth distance sensor.
- Enhanced stats.yaml with state_class for various command line sensors and template sensors to support long-term trend rollups.
- Updated recorder.yaml to refine notes and exclude additional MariaDB snapshot sensors from recording.
- Revised README.md in scripts to correct package paths and add a new monthly log hygiene review automation.
- Introduced infrastructure.yaml for comprehensive observability and monitoring of WAN, DNS, and website states, including automated repairs for uptime breaches.
- Added mariadb_snapshot.py script to collect telemetry snapshots for MariaDB, supporting Home Assistant command line sensors.
2026-04-22 17:38:17 -04:00

361 lines
12 KiB
YAML
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
######################################################################
# @CCOSTAN - Follow Me on X
# For more info visit https://www.vcloudinfo.com/click-here
# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
# -------------------------------------------------------------------
# Garadget Garage Doors - MQTT cover control and monitoring
# Open/close commands, status polling, and notifications.
# -------------------------------------------------------------------
# Notes: Debounces garage door open/close triggers to reduce noisy
# state flapping from spamming lights, speech, and Alexa displays.
# Setup: https://www.vcloudinfo.com/2019/03/how-to-add-garadget-to-home-assistant.html
# Token fix: https://www.vcloudinfo.com/2020/05/fixing-garadget-in-home-assistant.html
# Hardware: Garadget unit https://amzn.to/2jQLpVQ
######################################################################
mqtt:
cover:
- name: "Large Garage Door"
unique_id: garadget_large_garage_door_cover
device_class: 'garage'
command_topic: "garadget/GLarge/command"
state_topic: "garadget/GLarge/status"
value_template: >-
{% if value_json.status == 'closed' %}
closed
{% else %}
open
{% endif %}
payload_open: "open"
payload_close: "close"
payload_stop: "stop"
- name: "Small Garage Door"
unique_id: garadget_small_garage_door_cover
device_class: 'garage'
command_topic: "garadget/GSmall/command"
state_topic: "garadget/GSmall/status"
value_template: >-
{% if value_json.status == 'closed' %}
closed
{% else %}
open
{% endif %}
payload_open: "open"
payload_close: "close"
payload_stop: "stop"
sensor:
- name: "Large Garage Door Since"
unique_id: garadget_large_garage_door_since
state_topic: "garadget/GLarge/status"
value_template: '{{ value_json.time }}'
- name: "Large Garage Door Brightness"
unique_id: garadget_large_garage_door_brightness
state_topic: "garadget/GLarge/status"
unit_of_measurement: '%'
state_class: measurement
value_template: '{{ value_json.bright }}'
- name: "Small Garage Door Since"
unique_id: garadget_small_garage_door_since
state_topic: "garadget/GSmall/status"
value_template: '{{ value_json.time }}'
- name: "Small Garage Door Brightness"
unique_id: garadget_small_garage_door_brightness
state_topic: "garadget/GSmall/status"
unit_of_measurement: '%'
state_class: measurement
value_template: '{{ value_json.bright }}'
input_text:
last_person_home:
name: Last Person Home
initial: 'Carlo'
group:
garage_doors: # This group is used to check if doors are open or Closed.
name: Garage Doors
entities:
- 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
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.send_to_logbook
data:
topic: "GARAGE"
message: "Large Garage was auto-opened for {{ states('input_text.last_person_home') }}."
######################################################################
## Entry helper prompt after arrival if auto-open didnt fire.
######################################################################
- alias: 'Entry Helper'
id: 365adc21-5e96-4e78-9e94-089901a29430
mode: parallel
trigger:
- platform: state
entity_id:
- person.carlo
- person.stacey
to: 'home'
condition:
- condition: state
entity_id: cover.large_garage_door
state: 'closed'
action:
# Give the auto-open routine a chance to fire; if the door opened, skip the prompt.
- delay: "00:00:25"
- choose:
- conditions:
- condition: state
entity_id: cover.large_garage_door
state: 'closed'
sequence:
- 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_two_button
data:
title: 'Welcome Home!'
value1: 'Choose: unlock front door or open garage?'
title1: 'Unlock Door'
action1: 'UNLOCK_FRONT_DOOR'
icon1: 'sfsymbols:lock.open'
destructive1: 'false'
title2: 'Open Garage'
action2: 'OPEN_LARGE_GARAGE'
icon2: 'sfsymbols:arrow.up.circle'
destructive2: 'false'
who: "{{ states('input_text.last_person_home') }}"
group: 'Welcome_Home'
- alias: 'Open Large Garage Door Action'
id: 85e02a74-2ecc-4815-95a6-db864a6dffd7
trigger:
platform: event
event_type: mobile_app_notification_action
event_data:
action: OPEN_LARGE_GARAGE
condition:
- condition: state
entity_id: cover.large_garage_door
state: 'closed'
- condition: state
entity_id: group.family
state: 'home'
action:
- service: cover.open_cover
entity_id: cover.large_garage_door
- alias: 'Unlock Front Door Action'
id: c3106db1-f2c4-4800-b1a3-76d440228600
trigger:
platform: event
event_type: mobile_app_notification_action
event_data:
action: UNLOCK_FRONT_DOOR
action:
- service: lock.unlock
entity_id: lock.front_door
######################################################################
## Auto-unlock front door when Paige or Justin arrive from driving
######################################################################
- alias: 'Auto Unlock Front Door on Arrival (Paige/Justin)'
id: 8f4f5f6a-9c2d-4f4c-9f6c-7d5e5b2e2c3d
mode: single
trigger:
- platform: state
entity_id:
- person.paige
- person.justin
from: 'driving'
to: 'home'
condition:
- condition: state
entity_id: lock.front_door
state: 'locked'
action:
- service: lock.unlock
target:
entity_id: lock.front_door
- service: script.notify_engine
data:
title: "Front door auto-unlocked"
value1: "Unlocking for {{ trigger.to_state.name }} arriving from driving."
who: "family"
group: "Welcome_Home"
- service: script.send_to_logbook
data:
topic: "DOORS"
message: "Front door auto-unlocked for {{ trigger.to_state.name }} arriving from driving."
######################################################################
## Garage Status Announcements - Only during normal hours.
######################################################################
- alias: 'Update Garage Get-Status'
id: 2b9e8359-c189-4399-b415-50107513fe90
trigger:
- platform: time_pattern
minutes: '/1'
action:
- service: mqtt.publish
data:
topic: "garadget/GSmall/command"
payload: "get-status"
- service: mqtt.publish
data:
topic: "garadget/GLarge/command"
payload: "get-status"
###################################
## Garadget Wind Door Checks - [Garadget](https://amzn.to/2jQLpVQ)
###################################
- alias: 'Wind Speed Garage Door Check'
id: 2819207a-1716-4552-be34-a8e0f7af004e
trigger:
- platform: numeric_state
entity_id: sensor.pirateweather_wind_speed
above: 30
condition:
- condition: or
conditions:
- condition: state
entity_id: cover.large_garage_door
state: 'open'
- condition: state
entity_id: cover.small_garage_door
state: 'open'
action:
- service: input_boolean.turn_on
entity_id: input_boolean.alert_mode
- service: script.notify_engine
data:
title: 'Check/Close Garage Doors - High Speed Wind Alert:'
value1: "Small: {{ states('cover.small_garage_door')}}"
value2: "Large: {{ states('cover.large_garage_door')}}"
group: 'information'
who: 'parents'
- service: script.speech_engine
data:
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') -%}
Large Garage Door: open
{% endif -%}
{% if is_state('cover.small_garage_door', 'open') -%}
{% if is_state('cover.large_garage_door', 'open') -%}and
{%- endif %} Small Garage Door: open.
{% endif %}"
##############################################################################
- alias: Is the Garage door Open at night - Checks every 30 minutes or 5 minutes after we drive away.
id: 4eb3e83e-4484-4102-a4ca-6bacd5b3cbdd
trigger:
- platform: time_pattern
minutes: '/30'
- platform: state
entity_id: group.family
to: not_home
for: 00:05:00
condition:
condition: or
conditions:
- condition: and
conditions:
- condition: state
entity_id: group.family
state: not_home
for: 00:05:00
- condition: or
conditions:
- condition: template
value_template: "{{ states('cover.large_garage_door') == 'open' }}"
- condition: template
value_template: "{{ states('cover.small_garage_door') == 'open' }}"
- condition: and
conditions:
- condition: state
entity_id: sun.sun
state: 'below_horizon'
- condition: or
conditions:
- condition: template
value_template: "{{ states('cover.large_garage_door') == 'open' }}"
- condition: template
value_template: "{{ states('cover.small_garage_door') == 'open'}}"
action:
- service: script.notify_engine
data:
title: 'Check Garage Doors:'
value1: >
{% set open = [
'Small garage door' if is_state('cover.small_garage_door', 'open') else '',
'Large garage door' if is_state('cover.large_garage_door', 'open') else ''
] | reject('eq', '') | list %}
{% if open|length == 0 %}
All garage doors are closed.
{% elif open|length == 1 %}
{{ open[0] }} is open.
{% else %}
{{ open|join(' and ') }} are open.
{% endif %}
who: "family"
camera_entity: "camera.garagecam"
group: 'information'
- 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')}} [Always mention the specific garage door that is currently open and remind us to close it for the night]"