#!/bin/bash
#
# Export konfiguracji Home Assistant (integracje, encje, automatyzacje)
# UΕΌycie: ./export-ha-config.sh [test|prod]
#
set -e
ENVIRONMENT="${1:-test}"
if [ "$ENVIRONMENT" = "test" ]; then
HA_URL="http://192.168.50.151:8123"
OUTPUT_DIR="ha-config-test"
elif [ "$ENVIRONMENT" = "prod" ]; then
HA_URL="http://192.168.50.242:8123"
OUTPUT_DIR="ha-config-prod"
else
echo "β UΕΌycie: $0 [test|prod]"
exit 1
fi
echo "βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ"
echo "β β"
echo "β π₯ Export konfiguracji Home Assistant β"
echo "β β"
echo "βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ"
echo ""
echo "Εrodowisko: ${ENVIRONMENT^^}"
echo "URL: $HA_URL"
echo ""
# SprawdΕΊ czy token jest juΕΌ ustawiony
if [ -z "$HA_TOKEN" ]; then
echo "βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ"
echo "π Potrzebny Long-Lived Access Token"
echo "βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ"
echo ""
echo "Jak uzyskaΔ token:"
echo " 1. OtwΓ³rz: $HA_URL"
echo " 2. Zaloguj siΔ (WK / QWer!@34)"
echo " 3. Kliknij na nazwΔ uΕΌytkownika (lewy dolny rΓ³g)"
echo " 4. PrzewiΕ do \"Long-Lived Access Tokens\""
echo " 5. Kliknij \"Create Token\""
echo " 6. Nazwa: \"Export Script\""
echo " 7. Skopiuj wygenerowany token"
echo ""
read -p "π Wklej token tutaj: " HA_TOKEN
echo ""
if [ -z "$HA_TOKEN" ]; then
echo "β Brak tokenu!"
exit 1
fi
fi
# Weryfikacja tokenu
echo "π Weryfikacja tokenu..."
API_CHECK=$(curl -s -w "%{http_code}" -o /dev/null \
-H "Authorization: Bearer $HA_TOKEN" \
"${HA_URL}/api/")
if [ "$API_CHECK" != "200" ]; then
echo "β Token nieprawidΕowy lub wygasΕ (HTTP $API_CHECK)"
exit 1
fi
echo "β
Token OK!"
echo ""
# Tworzenie katalogu
mkdir -p ~/$OUTPUT_DIR
cd ~/$OUTPUT_DIR
echo "βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ"
echo "π₯ Pobieranie danych..."
echo "βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ"
echo ""
# Integracje
echo " π¦ Integracje (config_entries)..."
curl -s -H "Authorization: Bearer $HA_TOKEN" \
"${HA_URL}/api/config/config_entries" > integrations.json
# Encje (states)
echo " π’ Encje (states)..."
curl -s -H "Authorization: Bearer $HA_TOKEN" \
"${HA_URL}/api/states" > states.json
# Core config
echo " βοΈ Core config..."
curl -s -H "Authorization: Bearer $HA_TOKEN" \
"${HA_URL}/api/config/core" > core_config.json
# Services
echo " π οΈ Services..."
curl -s -H "Authorization: Bearer $HA_TOKEN" \
"${HA_URL}/api/services" > services.json
# Events
echo " π’ Events..."
curl -s -H "Authorization: Bearer $HA_TOKEN" \
"${HA_URL}/api/events" > events.json
echo ""
echo "βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ"
echo "β
Dane pobrane!"
echo "βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ"
echo ""
# Analiza integracji Deye
echo "π Szukam integracji Deye..."
echo ""
python3 << 'PYEOF'
import json, os
with open('integrations.json') as f:
integrations = json.load(f)
deye_found = False
for entry in integrations:
domain = entry.get('domain', '')
title = entry.get('title', '')
if 'deye' in domain.lower() or 'deye' in title.lower():
deye_found = True
print(f"β
Znaleziono: {domain}")
print(f" TytuΕ: {title}")
print(f" ID: {entry.get('entry_id')}")
print(f" Data: {json.dumps(entry.get('data', {}), indent=6)}")
print()
if not deye_found:
print("β οΈ Nie znaleziono integracji Deye w config_entries")
print(" MoΕΌe byΔ skonfigurowana przez YAML")
print()
# Lista wszystkich integracji
print("βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ")
print("π Wszystkie integracje:")
print("βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ")
print()
domains = {}
for entry in integrations:
domain = entry.get('domain', 'unknown')
domains[domain] = domains.get(domain, 0) + 1
for domain, count in sorted(domains.items()):
print(f" β’ {domain}: {count} config(s)")
PYEOF
echo ""
echo "βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ"
echo "πΎ Dane zapisane w:"
echo " ~/$OUTPUT_DIR/"
echo ""
ls -lh
echo ""
echo "βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ"
echo ""
echo "π NastΔpne kroki:"
echo " 1. SprawdΕΊ pliki w ~/$OUTPUT_DIR/"
echo " 2. Skopiuj do repozytorium Git"
echo " 3. Deploy na PROD (jeΕli gotowe)"
echo ""