#!/bin/bash
#
# Automatyczna konfiguracja Home Assistant po pierwszym uruchomieniu
# Użycie: ./auto-configure-ha.sh [test|prod]
#
set -e
ENVIRONMENT="${1:-test}"
if [ "$ENVIRONMENT" = "test" ]; then
HA_IP="192.168.50.210"
HA_NAME="Test Home"
elif [ "$ENVIRONMENT" = "prod" ]; then
HA_IP="192.168.50.211"
HA_NAME="Production Home"
else
echo "❌ Użycie: $0 [test|prod]"
exit 1
fi
HA_URL="http://${HA_IP}:8123"
HA_USER="admin"
HA_PASS="HomeAssistant2024!"
SSH_PASS="QWer!@34"
echo "======================================"
echo "🤖 Automatyczna konfiguracja HA"
echo "======================================"
echo "Środowisko: $ENVIRONMENT"
echo "IP: $HA_IP"
echo "======================================"
echo ""
# Czekanie na uruchomienie HA
echo "⏳ Czekam na uruchomienie Home Assistant..."
MAX_WAIT=30
for i in $(seq 1 $MAX_WAIT); do
echo -n " Próba $i/$MAX_WAIT... "
if curl -s -m 5 "${HA_URL}/api/" > /dev/null 2>&1; then
echo "✅ HA odpowiada!"
break
fi
if [ $i -eq $MAX_WAIT ]; then
echo "❌ Timeout - HA nie odpowiada po $((MAX_WAIT * 10)) sekundach"
echo " Spróbuj ponownie później lub sprawdź logi VM"
exit 1
fi
echo "czekam..."
sleep 10
done
echo ""
echo "🔍 Sprawdzanie czy HA jest już skonfigurowane..."
ONBOARDING_STATUS=$(curl -s "${HA_URL}/api/onboarding" 2>/dev/null || echo '{}')
if echo "$ONBOARDING_STATUS" | grep -q '"done":true'; then
echo "✅ Home Assistant jest już skonfigurowane"
echo " Pomijam onboarding"
else
echo "🎯 Rozpoczynam automatyczny onboarding..."
# Krok 1: Utworzenie pierwszego użytkownika
echo "👤 Tworzenie użytkownika administratora..."
USER_RESPONSE=$(curl -s -X POST "${HA_URL}/api/onboarding/users" \
-H "Content-Type: application/json" \
-d "{
\"client_id\": \"${HA_URL}\",
\"name\": \"Administrator\",
\"username\": \"${HA_USER}\",
\"password\": \"${HA_PASS}\",
\"language\": \"pl\"
}" 2>/dev/null || echo '{"error":"failed"}')
if echo "$USER_RESPONSE" | grep -q "auth_token"; then
echo " ✅ Użytkownik utworzony"
AUTH_TOKEN=$(echo "$USER_RESPONSE" | grep -o '"auth_token":"[^"]*"' | cut -d'"' -f4)
else
echo " ⚠️ Nie udało się utworzyć użytkownika - może już istnieje"
# Próba logowania
LOGIN_RESPONSE=$(curl -s -X POST "${HA_URL}/auth/login_flow" \
-H "Content-Type: application/json" \
-d "{
\"client_id\": \"${HA_URL}\",
\"handler\": [\"homeassistant\", null],
\"redirect_uri\": \"${HA_URL}\"
}" 2>/dev/null)
# To wymaga bardziej skomplikowanej obsługi flow logowania
fi
# Krok 2: Konfiguracja core (lokalizacja, nazwa)
echo "🏠 Konfiguracja podstawowych ustawień..."
curl -s -X POST "${HA_URL}/api/onboarding/core_config" \
-H "Content-Type: application/json" \
-d "{
\"location_name\": \"${HA_NAME}\",
\"latitude\": 52.2297,
\"longitude\": 21.0122,
\"elevation\": 100,
\"unit_system\": \"metric\",
\"currency\": \"PLN\",
\"time_zone\": \"Europe/Warsaw\"
}" > /dev/null 2>&1 || echo " ⚠️ Konfiguracja może być już ustawiona"
# Krok 3: Zakończenie onboardingu
echo "✅ Finalizacja onboardingu..."
curl -s -X POST "${HA_URL}/api/onboarding/integration" \
-H "Content-Type: application/json" \
-d '{}' > /dev/null 2>&1 || true
fi
echo ""
echo "======================================"
echo "✅ KONFIGURACJA ZAKOŃCZONA"
echo "======================================"
echo ""
echo "📋 Dane dostępowe:"
echo " URL: ${HA_URL}"
echo " Username: ${HA_USER}"
echo " Password: ${HA_PASS}"
echo ""
echo "⚠️ WAŻNE: SSH nie może być włączony automatycznie przez API"
echo " Musisz to zrobić raz ręcznie przez WebUI:"
echo ""
echo " 1. Zaloguj się: ${HA_URL}"
echo " 2. Settings → Add-ons → Terminal & SSH"
echo " 3. Install → Start"
echo " 4. Configuration → Hasło: ${SSH_PASS}"
echo ""
echo "💡 LUB użyj alternatywnego skryptu setup-ssh-addon.sh"
echo "======================================"