18 KiB
Bear Stone Smart Home Documentation
Be sure to ⭐ my configuration repo so you can keep up to date on any daily progress!
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 | Config index | Automations | Scenes |
Featured files to browse
| File | Why it matters |
|---|---|
| Single entrypoint for rich push notifications, with one or two optional action buttons, tags for clearing, and shared colored notification icons for household alerts. | |
| Single reconciler for grid, entry-point, occupancy, and target-temperature HVAC policy. | |
| Shared helper for tagged live activity/live update pushes and clear commands. | |
| Coordinates the bounded Driveway camera takeover and wake behavior across both household kiosks. | |
Generic logbook.log helper for Activity feed entries (Issue #1550). |
|
| Shared AGENT engineer dispatch contract that routes HA-detected issues into Joanna/BearClaw remediation. | |
| TTS/announcement orchestration with templated speech; speech processing can bypass LLM rewriting for exact messages and also routes garage/office Echo announcements. | |
| Conservative rain corroboration through the existing OpenAI AI Task and current exterior camera images. Returns a decision without controlling devices; requires usable recent Frigate camera reports, high-confidence visible rain or broadly wet exposed concrete, and inactive irrigation. Errors and uncertainty deny optional rain lighting. | |
Seasonal lighting dispatcher that follows sensor.holiday_lighting_scene. |
|
| Existing bedtime/away shutdown for interior lights, switches, media power, and the Paige lighting routine. | |
| Shared Home/Mobile lights-only shutdown with an explicit lamp-switch allowlist; uses the same scope as On Now. |
Household notification icons
Driveway alerts, front-door package alerts/status checks, and check-garage-door reminders use separate stable tag values so each new notification replaces the previous one of its kind on each recipient's phone. Existing untagged notifications require one-time manual dismissal. The iOS destructive action option only colors an action button red; notification replacement uses tags.
Shared phone notifications sent through notify.ios_parents or notify.ios_family also join the household kiosk rotation for ten minutes. The kiosk feed observes these group calls, including callers outside notify_engine, and preserves phone recipients, actions, attachments, and urgency. Each slide shows the notification title, message, and sent time. A repeated tag replaces its earlier slide; clear_notification removes the matching tag. Individual phone notifications and device commands stay out of the shared rotation.
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 and issue #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_commandpayload 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, andsummaryso every dispatch has traceable origin details.entity_idsfrom either a YAML list or a comma-delimited string.diagnosticsfrom either free text or structured mappings/sequences.requestguardrails so Joanna defaults to investigation/recommendation, not blind resets or power-cycles.domain_hint/lane_hintdefault 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):
Tips
- Keep scripts generic, route data via
data:/variables:, and reuse everywhere. - If you copy a script, rename any
aliasandidfields to avoid duplicates.
All of my configuration files are tested against the most stable version of home-assistant.

