skodaconnect / homeassistant-myskoda

Homeassistant integration for MySkoda.
91 stars 15 forks source link

Field "primary_engine_range" of type EngineRange in DrivingRange has invalid value #224

Closed Cypherke closed 2 weeks ago

Cypherke commented 2 weeks ago

Describe the bug I got this error right after logging in with my account for the first time and setup does not complete.

Debug logs

2024-11-08 17:00:49.225 ERROR (MainThread) [myskoda.rest_api] Failed to deserialize data: {"carType":"hybrid","primaryEngineRange":{"engineType":"gasoline","currentSoCInPercent":100,"currentFuelLevelInPercent":100},"secondaryEngineRange":{"engineType":"electric","currentSoCInPercent":20},"carCapturedTimestamp":"2024-11-08T13:49:35Z"}
Traceback (most recent call last):
  File "<string>", line 24, in __mashumaro_from_json__
  File "<string>", line 21, in __mashumaro_from_dict_json__
mashumaro.exceptions.MissingField: Field "remaining_range_in_km" of type int is missing in EngineRange instance

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.12/site-packages/myskoda/rest_api.py", line 392, in _deserialize
    data = deserialize(text)
           ^^^^^^^^^^^^^^^^^
  File "<string>", line 26, in __mashumaro_from_json__
mashumaro.exceptions.InvalidFieldValue: Field "primary_engine_range" of type EngineRange in DrivingRange has invalid value {'engineType': 'gasoline', 'currentSoCInPercent': 100, 'currentFuelLevelInPercent': 100}
2024-11-08 17:00:49.227 ERROR (MainThread) [custom_components.myskoda.coordinator] Unexpected error fetching myskoda data
Traceback (most recent call last):
  File "<string>", line 24, in __mashumaro_from_json__
  File "<string>", line 21, in __mashumaro_from_dict_json__
mashumaro.exceptions.MissingField: Field "remaining_range_in_km" of type int is missing in EngineRange instance

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 354, in _async_refresh
    self.data = await self._async_update_data()
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/myskoda/coordinator.py", line 94, in _async_update_data
    vehicle = await self.myskoda.get_vehicle(self.vin)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/myskoda/myskoda.py", line 292, in get_vehicle
    vehicle.driving_range = await self.get_driving_range(vin)
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/myskoda/myskoda.py", line 258, in get_driving_range
    return (await self.rest_api.get_driving_range(vin, anonymize=anonymize)).result
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/myskoda/rest_api.py", line 177, in get_driving_range
    result = self._deserialize(raw, DrivingRange.from_json)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/myskoda/rest_api.py", line 392, in _deserialize
    data = deserialize(text)
           ^^^^^^^^^^^^^^^^^
  File "<string>", line 26, in __mashumaro_from_json__
mashumaro.exceptions.InvalidFieldValue: Field "primary_engine_range" of type EngineRange in DrivingRange has invalid value {'engineType': 'gasoline', 'currentSoCInPercent': 100, 'currentFuelLevelInPercent': 100}

Installation:

Additional context Skoda Superb Combi iV (2019-2023 model)

dvx76 commented 2 weeks ago

Thanks for your submission! This should be fixed by the MR above.

What car model do you have, as it's a bit weird that this field remaining_range_in_km is missing.

If possible it would be great for us to get the full data of your car so we can include it in our tests (which would have found this issue). Take a look at https://github.com/skodaconnect/myskoda?tab=readme-ov-file#contribute-your-fixtures if that is something you'd be comfortable doing.

Cypherke commented 2 weeks ago

Thanks for your submission! This should be fixed by the MR above.

What car model do you have, as it's a bit weird that this field remaining_range_in_km is missing.

If possible it would be great for us to get the full data of your car so we can include it in our tests (which would have found this issue). Take a look at https://github.com/skodaconnect/myskoda?tab=readme-ov-file#contribute-your-fixtures if that is something you'd be comfortable doing.

sure no problem, I ran the command and it threw the same error but it generated the yaml file.

description: null
generation_time: '2024-11-09T13:14:58.263776+00:00'
name: my_cars
reports:
- endpoint: info
  error: null
  raw: '{"vin": "TMOCKAA0AA000000", "name": "Example Car", "workshopModeEnabled":
    false, "licensePlate": "HH AA 1234", "state": "ACTIVATED", "devicePlatform": "MBB_ODP",
    "specification": {"title": "\u0160koda Superb Combi", "manufacturingDate": "2022-04-29",
    "model": "Superb", "modelYear": "2022", "body": "Combi", "trimLevel": "CLEVER",
    "systemCode": "UNKNOWN", "systemModelId": "3V53XC", "engine": {"type": "TSI iV",
    "powerInKW": 160, "capacityInLiters": 1.4}, "gearbox": {"type": "A6F"}}, "servicePartner":
    {"servicePartnerId": "DEU11111"}, "renders": [{"url": "https://iprenders.blob.core.windows.net/base3v5s22200325/0F0FhQZNI-XAcEaOJ-.y82w69-Ks2ylRqFezXOw8SbH-hKznrNVYRk7.f4Zux81-mB6OF9_rdRuWU24JHaLwtlz-BETJCHRPNM-19201080dayvext_front1080.png",
    "viewPoint": "exterior_front", "type": "REAL", "order": 0}, {"url": "https://iprenders.blob.core.windows.net/base3v5s22200325/0F0FhQZNI-XAcEaOJ-.y82w69-Ks2ylRqFezXOw8SbH-hKznrNVYRk7.f4Zux81-mB6OF9_rdRuWU24JHaLwtlz-BETJCHRPNM-19201080dayvext_side1080.png",
    "viewPoint": "exterior_side", "type": "REAL", "order": 1}, {"url": "https://ip-modcwp.azureedge.net/modcwp3v5s22200325/0F0FhQZNI-XAcEaOJ-.y82w69-Ks2ylRqFezXOw8SbH-hKznrNVYRk7.f4Zux81-mB6OF9_rdRuWU24JHaLwtlz-BETJCHRPNM-1920658dayvext_side1080.png?v=638525262480000000",
    "viewPoint": "garage_l", "type": "REAL", "order": 2}, {"url": "https://ip-modcwp.azureedge.net/modcwp3v5s22200325/0F0FhQZNI-XAcEYOJ-.y82x69-It3ykPqFdzXOw8SaG-hKznpNVXRk6.f4Zux81-mE6OF9_rdRuVU24JHLwtlZz-BETJCHRPOM-700390dayvext_front1080.png?v=637914070380000000",
    "viewPoint": "main", "type": "REAL", "order": 3}], "compositeRenders": [{"layers":
    [{"url": "https://iprenders.blob.core.windows.net/base3v5s22200325/0F0FhQZNI-XAcEaOJ-.y82w69-Ks2ylRqFezXOw8SbH-hKznrNVYRk7.f4Zux81-mB6OF9_rdRuWU24JHaLwtlz-BETJCHRPNM-19201080dayvext_front1080.png",
    "viewPoint": "exterior_front", "type": "REAL", "order": 0}], "viewType": "UNMODIFIED_EXTERIOR_FRONT"},
    {"layers": [{"url": "https://iprenders.blob.core.windows.net/base3v5s22200325/0F0FhQZNI-XAcEaOJ-.y82w69-Ks2ylRqFezXOw8SbH-hKznrNVYRk7.f4Zux81-mB6OF9_rdRuWU24JHaLwtlz-BETJCHRPNM-19201080dayvext_side1080.png",
    "viewPoint": "exterior_side", "type": "REAL", "order": 0}], "viewType": "UNMODIFIED_EXTERIOR_SIDE"},
    {"layers": [{"url": "https://iprenders.blob.core.windows.net/base3v5s22200325/0F0FhQZNI-XAcEaOJ-.y82w69-Ks2ylRqFezXOw8SbH-hKznrNVYRk7.f4Zux81-mB6OF9_rdRuWU24JHaLwtlz-BETJCHRPNM-19201080dayvext_side1080.png",
    "viewPoint": "exterior_side", "type": "REAL", "order": 0}], "modifications": {"adjustSpaceInPx":
    {"top": -354, "bottom": -200, "left": -138, "right": -66}, "densityIndependentHeight":
    270, "flipHorizontal": false, "anchorTo": "LEFT"}, "viewType": "HOME"}, {"layers":
    [{"url": "https://iprenders.blob.core.windows.net/base3v5s22200325/0F0FhQZNI-XAcEaOJ-.y82w69-Ks2ylRqFezXOw8SbH-hKznrNVYRk7.f4Zux81-mB6OF9_rdRuWU24JHaLwtlz-BETJCHRPNM-19201080dayvext_front1080.png",
    "viewPoint": "exterior_front", "type": "REAL", "order": 0}, {"url": "https://mspgwlivestorage.blob.core.windows.net/renders/cables/superb_3V_cable_charging_light_v1.png",
    "viewPoint": "exterior_front", "type": "REAL", "order": 1}], "modifications":
    {"adjustSpaceInPx": {"top": -324, "bottom": -184, "left": -202, "right": -245},
    "densityIndependentHeight": 270, "flipHorizontal": false, "anchorTo": "RIGHT"},
    "viewType": "CHARGING_LIGHT"}, {"layers": [{"url": "https://iprenders.blob.core.windows.net/base3v5s22200325/0F0FhQZNI-XAcEaOJ-.y82w69-Ks2ylRqFezXOw8SbH-hKznrNVYRk7.f4Zux81-mB6OF9_rdRuWU24JHaLwtlz-BETJCHRPNM-19201080dayvext_front1080.png",
    "viewPoint": "exterior_front", "type": "REAL", "order": 0}, {"url": "https://mspgwlivestorage.blob.core.windows.net/renders/cables/superb_3V_cable_charging_dark_v1.png",
    "viewPoint": "exterior_front", "type": "REAL", "order": 1}], "modifications":
    {"adjustSpaceInPx": {"top": -324, "bottom": -184, "left": -202, "right": -245},
    "densityIndependentHeight": 270, "flipHorizontal": false, "anchorTo": "RIGHT"},
    "viewType": "CHARGING_DARK"}, {"layers": [{"url": "https://iprenders.blob.core.windows.net/base3v5s22200325/0F0FhQZNI-XAcEaOJ-.y82w69-Ks2ylRqFezXOw8SbH-hKznrNVYRk7.f4Zux81-mB6OF9_rdRuWU24JHaLwtlz-BETJCHRPNM-19201080dayvext_front1080.png",
    "viewPoint": "exterior_front", "type": "REAL", "order": 0}, {"url": "https://mspgwlivestorage.blob.core.windows.net/renders/cables/superb_3V_cable_plugged_in_light_v1.png",
    "viewPoint": "exterior_front", "type": "REAL", "order": 1}], "modifications":
    {"adjustSpaceInPx": {"top": -324, "bottom": -184, "left": -202, "right": -245},
    "densityIndependentHeight": 270, "flipHorizontal": false, "anchorTo": "RIGHT"},
    "viewType": "PLUGGED_IN_LIGHT"}, {"layers": [{"url": "https://iprenders.blob.core.windows.net/base3v5s22200325/0F0FhQZNI-XAcEaOJ-.y82w69-Ks2ylRqFezXOw8SbH-hKznrNVYRk7.f4Zux81-mB6OF9_rdRuWU24JHaLwtlz-BETJCHRPNM-19201080dayvext_front1080.png",
    "viewPoint": "exterior_front", "type": "REAL", "order": 0}, {"url": "https://mspgwlivestorage.blob.core.windows.net/renders/cables/superb_3V_cable_plugged_in_dark_v1.png",
    "viewPoint": "exterior_front", "type": "REAL", "order": 1}], "modifications":
    {"adjustSpaceInPx": {"top": -324, "bottom": -184, "left": -202, "right": -245},
    "densityIndependentHeight": 270, "flipHorizontal": false, "anchorTo": "RIGHT"},
    "viewType": "PLUGGED_IN_DARK"}], "capabilities": {"capabilities": [{"id": "ACCESS",
    "statuses": []}, {"id": "AUTOMATION", "statuses": []}, {"id": "DEALER_APPOINTMENT",
    "statuses": []}, {"id": "DEPARTURE_TIMERS", "statuses": []}, {"id": "GEO_FENCE",
    "statuses": []}, {"id": "HONK_AND_FLASH", "statuses": []}, {"id": "MEASUREMENTS",
    "statuses": []}, {"id": "NEWS", "statuses": ["LICENSE_MISSING"]}, {"id": "PARKING_POSITION",
    "statuses": []}, {"id": "ROADSIDE_ASSISTANT", "statuses": []}, {"id": "SPEED_ALERT",
    "statuses": []}, {"id": "STATE", "statuses": []}, {"id": "TRIP_STATISTICS", "statuses":
    []}, {"id": "VEHICLE_HEALTH_INSPECTION", "statuses": []}, {"id": "WARNING_LIGHTS",
    "statuses": []}, {"id": "VEHICLE_WAKE_UP", "statuses": []}, {"id": "POWERPASS_TARIFFS",
    "statuses": []}, {"id": "AIR_CONDITIONING_HEATING_SOURCE_ELECTRIC", "statuses":
    []}, {"id": "PAY_TO_FUEL", "statuses": []}, {"id": "AIR_CONDITIONING_SAVE_AND_ACTIVATE",
    "statuses": []}, {"id": "CUBIC", "statuses": []}, {"id": "SUBSCRIPTIONS", "statuses":
    []}, {"id": "DESTINATIONS", "statuses": ["LICENSE_MISSING", "LICENSE_EXPIRED"]},
    {"id": "CHARGING_MQB", "statuses": []}, {"id": "OUTSIDE_TEMPERATURE", "statuses":
    []}, {"id": "DIGICERT", "statuses": []}, {"id": "VEHICLE_HEALTH_WARNINGS", "statuses":
    []}, {"id": "PAY_TO_PARK", "statuses": []}, {"id": "FUEL_STATUS", "statuses":
    []}, {"id": "SERVICE_PARTNER", "statuses": []}, {"id": "WINDOW_HEATING", "statuses":
    []}, {"id": "ROUTE_IMPORT", "statuses": []}, {"id": "CHARGING", "statuses": []},
    {"id": "MISUSE_PROTECTION", "statuses": []}, {"id": "AIR_CONDITIONING", "statuses":
    []}]}}'
  result:
    capabilities:
      capabilities:
      - id: ACCESS
        statuses: []
      - id: AUTOMATION
        statuses: []
      - id: DEALER_APPOINTMENT
        statuses: []
      - id: DEPARTURE_TIMERS
        statuses: []
      - id: GEO_FENCE
        statuses: []
      - id: HONK_AND_FLASH
        statuses: []
      - id: MEASUREMENTS
        statuses: []
      - id: NEWS
        statuses:
        - LICENSE_MISSING
      - id: PARKING_POSITION
        statuses: []
      - id: ROADSIDE_ASSISTANT
        statuses: []
      - id: SPEED_ALERT
        statuses: []
      - id: STATE
        statuses: []
      - id: TRIP_STATISTICS
        statuses: []
      - id: VEHICLE_HEALTH_INSPECTION
        statuses: []
      - id: WARNING_LIGHTS
        statuses: []
      - id: VEHICLE_WAKE_UP
        statuses: []
      - id: POWERPASS_TARIFFS
        statuses: []
      - id: AIR_CONDITIONING_HEATING_SOURCE_ELECTRIC
        statuses: []
      - id: PAY_TO_FUEL
        statuses: []
      - id: AIR_CONDITIONING_SAVE_AND_ACTIVATE
        statuses: []
      - id: CUBIC
        statuses: []
      - id: SUBSCRIPTIONS
        statuses: []
      - id: DESTINATIONS
        statuses:
        - LICENSE_MISSING
        - LICENSE_EXPIRED
      - id: CHARGING_MQB
        statuses: []
      - id: OUTSIDE_TEMPERATURE
        statuses: []
      - id: DIGICERT
        statuses: []
      - id: VEHICLE_HEALTH_WARNINGS
        statuses: []
      - id: PAY_TO_PARK
        statuses: []
      - id: FUEL_STATUS
        statuses: []
      - id: SERVICE_PARTNER
        statuses: []
      - id: WINDOW_HEATING
        statuses: []
      - id: ROUTE_IMPORT
        statuses: []
      - id: CHARGING
        statuses: []
      - id: MISUSE_PROTECTION
        statuses: []
      - id: AIR_CONDITIONING
        statuses: []
    composite_renders:
    - layers:
      - order: 0
        type: REAL
        url: https://iprenders.blob.core.windows.net/base3v5s22200325/0F0FhQZNI-XAcEaOJ-.y82w69-Ks2ylRqFezXOw8SbH-hKznrNVYRk7.f4Zux81-mB6OF9_rdRuWU24JHaLwtlz-BETJCHRPNM-19201080dayvext_front1080.png
        view_point: exterior_front
      view_type: UNMODIFIED_EXTERIOR_FRONT
    - layers:
      - order: 0
        type: REAL
        url: https://iprenders.blob.core.windows.net/base3v5s22200325/0F0FhQZNI-XAcEaOJ-.y82w69-Ks2ylRqFezXOw8SbH-hKznrNVYRk7.f4Zux81-mB6OF9_rdRuWU24JHaLwtlz-BETJCHRPNM-19201080dayvext_side1080.png
        view_point: exterior_side
      view_type: UNMODIFIED_EXTERIOR_SIDE
    - layers:
      - order: 0
        type: REAL
        url: https://iprenders.blob.core.windows.net/base3v5s22200325/0F0FhQZNI-XAcEaOJ-.y82w69-Ks2ylRqFezXOw8SbH-hKznrNVYRk7.f4Zux81-mB6OF9_rdRuWU24JHaLwtlz-BETJCHRPNM-19201080dayvext_side1080.png
        view_point: exterior_side
      view_type: HOME
    - layers:
      - order: 0
        type: REAL
        url: https://iprenders.blob.core.windows.net/base3v5s22200325/0F0FhQZNI-XAcEaOJ-.y82w69-Ks2ylRqFezXOw8SbH-hKznrNVYRk7.f4Zux81-mB6OF9_rdRuWU24JHaLwtlz-BETJCHRPNM-19201080dayvext_front1080.png
        view_point: exterior_front
      - order: 1
        type: REAL
        url: https://mspgwlivestorage.blob.core.windows.net/renders/cables/superb_3V_cable_charging_light_v1.png
        view_point: exterior_front
      view_type: CHARGING_LIGHT
    - layers:
      - order: 0
        type: REAL
        url: https://iprenders.blob.core.windows.net/base3v5s22200325/0F0FhQZNI-XAcEaOJ-.y82w69-Ks2ylRqFezXOw8SbH-hKznrNVYRk7.f4Zux81-mB6OF9_rdRuWU24JHaLwtlz-BETJCHRPNM-19201080dayvext_front1080.png
        view_point: exterior_front
      - order: 1
        type: REAL
        url: https://mspgwlivestorage.blob.core.windows.net/renders/cables/superb_3V_cable_charging_dark_v1.png
        view_point: exterior_front
      view_type: CHARGING_DARK
    - layers:
      - order: 0
        type: REAL
        url: https://iprenders.blob.core.windows.net/base3v5s22200325/0F0FhQZNI-XAcEaOJ-.y82w69-Ks2ylRqFezXOw8SbH-hKznrNVYRk7.f4Zux81-mB6OF9_rdRuWU24JHaLwtlz-BETJCHRPNM-19201080dayvext_front1080.png
        view_point: exterior_front
      - order: 1
        type: REAL
        url: https://mspgwlivestorage.blob.core.windows.net/renders/cables/superb_3V_cable_plugged_in_light_v1.png
        view_point: exterior_front
      view_type: PLUGGED_IN_LIGHT
    - layers:
      - order: 0
        type: REAL
        url: https://iprenders.blob.core.windows.net/base3v5s22200325/0F0FhQZNI-XAcEaOJ-.y82w69-Ks2ylRqFezXOw8SbH-hKznrNVYRk7.f4Zux81-mB6OF9_rdRuWU24JHaLwtlz-BETJCHRPNM-19201080dayvext_front1080.png
        view_point: exterior_front
      - order: 1
        type: REAL
        url: https://mspgwlivestorage.blob.core.windows.net/renders/cables/superb_3V_cable_plugged_in_dark_v1.png
        view_point: exterior_front
      view_type: PLUGGED_IN_DARK
    device_platform: MBB_ODP
    errors: null
    license_plate: HH AA 1234
    name: Example Car
    renders:
    - order: 0
      type: REAL
      url: https://iprenders.blob.core.windows.net/base3v5s22200325/0F0FhQZNI-XAcEaOJ-.y82w69-Ks2ylRqFezXOw8SbH-hKznrNVYRk7.f4Zux81-mB6OF9_rdRuWU24JHaLwtlz-BETJCHRPNM-19201080dayvext_front1080.png
      view_point: exterior_front
    - order: 1
      type: REAL
      url: https://iprenders.blob.core.windows.net/base3v5s22200325/0F0FhQZNI-XAcEaOJ-.y82w69-Ks2ylRqFezXOw8SbH-hKznrNVYRk7.f4Zux81-mB6OF9_rdRuWU24JHaLwtlz-BETJCHRPNM-19201080dayvext_side1080.png
      view_point: exterior_side
    - order: 2
      type: REAL
      url: https://ip-modcwp.azureedge.net/modcwp3v5s22200325/0F0FhQZNI-XAcEaOJ-.y82w69-Ks2ylRqFezXOw8SbH-hKznrNVYRk7.f4Zux81-mB6OF9_rdRuWU24JHaLwtlz-BETJCHRPNM-1920658dayvext_side1080.png?v=638525262480000000
      view_point: garage_l
    - order: 3
      type: REAL
      url: https://ip-modcwp.azureedge.net/modcwp3v5s22200325/0F0FhQZNI-XAcEYOJ-.y82x69-It3ykPqFdzXOw8SaG-hKznpNVXRk6.f4Zux81-mE6OF9_rdRuVU24JHLwtlZz-BETJCHRPOM-700390dayvext_front1080.png?v=637914070380000000
      view_point: main
    service_partner:
      id: DEU11111
    software_version: null
    specification:
      battery: null
      body: Combi
      engine:
        capacity_in_liters: 1.4
        power: 160
        type: TSI iV
      manufacturing_date: '2022-04-29'
      max_charging_power: null
      model: Superb
      model_year: '2022'
      system_code: UNKNOWN
      system_model_id: 3V53XC
      title: "\u0160koda Superb Combi"
      trim_level: CLEVER
    state: ACTIVATED
    vin: TMOCKAA0AA000000
    workshop_mode_enabled: false
  success: true
  type: get
  url: /v2/garage/vehicles/TMOCKAA0AA000000?connectivityGenerations=MOD1&connectivityGenerations=MOD2&connectivityGenerations=MOD3&connectivityGenerations=MOD4
  vehicle_id: 0
- endpoint: status
  error: null
  raw: '{"overall": {"doorsLocked": "YES", "locked": "YES", "doors": "CLOSED", "windows":
    "CLOSED", "lights": "OFF"}, "detail": {"sunroof": "UNSUPPORTED", "trunk": "CLOSED",
    "bonnet": "CLOSED"}, "renders": {"lightMode": {"oneX": "https://mysmob.api.connect.skoda-auto.cz/api/v2/vehicle-status/render?carType=COMBI&vehicleState=1-1-1-1-0-0-0-0-0&lastModifiedAt=1730291332&dimension=1x&theme=LIGHT",
    "oneAndHalfX": "https://mysmob.api.connect.skoda-auto.cz/api/v2/vehicle-status/render?carType=COMBI&vehicleState=1-1-1-1-0-0-0-0-0&lastModifiedAt=1730291332&dimension=1-5x&theme=LIGHT",
    "twoX": "https://mysmob.api.connect.skoda-auto.cz/api/v2/vehicle-status/render?carType=COMBI&vehicleState=1-1-1-1-0-0-0-0-0&lastModifiedAt=1730291332&dimension=2x&theme=LIGHT",
    "threeX": "https://mysmob.api.connect.skoda-auto.cz/api/v2/vehicle-status/render?carType=COMBI&vehicleState=1-1-1-1-0-0-0-0-0&lastModifiedAt=1730291332&dimension=3x&theme=LIGHT"},
    "darkMode": {"oneX": "https://mysmob.api.connect.skoda-auto.cz/api/v2/vehicle-status/render?carType=COMBI&vehicleState=1-1-1-1-0-0-0-0-0&lastModifiedAt=1730291332&dimension=1x&theme=DARK",
    "oneAndHalfX": "https://mysmob.api.connect.skoda-auto.cz/api/v2/vehicle-status/render?carType=COMBI&vehicleState=1-1-1-1-0-0-0-0-0&lastModifiedAt=1730291332&dimension=1-5x&theme=DARK",
    "twoX": "https://mysmob.api.connect.skoda-auto.cz/api/v2/vehicle-status/render?carType=COMBI&vehicleState=1-1-1-1-0-0-0-0-0&lastModifiedAt=1730291332&dimension=2x&theme=DARK",
    "threeX": "https://mysmob.api.connect.skoda-auto.cz/api/v2/vehicle-status/render?carType=COMBI&vehicleState=1-1-1-1-0-0-0-0-0&lastModifiedAt=1730291332&dimension=3x&theme=DARK"}},
    "carCapturedTimestamp": "2024-11-08T13:49:35Z"}'
  result:
    car_captured_timestamp: '2024-11-08T13:49:35+00:00'
    detail:
      bonnet: CLOSED
      sunroof: UNSUPPORTED
      trunk: CLOSED
    overall:
      doors: CLOSED
      doors_locked: 'YES'
      lights: 'OFF'
      locked: 'YES'
      windows: CLOSED
    renders:
      dark_mode:
        one_and_half_x: https://mysmob.api.connect.skoda-auto.cz/api/v2/vehicle-status/render?carType=COMBI&vehicleState=1-1-1-1-0-0-0-0-0&lastModifiedAt=1730291332&dimension=1-5x&theme=DARK
        one_x: https://mysmob.api.connect.skoda-auto.cz/api/v2/vehicle-status/render?carType=COMBI&vehicleState=1-1-1-1-0-0-0-0-0&lastModifiedAt=1730291332&dimension=1x&theme=DARK
        three_x: https://mysmob.api.connect.skoda-auto.cz/api/v2/vehicle-status/render?carType=COMBI&vehicleState=1-1-1-1-0-0-0-0-0&lastModifiedAt=1730291332&dimension=3x&theme=DARK
        two_x: https://mysmob.api.connect.skoda-auto.cz/api/v2/vehicle-status/render?carType=COMBI&vehicleState=1-1-1-1-0-0-0-0-0&lastModifiedAt=1730291332&dimension=2x&theme=DARK
      light_mode:
        one_and_half_x: https://mysmob.api.connect.skoda-auto.cz/api/v2/vehicle-status/render?carType=COMBI&vehicleState=1-1-1-1-0-0-0-0-0&lastModifiedAt=1730291332&dimension=1-5x&theme=LIGHT
        one_x: https://mysmob.api.connect.skoda-auto.cz/api/v2/vehicle-status/render?carType=COMBI&vehicleState=1-1-1-1-0-0-0-0-0&lastModifiedAt=1730291332&dimension=1x&theme=LIGHT
        three_x: https://mysmob.api.connect.skoda-auto.cz/api/v2/vehicle-status/render?carType=COMBI&vehicleState=1-1-1-1-0-0-0-0-0&lastModifiedAt=1730291332&dimension=3x&theme=LIGHT
        two_x: https://mysmob.api.connect.skoda-auto.cz/api/v2/vehicle-status/render?carType=COMBI&vehicleState=1-1-1-1-0-0-0-0-0&lastModifiedAt=1730291332&dimension=2x&theme=LIGHT
  success: true
  type: get
  url: /v2/vehicle-status/TMOCKAA0AA000000
  vehicle_id: 0
- endpoint: air_conditioning
  error: null
  raw: '{"state": "OFF", "runningRequests": [], "targetTemperature": {"temperatureValue":
    21.0, "unitInCar": "CELSIUS"}, "airConditioningWithoutExternalPower": true, "steeringWheelPosition":
    "LEFT", "chargerConnectionState": "DISCONNECTED", "chargerLockState": "UNLOCKED",
    "windowHeatingState": {"front": "OFF", "rear": "OFF", "unspecified": "INVALID"},
    "timers": [], "carCapturedTimestamp": "2024-10-30T16:37:12Z", "errors": [{"type":
    "UNAVAILABLE_VEHICLE_INFORMATION", "description": "APIs for obtaining seat heating
    status are not available"}, {"type": "UNAVAILABLE_TIMERS_INFORMATION", "description":
    "APIs for obtaining air conditioning timers are not available"}]}'
  result:
    air_conditioning_at_unlock: null
    air_conditioning_without_external_power: true
    car_captured_timestamp: '2024-10-30T16:37:12+00:00'
    charger_connection_state: DISCONNECTED
    charger_lock_state: UNLOCKED
    errors:
    - description: APIs for obtaining seat heating status are not available
      type: UNAVAILABLE_VEHICLE_INFORMATION
    - description: APIs for obtaining air conditioning timers are not available
      type: UNAVAILABLE_TIMERS_INFORMATION
    estimated_date_time_to_reach_target_temperature: null
    heater_source: null
    seat_heating_activated: null
    state: 'OFF'
    steering_wheel_position: LEFT
    target_temperature:
      temperature_value: 21.0
      unit_in_car: CELSIUS
    timers: []
    window_heating_enabled: null
    window_heating_state:
      front: 'OFF'
      rear: 'OFF'
      unspecified: INVALID
  success: true
  type: get
  url: /v2/air-conditioning/TMOCKAA0AA000000
  vehicle_id: 0
- endpoint: positions
  error: null
  raw: '{"positions": [{"type": "VEHICLE", "gpsCoordinates": {"latitude": 53.470636,
    "longitude": 9.689872}, "address": {"city": "Example City", "street": "Example
    Avenue", "houseNumber": "15", "zipCode": "54321", "countryCode": "DEU"}}], "errors":
    []}'
  result:
    errors: []
    positions:
    - address:
        city: Example City
        country: null
        country_code: DEU
        house_number: '15'
        street: Example Avenue
        zip_code: '54321'
      gps_coordinates:
        latitude: 53.470636
        longitude: 9.689872
      type: VEHICLE
  success: true
  type: get
  url: /v1/maps/positions?vin=TMOCKAA0AA000000
  vehicle_id: 0
- endpoint: health
  error: null
  raw: '{"capturedAt": "2024-11-08T13:49:33Z", "warningLights": [{"category": "ASSISTANCE",
    "defects": []}, {"category": "COMFORT", "defects": []}, {"category": "BRAKE",
    "defects": []}, {"category": "ENGINE", "defects": []}, {"category": "LIGHTING",
    "defects": []}, {"category": "TIRE", "defects": []}, {"category": "OTHER", "defects":
    []}]}'
  result:
    captured_at: '2024-11-08T13:49:33+00:00'
    mileage_in_km: null
    warning_lights:
    - category: ASSISTANCE
      defects: []
    - category: COMFORT
      defects: []
    - category: BRAKE
      defects: []
    - category: ENGINE
      defects: []
    - category: LIGHTING
      defects: []
    - category: TIRE
      defects: []
    - category: OTHER
      defects: []
  success: true
  type: get
  url: /v1/vehicle-health-report/warning-lights/TMOCKAA0AA000000
  vehicle_id: 0
- endpoint: charging
  error: null
  raw: '{"isVehicleInSavedLocation": false, "status": {"state": "CONNECT_CABLE", "chargeType":
    "OFF", "battery": {"remainingCruisingRangeInMeters": 0, "stateOfChargeInPercent":
    20}}, "settings": {"availableChargeModes": [], "maxChargeCurrentAc": "MAXIMUM"},
    "carCapturedTimestamp": "2024-10-30T16:37:11Z", "errors": [{"type": "CARE_MODE_IS_NOT_AVAILABLE",
    "description": "Care mode is not available."}, {"type": "AUTO_UNLOCK_IS_NOT_AVAILABLE",
    "description": "Auto unlock is not available."}, {"type": "CHARGE_LIMIT_IS_NOT_AVAILABLE",
    "description": "Charge limit is not available."}]}'
  result:
    car_captured_timestamp: '2024-10-30T16:37:11+00:00'
    errors:
    - description: Care mode is not available.
      type: CARE_MODE_IS_NOT_AVAILABLE
    - description: Auto unlock is not available.
      type: AUTO_UNLOCK_IS_NOT_AVAILABLE
    - description: Charge limit is not available.
      type: CHARGE_LIMIT_IS_NOT_AVAILABLE
    is_vehicle_in_saved_location: false
    settings:
      auto_unlock_plug_when_charged: null
      available_charge_modes: []
      battery_support: null
      charging_care_mode: null
      max_charge_current_ac: MAXIMUM
      preferred_charge_mode: null
      target_state_of_charge_in_percent: null
    status:
      battery:
        remaining_cruising_range_in_meters: 0
        state_of_charge_in_percent: 20
      charge_power_in_kw: null
      charge_type: 'OFF'
      charging_rate_in_kilometers_per_hour: null
      errors: null
      remaining_time_to_fully_charged_in_minutes: null
      state: CONNECT_CABLE
  success: true
  type: get
  url: /v1/charging/TMOCKAA0AA000000
  vehicle_id: 0
- endpoint: maintenance
  error: null
  raw: '{"maintenanceReport": {"capturedAt": "2024-11-08T13:49:33Z", "inspectionDueInDays":
    677, "inspectionDueInKm": 28900, "oilServiceDueInDays": 312, "oilServiceDueInKm":
    13900}, "preferredServicePartner": {"name": "Example Service Partner", "brand":
    "C", "partnerNumber": "1111", "id": "DEU11111", "contact": {"phone": "+49 1234
    567890", "url": "https://example.com", "email": "user@example.com"}, "address":
    {"city": "Example City", "street": "Example Avenue", "houseNumber": "15", "zipCode":
    "54321", "countryCode": "DEU"}, "location": {"latitude": 53.470636, "longitude":
    9.689872}, "openingHours": [{"periodStart": "MONDAY", "periodEnd": "FRIDAY", "openingTimes":
    [{"from": "08:00:00", "to": "18:00:00"}]}, {"periodStart": "SATURDAY", "periodEnd":
    "SUNDAY", "openingTimes": []}]}, "predictiveMaintenance": {"setting": {"serviceActivated":
    true, "email": "user@example.com", "phone": "+49 1234 567890"}}}'
  result:
    maintenance_report:
      captured_at: '2024-11-08T13:49:33+00:00'
      inspection_due_in_days: 677
      inspection_due_in_km: 28900
      mileage_in_km: null
      oil_service_due_in_days: 312
      oil_service_due_in_km: 13900
    predictive_maintenance:
      setting:
        email: user@example.com
        phone: +49 1234 567890
        preferred_channel: null
        service_activated: true
    preferred_service_partner:
      address:
        city: Example City
        country: null
        country_code: DEU
        house_number: '15'
        street: Example Avenue
        zip_code: '54321'
      brand: C
      contact:
        email: user@example.com
        phone: +49 1234 567890
        url: https://example.com
      id: DEU11111
      location:
        latitude: 53.470636
        longitude: 9.689872
      name: Example Service Partner
      opening_hours:
      - opening_times:
        - end: '18:00:00'
          start: 08:00:00
        period_end: FRIDAY
        period_start: MONDAY
      - opening_times: []
        period_end: SUNDAY
        period_start: SATURDAY
      partner_number: '1111'
  success: true
  type: get
  url: /v3/vehicle-maintenance/vehicles/TMOCKAA0AA000000
  vehicle_id: 0
- endpoint: driving_range
  error: "Traceback (most recent call last):\n  File \"<string>\", line 24, in __mashumaro_from_json__\n
    \ File \"<string>\", line 21, in __mashumaro_from_dict_json__\nmashumaro.exceptions.MissingField:
    Field \"remaining_range_in_km\" of type int is missing in EngineRange instance\n\nDuring
    handling of the above exception, another exception occurred:\n\nTraceback (most
    recent call last):\n  File \"/skoda-venv/lib/python3.12/site-packages/myskoda/myskoda.py\",
    line 321, in generate_fixture_report\n    result = await self.get_endpoint(vin,
    endpoint, anonymize=True)\n             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n
    \ File \"/skoda-venv/lib/python3.12/site-packages/myskoda/myskoda.py\", line 362,
    in get_endpoint\n    result = await self.rest_api.get_driving_range(vin, anonymize=anonymize)\n
    \            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n
    \ File \"/skoda-venv/lib/python3.12/site-packages/myskoda/rest_api.py\", line
    177, in get_driving_range\n    result = self._deserialize(raw, DrivingRange.from_json)\n
    \            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/skoda-venv/lib/python3.12/site-packages/myskoda/rest_api.py\",
    line 392, in _deserialize\n    data = deserialize(text)\n           ^^^^^^^^^^^^^^^^^\n
    \ File \"<string>\", line 26, in __mashumaro_from_json__\nmashumaro.exceptions.InvalidFieldValue:
    Field \"primary_engine_range\" of type EngineRange in DrivingRange has invalid
    value {'engineType': 'gasoline', 'currentSoCInPercent': 100, 'currentFuelLevelInPercent':
    100}\n"
  raw: null
  result: null
  success: false
  type: get
  url: null
  vehicle_id: 0
- endpoint: trip_statistics
  error: "Traceback (most recent call last):\n  File \"/skoda-venv/lib/python3.12/site-packages/myskoda/myskoda.py\",
    line 321, in generate_fixture_report\n    result = await self.get_endpoint(vin,
    endpoint, anonymize=True)\n             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n
    \ File \"/skoda-venv/lib/python3.12/site-packages/myskoda/myskoda.py\", line 364,
    in get_endpoint\n    result = await self.rest_api.get_trip_statistics(vin, anonymize=anonymize)\n
    \            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n
    \ File \"/skoda-venv/lib/python3.12/site-packages/myskoda/rest_api.py\", line
    191, in get_trip_statistics\n    result = self._deserialize(raw, TripStatistics.from_json)\n
    \            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/skoda-venv/lib/python3.12/site-packages/myskoda/rest_api.py\",
    line 392, in _deserialize\n    data = deserialize(text)\n           ^^^^^^^^^^^^^^^^^\n
    \ File \"<string>\", line 8, in __mashumaro_from_json__\nmashumaro.exceptions.MissingField:
    Field \"overall_average_travel_time_in_min\" of type int is missing in TripStatistics
    instance\n"
  raw: null
  result: null
  success: false
  type: get
  url: null
  vehicle_id: 0
vehicles:
- capabilities:
  - id: ACCESS
    statuses: []
  - id: AUTOMATION
    statuses: []
  - id: DEALER_APPOINTMENT
    statuses: []
  - id: DEPARTURE_TIMERS
    statuses: []
  - id: GEO_FENCE
    statuses: []
  - id: HONK_AND_FLASH
    statuses: []
  - id: MEASUREMENTS
    statuses: []
  - id: NEWS
    statuses:
    - LICENSE_MISSING
  - id: PARKING_POSITION
    statuses: []
  - id: ROADSIDE_ASSISTANT
    statuses: []
  - id: SPEED_ALERT
    statuses: []
  - id: STATE
    statuses: []
  - id: TRIP_STATISTICS
    statuses: []
  - id: VEHICLE_HEALTH_INSPECTION
    statuses: []
  - id: WARNING_LIGHTS
    statuses: []
  - id: VEHICLE_WAKE_UP
    statuses: []
  - id: POWERPASS_TARIFFS
    statuses: []
  - id: AIR_CONDITIONING_HEATING_SOURCE_ELECTRIC
    statuses: []
  - id: PAY_TO_FUEL
    statuses: []
  - id: AIR_CONDITIONING_SAVE_AND_ACTIVATE
    statuses: []
  - id: CUBIC
    statuses: []
  - id: SUBSCRIPTIONS
    statuses: []
  - id: DESTINATIONS
    statuses:
    - LICENSE_MISSING
    - LICENSE_EXPIRED
  - id: CHARGING_MQB
    statuses: []
  - id: OUTSIDE_TEMPERATURE
    statuses: []
  - id: DIGICERT
    statuses: []
  - id: VEHICLE_HEALTH_WARNINGS
    statuses: []
  - id: PAY_TO_PARK
    statuses: []
  - id: FUEL_STATUS
    statuses: []
  - id: SERVICE_PARTNER
    statuses: []
  - id: WINDOW_HEATING
    statuses: []
  - id: ROUTE_IMPORT
    statuses: []
  - id: CHARGING
    statuses: []
  - id: MISUSE_PROTECTION
    statuses: []
  - id: AIR_CONDITIONING
    statuses: []
  device_platform: MBB_ODP
  id: 0
  model: Superb
  model_year: '2022'
  software_version: null
  system_model_id: 3V53XC
  trim_level: CLEVER
Cypherke commented 2 weeks ago

added a new pull request to fix my own fixtures problem ;-)

https://github.com/skodaconnect/myskoda/pull/187