[RELEASE] Advanced Voice Butler - The Ultimate Context-Aware TTS Orchestrator

Version 2.6 Available

Hello everyone! I'm excited to share a project I've been working on to completely overhaul how smart homes handle text-to-speech, perimeter guarding, and occupancy.

While the actual speech synthesis depends on your specific speaker integration (and may utilize the cloud for audio generation), the orchestration, logic, and state-tracking of this application are built from the ground up for 100% local processing. Advanced Voice Butler acts as a highly intelligent, decoupled director. It processes your complex rules locally without relying on cloud-dependent architectures to decide when or what to speak. It understands context, room states, time of day, and who is actually home.

Here is the complete breakdown of what this application brings to your hub.

:control_knobs: Core Architecture & System Control

  • Multi-Tier Audio Routing Engine: Can target audio to Global Indoor, Outdoor, specific Follow-Me (active motion only), Dedicated Feature speakers, or any combination of fallbacks.
  • Live Hubitat Dashboard UI: Real-time read-only view of system states (Muted/Silent/Active), perimeter status (Hosting/DND/Standby), internet connection, TTS queue, external sync timestamps, incident logs, and a live house roster.
  • Priority TTS Queue Engine: Messages are queued and played sequentially so they don't overlap. High-priority alerts bypass the queue. Features a Time-To-Live (TTL) expiration so stale messages drop automatically.
  • Internet Connection Safety: Pings Google every 5 minutes. If the internet drops, it suppresses TTS to prevent the system from crashing or hanging.
  • Master & Guest Mutes: Hard mute switches for the entire system, plus a "Guest Mode" switch that silences specific sensitive alerts.
  • Quiet Hours Engine: User-defined start/end times that automatically throttle the maximum volume of all Butler announcements overnight.
  • Media Pause & Resume: Automatically pauses specific TVs (Roku, etc.) or music players, plays the announcement with a configurable hardware warm-up delay and pre-speech chime, and seamlessly resumes media playback afterward.

:globe_with_meridians: The Interactive Web Portal (Command Deck)

  • Live Presence Management: View who is home and manually override/mark users "Away" with a single click.
  • Live Intercom (PA): Type any message and instantly broadcast it to a specific routing zone.
  • Task Dashboard Shortcut: A one-click button that bridges the user straight to their Hubitat maintenance dashboard.
  • Quick Replies: Up to 6 custom buttons that instantly broadcast pre-written responses to the outdoor speaker (e.g., "Leave the package," "Be right there") and immediately cancel any automated "unanswered door" follow-ups.
  • Scheduled Notes: Write a note, assign a sender and a target user, and trigger it to deliver on Arrival, during the Morning Briefing, or at a specific Time.
  • Guest Wi-Fi Announce: A 1-click button that dynamically parses the Wi-Fi password to be TTS-safe, announces it over the speakers, and pushes the raw text to smartphones.
  • Estate Directory: A digital Rolodex of up to 10 services (e.g., Plumber, Pediatrician). Clicking "Announce" reads their info aloud and pushes it to your phone.
  • Agenda Memory Updater: Web form to instantly overwrite the daily agenda memory for any specific room.

:door: Smart Arrival & Roster Logic

  • Lock Code & Presence Hybrid: Tracks arrivals automatically via Smart Lock codes or manual user slots. Includes a Fallback Engine: if a presence sensor arrives but the door isn't unlocked within 10 minutes, the Butler automatically marks them home and apologizes for missing them.
  • Hourly Presence Sweep: A failsafe that checks all presence sensors every hour to catch anyone who slipped in unannounced.
  • Contextual Greetings: Adjusts phrasing based on the time of day (Morning/Afternoon/Evening) and duration away (e.g., "A quick trip" vs. "I hope you had a productive day").
  • Extended Absence: Specific "Welcome back from vacation" greetings if the user has been gone for more than a user-defined threshold (e.g., 48 hours).
  • House Roster Awareness: Announces if the user is the first one home ("The house is empty") or specifically names who is already inside.
  • Arrival Add-ons: * Reads pending notes or stashed "Message Inbox" items.
    • Reminds users if the physical mail was delivered and hasn't been picked up.
    • Appends Birthday and Anniversary greetings.
    • After-School specific greetings based on a time window.
    • Global Incident readout (warns if the doorbell rang while the house was empty).

:walking_man: Contextual Departures & Habit Tracking

  • Departure Profiles: Up to 5 specific profiles (Work, School, General) that trigger when the door opens during a specific time window, provided their context switch is ON (and Sick Day switch is OFF).
  • Coat Check & Weather: Appends dynamic weather warnings to departures (Umbrella needed, Freezing temps, Snow/Ice, High Heat).
  • Quick Exit (Farewell & Gas Scout): If the house goes into "Away" mode and a door opens within 5 minutes, it bids farewell, checks Google Maps for the cheapest gas, announces the station, and sends a navigation link to your phone.
  • AI Habit Tracking Engine: Learns every user's average departure, arrival, and sleep times.
  • Anomaly Detection: If a user is still home 15 minutes past their learned average departure time, the Butler proactively asks if they are running behind schedule.

:shield: Perimeter Guarding & Security

  • Daytime Doorbell: Acknowledges visitors ("Notifying the homeowner"). If the door isn't opened within a specific delay, it executes a follow-up ("Apologies, no one is available"). Suppressed if the house roster is empty.
  • Do Not Disturb (DND) & After Hours: Intercepts visitors, suppresses indoor chimes, and tells the visitor to leave a package/message because the house is resting or DND is active.
  • Guest / Party Mode: A virtual switch that safely overrides DND and After Hours to welcome expected guests inside.
  • Nighttime Intruder Deterrent: * Generic Motion: Warns trespassers they are on camera. Features a bypass timer for taking the dog out.
    • Smart Camera Integration (UniFi Protect): Differentiates between Animals ("Shoo!"), Vehicles ("License plate logged"), and Persons ("Security notified").
    • Package Concierge: Detects packages, thanks the driver outside, and announces the delivery inside.

:bed: Local Voice Zones (Room Routines)

  • Good Night Routine:
    • Triggered by switch.
    • Kids Weekend check (Announces "No school tomorrow!" on Friday/Saturday).
    • Perimeter Security Check (Warns of exactly which doors are open or unlocked).
    • Weather forecast.
    • Calendar Preview (Heads up on tomorrow's first event).
    • Kids Night Watch (Activates "Monster Shields").
    • Sleep Habit Inference (Remarks if you are going to bed unusually early or late based on learned habits).
  • Good Morning Routine:
    • Triggered immediately, via motion verification, or purely motion-driven.
    • Time, Date, and Day-specific Agenda.
    • Overnight Incident Report (How many times the porch motion tripped or doorbell rang).
    • Weather and Wardrobe advice.
    • Boredom Buster (Weekend activity suggestions).
    • Room-specific RSS News fetcher.
    • Kids Jokes/Fun Facts.
    • Stashed Inbox and Pending Notes delivery.

:brain: The Concierge (External Integrations)

  • Google Calendar & Travel Engine: * Syncs via .ics polling or instantaneous Webhooks.
    • Proactive Travel Check: 1 hour before an event, it calculates drive time using Google Maps API. If traffic requires you to leave now to make it, it issues a "CRITICAL" override warning, finds the cheapest gas, and pushes it to your phone.
    • Context Secrecy: Hides event details if the event implies a surprise/gift/party AND the target user is currently marked as "Home."
  • Google Mail / Ooma Webhook:
    • Announces and reads snippets of important VIP emails.
    • Announces package shipment/out-for-delivery notifications.
    • Reads transcripts of incoming Ooma voicemails.
  • Organic Breaking News: Polls an RSS feed (like NPR) on a randomized, jittered interval. If a brand-new headline appears, it interrupts to announce it.
  • Office Interceptor: A switch-triggered tech news readout (TechCrunch, Wired, etc.) with a configurable multi-hour cooldown to prevent spamming.

:plate_with_cutlery: Household Management & Routines

  • Meal Time (Dinner Bell): * Triggered by switch or physical button (button isolates routing to active rooms only).
    • Part 1: Rings dinner bell and checks the Roster, announcing anyone who is missing/absent.
    • Part 2: Evening Weather and Top News digest.
    • Part 3: Daily Conversation Starter (from custom text file or defaults).
  • Headed Home Engine: Virtual switches tied to Google Home/Alexa driving routines. Announces "[User] is on their way home."
  • Midday Maintenance: Picks a completely random time between 11 AM and 3 PM to politely read overdue Hubitat tasks. Suppresses itself if the house is empty or guests are present. Esculates its grammar based on how many days overdue tasks are.
  • Real-Time Task Alerts: Instantly announces the exact moment a task flips to "due."
  • Health & Wellness Concierge: Tracks Dental (6mo), Medical (1yr), and Vision (1yr) thresholds. Groups users dynamically ("Shane and Christy, both of you require..."). Built-in 7-day memory cooldown so it only nags once a week during the morning briefing or the daytime window.
  • Screen Time Manager: Reads expiration warnings when a virtual screen-time switch turns off.

:bellhop_bell: The "Silver Platter" (Message Inbox)

The Silver Platter feature solves a classic smart home problem: what happens when an important alert triggers, but nobody is home to hear it?

Instead of the Butler shouting to an empty room, the Silver Platter acts as a temporary holding queue (inbox).

  • How it triggers: If the Google Webhook receives a package delivery notification, a new Ooma voicemail, or a VIP email, it first checks the house roster.
  • The Stash: If the roster returns 0 (the house is completely empty), the Butler suppresses the audio and sends the text to stashMessage().
  • The Delivery: The next time a recognized user unlocks the front door and triggers the Arrival routine—or during the next Morning Briefing—the Butler retrieves the stashed messages. It seamlessly appends them to the greeting: "Welcome home, Shane. By the way, while you were out, a package was delivered to the house, and you received a voicemail from John Doe."

:shushing_face: Guest Mode & Guest Context

The Butler has two different layers of "Guest" awareness so it knows how to behave properly when you are hosting company.

1. The Guest Mode Mute Switch (Hard Silence) In your Global System Control settings, you can assign a "Guest Mode Mute Switch."

  • When this virtual switch is turned ON, the system shifts into SILENT mode.
  • This intercepts the core TTS (Text-to-Speech) engine. It actively suppresses automated announcements so the Butler doesn't interrupt your conversations, startle your visitors, or announce something private while you are entertaining.

2. Guest User Context (Smart Filtering) In the Arrival & Smart Locks section, you can specifically designate lock codes or custom names as "Guest Users". The Butler changes its behavioral logic when these specific people are logged as being inside the house:

  • Anti-Nagging: If the system is scheduled to run a "Midday Maintenance" reminder (telling you that you have overdue household chores), it checks the active roster. If a recognized Guest is in the house, it permanently aborts the reminder for the day to avoid embarrassing you in front of company.
  • Meal Time Roll Call: If you use the Absentee Roll Call feature during Dinner, it usually announces who hasn't made it home yet. It will automatically filter out "Guest" names from this list, so it doesn't complain that your occasional visitor isn't at the table.

:brain: Generative AI "Scout" Intelligence

  • Cinema & Streaming Scout (Friday Premieres): Every Friday, the Butler uses Gemini to browse live theatrical releases and Netflix arrivals. It generates a summary of the top trending movies, family night options, and kid-friendly picks to kick off the weekend.
  • Grocery Day Scout (Weekly Ad Tracker): Automatically scans live weekly circulars for Aldi, Publix, Walmart, and Costco. It filters for user-defined preferences (e.g., BOGOs, Meats, Organic Produce) and announces the deal count while pushing the full itemized list to smartphones.
  • Vehicle Care Scout (AI Car Wash Planner): On Mondays, the Butler analyzes the 7-day forecast via Gemini to identify the single best window for washing vehicles (low precipitation risk for consecutive days). It announces this during the morning briefing and follows up at noon on the designated day.
  • Ask the Butler (LLM Portal Chat): A generative AI interface built into the Web Portal. Users can chat with the Butler via text; it uses live house context (who is home, next calendar event, mail status) to answer questions with its professional British persona.

:broom: The "Manager of Managers" (Cross-App Telemetry)

  • Staff Schedule Synchronizer: Automatically receives data from a separate Vacuum/Cleaning app. It calculates "Days since last clean" and displays the staff status on the portal (e.g., "Standby" vs. "Deploying Imminently") to maintain the illusion that the Butler is managing the cleaning crew.
  • Cross-App Dispatch Interceptor: A specialized receiver for messages from other applications (like the Vacuum Controller). If the vacuum encounters an error, the Butler intercepts the technical alert, checks the house roster and DND status, and either "stashes" the message for later or announces it in a polite, persona-appropriate way.

:ticket: Digital Concierge & Temporary Access

  • RSVP Invitation System: Allows the user to generate digital event invitations (e.g., for a dinner party) via the portal. The system provides a shareable URL for guests to accept/decline, set party size, and list dietary restrictions.
  • Temporary PIN Sync: When a hosted event is created, the Butler automatically pushes a temporary PIN code and a specific door-slot assignment to the Smart Lock Manager.
  • Automated Access Revocation: The system monitors the expiration of event-based and guest-based PIN codes, triggering a cleanup routine at midnight to ensure temporary codes are revoked 24 hours after an event concludes.
  • Quick Lock Code Manager: A web-based tool to generate one-off PIN codes for service workers (dog walkers, plumbers) with selectable durations (1 hour to 7 days). It includes a "Text Code to Guest" feature that pre-writes the SMS instructions.

:school: Advanced Presence Fallbacks

  • Sustained Room Motion (The "School Arrival" Logic): A specialized fallback engine for users (like kids) who might slip in through a different door. If motion is detected in a specific room for a sustained period (e.g., 5 minutes) during a set time window, the Butler marks them as "Arrived" and cues their arrival briefing in that specific room.
  • Proactive Guest Eviction Timer: A portal-based timer for visitors. When the timer expires, the Butler delivers a polite, persona-driven "closing procedure" announcement to signal the end of the visit and the transition back to private family time.

:studio_microphone: Persona & Speech UX (The "Professional Polish")

  • Modular Speech Bridges: A transition engine that adds natural phrasing between briefing blocks (e.g., "Turning to the weather," "Moving on to the news," or "One other thing").
  • The Grammar Polisher: A regex-based post-processor that cleans up AI-generated or modular text before it hits the speakers, stripping out double-punctuation, fixing spacing, and replacing technical characters (like &) with spoken equivalents (and) to ensure the Butler never sounds robotic.
  • Doorbell "Thank You" logic: When a package is detected via UniFi Protect, the Butler doesn't just alert the inside; it can speak directly to the delivery driver via the outdoor speaker, thanking them and instructing them where to leave the parcel.
  • Automatic "Momentary" Reset: All virtual switches used to trigger the Butler (Headed Home, Directory, News) are automatically turned back OFF by the Butler after execution, ensuring they are always ready for the next trigger.

APP:
raw.githubusercontent.com/ShaneAllen334/Hubitat_Apps/refs/heads/main/Advanced_Voice_Butler/Advanced_Voice_Butler.groovy

Help Files:
Hubitat_Apps/Advanced_Voice_Butler at main · ShaneAllen334/Hubitat_Apps




1 Like

I'm not that smart. Is there a supported devices list?

Sonos or any other TTS device you currently have available, any open close contacts, motion sensors.

Ah, I just have alexa :confused: (no idea how to setup alexa speaks so I gave up on it, this route seems easier)

1 Like

Nice work, but voice announcements are restricted in my house by WAF. I also find them mostly annoying myself, so I use very few voice announcements. Door announcements for people would drive me insane. Announcing the mail has arrived, or that the dogs are at the back door waiting to come it, is about the extent of my voice announcement needs, which are very simple with Echo Speaks.

1 Like

We try to limit them here, that's why there are a lot of ways to prevent them from playing, and at what time and volume.

The biggest feature for us is the night-time deterrence function that if motion is detected on certain outdoor motion sensors at night the house will announce on a outdoor speaker that it basically knows that something is going on. This definitely could be a cat or stay animal setting it off, but also could be someone up to know good so either way its beneficial in some aspect.

1 Like

If you know "what" is outside (like with a Unifi Camera's Smart Detection or such) can you play different warnings or is the TTS completely customizable per instance?

For example, have it play nothing if the system detects an animal or maybe a "shoo shoo" type of thing, but if it is a person detected have it do a real warning?

I don't have camera's capable of that, BUT all the TTS announcements are customizable. Do you use a virtual switch to tell Hubitat what the detection is, or is it using a variable from a custom device?

If you share that with me I can definitely add this functionality.

In my case/example, it is stored in a custom attribute "smartDetectType" within the child devices for my Unifi Protect drivers (Camera, PTZ Camera, or Doorbell at this time). The values can be (although Ubiquiti could add more in the future):

  • none (or a null)
  • person
  • vehicle
  • animal
  • package
  • waiting (this is supposed to be where something was noticed, but it is still trying to determine what it is/was)

Not sure how easy it would be to make it so a user could have it check a custom attribute's value, but that would likely be more useful than if attributes need to be "hard coded".

I could definitely look into making something like this work, but I would have no way of testing it. If you're interested I can work on adding it.

1 Like

Sure, I would be willing to be a guinea pig for it. :slight_smile:

1 Like

Hello everyone!

I am incredibly excited to share a massive update to the Advanced Voice Butler app. Over the last week, the goal has been to take this from a standard "text-to-speech announcer" and turn it into a truly context-aware, highly observant virtual concierge.

The core philosophy of this update is killing Notification Fatigue. Standard smart homes blast every announcement out of every speaker, regardless of the context. A real butler knows who is home, where they are in the house, what they are doing, and most importantly—when to keep their mouth shut.

Here is a deep dive into everything this app can now do for your home.


:brain: The Core Engine & Intelligence

Before getting into the fun features, the foundation of the app has been completely rebuilt to handle complex logic gracefully.

  • Dynamic TTS Priority Engine: The Butler never talks over himself. Emergency security alerts (Priority 1) will preempt or interrupt standard greetings (Priority 3). If multiple things happen at once, he queues the audio and delivers it in a natural, flowing paragraph.
  • The Live System Dashboard: Right at the top of the app, you get a real-time command center showing your active voice zones, perimeter DND state, the active TTS queue, and exactly who the house thinks is currently home/away.
  • "Guest Mode" Mute Switch: Having a party? Flip your virtual Guest Mode switch. The Butler will completely mute his voice so he doesn't annoy your guests, but he continues to silently track arrivals, departures, and mail deliveries in the background so your data is accurate when the guests leave!

:door: Arrivals, Departures, and Handoffs

We completely overhauled how the house greets you and says goodbye, making it feel incredibly human.

  • The "House Roster" Briefing: When you unlock the door, the Butler doesn't just say welcome home. He dynamically briefs you on who is already inside. (e.g., "Welcome home, Shane. Leanne and Christy are already home.")
  • The Mail Delivery Handoff: You can link a virtual mailbox switch. When the mail arrives, the Butler silently logs the time. When the next person unlocks the front door, he appends it to their greeting: (e.g., "...Pardon the reminder, but the mail was delivered at 2:15 PM and still needs to be retrieved.") He will keep reminding arriving users until the mail is fetched!
  • User-Level Permissions (Need-to-Know Basis): Don't want the kids or a guest to hear the House Roster or the Mail alert? You can explicitly check which users are allowed to hear these advanced briefings.
  • The "Forgotten Item" Grace Period: If you leave for work and run back inside 3 minutes later because you forgot your keys, the Butler is smart enough to stay completely silent instead of giving you a grand "Welcome Home!" speech twice.
  • Contextual Departures: By linking a "Work" or "School" switch, time windows, and house modes, the Butler gives friction-free, customized farewells. It even has a "Sick Day" override switch to let you leave silently for the doctor.

:bed: Room Zones & The Night Routine

Rooms act as isolated zones with their own Good Night switches and Good Morning motion triggers, preventing the whole house from waking up.

  • Perimeter Security Scan: When you trigger your Good Night switch, the Butler quickly checks your selected doors, windows, and chicken coops. If anything is open, he dynamically builds a warning: (e.g., "Before you go to sleep, I must warn you that the Front Door is unlocked, and the Main Coop Door is open.")
  • Missing Person / Curfew Warning: A fantastic safety net. When you go to bed, the Butler checks the departure logs. (e.g., "Please note that Leanne has not yet returned. Good night, Shane.")
  • The "Missed Arrival" Apology: If someone sneaks in a side door without triggering the main lock, the Good Night switch catches them. The Butler marks them as "Arrived" and politely leads with: "Pardon me, I did not catch your arrival earlier. Welcome home."

:shield: Perimeter Defense & Visitor Intercepts

The Butler acts as a strict gatekeeper for your front porch.

  • Targeted Indoor Routing (Follow-Me Intercom): This is a game-changer. When the doorbell rings, the Butler checks up to 7 room motion sensors. He will route the "Someone is at the door" announcement ONLY to the rooms where active motion is detected! If you are in the Kitchen, only the Kitchen speaker speaks. He also respects restricted modes (like "Night" mode) so a 2:00 AM doorbell doesn't wake a sleeping child.
  • Daytime Doorbell Acknowledgment & Follow-Up: When a daytime visitor rings the bell, the outdoor speaker instantly says: "Please wait a moment, I am notifying the homeowner." NEW: If you don't open the door within 3 minutes (adjustable timeout), the Butler comes back and apologizes to the visitor: "I apologize, but the homeowners cannot come to the front door right now."
  • Smart Intruder Deterrent: At night, you can link your Unifi Protect / Smart Cameras. If a person or vehicle is detected, the outdoor speaker plays a strict warning to leave the property. It includes a safety bypass: If you just opened the back door to let the dog out, it temporarily pauses the deterrent so it doesn't yell at you!
  • After-Hours Intercept: Automatically tells visitors it's too late for guests after a certain hour (e.g., 8:00 PM), without requiring you to turn on full Do Not Disturb.

:clipboard: The Butler Incident Report

Instead of sending you push notifications all night while you sleep, the Butler keeps a tally of events (like porch motion at night, or doorbell rings while you are at work). When the house wakes up or you get home, he waits for you to walk into the Living Room and verbally briefs you on what you missed.


This app has completely changed how our house feels—moving it from a collection of programmed triggers to a unified, helpful presence.

I’d love to hear how you guys use these features, or if you have any brilliant ideas for what the Butler should learn how to do next!

APP:
raw.githubusercontent.com/ShaneAllen334/Hubitat_Apps/refs/heads/main/Advanced_Voice_Butler/Advanced_Voice_Butler.groovy

3 Likes

I just pushed a massive engine overhaul for the Advanced Voice Butler! This update is all about taking the app from a standard "smart home announcer" to a true, white-glove estate manager. It brings highly requested fixes for Wi-Fi speakers, deep media integrations, and hyper-personalized routing.

Here is what is new in the latest code:

:tophat: The "Estate Manager" Arrival Logic

Nobody wants the living room speaker blasting "Welcome home, Shane! Here is the weather..." to the people who are already sitting on the couch watching TV.

  • Split Audio: The Butler now separates who he is talking to. Your Outdoor Speaker and your Foyer Speaker get the full, personalized "Red Carpet" greeting (weather, mail, chores, etc.).
  • Third-Party Notice: At the exact same time, the rest of the house (using Follow-Me active motion routing) simply gets a short, polite notice like: "Shane has arrived home." #### :broom: Service & Guest Profiles You can now assign specific lock codes to your dog walker, babysitter, or house cleaner. When they unlock the door, the Butler bypasses all standard family logic (no chore reminders, no reading the family roster). Instead, he plays a custom greeting for them outside ("Hello, the dogs are ready for you.") and a custom alert inside ("The dog walker has arrived."), and keeps them completely off the daily "Who is home" dashboard log.

:date: Calendar & Appointment Reminders

Link your Google Calendar, private iCal URL, or a dedicated Calendar Device directly to the Butler.

  • He will automatically calculate upcoming event times and queue up warnings at intervals you select (e.g., 3 Hours, 1 Hour, 15 Minutes before the event).
  • Best of all, it uses Follow-Me Routing, meaning he will hunt you down in whatever room has active motion to politely remind you of your meeting, rather than yelling it to an empty house. (Keep an eye out for my upcoming Advanced Calendar App, which pairs perfectly with this!)

:pause_button: Universal Media Pause (Roku, Apple TV, Sonos)

This is the ultimate smart home flex. You can now select your media transport devices in the Global Audio Hardware section. If the TV is playing a movie when the Butler needs to make an announcement (Arrivals, Meals, DND Alerts), he will automatically send a Pause command, wait 1.5 seconds for silence, deliver the announcement, and seamlessly hit Play to resume your show.

:birthday: Junior Concierge: Birthday Countdowns

A fun addition for the kids: Tell the app their birth month and day. When the 1st of their birth month rolls around, the Butler will automatically append a daily countdown to their Good Morning routine (e.g., "By the way, you only have 12 days until your birthday!").

:desktop_computer: Live UI Previews & Dashboard Tile

  • Live Previews: Toggling switches and guessing what the Butler is going to say is a thing of the past. Every single section now features a "Live Preview" box at the bottom. As you type custom messages or change settings, it builds a real-time preview of the exact sentence the Butler will speak, dynamically injecting today's date, weather, and variables.
  • Status Tile: You can now link a virtual device to the app to broadcast a "Running and Active" string directly to your custom dashboards.

:hammer_and_wrench: Under the Hood (Engine Fixes)

  • The Chromecast/JBL Stutter Fix: Fixed an issue where Hubitat would send a play() command while a Wi-Fi speaker was actively buffering the TTS stream, causing it to abort and loop/stutter the first few words. Audio delivery is now incredibly smooth.
  • Speaker Amp Warm-up Delay: Do your soundbars or Wi-Fi speakers cut off the first few words because they are in deep sleep? You can now add a 2 or 3-second Warm-Up Delay. The Butler will ping the speaker to wake it up, wait the designated time, and then speak.
  • 403 Forbidden API Fixes: Wikipedia ("On this day" facts) and NPR (News feeds) recently tightened their security and were blocking the Butler. All external web fetchers have been rewritten with proper User-Agent headers to ensure your morning and dinner briefings pull data flawlessly.
  • Unified Routing Menus: Cleaned up the Follow-Me settings into simple dropdown menus (Broadcast, Follow-Me, Follow-Me + Fallback, Follow-Me + Simultaneous) so routing your audio is easier to configure.

Grab the latest code and let me know how it runs in your setups! As always, I am open to feature requests. What should the Butler learn to do next?

APP:
raw.githubusercontent.com/ShaneAllen334/Hubitat_Apps/refs/heads/main/Advanced_Voice_Butler/Advanced_Voice_Butler.groovy

Hello everyone!

I am incredibly excited to share a massive update to the Advanced Voice Butler.

:brain: 1. AI Habit Tracking & Anomaly Engine

Your house should know your schedule without you having to program it.

  • Machine Learning Departures: The Butler now silently logs your daily departure times and calculates a rolling average for each resident.
  • Anomaly Detection: If you oversleep or are running behind, the Butler will notice and proactively check on you.
    • Example: > "Pardon the interruption, Shane. I noticed you normally depart around 7:45 AM, and you are still home. Are we running behind schedule today?"

:shushing_face: 2. The "Secrecy Engine" (Context-Aware TTS)

There is nothing worse than your smart speaker ruining a surprise. The new Secrecy Engine actively scans the roster of who is currently home before reading calendar alerts.

  • If a calendar event contains keywords like "Gift," "Surprise," "Anniversary," or "Birthday," the Butler cross-references the house presence.
  • If the target of the surprise (or multiple people) are home, the Butler mutes the specific alert and logs it as suppressed to protect the secret. If you are home alone, it will gently remind you to wrap the gift!

:zap: 3. The Google Apps Script Bridge (Zero-Polling Instant Sync)

Polling Google for updates is slow, caches heavily, and bogs down the hub. We have entirely bypassed this with a free, custom Google Apps Script bridge that pushes webhooks instantly to Hubitat.

  • Instant Calendar Sync: The moment you add or change an event in Google Calendar, it pushes to the Butler. The Butler then schedules your 2-hour or 30-minute warnings automatically.
  • Live Important Email Intercept (NEW): You can now configure a custom label in Gmail (e.g., Butler-Alert). The moment an email hits your inbox with that label, Google fires a webhook to Hubitat, and the Butler announces it dynamically across your speakers.
    • Example: > "Pardon the interruption, you have just received an important email from the Front Gate. The subject is: Delivery Arrival. The email begins with: Your package has been placed..."

:newspaper: 4. Organic Media & Office Interceptors

I wanted news delivery to feel natural, not like a clockwork radio.

  • Organic Breaking News: Instead of checking RSS feeds exactly at the top of every hour, the AI injects +/- 30% time jitter. If major news drops, the Butler interrupts dynamically, making it feel like an organic news desk intercept.
  • Office Interceptor Switch: Assign a virtual switch in your office. Flip it on, and the Butler instantly fetches the latest Science and Technology headlines from TechCrunch, Engadget, Wired, or a custom RSS, routing a briefing specifically to your desk speaker.

:plate_with_cutlery: 5. Advanced Meal Time Routine

The Dinner Bell has been upgraded to a full evening digest.

  • Absentee Roll Call: The Butler checks lock codes and presence to see who isn't at the table.
    • Example: > "Dinner is now served. Please note that Leanne has not yet returned home, so we will proceed without her."
  • Evening Digest: Appends the current weather and an automated fetch of the top two NPR evening headlines to your dinner announcement.

:shield: 6. Smart Camera AI Intruder Deterrent

Basic motion announcements are out. Smart AI integrations are in.

  • Hooks directly into Unifi Protect (or other smart camera attributes) to determine what tripped the perimeter.
  • Animal Detection: > "Shoo! Get out of here!"
  • Person Detection: > "Warning. You are trespassing. Perimeter breach detected. Cameras are recording your face."

:control_knobs: 7. Live System Command Center Dashboard

The app UI has received a massive overhaul. You no longer have to guess what the app is doing in the background. The main page now features a Live Dashboard that shows:

  • Real-time system state (Muted, DND, Hosting, Active).
  • Live TTS Queue size and active locks.
  • Exact timestamps of your last external API syncs (Calendar, News, Emails).
  • A live read-out of the AI Habit Tracker (showing learned departure averages for every user).
  • A Live House Roster showing exactly who is present and the context of their arrival.

:teddy_bear: 8. "Junior Concierge" Kid-Friendly Features

For the local room zones, we added a few features specifically for kids' bedrooms:

  • Anti-Monster Security Check: On "Good Night", the Butler randomly generates reassuring security sweeps.
    • Example: > "Scanning the room... No monsters detected. The anti-monster forcefield is fully powered up. Sleep well."
  • Boredom Busters & Weekend Mode: Evaluates the weather sensor and calendar. If it's raining on a Saturday, it suggests building a fort. If it's a Friday night, it reminds them there is no school tomorrow so they can sleep in.

Audio Routing Engine Reminder: All of these features respect the advanced routing options: Global Indoor, Dedicated Speaker, Outdoor Only, or Follow-Me (requires motion).

This app has grown into an absolute beast, and I'm incredibly proud of how "alive" it makes the house feel. I’d love to hear how you guys are using the new Google Webhook bridge and the Secrecy Engine in your own setups!

APP:
raw.githubusercontent.com/ShaneAllen334/Hubitat_Apps/refs/heads/main/Advanced_Voice_Butler/Advanced_Voice_Butler.groovy

Google Integration Document
raw.githubusercontent.com/ShaneAllen334/Hubitat_Apps/refs/heads/main/Advanced_Voice_Butler/Advanced Voice Butler%3A Google Integration Guide

Were was this when I still had kids in school! lol

I haven't had time to install this but it sounds like one powerful and useful system.

Thanks, still a lot of work to do. Trying to fine tune things and battle the google api.

1 Like

New version coming out soon introduces the ability to directly interact with the butler's notes, agenda, and estate management through a custom local and cloud website.

Main post updated with all the updated features in version 1.10

I hope you get as much use out of this application as I do.

1 Like

Version 2.0 is released with a few integrations using Google Gemini.

  • Grocery Scout - Uses Gemini to search stores on a certain day and time to find the best deals on groceries.

  • Movie Scout - Uses Gemini to search your local theater releases, and Netflix releases to find something new to watch during the weekend.

  • Fixed an issue where the package detection was not showing its setup menu.

Each of these options can be disabled.

I hope to get feedback as time goes on. The goal of a digital context aware butler is getting closer and closer.

An update to fix the "The Schwarzmans" estate name will be coming in the next version. This was a place holder.

1 Like