From d54cb224ff16fd0d3d148b515a038f79fad62e1c Mon Sep 17 00:00:00 2001 From: Carlo Costanzo Date: Wed, 8 Jul 2026 17:03:39 -0400 Subject: [PATCH] Add water maintenance and sprinkler dashboard updates --- README.md | 10 +- config/README.md | 6 +- .../overview/partials/water_sections.yaml | 61 ++- .../overview/views/09_salt_trends.yaml | 2 + .../overview/views/10_sprinklers.yaml | 255 +++++++++++++ config/packages/README.md | 6 +- config/packages/maintenance_log.yaml | 6 +- config/packages/rachio.yaml | 359 +++++++++++++++++- 8 files changed, 686 insertions(+), 19 deletions(-) create mode 100644 config/dashboards/overview/views/10_sprinklers.yaml diff --git a/README.md b/README.md index 4657bd41..93a8c7a0 100755 --- a/README.md +++ b/README.md @@ -18,10 +18,10 @@ Live, personal Home Assistant configuration shared for **browsing and inspiration**. This is not a turnkey clone-and-run setup; borrow ideas, adapt entity IDs/secrets, and test in your own environment. -### Latest video: Home Assistant Caught My HVAC Failure -[![Home Assistant Caught My HVAC Failure](https://www.vcloudinfo.com/wp-content/uploads/2026/06/home-assistant-hvac-maintenance-thumbnail.png)](https://youtu.be/nScl2JxYSB8) +### Latest video: Water Softener Salt, Tracked By Home Assistant +[![Water Softener Salt, Tracked By Home Assistant](https://www.vcloudinfo.com/wp-content/uploads/2026/07/water-softener-thumbnail.jpg)](https://youtu.be/_OqTv9i-jAs) -This walkthrough shows the Home Assistant evidence trail from a failed HVAC blower: cooling was active while the downstairs temperature kept climbing, then the maintenance dashboard turned the repair into runtime-based filter reminders, reset actions, and a 360-day condenser-line cleanout reminder. [![Watch on YouTube](https://img.shields.io/badge/Watch-YouTube-FF0000?logo=youtube&logoColor=white)](https://youtu.be/nScl2JxYSB8). Browse the YAML in [![YAML source: climate](https://img.shields.io/static/v1?label=YAML&message=climate&color=lightgrey&logo=github&logoColor=181717)](config/packages/climate.yaml) and [![YAML source: water_sections](https://img.shields.io/static/v1?label=YAML&message=water_sections&color=lightgrey&logo=github&logoColor=181717)](config/dashboards/overview/partials/water_sections.yaml), and follow the background in [issue #273](https://github.com/CCOSTAN/Home-AssistantConfig/issues/273). +Start with the automation: one Home Assistant webhook records each water softener salt refill, ignores duplicate event IDs, updates helper state, writes Activity Feed history, and exposes template sensors for refill cadence, totals, and days since last add. The webhook can be fired by an agent, NFC tag, QR code, dashboard button, or any other trusted trigger. [![Watch on YouTube](https://img.shields.io/badge/Watch-YouTube-FF0000?logo=youtube&logoColor=white)](https://youtu.be/_OqTv9i-jAs) [![vCloudInfo Blog Post](https://img.shields.io/static/v1?label=vCloudInfo&message=Blog%20Post&color=21759B&logo=wordpress&logoColor=white)](https://www.vcloudinfo.com/2026/07/home-assistant-water-softener-salt-automation.html). Browse the YAML in [![YAML source: maintenance_log](https://img.shields.io/static/v1?label=YAML&message=maintenance_log&color=lightgrey&logo=github&logoColor=181717)](config/packages/maintenance_log.yaml), [![YAML source: 09_salt_trends](https://img.shields.io/static/v1?label=YAML&message=09_salt_trends&color=lightgrey&logo=github&logoColor=181717)](config/dashboards/overview/views/09_salt_trends.yaml), and [![YAML source: water_sections](https://img.shields.io/static/v1?label=YAML&message=water_sections&color=lightgrey&logo=github&logoColor=181717)](config/dashboards/overview/partials/water_sections.yaml); the NFC/tag follow-up is tracked in [issue #1816](https://github.com/CCOSTAN/Home-AssistantConfig/issues/1816). ### Quick navigation - You are here: `/` (root repo guide) @@ -50,6 +50,8 @@ This walkthrough shows the Home Assistant evidence trail from a failed HVAC blow - LLM Vision package reminders: [![YAML source: llmvision](https://img.shields.io/static/v1?label=YAML&message=llmvision&color=lightgrey&logo=github&logoColor=181717)](config/packages/llmvision.yaml), [![Watch on YouTube](https://img.shields.io/badge/Watch-YouTube-FF0000?logo=youtube&logoColor=white)](https://youtu.be/nAhCezFetvI) - Codex reset-credit tracking: [![YAML source: bearclaw](https://img.shields.io/static/v1?label=YAML&message=bearclaw&color=lightgrey&logo=github&logoColor=181717)](config/packages/bearclaw.yaml), [config/dashboards/infrastructure](config/dashboards/infrastructure), [![Watch on YouTube](https://img.shields.io/badge/Watch-YouTube-FF0000?logo=youtube&logoColor=white)](https://youtu.be/7wKhtrvtyiI) - Water leak response loop: [![YAML source: phynplus](https://img.shields.io/static/v1?label=YAML&message=phynplus&color=lightgrey&logo=github&logoColor=181717)](config/packages/phynplus.yaml), [![Watch on YouTube](https://img.shields.io/badge/Watch-YouTube-FF0000?logo=youtube&logoColor=white)](https://youtu.be/xbhgWnomFYI) +- Water softener salt maintenance: [![YAML source: maintenance_log](https://img.shields.io/static/v1?label=YAML&message=maintenance_log&color=lightgrey&logo=github&logoColor=181717)](config/packages/maintenance_log.yaml), [![YAML source: 09_salt_trends](https://img.shields.io/static/v1?label=YAML&message=09_salt_trends&color=lightgrey&logo=github&logoColor=181717)](config/dashboards/overview/views/09_salt_trends.yaml), [![YAML source: water_sections](https://img.shields.io/static/v1?label=YAML&message=water_sections&color=lightgrey&logo=github&logoColor=181717)](config/dashboards/overview/partials/water_sections.yaml), [![Watch on YouTube](https://img.shields.io/badge/Watch-YouTube-FF0000?logo=youtube&logoColor=white)](https://youtu.be/_OqTv9i-jAs), [![vCloudInfo Blog Post](https://img.shields.io/static/v1?label=vCloudInfo&message=Blog%20Post&color=21759B&logo=wordpress&logoColor=white)](https://www.vcloudinfo.com/2026/07/home-assistant-water-softener-salt-automation.html), [issue #1816](https://github.com/CCOSTAN/Home-AssistantConfig/issues/1816) +- Sprinkler status and last-run dashboard: [![YAML source: rachio](https://img.shields.io/static/v1?label=YAML&message=rachio&color=lightgrey&logo=github&logoColor=181717)](config/packages/rachio.yaml), [![YAML source: 10_sprinklers](https://img.shields.io/static/v1?label=YAML&message=10_sprinklers&color=lightgrey&logo=github&logoColor=181717)](config/dashboards/overview/views/10_sprinklers.yaml), [![YAML source: water_sections](https://img.shields.io/static/v1?label=YAML&message=water_sections&color=lightgrey&logo=github&logoColor=181717)](config/dashboards/overview/partials/water_sections.yaml) - Bedroom camera kiosk tablet: [![YAML source: kiosk_tablet](https://img.shields.io/static/v1?label=YAML&message=kiosk_tablet&color=lightgrey&logo=github&logoColor=181717)](config/packages/kiosk_tablet.yaml), [config/dashboards/kiosk](config/dashboards/kiosk), [![Watch on YouTube](https://img.shields.io/badge/Watch-YouTube-FF0000?logo=youtube&logoColor=white)](https://youtu.be/ChgEu0IDWzc) - Holiday/front-of-house color scenes: [![YAML source: monthly_colors](https://img.shields.io/static/v1?label=YAML&message=monthly_colors&color=lightgrey&logo=github&logoColor=181717)](config/scene/monthly_colors.yaml), [![YAML source: monthly_color_scene](https://img.shields.io/static/v1?label=YAML&message=monthly_color_scene&color=lightgrey&logo=github&logoColor=181717)](config/script/monthly_color_scene.yaml) - Dash-button triggers for quick actions: [![YAML source: dash_buttons](https://img.shields.io/static/v1?label=YAML&message=dash_buttons&color=lightgrey&logo=github&logoColor=181717)](config/automation/dash_buttons.yaml) @@ -87,7 +89,7 @@ https://amzn.to/48jVzZ3 | Garadget garage door controller | Garage doors: open/close, arrival helpers, wind alerts, and nighttime reminders - [![YAML source: garadget](https://img.shields.io/static/v1?label=YAML&message=garadget&color=lightgrey&logo=github&logoColor=181717)](config/packages/garadget.yaml), [![Watch on YouTube](https://img.shields.io/badge/Watch-YouTube-FF0000?logo=youtube&logoColor=white)](https://youtu.be/wFO0H5zgnzk), [![vCloudInfo Blog Post](https://img.shields.io/static/v1?label=vCloudInfo&message=Blog%20Post&color=21759B&logo=wordpress&logoColor=white)](https://www.vcloudinfo.com/2026/05/home-assistant-garage-automations-arrival-alerts-tesla.html) | [![Buy](https://img.shields.io/badge/Buy-Garadget-orange?logo=amazon)](https://amzn.to/2jQLpVQ) | | August smart lock | Front-door lock control + status - [![YAML source: august](https://img.shields.io/static/v1?label=YAML&message=august&color=lightgrey&logo=github&logoColor=181717)](config/packages/august.yaml) | [![Buy](https://img.shields.io/badge/Buy-August%20Lock-orange?logo=amazon)](https://amzn.to/48jVzZ3) | | Phyn Plus water shutoff | Leak detection + auto shutoff - [![YAML source: phynplus](https://img.shields.io/static/v1?label=YAML&message=phynplus&color=lightgrey&logo=github&logoColor=181717)](config/packages/phynplus.yaml), [![Watch on YouTube](https://img.shields.io/badge/Watch-YouTube-FF0000?logo=youtube&logoColor=white)](https://youtu.be/xbhgWnomFYI), [![vCloudInfo Blog Post](https://img.shields.io/static/v1?label=vCloudInfo&message=Blog%20Post&color=21759B&logo=wordpress&logoColor=white)](https://www.vcloudinfo.com/2026/06/home-assistant-leak-detection-automations.html), [![vCloudInfo Blog Post](https://img.shields.io/static/v1?label=vCloudInfo&message=Blog%20Post&color=21759B&logo=wordpress&logoColor=white)](https://www.vcloudinfo.com/2020/05/phyn-plus-smart-water-shutoff-device.html) | [![Buy](https://img.shields.io/badge/Buy-Phyn%20Plus-orange?logo=amazon)](https://amzn.to/2Zy3sbJ) | -| Rachio sprinkler controller | Rain-skips and seasonal watering - [![YAML source: rachio](https://img.shields.io/static/v1?label=YAML&message=rachio&color=lightgrey&logo=github&logoColor=181717)](config/packages/rachio.yaml) | [![Buy](https://img.shields.io/badge/Buy-Rachio-orange?logo=amazon)](https://amzn.to/2eoPKBW) | +| Rachio sprinkler controller | Rain-skips, active-zone status, trigger-derived last-run history, and dashboard controls - [![YAML source: rachio](https://img.shields.io/static/v1?label=YAML&message=rachio&color=lightgrey&logo=github&logoColor=181717)](config/packages/rachio.yaml), [![YAML source: 10_sprinklers](https://img.shields.io/static/v1?label=YAML&message=10_sprinklers&color=lightgrey&logo=github&logoColor=181717)](config/dashboards/overview/views/10_sprinklers.yaml), [![YAML source: water_sections](https://img.shields.io/static/v1?label=YAML&message=water_sections&color=lightgrey&logo=github&logoColor=181717)](config/dashboards/overview/partials/water_sections.yaml) | [![Buy](https://img.shields.io/badge/Buy-Rachio-orange?logo=amazon)](https://amzn.to/2eoPKBW) | | Tesla Powerwall 2 | Grid-outage alerts, charging watchdog, and load-shed automations - [![YAML source: powerwall](https://img.shields.io/static/v1?label=YAML&message=powerwall&color=lightgrey&logo=github&logoColor=181717)](config/packages/powerwall.yaml), [![Watch on YouTube](https://img.shields.io/badge/Watch-YouTube-FF0000?logo=youtube&logoColor=white)](https://youtu.be/hR_0lFEE2bA), [![vCloudInfo Blog Post](https://img.shields.io/static/v1?label=vCloudInfo&message=Blog%20Post&color=21759B&logo=wordpress&logoColor=white)](https://www.vcloudinfo.com/2026/06/tesla-powerwall-home-assistant-watchdog.html) | [![Buy](https://img.shields.io/badge/Buy-Powerwall-orange?logo=tesla)](https://amzn.to/3UM4BZ5) | | Google Nest thermostat | HVAC schedules plus runtime-based filter reminders and condenser-line cleanout tracking - [![YAML source: climate](https://img.shields.io/static/v1?label=YAML&message=climate&color=lightgrey&logo=github&logoColor=181717)](config/packages/climate.yaml), [![YAML source: water_sections](https://img.shields.io/static/v1?label=YAML&message=water_sections&color=lightgrey&logo=github&logoColor=181717)](config/dashboards/overview/partials/water_sections.yaml), [![Watch on YouTube](https://img.shields.io/badge/Watch-YouTube-FF0000?logo=youtube&logoColor=white)](https://youtu.be/nScl2JxYSB8) | [![Buy](https://img.shields.io/badge/Buy-Nest%20Thermostat-orange?logo=google)](https://amzn.to/4olpINw) | | NodeMCU motion sensor | Office motion lighting - [![YAML source: office_motion](https://img.shields.io/static/v1?label=YAML&message=office_motion&color=lightgrey&logo=github&logoColor=181717)](config/packages/office_motion.yaml) | [![Buy](https://img.shields.io/badge/Buy-Motion%20Node-orange?logo=amazon)](https://amzn.to/2oUgj5i) | diff --git a/config/README.md b/config/README.md index 387bdfa3..e2f31060 100755 --- a/config/README.md +++ b/config/README.md @@ -43,7 +43,7 @@ Live view of the `config/` directory my production Home Assistant instance loads ### Featured automations by section | Section | Why start here | Featured automation(s) | | --- | --- | --- | -| Packages | Self-contained subsystems that highlight patterns like combined alerts + actions. | [![YAML source: alarm](https://img.shields.io/static/v1?label=YAML&message=alarm&color=lightgrey&logo=github&logoColor=181717)](packages/alarm.yaml), [![YAML source: garadget](https://img.shields.io/static/v1?label=YAML&message=garadget&color=lightgrey&logo=github&logoColor=181717)](packages/garadget.yaml), [![YAML source: llmvision](https://img.shields.io/static/v1?label=YAML&message=llmvision&color=lightgrey&logo=github&logoColor=181717)](packages/llmvision.yaml), [![YAML source: phynplus](https://img.shields.io/static/v1?label=YAML&message=phynplus&color=lightgrey&logo=github&logoColor=181717)](packages/phynplus.yaml), [![YAML source: kiosk_tablet](https://img.shields.io/static/v1?label=YAML&message=kiosk_tablet&color=lightgrey&logo=github&logoColor=181717)](packages/kiosk_tablet.yaml), [![YAML source: vacation_mode](https://img.shields.io/static/v1?label=YAML&message=vacation_mode&color=lightgrey&logo=github&logoColor=181717)](packages/vacation_mode.yaml), [![YAML source: vacuum](https://img.shields.io/static/v1?label=YAML&message=vacuum&color=lightgrey&logo=github&logoColor=181717)](packages/vacuum.yaml), [![YAML source: powerwall](https://img.shields.io/static/v1?label=YAML&message=powerwall&color=lightgrey&logo=github&logoColor=181717)](packages/powerwall.yaml) | +| Packages | Self-contained subsystems that highlight patterns like combined alerts + actions. | [![YAML source: alarm](https://img.shields.io/static/v1?label=YAML&message=alarm&color=lightgrey&logo=github&logoColor=181717)](packages/alarm.yaml), [![YAML source: garadget](https://img.shields.io/static/v1?label=YAML&message=garadget&color=lightgrey&logo=github&logoColor=181717)](packages/garadget.yaml), [![YAML source: llmvision](https://img.shields.io/static/v1?label=YAML&message=llmvision&color=lightgrey&logo=github&logoColor=181717)](packages/llmvision.yaml), [![YAML source: phynplus](https://img.shields.io/static/v1?label=YAML&message=phynplus&color=lightgrey&logo=github&logoColor=181717)](packages/phynplus.yaml), [![YAML source: maintenance_log](https://img.shields.io/static/v1?label=YAML&message=maintenance_log&color=lightgrey&logo=github&logoColor=181717)](packages/maintenance_log.yaml), [![YAML source: rachio](https://img.shields.io/static/v1?label=YAML&message=rachio&color=lightgrey&logo=github&logoColor=181717)](packages/rachio.yaml), [![YAML source: kiosk_tablet](https://img.shields.io/static/v1?label=YAML&message=kiosk_tablet&color=lightgrey&logo=github&logoColor=181717)](packages/kiosk_tablet.yaml), [![YAML source: vacation_mode](https://img.shields.io/static/v1?label=YAML&message=vacation_mode&color=lightgrey&logo=github&logoColor=181717)](packages/vacation_mode.yaml), [![YAML source: vacuum](https://img.shields.io/static/v1?label=YAML&message=vacuum&color=lightgrey&logo=github&logoColor=181717)](packages/vacuum.yaml), [![YAML source: powerwall](https://img.shields.io/static/v1?label=YAML&message=powerwall&color=lightgrey&logo=github&logoColor=181717)](packages/powerwall.yaml) | | Automations | Real-world triggers that tie Zwave, MQTT, and REST sensors into the rest of the house. | [![YAML source: garage_entry_light](https://img.shields.io/static/v1?label=YAML&message=garage_entry_light&color=lightgrey&logo=github&logoColor=181717)](automation/garage_entry_light.yaml), [![YAML source: dark_rainy_day](https://img.shields.io/static/v1?label=YAML&message=dark_rainy_day&color=lightgrey&logo=github&logoColor=181717)](automation/dark_rainy_day.yaml), [![YAML source: dash_buttons](https://img.shields.io/static/v1?label=YAML&message=dash_buttons&color=lightgrey&logo=github&logoColor=181717)](automation/dash_buttons.yaml) | | Scripts | Reusable building blocks for lighting, notifications, safety responses, and Joanna/BearClaw remediation dispatch. | [![YAML source: joanna_dispatch](https://img.shields.io/static/v1?label=YAML&message=joanna_dispatch&color=lightgrey&logo=github&logoColor=181717)](script/joanna_dispatch.yaml), [![YAML source: notify_engine](https://img.shields.io/static/v1?label=YAML&message=notify_engine&color=lightgrey&logo=github&logoColor=181717)](script/notify_engine.yaml), [![YAML source: speech_engine](https://img.shields.io/static/v1?label=YAML&message=speech_engine&color=lightgrey&logo=github&logoColor=181717)](script/speech_engine.yaml) | | Scenes | Seasonal and ambiance presets that the scripts and automations call into. | [![YAML source: monthly_colors](https://img.shields.io/static/v1?label=YAML&message=monthly_colors&color=lightgrey&logo=github&logoColor=181717)](scene/monthly_colors.yaml), [![YAML source: living_room](https://img.shields.io/static/v1?label=YAML&message=living_room&color=lightgrey&logo=github&logoColor=181717)](scene/living_room.yaml) | @@ -51,7 +51,7 @@ Live view of the `config/` directory my production Home Assistant instance loads | Dashboards & Media | UI chrome, floorplans, sound bites, and automation assets. | [dashboards/kiosk](dashboards/kiosk), [topology diagram](../README.md#network-diagram), [media/](media) | | Seasonal Audio | Cuckoo clock with Halloween and Christmas sound packs. | [![YAML source: CucKoo_Clock](https://img.shields.io/static/v1?label=YAML&message=CucKoo_Clock&color=lightgrey&logo=github&logoColor=181717)](automation/System/CucKoo_Clock.yaml) | -The latest walkthrough shows the HVAC maintenance loop in Home Assistant. [![Watch on YouTube](https://img.shields.io/badge/Watch-YouTube-FF0000?logo=youtube&logoColor=white)](https://youtu.be/nScl2JxYSB8). YAML lives in [![YAML source: climate](https://img.shields.io/static/v1?label=YAML&message=climate&color=lightgrey&logo=github&logoColor=181717)](packages/climate.yaml) and [![YAML source: water_sections](https://img.shields.io/static/v1?label=YAML&message=water_sections&color=lightgrey&logo=github&logoColor=181717)](dashboards/overview/partials/water_sections.yaml), with background in [issue #273](https://github.com/CCOSTAN/Home-AssistantConfig/issues/273). The earlier Powerwall, Codex reset-credit, leak-detection, kiosk, and LLM Vision walkthroughs are still available with examples in [![YAML source: powerwall](https://img.shields.io/static/v1?label=YAML&message=powerwall&color=lightgrey&logo=github&logoColor=181717)](packages/powerwall.yaml), [![YAML source: bearclaw](https://img.shields.io/static/v1?label=YAML&message=bearclaw&color=lightgrey&logo=github&logoColor=181717)](packages/bearclaw.yaml), [![YAML source: phynplus](https://img.shields.io/static/v1?label=YAML&message=phynplus&color=lightgrey&logo=github&logoColor=181717)](packages/phynplus.yaml), [![YAML source: kiosk_tablet](https://img.shields.io/static/v1?label=YAML&message=kiosk_tablet&color=lightgrey&logo=github&logoColor=181717)](packages/kiosk_tablet.yaml), and [![YAML source: llmvision](https://img.shields.io/static/v1?label=YAML&message=llmvision&color=lightgrey&logo=github&logoColor=181717)](packages/llmvision.yaml). +The latest walkthrough shows a water softener salt maintenance automation built around a reusable Home Assistant webhook, duplicate-safe helper updates, Activity Feed logging, and dashboard-ready template sensors. [![Watch on YouTube](https://img.shields.io/badge/Watch-YouTube-FF0000?logo=youtube&logoColor=white)](https://youtu.be/_OqTv9i-jAs) [![vCloudInfo Blog Post](https://img.shields.io/static/v1?label=vCloudInfo&message=Blog%20Post&color=21759B&logo=wordpress&logoColor=white)](https://www.vcloudinfo.com/2026/07/home-assistant-water-softener-salt-automation.html). YAML lives in [![YAML source: maintenance_log](https://img.shields.io/static/v1?label=YAML&message=maintenance_log&color=lightgrey&logo=github&logoColor=181717)](packages/maintenance_log.yaml), [![YAML source: 09_salt_trends](https://img.shields.io/static/v1?label=YAML&message=09_salt_trends&color=lightgrey&logo=github&logoColor=181717)](dashboards/overview/views/09_salt_trends.yaml), and [![YAML source: water_sections](https://img.shields.io/static/v1?label=YAML&message=water_sections&color=lightgrey&logo=github&logoColor=181717)](dashboards/overview/partials/water_sections.yaml). The earlier HVAC, Powerwall, Codex reset-credit, leak-detection, kiosk, and LLM Vision walkthroughs are still available with examples in [![YAML source: climate](https://img.shields.io/static/v1?label=YAML&message=climate&color=lightgrey&logo=github&logoColor=181717)](packages/climate.yaml), [![YAML source: powerwall](https://img.shields.io/static/v1?label=YAML&message=powerwall&color=lightgrey&logo=github&logoColor=181717)](packages/powerwall.yaml), [![YAML source: bearclaw](https://img.shields.io/static/v1?label=YAML&message=bearclaw&color=lightgrey&logo=github&logoColor=181717)](packages/bearclaw.yaml), [![YAML source: phynplus](https://img.shields.io/static/v1?label=YAML&message=phynplus&color=lightgrey&logo=github&logoColor=181717)](packages/phynplus.yaml), [![YAML source: kiosk_tablet](https://img.shields.io/static/v1?label=YAML&message=kiosk_tablet&color=lightgrey&logo=github&logoColor=181717)](packages/kiosk_tablet.yaml), and [![YAML source: llmvision](https://img.shields.io/static/v1?label=YAML&message=llmvision&color=lightgrey&logo=github&logoColor=181717)](packages/llmvision.yaml). ### Gear tied to these automations (affiliate links) Only including devices that have active references in the files above or an open implementation issue. @@ -63,7 +63,7 @@ Only including devices that have active references in the files above or an open | August smart lock | Front-door lock status + remote control – [![YAML source: august](https://img.shields.io/static/v1?label=YAML&message=august&color=lightgrey&logo=github&logoColor=181717)](packages/august.yaml) | [![Buy](https://img.shields.io/badge/Buy-August%20Lock-orange?logo=amazon)](https://amzn.to/48jVzZ3) | | Amazon Echo Show | Pops up the front doorbell camera when the August lock unlocks – [![YAML source: august](https://img.shields.io/static/v1?label=YAML&message=august&color=lightgrey&logo=github&logoColor=181717)](packages/august.yaml) | [![Buy](https://img.shields.io/badge/Buy-Echo%20Show-orange?logo=amazon)](https://amzn.to/4ptA3YO) | | Phyn Plus water shutoff | Leak detection + auto shutoff - [![YAML source: phynplus](https://img.shields.io/static/v1?label=YAML&message=phynplus&color=lightgrey&logo=github&logoColor=181717)](packages/phynplus.yaml), [![Watch on YouTube](https://img.shields.io/badge/Watch-YouTube-FF0000?logo=youtube&logoColor=white)](https://youtu.be/xbhgWnomFYI), [![vCloudInfo Blog Post](https://img.shields.io/static/v1?label=vCloudInfo&message=Blog%20Post&color=21759B&logo=wordpress&logoColor=white)](https://www.vcloudinfo.com/2026/06/home-assistant-leak-detection-automations.html), [![vCloudInfo Blog Post](https://img.shields.io/static/v1?label=vCloudInfo&message=Blog%20Post&color=21759B&logo=wordpress&logoColor=white)](https://www.vcloudinfo.com/2020/05/phyn-plus-smart-water-shutoff-device.html) | [![Buy](https://img.shields.io/badge/Buy-Phyn%20Plus-orange?logo=amazon)](https://amzn.to/2Zy3sbJ) | -| Rachio sprinkler controller | Rain-skips and seasonal watering – [![YAML source: rachio](https://img.shields.io/static/v1?label=YAML&message=rachio&color=lightgrey&logo=github&logoColor=181717)](packages/rachio.yaml) | [![Buy](https://img.shields.io/badge/Buy-Rachio-orange?logo=amazon)](https://amzn.to/2eoPKBW) | +| Rachio sprinkler controller | Rain-skips, active-zone status, trigger-derived last-run history, and dashboard controls – [![YAML source: rachio](https://img.shields.io/static/v1?label=YAML&message=rachio&color=lightgrey&logo=github&logoColor=181717)](packages/rachio.yaml), [![YAML source: 10_sprinklers](https://img.shields.io/static/v1?label=YAML&message=10_sprinklers&color=lightgrey&logo=github&logoColor=181717)](dashboards/overview/views/10_sprinklers.yaml), [![YAML source: water_sections](https://img.shields.io/static/v1?label=YAML&message=water_sections&color=lightgrey&logo=github&logoColor=181717)](dashboards/overview/partials/water_sections.yaml) | [![Buy](https://img.shields.io/badge/Buy-Rachio-orange?logo=amazon)](https://amzn.to/2eoPKBW) | | Tesla Powerwall 2 | Grid-outage alerts, charging watchdog, and load-shed automations - [![YAML source: powerwall](https://img.shields.io/static/v1?label=YAML&message=powerwall&color=lightgrey&logo=github&logoColor=181717)](packages/powerwall.yaml), [![Watch on YouTube](https://img.shields.io/badge/Watch-YouTube-FF0000?logo=youtube&logoColor=white)](https://youtu.be/hR_0lFEE2bA), [![vCloudInfo Blog Post](https://img.shields.io/static/v1?label=vCloudInfo&message=Blog%20Post&color=21759B&logo=wordpress&logoColor=white)](https://www.vcloudinfo.com/2026/06/tesla-powerwall-home-assistant-watchdog.html) | [![Buy](https://img.shields.io/badge/Buy-Powerwall-orange?logo=tesla)](https://amzn.to/3UM4BZ5) | | Google Nest thermostat | HVAC schedules plus runtime-based filter reminders and condenser-line cleanout tracking - [![YAML source: climate](https://img.shields.io/static/v1?label=YAML&message=climate&color=lightgrey&logo=github&logoColor=181717)](packages/climate.yaml), [![YAML source: water_sections](https://img.shields.io/static/v1?label=YAML&message=water_sections&color=lightgrey&logo=github&logoColor=181717)](dashboards/overview/partials/water_sections.yaml), [![Watch on YouTube](https://img.shields.io/badge/Watch-YouTube-FF0000?logo=youtube&logoColor=white)](https://youtu.be/nScl2JxYSB8) | [![Buy](https://img.shields.io/badge/Buy-Nest%20Thermostat-orange?logo=google)](https://amzn.to/4olpINw) | | NodeMCU motion sensor | Office motion lighting + comfort scenes – [![YAML source: office_motion](https://img.shields.io/static/v1?label=YAML&message=office_motion&color=lightgrey&logo=github&logoColor=181717)](packages/office_motion.yaml) | [![Buy](https://img.shields.io/badge/Buy-Motion%20Node-orange?logo=amazon)](https://amzn.to/2oUgj5i) | diff --git a/config/dashboards/overview/partials/water_sections.yaml b/config/dashboards/overview/partials/water_sections.yaml index 8e8d1c60..79e17989 100644 --- a/config/dashboards/overview/partials/water_sections.yaml +++ b/config/dashboards/overview/partials/water_sections.yaml @@ -8,7 +8,10 @@ # ------------------------------------------------------------------- # Notes: Extracted from config/dashboards/overview/views/07_water.yaml key `sections`. # Notes: Includes water and home utility telemetry (filters, power, hot water). -# Video: https://youtu.be/nScl2JxYSB8 +# Video: HVAC maintenance dashboard - https://youtu.be/nScl2JxYSB8 +# Video: Water softener salt tracking - https://youtu.be/_OqTv9i-jAs +# Blog: https://www.vcloudinfo.com/2026/07/home-assistant-water-softener-salt-automation.html +# Notes: Sprinkler overview links to config/dashboards/overview/views/10_sprinklers.yaml. ###################################################################### - cards: @@ -141,6 +144,62 @@ action: none layout: horizontal fill_container: true + # Fallback card: Mushroom matches the existing Home Maintenance overview tile style. + - type: custom:mushroom-template-card + primary: >- + {% set status = states('sensor.rachio_controller_status') %} + {% set active = states('sensor.rachio_active_zone') %} + {% if status == 'watering' %} + Sprinklers: {{ active }} + {% elif status == 'rain_delay' %} + Sprinklers: rain delay + {% elif status == 'standby' %} + Sprinklers: standby + {% elif status == 'unavailable' %} + Sprinklers: unavailable + {% else %} + Sprinklers: ready + {% endif %} + secondary: >- + {% set zone = states('sensor.rachio_last_run_summary') %} + {% set completed = state_attr('sensor.rachio_last_run_summary', 'completed_at') %} + {% set duration = state_attr('sensor.rachio_last_run_summary', 'duration_min') %} + {% if zone not in ['unknown', 'unavailable', 'none', ''] and completed not in ['unknown', 'unavailable', 'none', '', none] %} + {% set when = as_datetime(completed).strftime('%b %d, %I:%M %p') | replace(' 0', ' ') %} + Last run: {{ zone }}{% if duration not in ['unknown', 'unavailable', 'none', '', none] %}, {{ duration }} min{% endif %} at {{ when }} + {% else %} + {{ state_attr('sensor.rachio_controller_status', 'schedule_summary') | default('No completed run captured yet.', true) }} + {% endif %} + icon: mdi:sprinkler-variant + entity: sensor.rachio_controller_status + icon_color: >- + {% set status = states('sensor.rachio_controller_status') %} + {% if status == 'watering' %} + green + {% elif status in ['rain_delay', 'standby'] %} + blue + {% elif status == 'unavailable' %} + red + {% else %} + teal + {% endif %} + tap_action: + action: navigate + navigation_path: /lovelace/sprinklers + hold_action: + action: more-info + double_tap_action: + action: none + layout: horizontal + fill_container: true + - type: tile + entity: switch.carlo_rachio_rain_delay + name: Sprinkler rain delay + tap_action: + action: navigate + navigation_path: /lovelace/sprinklers + hold_action: + action: more-info - type: custom:mushroom-template-card primary: >- {% set days = states('sensor.water_softener_salt_days_since_last_add') | float(0) -%} diff --git a/config/dashboards/overview/views/09_salt_trends.yaml b/config/dashboards/overview/views/09_salt_trends.yaml index 26860379..8447bf7a 100644 --- a/config/dashboards/overview/views/09_salt_trends.yaml +++ b/config/dashboards/overview/views/09_salt_trends.yaml @@ -6,6 +6,8 @@ # Overview Subview - Salt Trends # Year-scale water softener salt maintenance history. # ------------------------------------------------------------------- +# Video: https://youtu.be/_OqTv9i-jAs +# Blog: https://www.vcloudinfo.com/2026/07/home-assistant-water-softener-salt-automation.html # Notes: Linked from the Home Maintenance water view salt tiles. # Notes: Uses native history graph cards because more-info dialogs do not expose a configurable default time window. ###################################################################### diff --git a/config/dashboards/overview/views/10_sprinklers.yaml b/config/dashboards/overview/views/10_sprinklers.yaml new file mode 100644 index 00000000..aae29cfc --- /dev/null +++ b/config/dashboards/overview/views/10_sprinklers.yaml @@ -0,0 +1,255 @@ +###################################################################### +# @CCOSTAN - Follow Me on X +# For more info visit https://www.vcloudinfo.com/click-here +# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig +# ------------------------------------------------------------------- +# Overview Subview - Sprinklers +# Rachio-backed sprinkler status, zone history, and watering controls. +# ------------------------------------------------------------------- +# Notes: Linked from the Home Maintenance water view sprinkler tiles. +# Notes: Zone last-run values come from trigger-based template sensors in config/packages/rachio.yaml. +###################################################################### + +title: Sprinklers +path: sprinklers +subview: true +back_path: /lovelace/water +type: sections +max_columns: 3 +sections: +- type: grid + column_span: 3 + cards: + - type: heading + heading: Sprinklers + heading_style: title + # Fallback card: Mushroom is already the established Home Maintenance summary style. + - type: custom:mushroom-template-card + primary: >- + {% set status = states('sensor.rachio_controller_status') %} + {% set active = states('sensor.rachio_active_zone') %} + {% if status == 'watering' %} + Watering {{ active }} + {% elif status == 'rain_delay' %} + Rain delay is active + {% elif status == 'standby' %} + Controller is in standby + {% elif status == 'unavailable' %} + Sprinklers are unavailable + {% else %} + Sprinklers are ready + {% endif %} + secondary: >- + {% set last = states('sensor.rachio_last_run_summary') %} + {% set completed = state_attr('sensor.rachio_last_run_summary', 'completed_at') %} + {% set duration = state_attr('sensor.rachio_last_run_summary', 'duration_min') %} + {% if last not in ['unknown', 'unavailable', 'none', ''] and completed not in ['unknown', 'unavailable', 'none', '', none] %} + {% set when = as_datetime(completed).strftime('%b %d, %I:%M %p') | replace(' 0', ' ') %} + Last run: {{ last }} for {{ duration }} min at {{ when }} + {% else %} + {{ state_attr('sensor.rachio_controller_status', 'schedule_summary') | default('No completed run captured yet.', true) }} + {% endif %} + icon: mdi:sprinkler-variant + entity: sensor.rachio_controller_status + icon_color: >- + {% set status = states('sensor.rachio_controller_status') %} + {% if status == 'watering' %} + green + {% elif status in ['rain_delay', 'standby'] %} + blue + {% elif status == 'unavailable' %} + red + {% else %} + teal + {% endif %} + tap_action: + action: more-info + hold_action: + action: none + double_tap_action: + action: none + layout: horizontal + fill_container: true + - type: tile + entity: switch.daily_flex_watering_schedule + name: Flex watering schedule + hold_action: + action: more-info + - type: tile + entity: switch.carlo_rachio_rain_delay + name: Rain delay + hold_action: + action: more-info + - type: tile + entity: switch.carlo_rachio_in_standby_mode + name: Standby mode + hold_action: + action: more-info + - type: tile + entity: script.rachio_pause_watering_30 + name: Pause 30 minutes + icon: mdi:pause-circle + tap_action: + action: call-service + service: script.rachio_pause_watering_30 + - type: tile + entity: script.rachio_resume_watering + name: Resume watering + icon: mdi:play-circle + tap_action: + action: call-service + service: script.rachio_resume_watering + - type: tile + entity: script.rachio_stop_watering + name: Stop watering + icon: mdi:stop-circle + tap_action: + action: call-service + service: script.rachio_stop_watering +- type: grid + column_span: 3 + cards: + - type: heading + heading: Zones + heading_style: subtitle + # Fallback card: Mushroom template card combines live zone state and the paired last-run sensor in one compact tile. + - type: custom:mushroom-template-card + primary: Front Lawn + secondary: >- + {% set completed = state_attr('sensor.rachio_front_lawn_last_run', 'completed_at') %} + {% set minutes = states('sensor.rachio_front_lawn_last_run') %} + {% if is_state('switch.front_lawn', 'on') %} + {{ state_attr('switch.front_lawn', 'Summary') | default('Watering now', true) }} + {% elif completed not in ['unknown', 'unavailable', 'none', '', none] %} + {% set when = as_datetime(completed).strftime('%b %d, %I:%M %p') | replace(' 0', ' ') %} + Last run: {{ when }} for {{ minutes }} min + {% else %} + {{ state_attr('switch.front_lawn', 'Summary') | default('No completed run captured yet.', true) }} + {% endif %} + icon: mdi:sprinkler-variant + entity: switch.front_lawn + icon_color: "{% if is_state('switch.front_lawn', 'on') %}green{% elif is_state('switch.front_lawn', 'unavailable') %}red{% else %}blue{% endif %}" + tap_action: + action: more-info + hold_action: + action: more-info + entity: sensor.rachio_front_lawn_last_run + double_tap_action: + action: none + layout: horizontal + fill_container: true + # Fallback card: same compact zone-state and last-run pairing for this zone. + - type: custom:mushroom-template-card + primary: Front Hedges + secondary: >- + {% set completed = state_attr('sensor.rachio_front_hedges_last_run', 'completed_at') %} + {% set minutes = states('sensor.rachio_front_hedges_last_run') %} + {% if is_state('switch.front_hedges_right_side_house', 'on') %} + {{ state_attr('switch.front_hedges_right_side_house', 'Summary') | default('Watering now', true) }} + {% elif completed not in ['unknown', 'unavailable', 'none', '', none] %} + {% set when = as_datetime(completed).strftime('%b %d, %I:%M %p') | replace(' 0', ' ') %} + Last run: {{ when }} for {{ minutes }} min + {% else %} + {{ state_attr('switch.front_hedges_right_side_house', 'Summary') | default('No completed run captured yet.', true) }} + {% endif %} + icon: mdi:sprinkler-variant + entity: switch.front_hedges_right_side_house + icon_color: "{% if is_state('switch.front_hedges_right_side_house', 'on') %}green{% elif is_state('switch.front_hedges_right_side_house', 'unavailable') %}red{% else %}blue{% endif %}" + tap_action: + action: more-info + hold_action: + action: more-info + entity: sensor.rachio_front_hedges_last_run + double_tap_action: + action: none + layout: horizontal + fill_container: true + # Fallback card: same compact zone-state and last-run pairing for this zone. + - type: custom:mushroom-template-card + primary: Left Side House + secondary: >- + {% set completed = state_attr('sensor.rachio_left_side_house_last_run', 'completed_at') %} + {% set minutes = states('sensor.rachio_left_side_house_last_run') %} + {% if is_state('switch.left_side_house', 'on') %} + {{ state_attr('switch.left_side_house', 'Summary') | default('Watering now', true) }} + {% elif completed not in ['unknown', 'unavailable', 'none', '', none] %} + {% set when = as_datetime(completed).strftime('%b %d, %I:%M %p') | replace(' 0', ' ') %} + Last run: {{ when }} for {{ minutes }} min + {% else %} + {{ state_attr('switch.left_side_house', 'Summary') | default('No completed run captured yet.', true) }} + {% endif %} + icon: mdi:sprinkler-variant + entity: switch.left_side_house + icon_color: "{% if is_state('switch.left_side_house', 'on') %}green{% elif is_state('switch.left_side_house', 'unavailable') %}red{% else %}blue{% endif %}" + tap_action: + action: more-info + hold_action: + action: more-info + entity: sensor.rachio_left_side_house_last_run + double_tap_action: + action: none + layout: horizontal + fill_container: true + # Fallback card: same compact zone-state and last-run pairing for this zone. + - type: custom:mushroom-template-card + primary: Backyard Shrubs + secondary: >- + {% set completed = state_attr('sensor.rachio_backyard_shrubs_last_run', 'completed_at') %} + {% set minutes = states('sensor.rachio_backyard_shrubs_last_run') %} + {% if is_state('switch.backyard_shrubs', 'on') %} + {{ state_attr('switch.backyard_shrubs', 'Summary') | default('Watering now', true) }} + {% elif completed not in ['unknown', 'unavailable', 'none', '', none] %} + {% set when = as_datetime(completed).strftime('%b %d, %I:%M %p') | replace(' 0', ' ') %} + Last run: {{ when }} for {{ minutes }} min + {% else %} + {{ state_attr('switch.backyard_shrubs', 'Summary') | default('No completed run captured yet.', true) }} + {% endif %} + icon: mdi:sprinkler-variant + entity: switch.backyard_shrubs + icon_color: "{% if is_state('switch.backyard_shrubs', 'on') %}green{% elif is_state('switch.backyard_shrubs', 'unavailable') %}red{% else %}blue{% endif %}" + tap_action: + action: more-info + hold_action: + action: more-info + entity: sensor.rachio_backyard_shrubs_last_run + double_tap_action: + action: none + layout: horizontal + fill_container: true +- type: grid + column_span: 3 + cards: + - type: heading + heading: Last Run History + heading_style: subtitle + # Fallback card: native entities card exposes attributes without adding more template helpers. + - type: entities + title: Last Completed Run + entities: + - entity: sensor.rachio_last_run_summary + name: Zone + - type: attribute + entity: sensor.rachio_last_run_summary + attribute: duration_min + name: Duration + suffix: min + - type: attribute + entity: sensor.rachio_last_run_summary + attribute: completed_at + name: Completed + - entity: sensor.rachio_active_zone + name: Active zone + # Fallback card: native history graph gives sparse duration history without another custom graph template. + - type: history-graph + title: Zone Run Durations - Last 90 Days + hours_to_show: 2160 + entities: + - entity: sensor.rachio_front_lawn_last_run + name: Front Lawn + - entity: sensor.rachio_front_hedges_last_run + name: Front Hedges + - entity: sensor.rachio_left_side_house_last_run + name: Left Side House + - entity: sensor.rachio_backyard_shrubs_last_run + name: Backyard Shrubs +cards: [] diff --git a/config/packages/README.md b/config/packages/README.md index a686a577..67142bb3 100755 --- a/config/packages/README.md +++ b/config/packages/README.md @@ -63,8 +63,9 @@ Live collection of plug-and-play Home Assistant packages. Each YAML file in this | [![YAML source: telegram_bot](https://img.shields.io/static/v1?label=YAML&message=telegram_bot&color=lightgrey&logo=github&logoColor=181717)](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` | | [![YAML source: phynplus](https://img.shields.io/static/v1?label=YAML&message=phynplus&color=lightgrey&logo=github&logoColor=181717)](phynplus.yaml) | Phyn shutoff automations with leak-test guard, Activity Feed context, Repairs tracking, and critical push recovery when the valve closes. [![Watch on YouTube](https://img.shields.io/badge/Watch-YouTube-FF0000?logo=youtube&logoColor=white)](https://youtu.be/xbhgWnomFYI) | `valve.phyn_shutoff_valve`, `binary_sensor.phyn_leak_test_running`, `script.phyn_send_actionable_leak_notification`, `repairs.create` | | [![YAML source: water_delivery](https://img.shields.io/static/v1?label=YAML&message=water_delivery&color=lightgrey&logo=github&logoColor=181717)](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` | +| [![YAML source: rachio](https://img.shields.io/static/v1?label=YAML&message=rachio&color=lightgrey&logo=github&logoColor=181717)](rachio.yaml) + [![YAML source: 10_sprinklers](https://img.shields.io/static/v1?label=YAML&message=10_sprinklers&color=lightgrey&logo=github&logoColor=181717)](../dashboards/overview/views/10_sprinklers.yaml) | Rachio sprinkler status with active-zone summaries, trigger-derived last-run duration sensors, dashboard controls, and Activity Feed audit logging without input_* helpers. | `sensor.rachio_controller_status`, `sensor.rachio_last_run_summary`, `sensor.rachio_*_last_run`, `script.rachio_*`, `automation.rachio_activity_feed` | | [![YAML source: vacation_mode](https://img.shields.io/static/v1?label=YAML&message=vacation_mode&color=lightgrey&logo=github&logoColor=181717)](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` | -| [![YAML source: maintenance_log](https://img.shields.io/static/v1?label=YAML&message=maintenance_log&color=lightgrey&logo=github&logoColor=181717)](maintenance_log.yaml) | Joanna maintenance webhook ingest for water softener salt with idempotent event handling, Activity feed logging, and parser-safe refill cadence history. | `automation.maintenance_log_joanna_webhook_ingest`, `sensor.water_softener_salt_average_days_between_refills`, `sensor.water_softener_salt_refill_count`, `sensor.water_softener_salt_total_added` | +| [![YAML source: maintenance_log](https://img.shields.io/static/v1?label=YAML&message=maintenance_log&color=lightgrey&logo=github&logoColor=181717)](maintenance_log.yaml) | Webhook-based water softener salt maintenance logging with idempotent event handling, Activity Feed logging, parser-safe refill cadence history, and dashboard-ready template sensors. [![Watch on YouTube](https://img.shields.io/badge/Watch-YouTube-FF0000?logo=youtube&logoColor=white)](https://youtu.be/_OqTv9i-jAs) [![vCloudInfo Blog Post](https://img.shields.io/static/v1?label=vCloudInfo&message=Blog%20Post&color=21759B&logo=wordpress&logoColor=white)](https://www.vcloudinfo.com/2026/07/home-assistant-water-softener-salt-automation.html) | `automation.maintenance_log_joanna_webhook_ingest`, `sensor.water_softener_salt_average_days_between_refills`, `sensor.water_softener_salt_refill_count`, `sensor.water_softener_salt_total_added` | | [![YAML source: kiosk_tablet](https://img.shields.io/static/v1?label=YAML&message=kiosk_tablet&color=lightgrey&logo=github&logoColor=181717)](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. [![Watch on YouTube](https://img.shields.io/badge/Watch-YouTube-FF0000?logo=youtube&logoColor=white)](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` | | [![YAML source: powerwall](https://img.shields.io/static/v1?label=YAML&message=powerwall&color=lightgrey&logo=github&logoColor=181717)](powerwall.yaml) | Track Tesla Powerwall grid status, push live outage tracking to mobile targets, shed loads automatically when off-grid, and alert if the Powerwall stays low after grid power returns. [![Watch on YouTube](https://img.shields.io/badge/Watch-YouTube-FF0000?logo=youtube&logoColor=white)](https://youtu.be/hR_0lFEE2bA) [![vCloudInfo Blog Post](https://img.shields.io/static/v1?label=vCloudInfo&message=Blog%20Post&color=21759B&logo=wordpress&logoColor=white)](https://www.vcloudinfo.com/2026/06/tesla-powerwall-home-assistant-watchdog.html) | `binary_sensor.powerwall_grid_status`, `sensor.powerwall_*`, `script.notify_live_activity`, `repairs.create` | | [![YAML source: tesla_model_y](https://img.shields.io/static/v1?label=YAML&message=tesla_model_y&color=lightgrey&logo=github&logoColor=181717)](tesla_model_y.yaml) | Remind the garage and parents to plug in the Model Y after the large garage door closes with a low battery, charging still off, both parents home, and a 24-hour mobile snooze available from the push reminder. | `sensor.spaceship_battery_level`, `switch.spaceship_charge`, `person.carlo`, `person.stacey`, `cover.large_garage_door`, `input_datetime.tesla_model_y_last_garage_close`, `input_datetime.tesla_model_y_plug_in_snooze_until`, `notify.alexa_media_garage`, `script.notify_engine_two_button` | @@ -107,6 +108,7 @@ When a package has a dedicated blog post or video, I link it right inside the YA | [![YAML source: kiosk_tablet](https://img.shields.io/static/v1?label=YAML&message=kiosk_tablet&color=lightgrey&logo=github&logoColor=181717)](kiosk_tablet.yaml) + [dashboards/kiosk](../dashboards/kiosk) | Fire tablet camera kiosk with a purpose-built dashboard, Fully Kiosk recovery, bedtime dimming, and screensaver watchdog behavior. | [![Watch on YouTube](https://img.shields.io/badge/Watch-YouTube-FF0000?logo=youtube&logoColor=white)](https://youtu.be/ChgEu0IDWzc) · [![vCloudInfo Blog Post](https://img.shields.io/static/v1?label=vCloudInfo&message=Blog%20Post&color=21759B&logo=wordpress&logoColor=white)](https://www.vcloudinfo.com/2017/08/project-update-visualization-of-home.html) | | [![YAML source: tesla_model_y](https://img.shields.io/static/v1?label=YAML&message=tesla_model_y&color=lightgrey&logo=github&logoColor=181717)](tesla_model_y.yaml) | Garage-close timestamp used as a physical arrival signal for low-battery plug-in reminders. | [![Watch on YouTube](https://img.shields.io/badge/Watch-YouTube-FF0000?logo=youtube&logoColor=white)](https://youtu.be/wFO0H5zgnzk) · [![vCloudInfo Blog Post](https://img.shields.io/static/v1?label=vCloudInfo&message=Blog%20Post&color=21759B&logo=wordpress&logoColor=white)](https://www.vcloudinfo.com/2026/05/home-assistant-garage-automations-arrival-alerts-tesla.html) | | [![YAML source: llmvision](https://img.shields.io/static/v1?label=YAML&message=llmvision&color=lightgrey&logo=github&logoColor=181717)](llmvision.yaml) | LLM Vision package reminder flow that turns a front-door camera event into a stored package-present state and phone alert. | [![Watch on YouTube](https://img.shields.io/badge/Watch-YouTube-FF0000?logo=youtube&logoColor=white)](https://youtu.be/nAhCezFetvI) | +| [![YAML source: maintenance_log](https://img.shields.io/static/v1?label=YAML&message=maintenance_log&color=lightgrey&logo=github&logoColor=181717)](maintenance_log.yaml) + [![YAML source: 09_salt_trends](https://img.shields.io/static/v1?label=YAML&message=09_salt_trends&color=lightgrey&logo=github&logoColor=181717)](../dashboards/overview/views/09_salt_trends.yaml) + [![YAML source: water_sections](https://img.shields.io/static/v1?label=YAML&message=water_sections&color=lightgrey&logo=github&logoColor=181717)](../dashboards/overview/partials/water_sections.yaml) | Water softener salt maintenance flow with a reusable webhook, duplicate protection, helper-backed history, template sensors, and Salt Trends dashboard views. | [![Watch on YouTube](https://img.shields.io/badge/Watch-YouTube-FF0000?logo=youtube&logoColor=white)](https://youtu.be/_OqTv9i-jAs) · [![vCloudInfo Blog Post](https://img.shields.io/static/v1?label=vCloudInfo&message=Blog%20Post&color=21759B&logo=wordpress&logoColor=white)](https://www.vcloudinfo.com/2026/07/home-assistant-water-softener-salt-automation.html) · [Issue #1816](https://github.com/CCOSTAN/Home-AssistantConfig/issues/1816) | | [![YAML source: climate](https://img.shields.io/static/v1?label=YAML&message=climate&color=lightgrey&logo=github&logoColor=181717)](climate.yaml) + [![YAML source: water_sections](https://img.shields.io/static/v1?label=YAML&message=water_sections&color=lightgrey&logo=github&logoColor=181717)](../dashboards/overview/partials/water_sections.yaml) | HVAC blower-failure evidence, runtime-based AC filter reminders, reset actions, and 360-day condenser-line cleanout reminders. | [![Watch on YouTube](https://img.shields.io/badge/Watch-YouTube-FF0000?logo=youtube&logoColor=white)](https://youtu.be/nScl2JxYSB8) · [Issue #273](https://github.com/CCOSTAN/Home-AssistantConfig/issues/273) | | [![YAML source: climate](https://img.shields.io/static/v1?label=YAML&message=climate&color=lightgrey&logo=github&logoColor=181717)](climate.yaml) + [![YAML source: printer](https://img.shields.io/static/v1?label=YAML&message=printer&color=lightgrey&logo=github&logoColor=181717)](printer.yaml) + [![YAML source: vacation_mode](https://img.shields.io/static/v1?label=YAML&message=vacation_mode&color=lightgrey&logo=github&logoColor=181717)](vacation_mode.yaml) | Snoozeable Home Assistant mobile notifications for AC filters, printer ink, and Vacation Mode missed-visit reminders. | [![Watch on YouTube](https://img.shields.io/badge/Watch-YouTube-FF0000?logo=youtube&logoColor=white)](https://youtu.be/y47KSflS1aw) · [![vCloudInfo Blog Post](https://img.shields.io/static/v1?label=vCloudInfo&message=Blog%20Post&color=21759B&logo=wordpress&logoColor=white)](https://www.vcloudinfo.com/2026/06/home-assistant-notification-snooze-buttons.html) · [![vCloudInfo Blog Post](https://img.shields.io/static/v1?label=vCloudInfo&message=Blog%20Post&color=21759B&logo=wordpress&logoColor=white)](https://www.vcloudinfo.com/2020/11/home-assistant-ios-actionable-notifications-example.html) | | [![YAML source: holiday](https://img.shields.io/static/v1?label=YAML&message=holiday&color=lightgrey&logo=github&logoColor=181717)](holiday.yaml) | How the holiday/flag sensor works and drives lighting playlists. | [![vCloudInfo Blog Post](https://img.shields.io/static/v1?label=vCloudInfo&message=Blog%20Post&color=21759B&logo=wordpress&logoColor=white)](https://www.vcloudinfo.com/2019/02/breaking-down-the-flag-sensor-in-home-assistant.html) | @@ -130,7 +132,7 @@ These are the devices that power the packages above, plus tracked hardware imple | Amazon Echo Show | Pops up the front doorbell camera when the August lock unlocks. | [![YAML source: august](https://img.shields.io/static/v1?label=YAML&message=august&color=lightgrey&logo=github&logoColor=181717)](august.yaml) | [![Buy](https://img.shields.io/badge/Buy-Echo%20Show-orange?logo=amazon)](https://amzn.to/4ptA3YO) | | Amazon Echo Glow | [![GitHub issue: 1827](https://img.shields.io/static/v1?label=Issue&message=%231827&color=lightgrey&logo=github&logoColor=181717)](https://github.com/CCOSTAN/Home-AssistantConfig/issues/1827) | Visual notification light candidate for Home Assistant status cues. | [![Buy](https://img.shields.io/badge/Buy-Echo%20Glow-orange?logo=amazon)](https://amzn.to/4wsGUoU) | | Phyn Plus water shutoff | [![YAML source: phynplus](https://img.shields.io/static/v1?label=YAML&message=phynplus&color=lightgrey&logo=github&logoColor=181717)](phynplus.yaml) | Leak events trigger valve closes + critical push notifications. [![Watch on YouTube](https://img.shields.io/badge/Watch-YouTube-FF0000?logo=youtube&logoColor=white)](https://youtu.be/xbhgWnomFYI) and [![vCloudInfo Blog Post](https://img.shields.io/static/v1?label=vCloudInfo&message=Blog%20Post&color=21759B&logo=wordpress&logoColor=white)](https://www.vcloudinfo.com/2026/06/home-assistant-leak-detection-automations.html). | [![Buy](https://img.shields.io/badge/Buy-Phyn%20Plus-orange?logo=amazon)](https://amzn.to/2Zy3sbJ) | -| Rachio sprinkler controller | [![YAML source: rachio](https://img.shields.io/static/v1?label=YAML&message=rachio&color=lightgrey&logo=github&logoColor=181717)](rachio.yaml) | Rain skips and seasonal watering adjustments happen automatically. | [![Buy](https://img.shields.io/badge/Buy-Rachio-orange?logo=amazon)](https://amzn.to/2eoPKBW) | +| Rachio sprinkler controller | [![YAML source: rachio](https://img.shields.io/static/v1?label=YAML&message=rachio&color=lightgrey&logo=github&logoColor=181717)](rachio.yaml) + [![YAML source: 10_sprinklers](https://img.shields.io/static/v1?label=YAML&message=10_sprinklers&color=lightgrey&logo=github&logoColor=181717)](../dashboards/overview/views/10_sprinklers.yaml) + [![YAML source: water_sections](https://img.shields.io/static/v1?label=YAML&message=water_sections&color=lightgrey&logo=github&logoColor=181717)](../dashboards/overview/partials/water_sections.yaml) | Rain skips, active-zone status, trigger-derived last-run history, and dashboard controls. | [![Buy](https://img.shields.io/badge/Buy-Rachio-orange?logo=amazon)](https://amzn.to/2eoPKBW) | | Tesla Powerwall 2 | [![YAML source: powerwall](https://img.shields.io/static/v1?label=YAML&message=powerwall&color=lightgrey&logo=github&logoColor=181717)](powerwall.yaml) | Grid outages kick off status pings, load-shed scripts, and low-charge charging watchdog alerts. [![Watch on YouTube](https://img.shields.io/badge/Watch-YouTube-FF0000?logo=youtube&logoColor=white)](https://youtu.be/hR_0lFEE2bA) | [![Buy](https://img.shields.io/badge/Buy-Powerwall-orange?logo=tesla)](https://amzn.to/3UM4BZ5) | | Google Nest thermostat | [![YAML source: climate](https://img.shields.io/static/v1?label=YAML&message=climate&color=lightgrey&logo=github&logoColor=181717)](climate.yaml) | Presence/weather/grid-aware cooling targets, humidity pulses, runtime filter reminders, and condenser-line cleanout tracking. [![Watch on YouTube](https://img.shields.io/badge/Watch-YouTube-FF0000?logo=youtube&logoColor=white)](https://youtu.be/nScl2JxYSB8) | [![Buy](https://img.shields.io/badge/Buy-Nest%20Thermostat-orange?logo=google)](https://amzn.to/4olpINw) | | Dreame/Neato vacuum | [![YAML source: vacuum](https://img.shields.io/static/v1?label=YAML&message=vacuum&color=lightgrey&logo=github&logoColor=181717)](vacuum.yaml) | Away-only room queues, sweep/mop phases, Alexa room cleans, rescue notifications, and voice callouts. [![Watch on YouTube](https://img.shields.io/badge/Watch-YouTube-FF0000?logo=youtube&logoColor=white)](https://youtu.be/KKOWSKuF5jA) and [![vCloudInfo Blog Post](https://img.shields.io/static/v1?label=vCloudInfo&message=Blog%20Post&color=21759B&logo=wordpress&logoColor=white)](https://www.vcloudinfo.com/2026/05/home-assistant-vacuum-automations-dreame-2026.html). | [![Buy](https://img.shields.io/badge/Buy-Vacuum-orange?logo=amazon)](https://amzn.to/4f7NpFP) | diff --git a/config/packages/maintenance_log.yaml b/config/packages/maintenance_log.yaml index 86ce72c0..d0087ebe 100644 --- a/config/packages/maintenance_log.yaml +++ b/config/packages/maintenance_log.yaml @@ -3,10 +3,12 @@ # For more info visit https://www.vcloudinfo.com/click-here # Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig # ------------------------------------------------------------------- -# Maintenance Logging - Joanna webhook ingest + graphable HA history +# Maintenance Logging - webhook ingest + graphable HA history # Stores water softener salt maintenance events in recorder-backed helpers. # ------------------------------------------------------------------- -# Notes: Webhook id is bearclaw_maintenance_log_v1 (Joanna -> HA contract). +# Video: https://youtu.be/_OqTv9i-jAs +# Blog: https://www.vcloudinfo.com/2026/07/home-assistant-water-softener-salt-automation.html +# Notes: Webhook id is bearclaw_maintenance_log_v1; payloads can come from agents, NFC tags, QR codes, or dashboard buttons. # Notes: Duplicate event_id values are ignored to prevent double-count totals. # Notes: Recent event history string format is "YYYY-MM-DD HH:MM:SS|amount|note||...". # Notes: Long-term stats live on template sensors; helpers are internal state for restore/calculation. diff --git a/config/packages/rachio.yaml b/config/packages/rachio.yaml index cc2e1803..effe7978 100755 --- a/config/packages/rachio.yaml +++ b/config/packages/rachio.yaml @@ -3,13 +3,358 @@ # For more info visit https://www.vcloudinfo.com/click-here # Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig # ------------------------------------------------------------------- -# Rachio Sprinkler - Rain skips and seasonal scheduling - Smart sprinkler controller via Rachio. https://amzn.to/2eoPKBW. -# Centralizes the Rachio Sprinkler - Rain skips and seasonal scheduling package configuration and helpers. +# Rachio Sprinkler - dashboard state, run history, and watering controls - Smart sprinkler controller via Rachio. https://amzn.to/2eoPKBW. +# Builds a reusable sprinkler dashboard pattern around native Rachio zone switches and controller actions. # ------------------------------------------------------------------- +# Notes: Attribute audit found native zone metadata and active-run summaries, but no durable off-state last-run/duration attributes. +# Notes: Last-run sensors are trigger-based template sensors derived from zone on->off transitions; no input_* helpers are used. ###################################################################### -# -# sensor: -# - platform: mqtt -# state_topic: "ifttt/rachio/watering_time" -# name: "Rachio_watering_time" +template: + - binary_sensor: + - name: Rachio Watering Now + unique_id: rachio_watering_now + icon: mdi:sprinkler-variant + state: >- + {% set zones = [ + 'switch.front_lawn', + 'switch.front_hedges_right_side_house', + 'switch.left_side_house', + 'switch.backyard_shrubs' + ] %} + {{ expand(zones) | selectattr('state', 'eq', 'on') | list | count > 0 }} + attributes: + active_zones: >- + {% set zones = [ + 'switch.front_lawn', + 'switch.front_hedges_right_side_house', + 'switch.left_side_house', + 'switch.backyard_shrubs' + ] %} + {% set active = expand(zones) | selectattr('state', 'eq', 'on') | list %} + {{ active | map(attribute='name') | map('replace', 'Carlo-Rachio ', '') | list | join(', ') }} + active_zone_entities: >- + {% set zones = [ + 'switch.front_lawn', + 'switch.front_hedges_right_side_house', + 'switch.left_side_house', + 'switch.backyard_shrubs' + ] %} + {% set active = expand(zones) | selectattr('state', 'eq', 'on') | list %} + {{ active | map(attribute='entity_id') | list | join(', ') }} + sensor: + - name: Rachio Active Zone + unique_id: rachio_active_zone + icon: mdi:sprinkler-variant + state: >- + {% set zones = [ + 'switch.front_lawn', + 'switch.front_hedges_right_side_house', + 'switch.left_side_house', + 'switch.backyard_shrubs' + ] %} + {% set active = expand(zones) | selectattr('state', 'eq', 'on') | list %} + {% if not is_state('binary_sensor.carlo_rachio', 'on') %} + Unavailable + {% elif active | count > 0 %} + {{ active | map(attribute='name') | map('replace', 'Carlo-Rachio ', '') | list | join(', ') }} + {% else %} + Idle + {% endif %} + attributes: + active_zone_entities: >- + {% set zones = [ + 'switch.front_lawn', + 'switch.front_hedges_right_side_house', + 'switch.left_side_house', + 'switch.backyard_shrubs' + ] %} + {% set active = expand(zones) | selectattr('state', 'eq', 'on') | list %} + {{ active | map(attribute='entity_id') | list | join(', ') }} + schedule_state: "{{ states('switch.daily_flex_watering_schedule') }}" + - name: Rachio Controller Status + unique_id: rachio_controller_status + icon: mdi:sprinkler-variant + state: >- + {% set zones = [ + 'switch.front_lawn', + 'switch.front_hedges_right_side_house', + 'switch.left_side_house', + 'switch.backyard_shrubs' + ] %} + {% set active = expand(zones) | selectattr('state', 'eq', 'on') | list %} + {% if not is_state('binary_sensor.carlo_rachio', 'on') %} + unavailable + {% elif active | count > 0 %} + watering + {% elif is_state('switch.carlo_rachio_rain_delay', 'on') %} + rain_delay + {% elif is_state('switch.carlo_rachio_in_standby_mode', 'on') %} + standby + {% else %} + ready + {% endif %} + attributes: + controller_online: "{{ states('binary_sensor.carlo_rachio') }}" + rain_sensor: "{{ states('binary_sensor.carlo_rachio_rain_sensor') }}" + rain_delay: "{{ states('switch.carlo_rachio_rain_delay') }}" + standby: "{{ states('switch.carlo_rachio_in_standby_mode') }}" + active_zones: >- + {% set zones = [ + 'switch.front_lawn', + 'switch.front_hedges_right_side_house', + 'switch.left_side_house', + 'switch.backyard_shrubs' + ] %} + {% set active = expand(zones) | selectattr('state', 'eq', 'on') | list %} + {{ active | map(attribute='name') | map('replace', 'Carlo-Rachio ', '') | list | join(', ') }} + schedule_summary: "{{ state_attr('switch.daily_flex_watering_schedule', 'Summary') }}" + schedule_duration: "{{ state_attr('switch.daily_flex_watering_schedule', 'Duration') }}" + schedule_type: "{{ state_attr('switch.daily_flex_watering_schedule', 'Type') }}" + - trigger: + - platform: state + entity_id: + - switch.front_lawn + - switch.front_hedges_right_side_house + - switch.left_side_house + - switch.backyard_shrubs + from: "on" + to: "off" + sensor: + - name: Rachio Last Run Summary + unique_id: rachio_last_run_summary + icon: mdi:sprinkler-variant + state: "{{ trigger.from_state.name | replace('Carlo-Rachio ', '') }}" + attributes: + zone_entity: "{{ trigger.entity_id }}" + started_at: "{{ trigger.from_state.last_changed.isoformat() }}" + completed_at: "{{ trigger.to_state.last_changed.isoformat() }}" + duration_min: >- + {% set start = as_timestamp(trigger.from_state.last_changed, default=none) %} + {% set stop = as_timestamp(trigger.to_state.last_changed, default=none) %} + {% if start is not none and stop is not none and stop >= start %} + {{ ((stop - start) / 60) | round(1) }} + {% else %} + unknown + {% endif %} + source_summary: "{{ trigger.to_state.attributes.get('Summary', '') }}" + - trigger: + - platform: state + entity_id: switch.front_lawn + from: "on" + to: "off" + sensor: + - name: Rachio Front Lawn Last Run + unique_id: rachio_front_lawn_last_run + icon: mdi:sprinkler-variant + unit_of_measurement: min + state_class: measurement + state: >- + {% set start = as_timestamp(trigger.from_state.last_changed, default=none) %} + {% set stop = as_timestamp(trigger.to_state.last_changed, default=none) %} + {% if start is not none and stop is not none and stop >= start %} + {{ ((stop - start) / 60) | round(1) }} + {% else %} + unknown + {% endif %} + attributes: + zone_entity: switch.front_lawn + zone_name: "{{ trigger.from_state.name | replace('Carlo-Rachio ', '') }}" + started_at: "{{ trigger.from_state.last_changed.isoformat() }}" + completed_at: "{{ trigger.to_state.last_changed.isoformat() }}" + source_summary: "{{ trigger.to_state.attributes.get('Summary', '') }}" + - trigger: + - platform: state + entity_id: switch.front_hedges_right_side_house + from: "on" + to: "off" + sensor: + - name: Rachio Front Hedges Last Run + unique_id: rachio_front_hedges_last_run + icon: mdi:sprinkler-variant + unit_of_measurement: min + state_class: measurement + state: >- + {% set start = as_timestamp(trigger.from_state.last_changed, default=none) %} + {% set stop = as_timestamp(trigger.to_state.last_changed, default=none) %} + {% if start is not none and stop is not none and stop >= start %} + {{ ((stop - start) / 60) | round(1) }} + {% else %} + unknown + {% endif %} + attributes: + zone_entity: switch.front_hedges_right_side_house + zone_name: "{{ trigger.from_state.name | replace('Carlo-Rachio ', '') }}" + started_at: "{{ trigger.from_state.last_changed.isoformat() }}" + completed_at: "{{ trigger.to_state.last_changed.isoformat() }}" + source_summary: "{{ trigger.to_state.attributes.get('Summary', '') }}" + - trigger: + - platform: state + entity_id: switch.left_side_house + from: "on" + to: "off" + sensor: + - name: Rachio Left Side House Last Run + unique_id: rachio_left_side_house_last_run + icon: mdi:sprinkler-variant + unit_of_measurement: min + state_class: measurement + state: >- + {% set start = as_timestamp(trigger.from_state.last_changed, default=none) %} + {% set stop = as_timestamp(trigger.to_state.last_changed, default=none) %} + {% if start is not none and stop is not none and stop >= start %} + {{ ((stop - start) / 60) | round(1) }} + {% else %} + unknown + {% endif %} + attributes: + zone_entity: switch.left_side_house + zone_name: "{{ trigger.from_state.name | replace('Carlo-Rachio ', '') }}" + started_at: "{{ trigger.from_state.last_changed.isoformat() }}" + completed_at: "{{ trigger.to_state.last_changed.isoformat() }}" + source_summary: "{{ trigger.to_state.attributes.get('Summary', '') }}" + - trigger: + - platform: state + entity_id: switch.backyard_shrubs + from: "on" + to: "off" + sensor: + - name: Rachio Backyard Shrubs Last Run + unique_id: rachio_backyard_shrubs_last_run + icon: mdi:sprinkler-variant + unit_of_measurement: min + state_class: measurement + state: >- + {% set start = as_timestamp(trigger.from_state.last_changed, default=none) %} + {% set stop = as_timestamp(trigger.to_state.last_changed, default=none) %} + {% if start is not none and stop is not none and stop >= start %} + {{ ((stop - start) / 60) | round(1) }} + {% else %} + unknown + {% endif %} + attributes: + zone_entity: switch.backyard_shrubs + zone_name: "{{ trigger.from_state.name | replace('Carlo-Rachio ', '') }}" + started_at: "{{ trigger.from_state.last_changed.isoformat() }}" + completed_at: "{{ trigger.to_state.last_changed.isoformat() }}" + source_summary: "{{ trigger.to_state.attributes.get('Summary', '') }}" + +script: + rachio_stop_watering: + alias: Rachio Stop Watering + icon: mdi:stop-circle + mode: single + sequence: + - service: rachio.stop_watering + data: + devices: Carlo-Rachio + - service: script.send_to_logbook + data: + topic: SPRINKLERS + message: Stop watering requested from Home Assistant. + rachio_pause_watering_30: + alias: Rachio Pause Watering 30 Minutes + icon: mdi:pause-circle + mode: single + sequence: + - service: rachio.pause_watering + data: + devices: Carlo-Rachio + duration: 30 + - service: script.send_to_logbook + data: + topic: SPRINKLERS + message: Watering pause requested from Home Assistant for 30 minutes. + rachio_resume_watering: + alias: Rachio Resume Watering + icon: mdi:play-circle + mode: single + sequence: + - service: rachio.resume_watering + data: + devices: Carlo-Rachio + - service: script.send_to_logbook + data: + topic: SPRINKLERS + message: Resume watering requested from Home Assistant. + +automation: + - id: 4df26960-17cd-4a3b-9f29-9189d6ad1d73 + alias: Rachio - Activity Feed + mode: queued + trigger: + - platform: state + entity_id: + - switch.front_lawn + - switch.front_hedges_right_side_house + - switch.left_side_house + - switch.backyard_shrubs + from: "off" + to: "on" + id: zone_started + - platform: state + entity_id: + - switch.front_lawn + - switch.front_hedges_right_side_house + - switch.left_side_house + - switch.backyard_shrubs + from: "on" + to: "off" + id: zone_finished + - platform: state + entity_id: switch.carlo_rachio_rain_delay + id: rain_delay_changed + - platform: state + entity_id: switch.carlo_rachio_in_standby_mode + id: standby_changed + action: + - variables: + zone_name: "{{ trigger.to_state.name | replace('Carlo-Rachio ', '') if trigger.to_state is defined else '' }}" + summary: "{{ trigger.to_state.attributes.get('Summary', '') if trigger.to_state is defined else '' }}" + duration_min: >- + {% if trigger.from_state is defined and trigger.to_state is defined %} + {% set start = as_timestamp(trigger.from_state.last_changed, default=none) %} + {% set stop = as_timestamp(trigger.to_state.last_changed, default=none) %} + {% if start is not none and stop is not none and stop >= start %} + {{ ((stop - start) / 60) | round(1) }} + {% else %} + unknown + {% endif %} + {% else %} + unknown + {% endif %} + - choose: + - conditions: + - condition: trigger + id: zone_started + sequence: + - service: script.send_to_logbook + data: + topic: SPRINKLERS + message: >- + {{ zone_name }} started watering{% if summary %}: {{ summary }}{% else %}.{% endif %} + - conditions: + - condition: trigger + id: zone_finished + sequence: + - service: script.send_to_logbook + data: + topic: SPRINKLERS + message: >- + {{ zone_name }} finished watering{% if duration_min not in ['unknown', 'unavailable', 'none', ''] %} after {{ duration_min }} minutes{% endif %}{% if summary %}: {{ summary }}{% else %}.{% endif %} + - conditions: + - condition: trigger + id: rain_delay_changed + sequence: + - service: script.send_to_logbook + data: + topic: SPRINKLERS + message: "Rain delay turned {{ trigger.to_state.state }}." + - conditions: + - condition: trigger + id: standby_changed + sequence: + - service: script.send_to_logbook + data: + topic: SPRINKLERS + message: "Standby mode turned {{ trigger.to_state.state }}."