Neuigkeiten:

Am Sonntag den 8.12.2024 kann es ab ca. 8:00 Uhr zu kurzzeitigen Einschränkungen / Ausfällen bei den Diensten des FHEM Vereines kommen.
Die Server müssen mal gewartet und dabei neu gestartet werden ;)

Hauptmenü

Einbinden der Volvo API mit volvo2mqtt

Begonnen von Sany, 28 Oktober 2024, 11:54:58

Vorheriges Thema - Nächstes Thema

Sany

Hallo Volvo-Fahrer (und alle anderen auch ;-))

nachdem seit ca Mitte Oktober der Abruf der Volvo-Api per HTTPMOD nicht mehr klappt bin ich auf ein Projekt auf Github gestossen: volvo2mqtt
Der Ersteller hat es wohl haupsächlich zur Nutzung mit Homeassistant gemacht, es geht aber mit jedem MQTT-Broker, ergo auch mit fhem und MQTT2_SERVER.
Zur Installation wird docker verwendet. Ich habe aber auch einen Hinweis eines Nutzers gefunden, der es wohl ohne docker nutzt.
Da bei mir alles auf einem kleinen miniPC unter Proxmox läuft habe ich einfach einen neuen Container incl. docker erzeugt und dann nach der Anleitung von volvo2mqtt den Container "gestartet".
Wenn das getan ist, bekommt man eine Email mit einem OTP, welches man dann per MQTT2_SERVER published. Danach läuft es. Man kann das Auto ver/ent-riegeln und die Klimatisierung starten/stoppen. Weiterhin einen Datenabruf auslösen sowie das Abfrage-Intervall anpassen (default: 300 sec).
Das Tool testet beim Start, welche Informationen verfügbar sind (abhängig vom Auto) und stellt diese dann bereit. Man braucht als Zugangsdaten:
email und Passwort, um sich in den Volvo-Account einzuloggen (die auch für die APP notwendig sind) sowie die VIN und den API-KEY (genau wie für die HTTPMOD Lösung) sowie die Daten für den MQTT-Broker. Alle weiteren Details zur Installation und unterstützte Volvos hier:

https://github.com/Dielee/volvo2mqtt


Wenn das tool dann läuft und der MQTT2_SERVER auf autocreate steht wird das device angelegt und die Readings erzeugt.
In der Readinglist ist das Device-Topic ausgeschrieben in der Form:

ZitatvolvoAAOS2mqtt_<verwendete Email>:...
Das kann man ersetzen mit $DEVICETOPIC und das Attribut devicetopic mit dem entsprechenden Wert füttern.

Dann brauchts noch eine setList:
attr volvo2mqtt setList Clima:select,ON,OFF homeassistant/switch/<VIN>_climate_status/command $EVTPART1\
Doors:select,LOCK,UNLOCK homeassistant/lock/<VIN>_lock_status/command $EVTPART1\
UpdateInterval:select,300,600,1800 homeassistant/number/<VIN>_update_interval/command $EVTPART1\
ForceUpdate:select,PRESS homeassistant/button/<VIN>_update_data/command
bitte <VIN> durch die eigene VIN ersetzen!!

Die readingList habe ich noch ergänzt mit:
$DEVICETOPIC:volvoAAOS2mqtt/availability:.* availability
sowie das stateFormat angepasst:
attr volvo2mqtt stateFormat [$name:availability]\
\
Batterie: [$name:battery_charge_level]% ~[$name:electric_range]km  [total: [$name:odometer]km]\
<br>\
@[$name:last_data_update]
das zeigt dann schön ob das tool online ist (kann man per devStateIcon auch noch mit Symbolen ersetzen), den Batteriestand, die Reichweite, Gesamtkilometer und wann das letzte mal abgefragt wurde. Kann ja jeder setzen wie er will.

Der Ersteller hat in den letzten Tagen noch Kleinigkeiten gefixed, die am Anfang bei mir dazu führten, dass die MQTT-Verbindung abbrach, das ist nun aber in Ordnung und ich bekomme seither ohne Ausfälle die Daten serviert.
Es scheint wohl gut maintained zu sein und auch sehr universell auf die Volvo-Api zugeschnitten, um möglichst viele Modelle zu Unterstützen.

Nochmal zur Installation: bei mir wie gesagt in einem Proxmox-LXC auf dem Docker installiert ist. Vermutlich geht es auf jeder Hardware, wo ein Docker läuft. Sollte es jemand versuchen und schaffen, dass das tool auch ohne docker läuft (ist in python, sollte also auf einem nackten Debian irgendwie gehen) würde ich mich freuen, wenn der Weg dahin hier beschrieben wird.


Viel Erfolg!


Sany


fhem als LXC auf Proxmox auf einem minix Z100 , weitere LXC mit ZigBee2MQTT, MariaDB und Grafana. Homematic, FS20, mySensors, MQTT2, Tasmota, Shelly, Z-Wave  ....

Jojo11

Hallo Sany,

super dass Du das ans Laufen gebracht hast. Bisher hatte ich einen fork (volvo2evcc) verwendet, aber der geht seit ein paar Tagen nicht mehr und wird nicht gepflegt.
Bei mir läuft volvo2mqtt jetzt als Docker und ich habe das Device in fhem gefunden. Mit welchem Befehl publishst Du den Code, der per E-Mail kam? Dein Device heißt "volvo2mqtt" - hast Du das einfach umbenannt?

schöne Grüße
Jo

Sany

Hallo Jo,

das Device wurde als
MQTT2_volvoAAOS2mqtt_<meine_Email>
angelegt und ich habe es nach volvo2mqtt umbenannt. Das spielt aber keine Rolle.
Den OTP Code publishesd Du über den MQTT2_SERVER. Da hast Du oben den set Befehl mit Auswahlfeld. Dort "publish" auswählen und dann, wie in der Anleitung beschrieben, das Topiy
auswählen und das Topic aus der Installationsbeschreibung eingeben, gefolgt von Leerzeichen und dem OTP:
set <dein_MQTT2_SERVER> publish volvoAAOS2mqtt/otp_code 123456

Dann kurz warten und die Daten kommen rein.

Mit
sudo docker logs volvo2mqtt
im Terminal, da wo der docker läuft, bekommst Du das Log. Da sind auch die getesteten Werte der API rauszulesen als Info:
Success wenn der Wert unterstützt ist, Fail wenn der Wert nicht unterstützt ist.

Die OTP-Geschichte muss nur bei Installation oder Update gemacht werden, ein restart des Containers funktioniert ohne neuen OTP.


Gruß


Sany

fhem als LXC auf Proxmox auf einem minix Z100 , weitere LXC mit ZigBee2MQTT, MariaDB und Grafana. Homematic, FS20, mySensors, MQTT2, Tasmota, Shelly, Z-Wave  ....

Jojo11

Hallo Sani,

super, das war's. Hatte den publish-Befehl immer falsch eingegeben. Jetzt kommen zumindest mal Werte und ich kann weiter testen. Vielen Dank!

schöne Grüße
Jo

Pepe_Pb

Mein fhem läuft auch auf einem Debian Linux und ich wäre auch sehr interessiert an einer Beschreibung, wie man es darauf installiert, leider reichen meine IT-Kenntisse dafür nicht aus und ich habe Schiss, meine gesamte Installation zu schrotten :-(

Sany

Hallo Pepe_Pb,

das mit der Sorge, sich die Installation zu schrotten, kenne ich. Ich bin nun aber schon eine ganze Weile mit einem Proxmox-System unterwegs, wo (nahezu) jeder Dienst seinen eigenen Container hat und alles per Netzwerk / MQTT verbunden ist. Da gibts kein schrotten mehr, man macht einfach einen neuen Container für einen neuen Dienst, oder bei großen Änderungen am "offenen Herzen" einfach vorher ein Backup, wenn es nicht klappt das Backup zurückspielen etc....
Du schreibst jetzt nur, dass Dein fhem auf Debian läuft, da solltest Du ausführlicher werden.
Zum Thema volvo2mqtt: der Ersteller hat das als Docker-image erstellt, d.h. du brauchst ein System, auf dem Docker läuft. Dann brauchst Du natürlich die Zugangsdaten zur Volvo API.
Danach wird nur, wie auf Github von volvo2mqtt, der etwas sperrige "docker run -d ....." Befehl auf Deinem System abgesetzt. Damit wird die Software auf Dein System geladen und gestartet. Du bekommst eine Email von Volvo mit dem OTP und publishesd diesen aus fhem heraus oder auch z.B. per MQTT-Explorer. Danach läuft es erst mal. Durch Aufruf des Logs (siehe mein letzter Post) kannst Du dann sehen, ob das geklappt hat. Damit werden schon Daten per MQTT versendet, jetzt noch das Device in fhem anlegen und das wars eigentlich.
In der veröffentlichten Version 1.10.5 ist noch ein Fehler, der für Abbrüche der MQTT-Übertragung sorgt. Da wurde von jemand anders schon ein Pull-request eingereicht, nur noch nicht bearbeitet. Netterweise hat derjenige aber die Software zum test auch veröffentlicht und es genügt eine Anpassung in dem Docker-Aufruf, damit das Dockerzeugs von woanders gepulled wird, und damit läuft es bei mir ohne Fehler, inclusive manuellem Abruf sowie ändern des Abhol-Timers:
Zitatsudo docker run -d --pull=always ............. -e TZ='Europe/Berlin' --name volvo2mqtt ghcr.io/ivanfm/volvo2mqtt:latest
anstatt
Zitat--name volvo2mqtt ghcr.io/dielee/volvo2mqtt:latest
ganz am Ende.

Mit Docker und dessen Installation kann ich allerdings nicht weiterhelfen. Eigentlich möchte ich Docker ganz vermeiden, da ein Container in einem Container irgendwie seltsam klingt. Die volvo2mqtt-Software sieht mir nach einem Python-Programm aus, welches vermutlich auch ganz ohne Docker zum laufen zu bekommen ist. Dann muss man natürlich Python installieren, wenn es noch nicht (in der richtigen Version) auf dem System ist.


Erst mal viel Erfolg!



Sany
fhem als LXC auf Proxmox auf einem minix Z100 , weitere LXC mit ZigBee2MQTT, MariaDB und Grafana. Homematic, FS20, mySensors, MQTT2, Tasmota, Shelly, Z-Wave  ....

Pepe_Pb

Danke Sani für deine Beschreibung! Derzeit habe ich nicht genug Zeit dafür, werde mich aber beizeiten damit beschäftigen.