From 48429cfd7303be31b66ff076d1605b80c8f466fc Mon Sep 17 00:00:00 2001 From: Carlo Costanzo Date: Thu, 2 Jul 2026 17:06:35 -0400 Subject: [PATCH] Refine water delivery reminders --- config/packages/README.md | 2 +- config/packages/water_delivery.yaml | 175 ++++++++++++++-------------- 2 files changed, 86 insertions(+), 91 deletions(-) diff --git a/config/packages/README.md b/config/packages/README.md index dde6bec2..9d5a410d 100755 --- a/config/packages/README.md +++ b/config/packages/README.md @@ -62,7 +62,7 @@ Live collection of plug-and-play Home Assistant packages. Each YAML file in this | [bearclaw.yaml](bearclaw.yaml) | Joanna/BearClaw bridge automations that forward Telegram commands to codex_appliance, include LLM-first routing context for freeform text, relay replies back, ingest `/api/bearclaw/status` telemetry, and expose dispatch, QMD/memory-index, plus Codex reset-credit expiry sensors and Repairs for Infrastructure dashboards; see the [Codex reset tracking video](https://youtu.be/7wKhtrvtyiI) and [companion post](https://www.vcloudinfo.com/2026/06/track-codex-resets-home-assistant.html). | `rest_command.bearclaw_*`, `sensor.bearclaw_status_telemetry`, `sensor.joanna_*`, `sensor.codex_reset_*`, `binary_sensor.joanna_*`, `binary_sensor.codex_reset_credit_expiring_soon`, `automation.bearclaw_*`, `automation.codex_reset_credit_expiry_repair`, `repairs.create`, `repairs.remove`, `script.send_to_logbook` | | [telegram_bot.yaml](telegram_bot.yaml) | Legacy Telegram transport marker for BearClaw; the shared `joanna_send_telegram` helper now forwards through the codex_appliance direct Telegram API. | `rest_command.bearclaw_telegram_send`, `script.joanna_send_telegram` | | [phynplus.yaml](phynplus.yaml) | Phyn shutoff automations with leak-test guard, Activity Feed context, Repairs tracking, and critical push recovery when the valve closes; see the [leak detection automation video](https://youtu.be/xbhgWnomFYI). | `valve.phyn_shutoff_valve`, `binary_sensor.phyn_leak_test_running`, `script.phyn_send_actionable_leak_notification`, `repairs.create` | -| [water_delivery.yaml](water_delivery.yaml) | ReadyRefresh delivery date helper with night-before + garage door Alexa reminders, plus helper-change audit logging and Telegram confirmations. | `input_datetime.water_delivery_date`, `script.send_to_logbook`, `script.joanna_send_telegram`, `notify.alexa_media_garage` | +| [water_delivery.yaml](water_delivery.yaml) | ReadyRefresh delivery date helper with night-before plus day-before garage door Alexa reminders, helper-change audit logging, and Telegram confirmations. | `input_datetime.water_delivery_date`, `script.send_to_logbook`, `script.joanna_send_telegram`, `notify.alexa_media_garage` | | [vacation_mode.yaml](vacation_mode.yaml) | Auto-enable vacation mode after 24 hours away or no bed use, track sitter analytics/secure-house checks, stale-visit timeout protection, deliver sitter-facing briefings, and send 10 AM/10 PM house digests with Powerwall/security/backup status plus Joanna review. | `input_boolean.vacation_mode`, `input_boolean.house_sitter_present`, `input_datetime.vacation_house_sitter_*`, `input_datetime.vacation_house_status_digest_last_sent`, `sensor.vacation_house_sitter_*`, `binary_sensor.powerwall_grid_status`, `sensor.powerwall_charge`, `group.garage_doors`, `lock.front_door`, `script.vacation_house_sitter_clear_presence`, `script.vacation_house_status_digest`, `script.notify_engine`, `rest_command.bearclaw_command`, `script.joanna_send_telegram` | | [maintenance_log.yaml](maintenance_log.yaml) | Joanna maintenance webhook ingest for water softener salt with idempotent event handling, Activity feed logging, and recorder-backed helper history for long-term graphing. | `automation.maintenance_log_joanna_webhook_ingest`, `input_number.water_softener_salt_total_added_lb`, `counter.water_softener_salt_event_count`, `sensor.water_softener_salt_days_since_last_add` | | [kiosk_tablet.yaml](kiosk_tablet.yaml) | Keeps the bedroom Fully Kiosk Fire tablet pinned to the dedicated camera kiosk dashboard when the page or foreground app drifts; normal wake events only restore brightness/focus. See the [video walkthrough](https://youtu.be/ChgEu0IDWzc). | `sensor.alarm_panel_1_current_page`, `sensor.alarm_panel_1_foreground_app`, `button.alarm_panel_1_bring_to_foreground`, `button.alarm_panel_1_load_start_url` | diff --git a/config/packages/water_delivery.yaml b/config/packages/water_delivery.yaml index 2c8502fc..8998381e 100644 --- a/config/packages/water_delivery.yaml +++ b/config/packages/water_delivery.yaml @@ -4,11 +4,11 @@ # Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig # ------------------------------------------------------------------- # Water Delivery Reminders - ReadyRefresh date helper + garage reminders -# Schedule delivery date and announce night-before + garage door alerts. +# Schedule delivery date and announce night-before + day-before garage door alerts. # ------------------------------------------------------------------- # Related Issue: 541 # Notes: Set input_datetime.water_delivery_date on /lovelace/water (date only). -# Notes: Night-before reminder fires at 5:30 PM; garage reminders on door open. +# Notes: Night-before reminder fires at 5:30 PM; garage reminders fire on door open the day before delivery. # Notes: Clear button sets delivery date to yesterday to disable reminders. # Notes: Date helper changes are logged to Activity feed with source context. # Notes: Active (today/future) date changes also send a Telegram confirmation. @@ -27,13 +27,21 @@ input_button: icon: mdi:calendar-remove automation: - - alias: "Water Delivery - Night Before Reminder" + - alias: "Water Delivery - Day-Before Reminders" id: 0ac05c7c-9d03-4c1d-8342-0bf8d17b7f8a - mode: single + mode: restart trigger: - platform: time at: "17:30:00" + id: night_before_time + + - platform: state + entity_id: group.garage_doors + from: 'closed' + to: 'open' + for: "00:00:20" + id: garage_open_day_before condition: - condition: template @@ -46,93 +54,80 @@ automation: {% endif %} action: - - service: script.speech_engine - data: - value1: >- - {% set date = states('input_datetime.water_delivery_date') %} - {% set delivery = as_datetime(date) %} - Reminder: water delivery is tomorrow ({{ delivery.strftime('%a %b %d') | replace(' 0', ' ') }}). - Please put the bottles out tonight. - - service: notify.alexa_media_garage - data: - message: >- - {% set date = states('input_datetime.water_delivery_date') %} - {% set delivery = as_datetime(date) %} - Reminder: water delivery is tomorrow ({{ delivery.strftime('%a %b %d') | replace(' 0', ' ') }}). - Please put the bottles out tonight. - data: - type: announce - - - alias: "Water Delivery - Garage Door Reminders" - id: 59fd6b6b-79a5-4f71-8c9f-2b6e25c39f84 - mode: restart - - trigger: - - platform: state - entity_id: group.garage_doors - from: 'closed' - to: 'open' - for: "00:00:20" - - condition: - - condition: template - value_template: >- - {% set date = states('input_datetime.water_delivery_date') %} - {% if date in ['unknown', 'unavailable', 'none', ''] %} - false - {% else %} - {{ as_datetime(date).date() == now().date() }} - {% endif %} - - action: - - service: script.speech_engine - data: - value1: >- - {% set date = states('input_datetime.water_delivery_date') %} - {% set delivery = as_datetime(date) %} - Reminder: today is water delivery day ({{ delivery.strftime('%a %b %d') | replace(' 0', ' ') }}). - Please put the bottles out before you leave. - - service: notify.alexa_media_garage - data: - message: >- - {% set date = states('input_datetime.water_delivery_date') %} - {% set delivery = as_datetime(date) %} - Reminder: today is water delivery day ({{ delivery.strftime('%a %b %d') | replace(' 0', ' ') }}). - Please put the bottles out before you leave. - data: - type: announce - - - variables: - reminder_delays: [30, 60, 90] - - - repeat: - for_each: "{{ reminder_delays }}" - sequence: - - delay: - seconds: "{{ repeat.item }}" - - - condition: state - entity_id: group.garage_doors - state: 'open' - - - condition: template - value_template: >- - {% set date = states('input_datetime.water_delivery_date') %} - {% if date in ['unknown', 'unavailable', 'none', ''] %} - false - {% else %} - {{ as_datetime(date).date() == now().date() }} - {% endif %} - - - service: notify.alexa_media_garage - data: - message: >- - {% set date = states('input_datetime.water_delivery_date') %} - {% set delivery = as_datetime(date) %} - Reminder: today is water delivery day ({{ delivery.strftime('%a %b %d') | replace(' 0', ' ') }}). - Please put the bottles out before you leave. + - choose: + - conditions: + - condition: trigger + id: night_before_time + sequence: + - service: script.speech_engine data: - type: announce + value1: >- + {% set date = states('input_datetime.water_delivery_date') %} + {% set delivery = as_datetime(date) %} + Reminder: water delivery is tomorrow ({{ delivery.strftime('%a %b %d') | replace(' 0', ' ') }}). + Please put the bottles out tonight. + - service: notify.alexa_media_garage + data: + message: >- + {% set date = states('input_datetime.water_delivery_date') %} + {% set delivery = as_datetime(date) %} + Reminder: water delivery is tomorrow ({{ delivery.strftime('%a %b %d') | replace(' 0', ' ') }}). + Please put the bottles out tonight. + data: + type: announce + + - conditions: + - condition: trigger + id: garage_open_day_before + sequence: + - service: script.speech_engine + data: + value1: >- + {% set date = states('input_datetime.water_delivery_date') %} + {% set delivery = as_datetime(date) %} + Reminder: water delivery is tomorrow ({{ delivery.strftime('%a %b %d') | replace(' 0', ' ') }}). + Please put the bottles out before you leave. + - service: notify.alexa_media_garage + data: + message: >- + {% set date = states('input_datetime.water_delivery_date') %} + {% set delivery = as_datetime(date) %} + Reminder: water delivery is tomorrow ({{ delivery.strftime('%a %b %d') | replace(' 0', ' ') }}). + Please put the bottles out before you leave. + data: + type: announce + + - variables: + reminder_delays: [30, 60, 90] + + - repeat: + for_each: "{{ reminder_delays }}" + sequence: + - delay: + seconds: "{{ repeat.item }}" + + - condition: state + entity_id: group.garage_doors + state: 'open' + + - condition: template + value_template: >- + {% set date = states('input_datetime.water_delivery_date') %} + {% if date in ['unknown', 'unavailable', 'none', ''] %} + false + {% else %} + {{ as_datetime(date).date() == (now() + timedelta(days=1)).date() }} + {% endif %} + + - service: notify.alexa_media_garage + data: + message: >- + {% set date = states('input_datetime.water_delivery_date') %} + {% set delivery = as_datetime(date) %} + Reminder: water delivery is tomorrow ({{ delivery.strftime('%a %b %d') | replace(' 0', ' ') }}). + Please put the bottles out before you leave. + data: + type: announce - alias: "Water Delivery - Clear Delivery Date" id: 2f4a1a64-2ad0-4605-a4c8-2a8f4b4e6f40