From e395ccad3b6fa1bd7b7468b487acc1696962bf64 Mon Sep 17 00:00:00 2001 From: Carlo Costanzo Date: Mon, 8 Jun 2026 13:07:53 -0400 Subject: [PATCH] fix(garage): reuse arrival door-open helper --- config/packages/README.md | 4 +- config/packages/docker_infrastructure.yaml | 5 +- config/packages/garadget.yaml | 81 +++++++++++++--------- 3 files changed, 52 insertions(+), 38 deletions(-) diff --git a/config/packages/README.md b/config/packages/README.md index 4125f3b4..cf9ce659 100755 --- a/config/packages/README.md +++ b/config/packages/README.md @@ -42,7 +42,7 @@ Live collection of plug-and-play Home Assistant packages. Each YAML file in this | [alexa_media_player.yaml](alexa_media_player.yaml) | Alexa Media helper sensors including stable bedroom wake-alarm wrappers for Carlo and Stacey plus a combined next-wake view. | `sensor.last_alexa`, `sensor.bedroom_next_wake_alarm`, `sensor.bedroom_next_wake_alarm_source`, `binary_sensor.bedroom_next_wake_alarm_active` | | [fridge.yaml](fridge.yaml) | SmartThinQ fridge monitoring with 6-minute raw door-open alerts plus fridge/freezer status announcements. | `binary_sensor.refrigerator_door_open`, `script.notify_engine`, `script.speech_engine` | | [climate.yaml](climate.yaml) | Nest climate schedules plus runtime-based AC filter reminders with snooze and filter-changed actions. | `input_datetime.*_filter_snooze_until`, `script.notify_engine_two_button`, mobile app action events | -| [garadget.yaml](garadget.yaml) | MQTT-based garage door control plus arrival helpers, entry prompts, wind checks, nighttime reminders, and camera context. | `cover.large_garage_door`, `cover.small_garage_door`, `group.garage_doors`, `sensor.garadget_reflection` | +| [garadget.yaml](garadget.yaml) | MQTT-based garage door control plus arrival helpers, entry prompts, wind checks, nighttime reminders, and camera context. | `cover.large_garage_door`, `cover.small_garage_door`, `group.garage_doors`, `script.open_large_garage_door_if_ready` | | [august.yaml](august.yaml) | Front-door August smart lock with Alexa Show camera pop-up when unlocked. | `lock.front_door`, media_player actions for front doorbell camera | | [holiday.yaml](holiday.yaml) | REST-driven US holiday + flag sensors that color scenes and exterior lighting. | `sensor.holiday`, `sensor.flag`, JSON feed at `config/json_data/holidays.json` | | [lightning.yaml](lightning.yaml) | Blitzortung lightning counter monitoring with snoozeable push actions. | `sensor.blitzortung_lightning_counter`, `input_boolean.snooze_lightning`, notify engine actions | @@ -74,7 +74,7 @@ Live collection of plug-and-play Home Assistant packages. Each YAML file in this | [finance.yaml](finance.yaml) | Yahoo Finance sensor bundle for portfolio glances and Lovelace cards. | `sensor.tsla`, `sensor.aapl`, `sensor.amzn`, `sensor.msft` | ### Garadget automations -- Logic lives in [garadget.yaml](garadget.yaml): auto-open on arrival, entry helper prompt (unlock front door or open garage), kid-specific trusted shortcuts, wind checks, nightly open-door reminders, and camera pop-ups. +- Logic lives in [garadget.yaml](garadget.yaml): auto-open on arrival, entry helper prompt (unlock front door or open garage), trusted-family shortcuts, wind checks, nightly open-door reminders, and camera pop-ups. - MQTT-based covers for large/small doors; notifications and speech wired to the house notify/speech engines. - Video companion: [Garage automation walkthrough](https://youtu.be/wFO0H5zgnzk) and [companion blog post](https://www.vcloudinfo.com/2026/05/home-assistant-garage-automations-arrival-alerts-tesla.html). ![Garadget Automation](../www/custom_ui/floorplan/images/branding/Garadget%20Automation.png) diff --git a/config/packages/docker_infrastructure.yaml b/config/packages/docker_infrastructure.yaml index 4d704d5f..8c83daed 100644 --- a/config/packages/docker_infrastructure.yaml +++ b/config/packages/docker_infrastructure.yaml @@ -19,7 +19,8 @@ # Notes: Teslamate and crystalsoftwashsolutions are live services and should remain in the monitored group when their discovery switches are present. # Notes: Treat telemetry reconnects from unavailable/unknown to a concrete stopped state as actionable outages. # Notes: Infra Info was removed; BearClaw Admin is the planning snapshot surface. -# Notes: codex_appliance moved to a dedicated VM, but the legacy container switches still surface in HA and remain in the monitored group until the entities are retired. +# Notes: codex_appliance moved to a dedicated VM; keep the standard codex_appliance switches and retire the legacy hashed discovery entity when it disappears. +# Notes: Paige's Bookshelf is a live monitored service and should remain in the group when its discovery switch is present. # Notes: Retired repair cleanup clears old codex_appliance and hashed dozzle Portainer repair IDs. ###################################################################### @@ -84,7 +85,6 @@ switch: - switch.cloudflared_kch_container_2 - switch.cloudflared_wp_container - switch.cloudflared_wp_container_2 - - switch.63a0a831eb7d_codex_appliance_container - switch.college_budget_app_container - switch.college_budget_app_container_2 - switch.cruise_tracker_container @@ -137,6 +137,7 @@ switch: - switch.nebula_sync_container_2 - switch.onenote_indexer_container - switch.onenote_indexer_container_2 + - switch.paiges_bookshelf_container - switch.panel_notes_container - switch.panel_notes_container_2 - switch.pihole_container diff --git a/config/packages/garadget.yaml b/config/packages/garadget.yaml index 107ba865..15a4d5c7 100755 --- a/config/packages/garadget.yaml +++ b/config/packages/garadget.yaml @@ -84,6 +84,42 @@ group: - cover.large_garage_door - cover.small_garage_door +script: + open_large_garage_door_if_ready: + alias: Open Large Garage Door If Ready + mode: single + fields: + person_name: + description: Optional person name for arrival logging. + example: Carlo + sequence: + - condition: state + entity_id: cover.large_garage_door + state: 'closed' + - condition: state + entity_id: group.family + state: 'home' + # - condition: state + # entity_id: group.bed + # state: 'off' + - service: cover.open_cover + target: + entity_id: cover.large_garage_door + - choose: + - conditions: + - condition: template + value_template: "{{ person_name | default('', true) | trim != '' }}" + sequence: + - service: input_text.set_value + target: + entity_id: input_text.last_person_home + data: + value: "{{ person_name }}" + - service: script.send_to_logbook + data: + topic: "GARAGE" + message: "Large Garage was auto-opened for {{ person_name }}." + automation: ###################################################################### @@ -99,29 +135,10 @@ automation: - 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 + - service: script.open_large_garage_door_if_ready 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') }}." + person_name: "{{ trigger.to_state.entity_id.split('.')[1] }}" ###################################################################### ## Entry helper prompt after arrival if auto-open didn’t fire. @@ -176,16 +193,8 @@ automation: 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 + - service: script.open_large_garage_door_if_ready - alias: 'Unlock Front Door Action' id: c3106db1-f2c4-4800-b1a3-76d440228600 @@ -199,9 +208,9 @@ automation: entity_id: lock.front_door ###################################################################### - ## Auto-unlock front door when Paige or Justin arrive from driving + ## Auto-unlock front door when Paige, Justin, or Joyce arrive from driving ###################################################################### - - alias: 'Auto Unlock Front Door on Arrival (Paige/Justin)' + - alias: 'Auto Unlock Front Door on Arrival (Paige/Justin/Joyce)' id: 8f4f5f6a-9c2d-4f4c-9f6c-7d5e5b2e2c3d mode: single trigger: @@ -209,8 +218,12 @@ automation: entity_id: - person.paige - person.justin + - device_tracker.life360_joyce_ruskin from: 'driving' to: 'home' + variables: + arriving_person: >- + {{ (trigger.to_state.name | replace('Life360 ', '')).split(' ')[0] }} condition: - condition: state entity_id: lock.front_door @@ -222,13 +235,13 @@ automation: - service: script.notify_engine data: title: "Front door auto-unlocked" - value1: "Unlocking for {{ trigger.to_state.name }} arriving from driving." + value1: "Unlocking for {{ arriving_person }} 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." + message: "Front door auto-unlocked for {{ arriving_person }} arriving from driving." ######################################################################