Bear Stone Smart Home Documentation
Be sure to :star: my configuration repo so you can keep up to date on any daily progress!
[](https://x.com/ccostan)
[](https://www.youtube.com/vCloudInfo?sub_confirmation=1)
[](https://github.com/CCOSTAN/Home-AssistantConfig/stargazers)
[](https://github.com/CCOSTAN/Home-AssistantConfig/blob/master/config/.HA_VERSION)
[](https://github.com/CCOSTAN/Home-AssistantConfig/commits/master)
[](https://github.com/CCOSTAN/Home-AssistantConfig/commits/master)
Reusable scripts that other automations call for notifications, lighting, safety responses, and Joanna/BearClaw AGENT engineer handoffs. Pass variables in; let the script do the heavy lifting.
### Quick navigation
- You are here: `config/script/` (scripts library)
- [Repo overview](../../README.md) | [Config index](../README.md) | [Automations](../automation) | [Scenes](../scene) | [](https://www.vcloudinfo.com/2018/12/breaking-down-my-home-assistant-volume.html)

### Featured files to browse
| File | Why it matters |
| --- | --- |
| [](notify_engine.yaml) | Single entrypoint for rich push notifications, with optional tags for clearing and shared colored notification icons for household alerts. | [](https://youtu.be/TMfdxv-WprM) [](https://www.vcloudinfo.com/2026/10/home-assistant-ios-notification-icons.html)
| [](hvac_control.yaml) | Single reconciler for grid, entry-point, occupancy, and target-temperature HVAC policy. |
| [](notify_live_activity.yaml) | Shared helper for tagged live activity/live update pushes and clear commands. |
| [](kiosk_driveway_camera_takeover.yaml) | Coordinates the bounded Driveway camera takeover and wake behavior across both household kiosks. |
| [](send_to_logbook.yaml) | Generic `logbook.log` helper for Activity feed entries (Issue #1550). |
| [](joanna_dispatch.yaml) | Shared AGENT engineer dispatch contract that routes HA-detected issues into Joanna/BearClaw remediation. |
| [](speech_engine.yaml) | TTS/announcement orchestration with templated speech; speech processing can bypass LLM rewriting for exact messages and also routes garage/office Echo announcements. |
| [](monthly_color_scene.yaml) | Seasonal lighting dispatcher that follows `sensor.holiday_lighting_scene`. |
| [](interior_off.yaml) | One-call "all interior lights off" helper. |
### Household notification icons
[](https://youtu.be/TMfdxv-WprM) [](https://www.vcloudinfo.com/2026/10/home-assistant-ios-notification-icons.html)
Both `script.notify_engine` and `script.notify_engine_two_button` accept `notification_icon` (an `mdi:` name), `icon_url` (a public or `/local/` image), `notification_icon_color` (glyph hex color), and `color` (background hex color). On supported iOS apps, these appear as rounded sender icons and require a nonempty notification title. `icon_url` takes precedence over the MDI icon; colors apply only to MDI icons. See the [Companion App documentation](https://companion.home-assistant.io/docs/notifications/notifications-basic/#notification-icon-and-color) and [issue #1773](https://github.com/CCOSTAN/Home-AssistantConfig/issues/1773).
The shared helper gives existing notification groups a consistent palette without changing their grouping, recipients, action buttons, tags, or interruption levels:
| Notification group | Icon | Background |
| --- | --- | --- |
| `Medicine` | `mdi:pill` | Purple |
| `Garbage_Reminders` | `mdi:trash-can-outline` | Green |
| `Welcome_Home` | `mdi:home-heart` | Teal |
| `360_alerts` | `mdi:map-marker-radius` (arrival/departure callers override it) | Blue |
| `Battery_Alert` | `mdi:battery-alert-variant-outline` | Orange |
| `maintenance` | `mdi:tools` | Slate |
| `Phyn` | `mdi:water-alert` | Red |
| `Tesla_Model_Y` | `mdi:car-electric` | Blue |
| `Tesla_Tire_Pressure` | `mdi:car-tire-alert` | Orange |
| `Tesla_Charge_Rate_Alarm` | `mdi:ev-station` | Red |
| `JuiceBox_Proxy_Offline` | `mdi:ev-station` | Orange |
| `water_heater` | `mdi:water-boiler-alert` | Orange |
| `RemoteLR` | `mdi:remote` | Purple |
| `Printer` | `mdi:printer` | Slate |
| `vacation` | `mdi:palm-tree` | Teal |
| `royal_caribbean_price_drop` | `mdi:ferry` | Blue |
Group lookup ignores case. An explicit icon overrides the preset; `notification_icon: ''` disables it. Other groups keep their existing payload unless a caller supplies an icon. Driveway, fridge-door, front-door package, and vacuum-help alerts supply their own icons while retaining their existing camera attachments where applicable. Untitled notifications and `clear_notification` commands receive no icon fields. Older apps or push paths that do not support custom icons retain the normal app icon.
Arrival alerts use a teal home-entry icon at home or a checked map pin at other monitored places; driving departures use a blue home-exit icon. The existing presence rules and notification groups stay in place. Grid status uses a red disconnected tower for outages and a green tower for restoration, with separate battery/HVAC icons for load shedding and recovery.
Lightning and high-wind warnings, open doors/garages, alarm-panel access, fridge temperature, server temperature, storage space, kitchen power, water-heater maintenance, house-sitter visits, and secure-house checks also pass explicit icons. Previously untitled door, alarm-panel, and storage alerts now have short titles so iOS can display their icons. The direct Roku remote-finder notification keeps its existing action payload and adds the same purple remote icon as its confirmation.
### Joanna + BearClaw AGENT engineer handoff
`script.joanna_dispatch` is the shared handoff contract from Home Assistant automations into Joanna/BearClaw when Home Assistant detects something worth investigating or fixing.
Why we use it:
- Keeps one message schema for remediation context (`trigger_context`, `source`, `summary`, `entity_ids`, `diagnostics`, `request`, plus optional routing hints).
- Avoids repeating direct `rest_command.bearclaw_command` payload formatting in multiple packages.
- Lets Home Assistant stay focused on detection, timing, and routing while Joanna acts as the AGENT engineer for infrastructure triage and recommended remediation.
- Makes resolution-trigger automations easier to review, update, and audit.
What the helper normalizes before the BearClaw intake call:
- `trigger_context`, `source`, and `summary` so every dispatch has traceable origin details.
- `entity_ids` from either a YAML list or a comma-delimited string.
- `diagnostics` from either free text or structured mappings/sequences.
- `request` guardrails so Joanna defaults to investigation/recommendation, not blind resets or power-cycles.
- `domain_hint`/`lane_hint` default to BearClaw ops routing so HA infrastructure text does not drift into another domain parser.
Current automations that kick off automated resolutions (via `script.joanna_dispatch`):
| Automation ID | Alias | File |
| --- | --- | --- |
| `mqtt_open_repair_on_failure` | MQTT - Open Repair On Failure | [](../packages/mqtt_status.yaml) |
| `onenote_indexer_failure_open_repair` | OneNote Indexer - Open Repair On Failure | [](../packages/onenote_indexer.yaml) |
| `infra_backup_nightly_verification` | Infrastructure - Backup Nightly Verification | [](../packages/infrastructure.yaml) |
| `infra_monthly_log_hygiene_review` | Infrastructure - Monthly HA Log Hygiene Review | [](../packages/infrastructure.yaml) |
| `infra_nebula_sync_health_dispatch` | Infrastructure - Nebula Sync Health Dispatch | [](../packages/infrastructure.yaml) |
| `infra_pihole_iot_dns_drift_dispatch` | Infrastructure - Pi-hole IoT DNS Drift Dispatch | [](../packages/infrastructure.yaml) |
| `infra_website_down_repair_and_dispatch` | Infrastructure - Website Down Repair And Dispatch | [](../packages/infrastructure.yaml) |
| `docker_state_sync_repairs_dynamic` | Docker State Sync - Repairs (Dynamic) | [](../packages/docker_infrastructure.yaml) |
| `docker_group_reconcile_weekly_joanna_review` | Docker Group Reconcile - Weekly Joanna Review | [](../packages/docker_infrastructure.yaml) |
| `docker_host_disk_pressure_monitor` | Docker Host Disk Pressure Monitor | [](../packages/infrastructure.yaml) |
| `proxmox_updates_joanna_dispatch` | Proxmox Updates Joanna Dispatch | [](../packages/proxmox.yaml) |
| `tugtainer_dispatch_joanna_for_available_updates` | Tugtainer - Dispatch Joanna For Available Updates | [](../packages/tugtainer_updates.yaml) |
| `tugtainer_dispatch_joanna_for_home_assistant_core_digest` | Tugtainer - Dispatch Joanna For Home Assistant Core Digest | [](../packages/tugtainer_updates.yaml) |
| `unifi_ap_no_clients_repair_combined` | Unifi AP Create Repair Issue after 5m of 0 Clients | [](../packages/wireless.yaml) |
| `proxmox_runtime_repairs` | Proxmox Runtime Repair Issues | [](../packages/proxmox.yaml) |
| `proxmox_disk_pressure_repairs` | Proxmox Disk Pressure Repair Issues | [](../packages/proxmox.yaml) |
| `synology_dsm_open_repair_and_dispatch` | Synology DSM - Open Repair And Dispatch | [](../packages/synology_dsm.yaml) |
| `processmonitor_disk_use_joanna_review` | Self Heal Disk Use Joanna Review | [](../packages/processmonitor.yaml) |
| `rheem_water_heater_alert_incident` | Rheem Water Heater Alert Incident | [](../packages/rheem_econet.yaml) |
| `rheem_water_heater_incident_reconcile` | Rheem Water Heater Incident Reconcile | [](../packages/rheem_econet.yaml) |
| `1ce3cb43-0e27-4c53-acdd-d672396f3559` | Disk Use Alarm | [](../packages/processmonitor.yaml) |
### Tips
- Keep scripts generic, route data via `data:`/`variables:`, and reuse everywhere.
- If you copy a script, rename any `alias` and `id` fields to avoid duplicates.
**All of my configuration files are tested against the most stable version of home-assistant.**
**Still have questions on my Config?**
**Message me on X :** [](https://www.x.com/ccostan)
You can buy me a coffee

Affiliate Disclosure