Einbinden der neuen Volvo on Call API mit HTTPMOD

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

Vorheriges Thema - Nächstes Thema

Burt_Gummer

Keiner eine Idee, woran das liegen könnte?
War quasi von heute auf morgen...


Burt_Gummer

Tja...
da hat Volvo wohl was geändert?

Mit Home Assistant und deren On Call App geht das Starten der Standheizung. (alte Log in ohne Api Key)

Der Aufruf lautet /preclimatization/start

Baue ich das so in FHEM ein geht es trotzdem nicht.
Auch die Geschichte mit dem "lock" nicht.
War auf die neue API gewechselt, die geht so nicht mehr. Daten werden ausgelesen aber POST geht nicht.

Pepe_Pb

#32
Hi,
ich habe es gestern installiert und mit einem XC60 Hybrid verknüpft, er hat die FahrzeugID ausgelesen und den Ladezustand angezeigt.
Leider am nächsten Tag: nur noch der Fehler: "Access denied due to invalid VCC-API-KEY. Make sure to provide a valid key for an active application."
Dann habe ich das Modul gelöscht, alles noch mal neu gemacht (incl. dem key auf der Developer Seite) und nun geht es wieder aber nur das Anzeigen des Ladestandes, was mir aber als Minimalanforderung reicht.

matkoh

Hallo,

zunächst einmal vielen Dank für diese Beschreibung. Ich habe seit kurzem einen Volvo XC40 Recharge und suchte nach einer Beschreibung, den in fhem einzubinden. Das ist mir jetzt gelungen.

Ich habe auf der Volvo Developer-Seite die Änderungen nachvollziehen können:

1. Die "CONNECTED VEHICLE API" gibt es jetzt in Version 2 https://developer.volvocars.com/apis/connected-vehicle/v2/overview/, die Version 1 ist deprecated und wird zum 30.04.2024 entfernt.

2. In der "ENERGY API" (immer noch Version 1) https://developer.volvocars.com/apis/energy/v1/overview/ kann SOC und weitere Informationen abgerufen werden.

3. In der "LOCATION API" (immer noch Version 1) https://developer.volvocars.com/apis/location/v1/overview/ kann der Standort des Fahrzeugs abgerufen werden (nach Beendigung der Fahrt).

Hier ist der Abruf des "EngineStatus" für Version 2:
attr VolvoOnCall get01Name EngineStatus
attr VolvoOnCall get01URL https://api.volvocars.com/connected-vehicle/v2/vehicles/%VIN%/engine-status
attr VolvoOnCall get01Header1 accept: application/json
attr VolvoOnCall get01Header2 vcc-api-key: %APPKEY%
attr VolvoOnCall get01Header3 authorization: Bearer %AC%
attr VolvoOnCall get01Poll 1

Das Attribut get01Poll = 1 sorgt dafür, dass dieses Reading bei jedem Intervall des HTTPMOD abgerufen wird.

Hier der Abruf des "SOC":
attr VolvoOnCall get02Name SOC
attr VolvoOnCall get02URL https://api.volvocars.com/energy/v1/vehicles/%VIN%/recharge-status/battery-charge-level
attr VolvoOnCall get02Header1 accept: application/vnd.volvocars.api.energy.vehicledata.v1+json
attr VolvoOnCall get02Header2 vcc-api-key: %APPKEY%
attr VolvoOnCall get02Header3 authorization: Bearer %AC%
attr VolvoOnCall get02Poll 1

Man kann auch viele Informationen zum Auto abrufen mit:
attr VolvoOnCall get08Name VehicleDetails
attr VolvoOnCall get08URL https://api.volvocars.com/connected-vehicle/v2/vehicles/%VIN%
attr VolvoOnCall get08Header1 accept: application/json
attr VolvoOnCall get08Header2 vcc-api-key: %APPKEY%
attr VolvoOnCall get08Header3 authorization: Bearer %AC%
attr VolvoOnCall get08Poll 1

Ich hoffe, das hilft dem ein oder anderen bei der Einbindung seines Volvo.

Matthias



Pepe_Pb

#34
Hi Matthias,
was eine gute Nachricht, dass sich jemand um das VolvoOnCall Modul kümmert - so schnell hatte ich nicht damit gerechnet.
Ich kann erste Erfolge verbuchen, man muss tatsächlich nur die alten Aufrufe durch Deine neuen tauschen und schon läufts :-)
Ist es denn auch möglich den Aufruf zu ändern,dass man die Klimaanlage einschalten kann (Climate start / stop)?
DANKESCHÖN FÜR DIE MÜHE!!!

matkoh

Ich habe nicht den Anspruch "mich um das Modul zu kümmern". Ich möchte nur meine Erkenntnisse weitergeben. Sofern ich Zeit habe und mein Know-How reicht, beantworte ich Fragen aber gerne.

Hier die neuen Attribute zum Ausschalten der Klimatisierung:
attr VolvoOnCall set01Name AC-OFF
attr VolvoOnCall set01URL https://api.volvocars.com/connected-vehicle/v2/vehicles/%VIN%/commands/climatization-stop
attr VolvoOnCall set01Method POST
attr VolvoOnCall set01NoArg 1
attr VolvoOnCall set01Header1 content-type: application/json
attr VolvoOnCall set01Header2 vcc-api-key: %APPKEY%
attr VolvoOnCall set01Header3 authorization: Bearer %AC%
attr VolvoOnCall set01ParseResponse 1

Und zum Einschalten der Klimatisierung:
attr VolvoOnCall set02Name AC-ON
attr VolvoOnCall set02URL https://api.volvocars.com/connected-vehicle/v2/vehicles/%VIN%/commands/climatization-start
attr VolvoOnCall set02Method POST
attr VolvoOnCall set02NoArg 1
attr VolvoOnCall set02Header1 content-type: application/json
attr VolvoOnCall set02Header2 vcc-api-key: %APPKEY%
attr VolvoOnCall set02Header3 authorization: Bearer %AC%
attr VolvoOnCall set02ParseResponse 1

Ich habe "set01ParseResponse" und "set02ParseResponse" ergänzt. Das wertet die Rückgabe des Befehls aus und ich hatte gehofft, dadurch zu sehen, ob die Klimatisierung läuft. Es wird zwar ein Reading "data_invokeStatus" erzeugt, aber nicht zeitnah aktualisiert, daher für mich momentan nutzlos.

Matthias

Pepe_Pb

#36
Funzt vom Feinsten (z.B. Klimaanlage ein und aus). Auf Basis Deiner Korrekturen habe ich weitere Aktionen hinbekommen wie Türen auf/zu, funzt!
DANKE noch mal!
Nach 5h spielen mit dem Modul: Unfassbar was man damit machen kann! Fahrzeugdaten, Statistiken, Motordaten auslesen wirklich interessant.

Xcoder

Funktionieren bei euch die Requests 100% zuverlässig? Ich habe die alte vocapi API ohne Pobleme in Fhem am laufen und wollte nun mal die neue API anschauen. Aber in 90% kommt bei mir nur ein 401 access denied:

                        "status": 401,
                        "error": { 
                            "message": "Access denied due to invalid VCC-API-KEY. Make sure to provide a valid key for an active application."
                        }
                    }
Dann kommt gelegentlich aber wieder eine korrekte Antwort... Da es ab und zu korrekt funktioniert, ist ja sicher mit meinem Login, meinem API Key alles OK. Ansonsten würde es ja nie gehen. Gerade mit dem Skript von lynkmeister probiert:

Zitat von: lynckmeister am 15 Februar 2023, 07:21:09alternativ kannst du auch mal folgendes script in eine datei deiner BASH ( zb vom Rasp) legen und 7....
5x mal nacheinander kommt ein 401 und dann wieder die korrekte Antwort mit der eigenen VIN. Was soll das? Timing scheint keine Rolle zu spielen.

Wie ist das bei euch?

Pepe_Pb

Das kann ich bestätigen, ab und zu werden die Befehle nicht sauber abgearbeitet. Ich habe aber noch keinen Zusammenhang feststellen können, woran es liegt. In den letzten Tagen hat es aber sehr zuverlässig funktioniert, ich teste es immer mit dem öffnen und schliessen der Zentralverriegelung.
Der Fehler ist aber unterschiedlich, manchmal führt Volvo den Befehl nicht aus (dann kommt auch keine Bestätigung) manchmal führt er den Befehl aus, es kommt aber keine Bestätigung und meistens funktioniert beides. Ich habe auch festgestellt, dass die Antwortzeit zwischen Aufruf und Ausführung am Auto sehr unterschiedlich ist.


Xcoder

Scheinnt jetzt wieder OK zu sein. Habe kein einziges 401 mehr erhalten.