#!/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: 30" 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"