Files
homeai/homeai-agent/custom_components/install-to-docker-ha.sh
Aodhan Collins 6db8ae4492 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>
2026-03-11 00:15:55 +00:00

116 lines
3.2 KiB
Bash
Executable File

#!/usr/bin/env bash
# Install OpenClaw Conversation component to Docker Home Assistant on 10.0.0.199
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
COMPONENT_NAME="openclaw_conversation"
HA_HOST="${HA_HOST:-10.0.0.199}"
HA_CONTAINER="${HA_CONTAINER:-homeassistant}"
echo "Installing OpenClaw Conversation to Docker Home Assistant"
echo "=========================================================="
echo "Host: $HA_HOST"
echo "Container: $HA_CONTAINER"
echo ""
# Check if we can reach the host
if ! ping -c 1 -W 2 "$HA_HOST" &>/dev/null; then
echo "Error: Cannot reach $HA_HOST"
echo "Please ensure the server is accessible"
exit 1
fi
# Create temporary tarball
TEMP_DIR=$(mktemp -d)
TARBALL="$TEMP_DIR/openclaw_conversation.tar.gz"
echo "Creating component archive..."
cd "$SCRIPT_DIR"
tar -czf "$TARBALL" \
--exclude='*.pyc' \
--exclude='__pycache__' \
--exclude='.DS_Store' \
"$COMPONENT_NAME"
echo "✓ Archive created: $(du -h "$TARBALL" | cut -f1)"
echo ""
# Copy to remote host
echo "Copying to $HA_HOST:/tmp/..."
if scp -q "$TARBALL" "$HA_HOST:/tmp/openclaw_conversation.tar.gz"; then
echo "✓ File copied successfully"
else
echo "✗ Failed to copy file"
echo ""
echo "Troubleshooting:"
echo " 1. Ensure SSH access is configured: ssh $HA_HOST"
echo " 2. Check SSH keys are set up"
echo " 3. Try manual copy: scp $TARBALL $HA_HOST:/tmp/"
rm -rf "$TEMP_DIR"
exit 1
fi
# Extract into container
echo ""
echo "Installing into Home Assistant container..."
ssh "$HA_HOST" << 'EOF'
# Find the Home Assistant container
CONTAINER=$(docker ps --filter "name=homeassistant" --format "{{.Names}}" | head -n 1)
if [ -z "$CONTAINER" ]; then
echo "Error: Home Assistant container not found"
echo "Available containers:"
docker ps --format "{{.Names}}"
exit 1
fi
echo "Found container: $CONTAINER"
# Copy tarball into container
docker cp /tmp/openclaw_conversation.tar.gz "$CONTAINER:/tmp/"
# Extract into custom_components
docker exec "$CONTAINER" sh -c '
mkdir -p /config/custom_components
cd /config/custom_components
tar -xzf /tmp/openclaw_conversation.tar.gz
rm /tmp/openclaw_conversation.tar.gz
ls -la openclaw_conversation/
'
# Cleanup
rm /tmp/openclaw_conversation.tar.gz
echo ""
echo "✓ Component installed successfully!"
EOF
# Cleanup local temp
rm -rf "$TEMP_DIR"
echo ""
echo "=========================================================="
echo "Installation complete!"
echo ""
echo "Next steps:"
echo " 1. Restart Home Assistant:"
echo " ssh $HA_HOST 'docker restart $HA_CONTAINER'"
echo ""
echo " 2. Open Home Assistant UI: http://$HA_HOST:8123"
echo ""
echo " 3. Go to Settings → Devices & Services → Add Integration"
echo ""
echo " 4. Search for 'OpenClaw Conversation'"
echo ""
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: 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)"
echo ""
echo "See VOICE_PIPELINE_SETUP.md for complete configuration guide"