982bb04c1a
Die urspruengliche Wegwerf-Testinstanz war verloren, weil sie nur als Anleitung existierte. testumgebung/aufsetzen.sh baut sie jetzt vollstaendig neu auf: Container, Nutzer, langlebiges Token, pyscript als Custom Component, Projektdateien und nachgebildete Fahrzeugsensoren als Template-Entitaeten, die ueber Helfer zur Laufzeit steuerbar sind. Verifiziert: pyscript veroeffentlicht alle acht Entitaeten, Fahrzeugsensoren liefern Werte, beide Smoke-Tests gruen.
85 lines
2.7 KiB
Bash
Executable File
85 lines
2.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Setzt die Wegwerf-Testinstanz auf. Mehrfach ausfuehrbar.
|
|
# Siehe README.md im selben Ordner.
|
|
set -euo pipefail
|
|
|
|
HIER="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJEKT="$(dirname "$HIER")"
|
|
NAME="audi_ha_test"
|
|
PORT="18123"
|
|
ZIEL="${AUDI_TEST_CONFIG:-${TMPDIR:-/tmp}/audi-ha-test-config}"
|
|
BASIS="http://localhost:${PORT}"
|
|
|
|
echo "==> Zielordner: $ZIEL"
|
|
rm -rf "$ZIEL"
|
|
mkdir -p "$ZIEL"
|
|
|
|
echo "==> Alten Container entfernen (falls vorhanden)"
|
|
docker rm -f "$NAME" >/dev/null 2>&1 || true
|
|
|
|
echo "==> Image laden"
|
|
docker pull ghcr.io/home-assistant/home-assistant:stable
|
|
|
|
echo "==> Container starten"
|
|
docker run -d --name "$NAME" -p "${PORT}:8123" -v "$ZIEL:/config" \
|
|
ghcr.io/home-assistant/home-assistant:stable >/dev/null
|
|
|
|
echo "==> Auf Home Assistant warten"
|
|
for _ in $(seq 1 60); do
|
|
if [ "$(curl -s -o /dev/null -w '%{http_code}' --max-time 3 "$BASIS/" || true)" != "000" ]; then
|
|
break
|
|
fi
|
|
sleep 5
|
|
done
|
|
|
|
echo "==> Nutzer anlegen und Token erzeugen"
|
|
TOKEN="$(node "$HIER/einrichten.mjs" "$BASIS")"
|
|
if [ -z "$TOKEN" ]; then
|
|
echo "FEHLER: kein Token erhalten" >&2
|
|
exit 1
|
|
fi
|
|
|
|
echo "==> pyscript installieren"
|
|
VERSION="$(curl -s https://api.github.com/repos/custom-components/pyscript/releases/latest \
|
|
| grep -o '"tag_name": *"[^"]*"' | cut -d'"' -f4)"
|
|
TMPDL="$(mktemp -d)"
|
|
curl -sL -o "$TMPDL/pyscript.zip" \
|
|
"https://github.com/custom-components/pyscript/archive/refs/tags/${VERSION}.zip"
|
|
unzip -oq "$TMPDL/pyscript.zip" -d "$TMPDL"
|
|
mkdir -p "$ZIEL/custom_components"
|
|
cp -r "$TMPDL/pyscript-${VERSION}/custom_components/pyscript" "$ZIEL/custom_components/"
|
|
rm -rf "$TMPDL"
|
|
echo " pyscript $VERSION"
|
|
|
|
echo "==> Projektdateien einspielen"
|
|
cp "$HIER/konfiguration.yaml" "$ZIEL/configuration.yaml"
|
|
cp -r "$PROJEKT/homeassistant/pyscript" "$ZIEL/pyscript"
|
|
mkdir -p "$ZIEL/www" "$ZIEL/audi_dashboard"
|
|
cp -r "$PROJEKT/homeassistant/www/." "$ZIEL/www/"
|
|
cp "$PROJEKT/homeassistant/data/fahrzeugprofil.example.json" \
|
|
"$ZIEL/audi_dashboard/fahrzeugprofil.json"
|
|
cp "$PROJEKT/homeassistant/data/shell_beleg_parser.py" "$ZIEL/audi_dashboard/"
|
|
: > "$ZIEL/audi_dashboard/fahrten.jsonl"
|
|
: > "$ZIEL/audi_dashboard/tankvorgaenge.jsonl"
|
|
printf '%s' "$TOKEN" > "$ZIEL/audi_dashboard/ha_token.txt"
|
|
|
|
echo "==> Neu starten"
|
|
docker restart "$NAME" >/dev/null
|
|
|
|
echo "==> Auf Backend warten"
|
|
for _ in $(seq 1 60); do
|
|
if [ "$(curl -s -o /dev/null -w '%{http_code}' --max-time 3 \
|
|
-H "Authorization: Bearer $TOKEN" "$BASIS/api/" || true)" = "200" ]; then
|
|
break
|
|
fi
|
|
sleep 5
|
|
done
|
|
|
|
echo "==> Token nach companion-app/.env.local schreiben"
|
|
printf 'VITE_TEST_URL=%s\nVITE_TEST_TOKEN=%s\n' "$BASIS" "$TOKEN" \
|
|
> "$PROJEKT/companion-app/.env.local"
|
|
|
|
echo
|
|
echo "Fertig. $BASIS · Benutzer test · Passwort testtest123"
|
|
echo "Token liegt in companion-app/.env.local (gitignored)."
|