# Škodas officielle API i Home Assistant – hvad det kan, og hvad det ikke kan

- Link: https://www.vogh.dk/skodas-officielle-api-i-home-assistant-hvad-det-kan-og-hvad-det-ikke-kan/
- Udgivet: 2026-10-10T20:41:29+00:00
- Forfatter: ha-upload

Škoda har lanceret et **officielt, offentligt API** til MyŠkoda: Man laver en API-
nøgle, vælger sin bil, og så kan man hente bilens data med et helt almindeligt REST-
kald. Indtil nu har vores Elroq været koblet på Home Assistant med HACS-integrationen
MySkoda, der bruger den samme bagvej som app’en. Jeg har flyttet så meget som muligt
over på det officielle API – og undervejs lært, hvor grænserne går.

## Det korte svar

| Behov | Officielt API | 
| Batteri, rækkevidde, kilometertæller | ✅ læses | 
| Ladekabel, ladetilstand, ladeeffekt, resttid, ladegrænse | ✅ læses | 
| Døre låst, vinduer, motorhjelm, klima | ✅ læses | 
| Parkeringsposition og ladeprofiler | ✅ læses | 
| Start/stop opladning og klima, ladegrænse | ✅ kommandoer | 
| **Lås døre op/i** | ❌ findes ikke | 
| Sædevarme, “vågn op”, udetemperatur, billeder af bilen | ❌ findes ikke | 
| Lås stik op efter opladning | ⚠️ kun ved at overskrive hele ladeprofilen |

Den store mangel er **oplåsning**. Vi har en automation, der låser bilen op hverdagsmorgener,
når den har ladet – den kan ikke flyttes. Så MySkoda bliver ved med at køre side
om side med API’et, men kun til de ting, API’et ikke kan.

## Grænsen: 20 kald i timen

API’et tillader **20 kald i timen pr. bil**, og fejlede kald tæller med. Det former
hele opsætningen: Bilens data hentes med _ét_ kald hvert 5. minut (12 i timen), 
og alle sensorer læser fra det samme svar. Det giver luft til et par kommandoer –
men også en lille forsinkelse: Sætter man ladekablet i, går der op til 5 minutter,
før Home Assistant ved det.

Tip: Hver genindlæsning af REST-integrationen henter også data. Retter man filen
mange gange i samme time, kan man løbe ind i fejl 429.

## Opsætningen

Alt ligger i én pakkefil med den indbyggede `rest`-integration – ingen HACS. API-
nøglen ligger i `secrets.yaml`. Her er et uddrag med et par af sensorerne:

    ```nord
    rest:
      - resource: "https://public.api.connect.skoda-auto.cz/api/v1/vehicles/DIT_VIN"
        scan_interval: 300          # 12 af de 20 kald i timen
        timeout: 20
        headers:
          X-API-Key: !secret skoda_public_api_key
        sensor:
          - name: "Škoda Elroq API Batteri"
            unique_id: skoda_api_battery_soc
            unit_of_measurement: "%"
            device_class: battery
            state_class: measurement
            availability: >-
              {{ value_json is mapping
                 and value_json.get('vehicle', {}).get('charging', {}).get('status', {})
                      .get('battery', {}).get('stateOfChargeInPercent') is number }}
            value_template: "{{ value_json.vehicle.charging.status.battery.stateOfChargeInPercent }}"

          # Ladetilstand på dansk – ukendte værdier vises som API'ets egen tekst
          - name: "Škoda Elroq API Ladetilstand"
            unique_id: skoda_api_charging_state
            value_template: >-
              {%- set raa = value_json.vehicle.charging.status.state | upper -%}
              {{ {'CHARGING': 'Lader', 'CONNECT_CABLE': 'Sæt kablet i',
                  'READY_FOR_CHARGING': 'Klar til opladning',
                  'CONSERVING': 'Opladet – holder niveau'}.get(raa, raa) }}

          # Position til kortkort: latitude/longitude som attributter
          - name: "Škoda Elroq API Position"
            unique_id: skoda_api_position
            value_template: >-
              {{ value_json.vehicle.chargingProfiles.currentVehiclePositionProfile.name
                 if value_json.vehicle.get('chargingProfiles', {}).get('currentVehiclePositionProfile') is mapping
                 else 'Ude' }}
            json_attributes_path: "$.vehicle.parkingPosition.gpsCoordinates"
            json_attributes:
              - latitude
              - longitude

        binary_sensor:
          - name: "Škoda Elroq API Ladekabel"
            unique_id: skoda_api_plug_connected
            device_class: plug
            value_template: >-
              {{ value_json.vehicle.charging.status.plugConnectionState | upper == 'CONNECTED' }}
    ```

I alt laver det ene kald 20 sensorer: batteri, rækkevidde, kilometertæller, ladetilstand,
ladeeffekt, resttid, ladegrænse, klima, sidst opdateret, position, låse- og dørstatus,
ladeprofil, ladevindue og nummerplade.

### Et smart trick: “hjemme” uden device tracker

API’et har ingen “home/not_home”, men det fortæller, hvilken **ladeprofil** der 
gælder på bilens nuværende position. Vores profil hedder “Hjem”, så positionssensoren
viser “Hjem”, når bilen holder i indkørslen, og “Ude” ellers. Det er alt, lade-påmindelsen
behøver.

## Tre ting jeg lærte på den hårde måde

 1. **En binær REST-sensor må ikke have attributter.** Jeg gav “døre låst” et par attributter,
    og så afviste Home Assistant _hele_ REST-blokken – ingen af de nye sensorer blev
    oprettet. Fejlen står i loggen, ikke i brugerfladen. Attributterne endte på en 
    almindelig sensor i stedet.
 2. **Læs specifikationen, ikke kun dokumentationen.** Dokumentationssiden nævner kun
    ét endpoint, men den fulde OpenAPI-specifikation ligger offentligt og viser alle
    felter og alle 12 endpoints. Det var her, det stod klart, at der ingen låsekommando
    er.
 3. **Sammenlign med det gamle, før du skifter.** Før dashboards og automationer blev
    flyttet, tjekkede jeg, at batteri, rækkevidde, kilometertal, ladegrænse og alle
    dør-/vinduesstatusser var identiske mellem API’et og MySkoda.

## Skiftet

Bilen optræder på fem dashboards. Her blev 13 MySkoda-sensorer udskiftet med API-
sensorerne – også inde i kortenes skabeloner, f.eks. ikonet for ladestikket. Det,
API’et ikke kan, peger stadig på MySkoda: knapperne, udetemperaturen og billederne
af bilen. Lade-påmindelsen kl. 19:15 kører nu udelukkende på API’et.

## Er det værd at skifte?

Til at **læse** data: ja. Det er officielt, stabilt og dokumenteret, og det kører
med Home Assistants egen REST-integration. Til at **styre** bilen er det endnu for
begrænset – så længe der ikke er en låsekommando, kan man ikke helt undvære den 
uofficielle integration. Jeg håber, Škoda udvider API’et; indtil da kører de to 
side om side.

![](https://www.vogh.dk/wp-content/uploads/2026/10/image-7.png)
