Files
homeai/homeai-agent/skills/home-assistant/openclaw-bridge.sh
Aodhan Collins 6a0bae2a0b feat(phase-04): Wyoming Satellite integration + OpenClaw HA components
## Voice Pipeline (P3)
- Replace openWakeWord daemon with Wyoming Satellite approach
- Add Wyoming Satellite service on port 10700 for HA voice pipeline
- Update setup.sh with cross-platform sed compatibility (macOS/Linux)
- Add version field to Kokoro TTS voice info
- Update launchd service loader to use Wyoming Satellite

## Home Assistant Integration (P4)
- Add custom conversation agent component (openclaw_conversation)
  - Fix: Use IntentResponse instead of plain strings (HA API requirement)
  - Support both HTTP API and CLI fallback modes
  - Config flow for easy HA UI setup
- Add OpenClaw bridge scripts (Python + Bash)
- Add ha-ctl utility for HA entity control
  - Fix: Use context manager for token file reading
- Add HA configuration examples and documentation

## Infrastructure
- Add mem0 backup automation (launchd + script)
- Add n8n workflow templates (morning briefing, notification router)
- Add VS Code workspace configuration
- Reorganize model files into categorized folders:
  - lmstudio-community/
  - mlx-community/
  - bartowski/
  - mradermacher/

## Documentation
- Update PROJECT_PLAN.md with Wyoming Satellite architecture
- Update TODO.md with completed Wyoming integration tasks
- Add OPENCLAW_INTEGRATION.md for HA setup guide

## Testing
- Verified Wyoming services running (STT:10300, TTS:10301, Satellite:10700)
- Verified OpenClaw CLI accessibility
- Confirmed cross-platform compatibility fixes
2026-03-08 02:06:37 +00:00

29 lines
839 B
Bash

#!/usr/bin/env bash
# OpenClaw Bridge Script for Home Assistant
#
# Usage: ./openclaw-bridge.sh "message to send to OpenClaw"
# Returns: JSON response suitable for HA TTS
set -euo pipefail
MESSAGE="${1:-}"
AGENT="${2:-main}"
TIMEOUT="${3:-30}"
if [[ -z "$MESSAGE" ]]; then
echo '{"error": "No message provided"}' >&2
exit 1
fi
# Run OpenClaw agent and capture response
# The CLI outputs the response to stdout
RESPONSE=$(openclaw agent --message "$MESSAGE" --agent "$AGENT" 2>/dev/null || echo "Error: OpenClaw command failed")
# Output JSON for HA using jq for proper escaping
if command -v jq &>/dev/null; then
echo "$RESPONSE" | jq -Rs '{response: .}'
else
# Fallback: use Python for JSON encoding if jq is not available
python3 -c "import json,sys; print(json.dumps({'response': sys.stdin.read()}))" <<< "$RESPONSE"
fi