Einbinden der neuen Volvo on Call API mit HTTPMOD

Begonnen von lynckmeister, 14 Februar 2023, 17:05:47

Vorheriges Thema - Nächstes Thema

Xcoder

#60
Zitat von: marcellm am 01 Januar 2025, 18:29:44Weiterhin muss die Definition "DEF" vom HTTPMOD-Device nach
Code Auswählen Erweitern
https://volvoid.eu.volvocars.com/as/token.oauth2 1750geändert werden.

das kann nun auch ohne DEF auf token.oauth2 gemacht werden. HTTMOD had nun das Attribut enableTokens dafür.

Dann noch
attr VolvoStatusTest getHeader3 authorization: Bearer %%ACCESS_TOKEN%%
...
attr VolvoStatusTest reAuthRegex Full authentication is required to access this resource|Not Acceptable|Forbidden
...
attr VolvoStatusTest sid01Data grant_type=refresh_token&refresh_token=%%REFRESH_TOKEN%%
attr VolvoStatusTest sid01Header01 authorization: Basic %VolvoLogin%
attr VolvoStatusTest sid01URL https://volvoid.eu.volvocars.com/as/token.oauth2

Und aktuell geht es auch ohne OTP wenn man sich genau an den Flow gemäss https://developer.volvocars.com/apis/docs/authorisation/ hält. So könnte man das Login wieder automatisieren.

matkoh

Hallo,

ich bin seinerzeit mit dem HTTPMOD-Modul gestartet, um die Daten meines Volvo XC40 Recharge abzurufen. Als das im letzten Jahr nicht mehr funktionierte, bin ich zu volvo2mqtt gewechselt.

Ich wollte nun weitere Daten einbinden und habe dabei erfahren, dass
- volvo2mqtt zwar noch funktioniert aber nicht mehr weiter entwickelt wird
- marcellm eine Möglichkeit gefunden hat, die neue Volvo-Authentifizierung mit dem HTTPMOD-Modul durchzuführen.

Also habe ich die RAW-Daten meines alten HTTPMOD-Geräts wieder importiert und gem. der Anleitung von marcellm geändert. Ich konnte danach die Daten abrufen, aber am nächsten Morgen wurden keine Readings mehr aktualisiert - weder automatisch noch manuell.

Dann habe ich ein neues Gerät VolvoOnCall erstellt und die diversen Hinweise in diesem Thread verwendet, um Attribute und Readings zu erstellen. Das Ergebnis ist grundsäztlich gleich. Nach der Erstellung funktioniert es ein paar Stunden, dann aber nicht mehr.

Ich vermute, ich habe eine notwendige Änderung vergessen oder falsch vorgenommen. Könnt Ihr mir einen Tipp geben, wo das Problem liegt?

Hier zunächst Auszüge aus dem List meines neuen Geräts:
Internals:
   .Content-Type  text/html
   .JSONEnabled 1
   .LASTSEND  1746614978.73469
   .LastUpdate 1746614969.07745
   .ReplacementEnabled 1
   .TRIGGERTIME 1746616769.07745
   .getList   Fuel:noArg Location:noArg VehicleDetails:noArg Diagnostic:noArg RechargeStatus:noArg Statistics:noArg EngineStatus:noArg DoorStatus:noArg WindowStatus:noArg Odometer:noArg Vehicles:noArg ListCommands:noArg Brakes:noArg Tyres:noArg Warnings:noArg Engine_Diagnostic:noArg
   .setList   interval reread:noArg stop:noArg start:noArg clearCookies:noArg upgradeAttributes:noArg storeKeyValue LOCK:noArg UNLOCK AC-ON:noArg AC-OFF:noArg LOCK-Reduced-Guard:noArg
   .updateRequestHash 1
   BUSY       0
   DEF        https://volvoid.eu.volvocars.com/as/token.oauth2 1800
   FUUID      681a59b7-f33f-dbcf-37f4-c1d9e6cd150b4dca
   Interval   1800
   LastAuthTry 2025-05-06 20:57:38
   MainURL    https://volvoid.eu.volvocars.com/as/token.oauth2
   ModuleVersion 4.2.0 - 11.8.2023
   NAME       VolvoOnCall
   NOTIFYDEV  global
   NR         1312
   NTFY_ORDER 50-VolvoOnCall
   STATE      Batterie: 70.0% ~300km  [total: 20869km]
<br>
@[VolvoOnCall:last_data_update]
   TYPE       HTTPMOD
   eventCount 105
   value     
   .attraggr:
   .attreocr:
     .*
   .attrminint:
   .readingParseList:
     0101
     0102
     0103
     0104
     0105
     0201
     0202
     0203
     0204
     0205
     0206
     0207
     03
     0501
     0502
     0503
     0504
     0601
     0602
     0603
     0604
     0605
     0606
     0607
     0608
     07
     08
     0801
     0802
     0901
     0902
     1001
     1002
     1003
     1004
     1005
     11
     1201
     1202
     1203
     2101
     2102
     9998
     9999
   CompiledRegexes:
   HTTPCookieHash:
...
   HttpUtils:
     NAME       
     addr       https://api.volvocars.com:443
     auth       0
     buf       
     code       400
     compress   1
     conn       
     data       
     displayurl https://api.volvocars.com/connected-vehicle/v2/vehicles/%vin%/fuel
     header     accept: application/json
vcc-api-key: xxxxx
authorization: Bearer xxxxx
     host       api.volvocars.com
     httpheader HTTP/1.1 400 Bad Request
Date: Wed, 07 May 2025 10:49:38 GMT
Content-Type: text/html
Content-Length: 1537
Connection: close
Cache-Control: no-store
X-Cache: CONFIG_NOCACHE
     httpversion 1.1
     hu_blocking 0
     hu_filecount 1
     hu_port    443
     hu_portSfx
     ignoreredirects 1
     loglevel   4
     path       /connected-vehicle/v2/vehicles/%vin%/fuel
     protocol   https
     redirects  0
     timeout    2
     url        https://api.volvocars.com/connected-vehicle/v2/vehicles/%vin%/fuel
     sslargs:
   QUEUE:
   READINGS:
...
     2025-05-07 12:49:29   access_token xxxxx
     2025-05-07 02:49:28   data_01_vin     xxx
     2025-05-07 12:49:29   expires_in      1799
     2025-05-07 12:49:29   id_token       xxxx
     2025-05-06 20:52:52   myAPP-KEY       xxxx
     2025-05-06 20:53:16   myVolvoID       xxxxx
     2025-05-06 20:53:39   myVolvoPW       xxxxx
     2025-05-07 02:49:31   operationId     xxxxx
     2025-05-07 12:49:29   refresh_token   xxxxx
     2025-05-07 02:49:31   status          200
     2025-05-06 21:04:10   statusCode      404
     2025-05-07 12:49:29   token_type      Bearer
Attributes:
   enableTokens 0
   event-on-change-reading .*
   extractAllJSON 1
   get01Header1 accept: application/json
   get01Header2 vcc-api-key: %APPKEY%
   get01Header3 authorization: Bearer %AC%
   get01Name  EngineStatus
   get01Poll  1
   get01URL   https://api.volvocars.com/connected-vehicle/v2/vehicles/%VIN%/engine-status
   get03Header1 accept: application/json
   get03Header2 vcc-api-key: %APPKEY%
   get03Header3 authorization: Bearer %AC%
   get03Name  Vehicles
   get03Poll  1
   get03URL   https://api.volvocars.com/connected-vehicle/v2/vehicles
   get04Header1 accept: application/vnd.volvocars.api.energy.vehicledata.v1+json
   get04Header2 vcc-api-key: %APPKEY%
   get04Header3 authorization: Bearer %AC%
   get04Name  RechargeStatus
   get04Poll  1
   get04URL   https://api.volvocars.com/energy/v1/vehicles/%VIN%/recharge-status
   get05Header1 accept: application/json
   get05Header2 vcc-api-key: %APPKEY%
   get05Header3 authorization: Bearer %AC%
   get05Name  WindowStatus
   get05Poll  1
   get05URL   https://api.volvocars.com/connected-vehicle/v2/vehicles/%VIN%/windows
   get06Header1 accept: application/json
   get06Header2 vcc-api-key: %APPKEY%
   get06Header3 authorization: Bearer %AC%
   get06Name  DoorStatus
   get06Poll  1
   get06URL   https://api.volvocars.com/connected-vehicle/v2/vehicles/%VIN%/doors
   get07Header1 accept: application/json
   get07Header2 vcc-api-key: %APPKEY%
   get07Header3 authorization: Bearer %AC%
   get07Name  Odometer
   get07Poll  1
   get07URL   https://api.volvocars.com/connected-vehicle/v2/vehicles/%VIN%/odometer
   get08Header1 accept: application/json
   get08Header2 vcc-api-key: %APPKEY%
   get08Header3 authorization: Bearer %AC%
   get08Name  VehicleDetails
   get08Poll  1
   get08URL   https://api.volvocars.com/connected-vehicle/v2/vehicles/%VIN%
   get09Header1 accept: application/json
   get09Header2 vcc-api-key: %APPKEY%
   get09Header3 authorization: Bearer %AC%
   get09Name  Warnings
   get09Poll  1
   get09URL   https://api.volvocars.com/connected-vehicle/v2/vehicles/%VIN%/warnings
   get10Header1 accept: application/json
   get10Header2 vcc-api-key: %APPKEY%
   get10Header3 authorization: Bearer %AC%
   get10Name  Statistics
   get10Poll  1
   get10URL   https://api.volvocars.com/connected-vehicle/v2/vehicles/%VIN%/statistics
   get11Header1 accept: application/json
   get11Header2 vcc-api-key: %APPKEY%
   get11Header3 authorization: Bearer %AC%
   get11Name  Tyres
   get11Poll  1
   get11URL   https://api.volvocars.com/connected-vehicle/v2/vehicles/%VIN%/tyres
   get12Header1 accept: application/json
   get12Header2 vcc-api-key: %APPKEY%
   get12Header3 authorization: Bearer %AC%
   get12Name  ListCommands
   get12URL   https://api.volvocars.com/connected-vehicle/v2/vehicles/%VIN%/commands
   get13Header1 accept: application/json
   get13Header2 vcc-api-key: %APPKEY%
   get13Header3 authorization: Bearer %AC%
   get13Name  Location
   get13Poll  1
   get13URL   https://api.volvocars.com/location/v1/vehicles/%VIN%/location
   get14Header1 accept: application/json
   get14Header2 vcc-api-key: %APPKEY%
   get14Header3 authorization: Bearer %AC%
   get14Name  Engine_Diagnostic
   get14Poll  1
   get14URL   https://api.volvocars.com/connected-vehicle/v2/vehicles/%vin%/engine
   get15Header1 accept: application/json
   get15Header2 vcc-api-key: %APPKEY%
   get15Header3 authorization: Bearer %AC%
   get15Name  Diagnostic
   get15Poll  1
   get15URL   https://api.volvocars.com/connected-vehicle/v2/vehicles/%vin%/diagnostics
   get16Header1 accept: application/json
   get16Header2 vcc-api-key: %APPKEY%
   get16Header3 authorization: Bearer %AC%
   get16Name  Brakes
   get16Poll  1
   get16URL   https://api.volvocars.com/connected-vehicle/v2/vehicles/%vin%/brakes
   get17Header1 accept: application/json
   get17Header2 vcc-api-key: %APPKEY%
   get17Header3 authorization: Bearer %AC%
   get17Name  Fuel
   get17Poll  1
   get17URL   https://api.volvocars.com/connected-vehicle/v2/vehicles/%vin%/fuel
   getHeader1 accept: application/vnd.volvocars.api.connected-vehicle.vehicledata.v1+json
   getHeader2 vcc-api-key: %APPKEY%
   getHeader3 authorization: Bearer %AC%
   httpVersion 1.1
   reading0101JSON data_frontLeftWindow_value
   reading0101Name Fenster_vorne_links
   reading0102JSON data_frontRightWindow_value
   reading0102Name Fenster_vorne_rechts
   reading0103JSON data_rearLeftWindow_value
   reading0103Name Fenster_hinten_links
   reading0104JSON data_rearRightWindow_value
   reading0104Name Fenster_hinten_rechts
   reading0105JSON data_sunroof_value
   reading0105Name Panoramadach
   reading0201JSON data_frontLeftDoor_value
   reading0201Name Tür_vorne_links
   reading0202JSON data_frontRightDoor_value
   reading0202Name Tür_vorne_rechts
   reading0203JSON data_rearLeftDoor_value
   reading0203Name Tür_hinten_links
   reading0204JSON data_rearRightDoor_value
   reading0204Name Tür_hinten_rechts
   reading0205JSON data_centralLock_value
   reading0205Name Zentralverriegelung
   reading0205OMap LOCKED:abgeschlossen,OPEN:offen
   reading0206JSON data_hood_value
   reading0206Name Motorhaube
   reading0207JSON data_tailgate_value
   reading0207Name Heckklappe
   reading03JSON data_engineStatus_value
   reading03Name Motor
   reading03OMap STOPPED:aus,RUNNING:läuft
   reading0501JSON data_frontLeft_value
   reading0501Name Reifen_vorne_links
   reading0501OMap WARNING:niedriger Luftdruck,NO_WARNING:Luftdruck in Ordnung
   reading0502JSON data_frontRight_value
   reading0502Name Reifen_vorne_rechts
   reading0502OMap WARNING:niedriger Luftdruck,NO_WARNING:Luftdruck in Ordnung
   reading0503JSON data_rearLeft_value
   reading0503Name Reifen_hinten_links
   reading0503OMap WARNING:niedriger Luftdruck,NO_WARNING:Luftdruck in Ordnung
   reading0504JSON data_rearRight_value
   reading0504Name Reifen_hinten_rechts
   reading0504OMap WARNING:niedriger Luftdruck,NO_WARNING:Luftdruck in Ordnung
   reading0601JSON data_averageFuelConsumption_value
   reading0601Name Durchschnittsverbrauch_in_l/100km
   reading0602JSON data_averageSpeed_value
   reading0602Name Durchschnittsgeschwindigkeit_in_km/h
   reading0603JSON data_tripMeterManual_value
   reading0603Name Tageskilometerzähler(TM)
   reading0604JSON data_tripMeterAutomatic_value
   reading0604Name Tageskilometerzähler(TA)
   reading0605JSON data_distanceToEmptyTank_value
   reading0605Name Reichweite_Benzin_in_km
   reading0606JSON data_distanceToEmptyBattery_value
   reading0606Name Reichweite_Strom_in_km
   reading0607JSON data_averageEnergyConsumption_value
   reading0607Name durchschnittlicher_Verbrauch_in_kWh/100km
   reading0608JSON data_averageSpeedAutomatic_value
   reading0608Name Durchschnittsgeschwindigkeit_Automatik_in_km/h
   reading07JSON data_odometer_value
   reading07Name Kilometerstand
   reading0801JSON data_batteryCapacityKWH
   reading0801Name Batteriekapazität_in_kWh
   reading0802JSON data_batteryChargeLevel_value
   reading0802Name Akku_Ladestand_in_%
   reading08JSON data_fuelAmount_value
   reading08Name Tankinhalt_in_Litern
   reading0901JSON data_oilLevelWarning_value
   reading0901Name Motoröl
   reading0901OMap WARNING:Füllstand niedrig,NO_WARNING:Füllstand in Ordnung
   reading0902JSON data_engineCoolantLevelWarning_value
   reading0902Name Kühlwasser
   reading0902OMap WARNING:Füllstand niedrig,NO_WARNING:Füllstand in Ordnung
   reading1001JSON data_serviceWarning_value
   reading1001Name Service
   reading1001OMap REGULAR_MAINTENANCE_ALMOST_TIME_FOR_SERVICE:Reguläre Wartung erforderlich - bitte Werkstatttermin vereinbaren,WARNING:Werkstattbesuch erforderlich,NO_WARNING:Werkstattbesuch noch nicht erforderlich
   reading1002JSON data_engineHoursToService_value
   reading1002Name Motor-Betriebsstunden_bis_zum_Service
   reading1003JSON data_distanceToService_value
   reading1003Name Kilometer_bis_zum_Service
   reading1004JSON data_washerFluidLevelWarning_value
   reading1004Name Waschwasser
   reading1004OMap TOO_LOW:Füllstand niedrig,NO_WARNING:Füllstand in Ordnung
   reading1005JSON data_timeToService_value
   reading1005Name Monate_bis_zum_Service
   reading11JSON data_brakeFluidLevelWarning_value
   reading11Name Bremsflüssigkeit
   reading11OMap WARNING:Füllstand niedrig,NO_WARNING:Füllstand in Ordnung
   reading1201JSON data_brakeLightCenterWarning_value
   reading1201Name Bremslicht_Mitte
   reading1201OMap UNSPECIFIED:unbekannt, NO_WARNING:in Ordnung, FAILURE:Fehler
   reading1202JSON data_brakeLightLeftWarning_value
   reading1202Name Bremslicht_links
   reading1202OMap UNSPECIFIED:unbekannt, NO_WARNING:in Ordnung, FAILURE:Fehler
   reading1203JSON data_brakeLightRightWarning_value
   reading1203Name Bremslicht_rechts
   reading1203OMap UNSPECIFIED:unbekannt, NO_WARNING:in Ordnung, FAILURE:Fehler
   reading2101JSON data_geometry_coordinates_1
   reading2101Name Standort_Breite
   reading2102JSON data_geometry_coordinates_0
   reading2102Name Standort_Länge
   reading9998JSON refresh_token
   reading9998Name refresh_token
   reading9999JSON access_token
   reading9999Name access_token
   replacement01Mode reading
   replacement01Regex %AC%
   replacement01Value access_token
   replacement02Mode reading
   replacement02Regex %APPKEY%
   replacement02Value myAPP-KEY
   replacement03Mode reading
   replacement03Regex %VolvoID%
   replacement03Value myVolvoID
   replacement04Mode reading
   replacement04Regex %VolvoPW%
   replacement04Value myVolvoPW
   replacement05Mode reading
   replacement05Regex %VIN%
   replacement05Value data_01_vin
   replacement06Mode reading
   replacement06Regex %RT%
   replacement06Value refresh_token
   requestData grant_type=refresh_token&refresh_token=%RT%
   requestHeader01 content-type: application/x-www-form-urlencoded
   requestHeader02 authorization: Basic aDRZZjBiOlU4WWtTYlZsNnh3c2c1WVFxWmZyZ1ZtSWFEcGhPc3kxUENhVXNpY1F0bzNUUjVrd2FKc2U0QVpkZ2ZJZmNMeXc=
   requestHeader03 user-agent: okhttp/4.10.0
   room       Garage
   set01Header1 content-type: application/json
   set01Header2 vcc-api-key: %APPKEY%
   set01Header3 authorization: Bearer %AC%
   set01Method POST
   set01Name  AC-OFF
   set01NoArg 1
   set01ParseResponse 1
   set01URL   https://api.volvocars.com/connected-vehicle/v2/vehicles/%VIN%/commands/climatization-stop
   set02Header1 content-type: application/json
   set02Header2 vcc-api-key: %APPKEY%
   set02Header3 authorization: Bearer %AC%
   set02Method POST
   set02Name  AC-ON
   set02NoArg 1
   set02ParseResponse 1
   set02URL   https://api.volvocars.com/connected-vehicle/v2/vehicles/%VIN%/commands/climatization-start
   set03Header1 content-type: application/json
   set03Header2 vcc-api-key: %APPKEY%
   set03Header3 authorization: Bearer %AC%
   set03Method POST
   set03Name  LOCK
   set03NoArg 1
   set03ParseResponse 1
   set03URL   https://api.volvocars.com/connected-vehicle/v2/vehicles/%VIN%/commands/lock
   set04Header1 content-type: application/json
   set04Header2 vcc-api-key: %APPKEY%
   set04Header3 authorization: Bearer %AC%
   set04Method POST
   set04Name  LOCK-Reduced-Guard
   set04NoArg 1
   set04ParseResponse 1
   set04URL   https://api.volvocars.com/connected-vehicle/v2/vehicles/%VIN%/commands/lock-reduced-guard
   set05Header1 content-type: application/json
   set05Header2 vcc-api-key: %APPKEY%
   set05Header3 authorization: Bearer %AC%
   set05Method POST
   set05Name  UNLOCK
   set05ParseResponse 1
   set05TextArg {\"unlockDuration\":120}
   set05URL   https://api.volvocars.com/connected-vehicle/v2/vehicles/%VIN%/commands/unlock
   stateFormat Batterie: [$name:data_batteryChargeLevel_value]% ~[$name:data_distanceToEmptyBattery_value]km  [total: [$name:data_odometer_value]km]
<br>
@[$name:last_data_update]
   verbose    1

Ich habe mal versucht, einen Abruf mit verbose=5 zu machen und bekomme dann:
2025.05.07 13:37:54 5: VolvoOnCall: get called with Brakes
2025.05.07 13:37:54 5: VolvoOnCall: get found option Brakes in attribute get16Name
2025.05.07 13:37:54 4: VolvoOnCall: get will now request Brakes, no optional value
2025.05.07 13:37:54 5: VolvoOnCall: AddToQueue adds type get16 to URL https://api.volvocars.com/connected-vehicle/v2/vehicles/%vin%/brakes, no data, header accept: application/json
vcc-api-key: %APPKEY%
authorization: Bearer %AC%, retry 0, initial queue len: 0
2025.05.07 13:37:54 5: VolvoOnCall: HandleSendQueue called from AddToSendQueue, qlen = 1
2025.05.07 13:37:54 5: VolvoOnCall: Replace called for type get16, regex (?^:%AC%), mode reading, value access_token input: accept: application/json
vcc-api-key: %APPKEY%
authorization: Bearer %AC%
2025.05.07 13:37:54 5: VolvoOnCall: Replace: reading value is xxxxx
2025.05.07 13:37:54 5: VolvoOnCall: Replace: match for type get16, regex (?^:%AC%), mode reading, value access_token, input: accept: application/json
vcc-api-key: %APPKEY%
authorization: Bearer %AC%, result is accept: application/json
vcc-api-key: %APPKEY%
authorization: Bearer xxxxx
...
2025.05.07 13:37:54 5: VolvoOnCall: ReadCallback called from __ANON__
2025.05.07 13:37:54 4: VolvoOnCall: Read callback: request type was get16 retry 0,
header: HTTP/1.1 400 Bad Request
Date: Wed, 07 May 2025 11:37:54 GMT
Content-Type: text/html
Content-Length: 1537
Connection: close
Cache-Control: no-store
X-Cache: CONFIG_NOCACHE, body length 1537
2025.05.07 13:37:54 5: VolvoOnCall: Read callback: body
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml'>

<head>
    <meta content='text/html; charset=utf-8' http-equiv='content-type' />
    <style type='text/css'>
...
    </style>
    <title>Service unavailable</title>
</head>

<body>
    <div id='content'>
        <div id='message'>
            <h2>Our services aren't available right now.</h2>
            <p>We're working to restore all services as soon as possible. Please check back soon.</p>        </div>
        <div id='errorref'>
            <span>            </span>
        </div>
    </div>
</body>
</html>


Das MQTT-Gerät, das von volvo2mqtt befüllt wird, wird regelmäßig aktualisiert. Daher kann das kein allgemeines Problem sein.

Hat jemand eine Idee, wo der Fehler liegt?

Vielen Dank im voraus

Matthias

StefanStrobel

Hallo zusammen,

ich bin gerade dabei das für meinen neuen Volvo hinzubiegen. Um das zu vereinfachen, erweitere ich HTTPMOD noch ein wenig. Volvo benötigt jetzt PKCE und das soll HTTPMOD vereinfachen.
Ziel wäre dass man ein eigenes Volvo-Developer-Konto registriert, dafür eine App registriert und publiziert und darüber langfristig auf dem von Volvo vorgesehenen Weg das API für seinen eigenen Volvo auslesen kann.
Ich melde mich wenn das fertig ist.

Gruss
   Stefan

matkoh

Zitat von: StefanStrobel am 07 Mai 2025, 21:56:19Ziel wäre dass man ein eigenes Volvo-Developer-Konto registriert, dafür eine App registriert und publiziert und darüber langfristig auf dem von Volvo vorgesehenen Weg das API für seinen eigenen Volvo auslesen kann.

Mir fehlt da die Fantasie, wie das funktionieren soll.
Ich möchte die Daten aus der Volvo API mit fhem auslesen und auswerten.
Volvo möchte für eine published App eine "Redirect URI" haben, die öffentlich zugänglich ist und eine "Terms and Conditions URL", die ebenfalls öffentlich sein muss.
Ich werde mein fhem nicht im Internet zugänglich machen und fhem ist ja auch keine Webseite...

Hast Du einen Plan, wie das funktionieren könnte?

Matthias