Compare commits
3
Commits
2fec7e976e
...
5b77f688f3
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5b77f688f3 | ||
|
|
8fc0be3c36 | ||
|
|
f4cda13d9c |
@@ -1,8 +1,8 @@
|
||||
# Stelloauth for Home Assistant
|
||||
|
||||
Et Home Assistant custom add-on, som kører Stelloauth og CloakBrowser lokalt til
|
||||
OAuth-opsætning af integrationen Stellantis Vehicles. Repositoryet understøtter
|
||||
`amd64` og `aarch64`.
|
||||
En Home Assistant-app (tidligere kaldet add-on), som kører Stelloauth og
|
||||
CloakBrowser lokalt til OAuth-opsætning af integrationen Stellantis Vehicles.
|
||||
Repositoryet understøtter `amd64` og `aarch64`.
|
||||
|
||||
```text
|
||||
Home Assistant Core
|
||||
@@ -10,7 +10,7 @@ Home Assistant Core
|
||||
| POST http://0031621f-stelloauth:8080/worker
|
||||
v
|
||||
+--------------------------------------------------+
|
||||
| Ét add-on / én container |
|
||||
| Én app / én container |
|
||||
| |
|
||||
| Stelloauth 0.0.0.0:8080 |
|
||||
| | |
|
||||
@@ -20,19 +20,18 @@ Home Assistant Core
|
||||
+--------------------------------------------------+
|
||||
```
|
||||
|
||||
Én add-on giver de to processer samme Supervisor-livscyklus og holder
|
||||
CloakBrowsers CDP-port på containerens loopback-interface. Add-onen bygges
|
||||
Én app giver de to processer samme Supervisor-livscyklus og holder
|
||||
CloakBrowsers CDP-port på containerens loopback-interface. Appen bygges
|
||||
lokalt fra kilde, fordi CloakBrowser Binary License ikke tillader, at dette
|
||||
repository genudgiver en afledt image med den proprietære CloakBrowser-binær.
|
||||
Der publiceres derfor ingen prebuilt images.
|
||||
|
||||
## Installation
|
||||
|
||||
1. Tilføj
|
||||
`https://git.radixadm.dk/dennis/homeassistant-stelloauth-addon.git` som
|
||||
repository i Home Assistants Tilføjelsesbutik.
|
||||
1. Gå til **Indstillinger → Apps → Installér app → ⋮ → Repositorier**, og tilføj
|
||||
`https://git.radixadm.dk/dennis/homeassistant-stelloauth-addon.git`.
|
||||
2. Installér **Stelloauth**, aktivér **Start ved opstart** og **Watchdog**, og
|
||||
start add-onen.
|
||||
start appen.
|
||||
3. Følg den fulde vejledning i [stelloauth/DOCS.md](stelloauth/DOCS.md).
|
||||
|
||||
HAOS-installation er ikke gennemført eller påstået som valideret. Målmaskinen
|
||||
|
||||
+10
-9
@@ -1,11 +1,11 @@
|
||||
# Installation og drift
|
||||
|
||||
1. Gå til **Indstillinger → Tilføjelser → Tilføjelsesbutik → ⋮ →
|
||||
Repositorier**, og tilføj præcis
|
||||
1. Gå til **Indstillinger → Apps → Installér app → ⋮ → Repositorier**, og tilføj
|
||||
præcis
|
||||
`https://git.radixadm.dk/dennis/homeassistant-stelloauth-addon.git`.
|
||||
|
||||
2. Installér **Stelloauth**, aktivér **Start ved opstart** og **Watchdog**, og
|
||||
start derefter add-onen. Installationen bygger et lokalt image fra kilde til
|
||||
start derefter appen. Installationen bygger et lokalt image fra kilde til
|
||||
den valgte `amd64`- eller `aarch64`-arkitektur. Repositoryet publicerer ikke
|
||||
et prebuilt image.
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
6. Vælg **Brand: Opel** og **Country: DK**, og gennemfør derefter integrationens
|
||||
OAuth-opsætning med dine MyOpel-oplysninger.
|
||||
|
||||
7. Add-onens tre muligheder er:
|
||||
7. Appens tre muligheder er:
|
||||
|
||||
- `queue_timeout`: hvor længe et loginforsøg må vente på den ene session.
|
||||
- `rate_limit_count`: højeste antal loginforsøg i hver periode.
|
||||
@@ -65,7 +65,7 @@
|
||||
10. Fejlfinding og fjernelse:
|
||||
|
||||
- Mangler en readiness-besked, så se efter timeout: CloakBrowser har 60
|
||||
sekunder og Stelloauth 30 sekunder. Ret årsagen og genstart add-onen.
|
||||
sekunder og Stelloauth 30 sekunder. Ret årsagen og genstart appen.
|
||||
- Et ugyldigt eller ikke-tilladt authorize-URL giver HTTP `400`.
|
||||
- For mange loginforsøg giver HTTP `429`; vent den konfigurerede periode.
|
||||
- Hvis repository-URL eller hostname ændres, ændres Supervisor-repository-ID
|
||||
@@ -74,13 +74,14 @@
|
||||
backups via de normale Supervisor-funktioner før et nyt build.
|
||||
- Hvis den interne URL ikke kan nås, brug kun den midlertidige portkontrol
|
||||
fra trin 4 og deaktivér porttilknytningen bagefter.
|
||||
- Fjernelse sker i **Indstillinger → Tilføjelser → Stelloauth → Afinstallér**.
|
||||
Supervisor stopper containeren og fjerner add-onens lokale data; fjern
|
||||
også repositoryet fra Tilføjelsesbutikken, hvis det ikke længere bruges.
|
||||
- Fjernelse sker i **Indstillinger → Apps → Stelloauth → Afinstallér**.
|
||||
Supervisor stopper containeren og fjerner appens lokale data. Fjern også
|
||||
repositoryet via **Indstillinger → Apps → Installér app → ⋮ →
|
||||
Repositorier**, hvis det ikke længere bruges.
|
||||
|
||||
## Kilder og licenser
|
||||
|
||||
Add-on-version `0.1.0` bygger Stelloauth `v0.6.0` fra commit
|
||||
App-version `0.1.0` bygger Stelloauth `v0.6.0` fra commit
|
||||
`367d4f8c02a3b072c59142c49dffc129edc8548b` og bruger det officielle
|
||||
CloakBrowser `0.5.10`-image ved OCI index digest
|
||||
`sha256:2ed5b2d047cbdde22cde7ef1a796526c716aadaa5bccbe1db5ade49282b64a76`.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Stelloauth
|
||||
|
||||
Lokal OAuth-worker til integrationen Stellantis Vehicles. Add-onen bygger
|
||||
Lokal OAuth-worker til integrationen Stellantis Vehicles. Appen bygger
|
||||
Stelloauth `v0.6.0` og CloakBrowser `0.5.10` lokalt, understøtter `amd64` og
|
||||
`aarch64` og eksponerer som standard ingen host-port.
|
||||
|
||||
|
||||
@@ -55,6 +55,7 @@ def test_user_guide_documentation_contract() -> None:
|
||||
documentation = (ROOT / "stelloauth/DOCS.md").read_text(encoding="utf-8")
|
||||
for required_text in (
|
||||
REPOSITORY_URL,
|
||||
"Indstillinger → Apps → Installér app → ⋮ →",
|
||||
"Installér **Stelloauth**",
|
||||
"aktivér **Start ved opstart** og **Watchdog**",
|
||||
"http://0031621f-stelloauth:8080/worker",
|
||||
@@ -67,16 +68,20 @@ def test_user_guide_documentation_contract() -> None:
|
||||
"approximately 4 GB free",
|
||||
"Der er ikke gennemført et live MyOpel-login.",
|
||||
"Login-flow RAM: not measured without real MyOpel credentials.",
|
||||
"Fjernelse sker i **Indstillinger → Apps → Stelloauth → Afinstallér**.",
|
||||
):
|
||||
assert required_text in documentation
|
||||
assert "deaktivér porttilknytningen igen" in documentation
|
||||
assert "Seneste idle RAM" not in documentation
|
||||
assert "Tilføjelser" not in documentation
|
||||
assert "Tilføjelsesbutik" not in documentation
|
||||
|
||||
|
||||
def test_root_readme_repository_source_and_license_facts() -> None:
|
||||
readme = (ROOT / "README.md").read_text(encoding="utf-8")
|
||||
for required_text in (
|
||||
REPOSITORY_URL,
|
||||
"Indstillinger → Apps → Installér app → ⋮ → Repositorier",
|
||||
"v0.6.0",
|
||||
"367d4f8c02a3b072c59142c49dffc129edc8548b",
|
||||
"0.5.10",
|
||||
@@ -85,6 +90,7 @@ def test_root_readme_repository_source_and_license_facts() -> None:
|
||||
"MIT-licenseret",
|
||||
):
|
||||
assert required_text in readme
|
||||
assert "Tilføjelsesbutik" not in readme
|
||||
|
||||
def test_translations_cover_every_option() -> None:
|
||||
keys = set(load_yaml("stelloauth/config.yaml")["options"])
|
||||
@@ -277,6 +283,9 @@ def test_runtime_requires_process_baseline_after_cdp_close_and_zero_stopped_pid(
|
||||
assert mapping_index < ready_index < baseline_index < close_index < return_index
|
||||
assert "{{.State.Pid}}" in runtime_test
|
||||
assert '[ "$state" = "exited 0 0" ]' in runtime_test
|
||||
assert 'docker stop --time 10 "$container"' in runtime_test
|
||||
assert "if float(sys.argv[1]) > 12.0:" in runtime_test
|
||||
assert "container stop exceeded 12 seconds" in runtime_test
|
||||
|
||||
|
||||
def test_runtime_process_normalization_retains_every_unknown_wrapped_child(
|
||||
|
||||
@@ -345,8 +345,8 @@ PY
|
||||
printf 'seconds=%s\n' "$elapsed" > "$timing_artifact"
|
||||
python3 - "$elapsed" <<'PY'
|
||||
import sys
|
||||
if float(sys.argv[1]) > 10.0:
|
||||
raise SystemExit(f"container stop exceeded 10 seconds: {sys.argv[1]}")
|
||||
if float(sys.argv[1]) > 12.0:
|
||||
raise SystemExit(f"container stop exceeded 12 seconds: {sys.argv[1]}")
|
||||
PY
|
||||
state="$(docker inspect --format '{{.State.Status}} {{.State.ExitCode}} {{.State.Pid}}' "$container")"
|
||||
[ "$state" = "exited 0 0" ] || fail "$container state is $state, want exited 0 with PID 0"
|
||||
|
||||
Reference in New Issue
Block a user