Skip to content

firmware: self-heal the wake engine when it is found stopped - #13

Merged
jayzuccarelli merged 1 commit into
mainfrom
jay/mww-self-heal
Aug 28, 2026
Merged

firmware: self-heal the wake engine when it is found stopped#13
jayzuccarelli merged 1 commit into
mainfrom
jay/mww-self-heal

Conversation

@jayzuccarelli

Copy link
Copy Markdown
Owner

What

A 60s interval in voice_pe_dual.yaml that restarts micro_wake_word whenever it is found stopped, plus pinning the upstream home-assistant-voice-pe external component to the last-flashed SHA (5a4e7ee) instead of the moving dev branch.

Why

micro_wake_word.start's only call site was voice_assistant.on_client_connected. If HA restarts and the assist_satellite subscription doesn't re-establish, the wake engine stays stopped forever while the LED looks normal. This caused the 47h dead window (Aug 14-16) and a 16h dead window (Aug 28). The Mycroft wake path (mww → websocket broker) doesn't need HA at all, so an always-running wake engine is strictly safer; mww already runs continuously mid-session (stop_after_detection: false powers barge-in).

Verification

  • esphome config clean, compiled, OTA-flashed to the puck (already live).
  • Controlled repro: with the HA container stopped, rebooted the puck via the restart button → it booted deaf (mww STOPPED) → self-heal fired after 52s (mww self-heal: wake engine stopped, restarting WARN + State changed from STOPPED to STARTING → DETECTING_WAKE_WORD in device logs) → HA started → satellite reconnected cleanly.
  • make check GREEN 2/2 (isolated dev broker on 8766).
  • Wake-word sensitivity setting (0.93) survived the flash.

🤖 Generated with Claude Code

https://claude.ai/code/session_01NnawsemyCTiRi5Gp6XSjBx

micro_wake_word.start's only call site was voice_assistant.on_client_connected,
so an HA restart whose assist_satellite subscription never re-established left
the wake engine stopped forever while the LED looked normal (47h dead window
Aug 14-16, 16h dead window Aug 28). The wake path (mww -> websocket broker)
does not need HA, so a 60s interval now restarts the engine whenever it is
stopped: worst case ~2 min deaf instead of forever.

Also pins the upstream home-assistant-voice-pe external component to the SHA
the puck was last flashed with; ref: dev is a moving branch and rebuilds were
silently pulling unreviewed upstream changes.

Verified live: OTA-flashed, then with HA stopped a rebooted puck self-healed
after 52s (WARN line + STOPPED -> DETECTING_WAKE_WORD in device logs).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NnawsemyCTiRi5Gp6XSjBx
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@coderabbitai

coderabbitai Bot commented Aug 28, 2026

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: dd7d71bd-cccb-45c5-af86-a55a0b867037


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@jayzuccarelli
jayzuccarelli merged commit 8d58163 into main Aug 28, 2026
3 checks passed
@jayzuccarelli
jayzuccarelli deleted the jay/mww-self-heal branch August 28, 2026 21:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant