feat: complete voice pipeline — fix wake word crash, bridge timeout, HA conversation agent

- Fix Wyoming satellite crash on wake word: convert macOS .aiff chimes to .wav
  (Python wave module only reads RIFF format, not AIFF)
- Fix OpenClaw HTTP bridge: increase subprocess timeout 30s → 120s, add SO_REUSEADDR
- Fix HA conversation component: use HTTP agent (not CLI) since HA runs in Docker
  on a different machine; update default host to Mac Mini IP, timeout to 120s
- Rewrite character manager as Vite+React app with schema validation
- Add Wyoming satellite wake word command, ElevenLabs TTS server, wakeword monitor
- Add Phase 5 development plan
- Update TODO.md: mark voice pipeline and agent tasks complete

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Aodhan Collins
2026-03-11 00:15:55 +00:00
parent 664bb6d275
commit 6db8ae4492
34 changed files with 4649 additions and 1083 deletions

View File

@@ -107,7 +107,7 @@ echo " 5. Configure:"
echo " - OpenClaw Host: 10.0.0.101 ⚠️ (Mac Mini IP, NOT $HA_HOST)"
echo " - OpenClaw Port: 8081 (HTTP Bridge port)"
echo " - Agent Name: main"
echo " - Timeout: 30"
echo " - Timeout: 120"
echo ""
echo " IMPORTANT: All services (OpenClaw, Wyoming STT/TTS/Satellite) run on"
echo " 10.0.0.101 (Mac Mini), not $HA_HOST (HA server)"

View File

@@ -22,7 +22,7 @@ from .const import (
DEFAULT_TIMEOUT,
DOMAIN,
)
from .conversation import OpenClawAgent, OpenClawCLIAgent
from .conversation import OpenClawAgent
_LOGGER = logging.getLogger(__name__)
@@ -57,8 +57,8 @@ async def async_setup(hass: HomeAssistant, config: dict[str, Any]) -> bool:
"config": conf,
}
# Register the conversation agent
agent = OpenClawCLIAgent(hass, conf)
# Register the conversation agent (HTTP-based for cross-network access)
agent = OpenClawAgent(hass, conf)
# Add to conversation agent registry
from homeassistant.components import conversation

View File

@@ -9,10 +9,10 @@ CONF_AGENT_NAME = "agent_name"
CONF_TIMEOUT = "timeout"
# Defaults
DEFAULT_HOST = "localhost"
DEFAULT_HOST = "10.0.0.101"
DEFAULT_PORT = 8081 # OpenClaw HTTP Bridge (not 8080 gateway)
DEFAULT_AGENT = "main"
DEFAULT_TIMEOUT = 30
DEFAULT_TIMEOUT = 120
# API endpoints
OPENCLAW_API_PATH = "/api/agent/message"