VolvoConnect
| VolvoConnect | |
|---|---|
| Zweck / Funktion | |
| Volvo-Fahrzeugdaten über die Volvo Cars APIs in FHEM lesen und unterstützte Fahrzeugaktionen auslösen. | |
| Allgemein | |
| Typ | Inoffizielles Community-Modul; externe Updatequelle. |
| Details | |
| Dokumentation | Installations- und Betriebsanleitung |
| Modulname | 50_VolvoConnect.pm
|
| Ersteller / Betreuung | stapetz |
| Projekt | GitHub-Repository |
| Wichtig: Beachte die zum installierten Modul gehörende englische Beschreibung in der lokalen commandref. | |
VolvoConnect verbindet ein Volvo-Fahrzeug mit FHEM über die offiziellen Volvo Cars APIs. Du kannst unter anderem Ladezustand, Kilometerstand, Fahrzeugstatus, Diagnosewerte und optional den zuletzt bekannten Standort abrufen. Unterstützte Fahrzeugbefehle und ein eigenes Dashboard ergänzen die Readings.
Das Modul ist ein Community-Projekt und kein von Volvo Cars herausgegebenes oder unterstütztes Produkt. Verfügbarkeit, Aktualität und Umfang hängen von Fahrzeugmodell, Modelljahr, Region, Volvo-Anwendung und genehmigten Berechtigungen ab.
Dieser Artikel beschreibt den stabilen Modulstand 1.1.0. Für aktuelle Freigaben und Änderungen beachte die Änderungshistorie.
Voraussetzungen
- Eine aktuelle FHEM-Installation mit FHEMWEB und HTTPS-Zugriff auf die Volvo-Endpunkte.
- Die Perl-Module
JSON,MIME::Base64undDigest::SHA;HttpUtilsgehört zu FHEM. - Eine Volvo ID mit zugeordnetem Fahrzeug.
- Die 17-stellige Fahrzeugidentifikationsnummer (VIN).
- Eine Anwendung im Volvo Cars Developer Portal.
- VCC API Key, OAuth Client-ID und Client-Secret dieser Anwendung.
- Eine von Volvo für die Anwendung akzeptierte Redirect-URI.
Sicherheit und Datenschutz
VolvoConnect verwendet Volvo-Cloud-Dienste. FHEM benötigt dafür Zugangsdaten und OAuth-Tokens.
- Schütze FHEMWEB mit geeigneter Anmeldung, Rechten und bei Bedarf HTTPS bzw. einem abgesicherten Zugang. Gib die Oberfläche nicht ungeschützt im Internet frei.
- Behandle
client_secretundvcc_api_keywie Passwörter. Sie werden als FHEM-Attribute konfiguriert; FHEM-Konfigurationen und Sicherungen müssen entsprechend geschützt sein. - Veröffentliche keine Autorisierungscodes, Tokens, VIN, Standortkoordinaten oder unbereinigten Device-Ausgaben.
- Aktiviere nur tatsächlich benötigte Daten- und Befehlsbereiche.
- Fahrzeugbefehle können reale Auswirkungen haben. Prüfe Fahrzeugzustand und Berechtigungen vor der Bedienung.
- Die Standortkarte und die optionale Adressauflösung können externe Dienste verwenden. Hinweise dazu stehen im Abschnitt Standort.
Anwendung bei Volvo einrichten
- Melde dich im Volvo Cars Developer Portal an.
- Lege eine Anwendung an und prüfe deren Test-/Produktions- und Regionsbeschränkungen.
- Übernimm den VCC API Key sowie OAuth Client-ID und Client-Secret in deine sichere lokale Konfiguration.
- Registriere die gewünschte Redirect-URI.
- Aktiviere bzw. beantrage die benötigten APIs und Berechtigungen.
- Prüfe, ob Anwendung, Volvo ID und Fahrzeug für diesen Zugriff zugelassen sind.
Die Portalbezeichnungen können sich ändern. Die folgenden Schritte beschreiben den Ablauf, nicht eine unveränderliche Bildschirmfolge im Volvo-Portal.
Redirect-URI
Die URI muss in FHEM und im Developer Portal zeichengetreu übereinstimmen: Schema, Host, Port, Pfad und gegebenenfalls abschließender Schrägstrich.
Für lokale Tests wird häufig http://localhost verwendet, sofern Volvo diese URI für deine Anwendung akzeptiert. Das Modul verwendet die manuelle Übergabe des Autorisierungscodes; eine öffentlich erreichbare Callback-Seite ist dafür nicht erforderlich.
Eine nach dem Login nicht erreichbare lokale Zielseite ist für sich genommen noch kein fehlgeschlagener Login: Entscheidend ist, ob die Weiterleitungsadresse einen gültigen code-Parameter enthält. Kopiere niemals den Wert von state anstelle des Codes.
Installation
Erstelle vor Änderungen eine Sicherung deiner FHEM-Installation.
Gib diese Befehle in die FHEM-Befehlszeile ein, nicht in ein Betriebssystemterminal:
update add https://raw.githubusercontent.com/stapetz/fhem-modules/main/controls_volvo.txt update all https://raw.githubusercontent.com/stapetz/fhem-modules/main/controls_volvo.txt shutdown restart
update add registriert die Quelle; update all lädt die zugehörigen Dateien. Der Neustart unterbricht FHEM kurz.
Für den produktiven Einsatz verwendest du main. Entwicklungsstände aus dev sind nur für bewusst durchgeführte Tests vorgesehen.
Device anlegen und konfigurieren
Beispiel für ein Device namens Volvo1:
define Volvo1 VolvoConnect attr Volvo1 vin <17-stellige-VIN> attr Volvo1 client_id <Client-ID> attr Volvo1 client_secret <Client-Secret> attr Volvo1 vcc_api_key <VCC-API-Key> attr Volvo1 redirect_uri http://localhost
Ersetze die Platzhalter einschließlich der spitzen Klammern durch deine Werte. Passe die Redirect-URI an die tatsächlich registrierte URI an. Speichere die FHEM-Konfiguration und halte sie vertraulich.
Benötigte Datenbereiche auswählen
Öffne die grafische Auswahl:
get Volvo1 _showEntityConfig
Alternativ setzt du die Attribute direkt, beispielsweise:
attr Volvo1 scope_battery_charge 1-aktiviert attr Volvo1 scope_odometer 1-aktiviert attr Volvo1 scope_engine_status 1-aktiviert
Nicht gesetzte scope_*-Attribute sind deaktiviert. Konfiguriere die benötigten Bereiche möglichst vor der Anmeldung.
| Attribute | Daten / Funktion |
|---|---|
scope_capabilities |
Fahrzeugfähigkeiten und unterstützte Energiefunktionen. |
scope_vehicle_relation |
Modell, Modelljahr, Fahrzeugdetails und Bild-URLs. |
scope_battery_charge, scope_fuel |
Batterie- und Kraftstoffdaten; der Batteriebereich aktiviert ebenfalls den Fuel-Abruf. |
scope_odometer, scope_statistics |
Kilometerstand, Fahrt- und Verbrauchsstatistik. |
scope_warnings, scope_brakes |
Warnungen und Bremsstatus. |
scope_doors, scope_windows |
Tür-, Verriegelungs- und Fensterstatus. |
scope_engine_status |
Motorstatus. |
scope_tyres |
Reifendaten. |
scope_engine_diagnostics, scope_workshop_diagnostics |
Motor-, Werkstatt- und Wartungsinformationen. |
scope_location |
Standortdaten und Karte. |
scope_commands, scope_command_accessibility |
Befehlsliste und aktuelle Befehlsverfügbarkeit. |
scope_lock, scope_unlock |
Ver- und Entriegeln. |
scope_honk_flash |
Hupe-/Lichtsignalbereich. |
scope_climatization, scope_engine_commands |
Klimatisierung, Motorbefehle und Vorkonditionierung, soweit unterstützt. |
Anmeldung mit OAuth2 und PKCE
- Starte die Anmeldung mit
set Volvo1 reauth. - Öffne den angebotenen Volvo-Login-Link am Gerätestatus.
- Melde dich mit der passenden Volvo ID an und bestätige die angeforderten Berechtigungen.
- Lies nach der Weiterleitung die Adresse aus.
- Kopiere nur den Wert des URL-Parameters code, nicht die komplette Adresse und nicht den
state-Wert. - Übergib den Code zeitnah an FHEM.
set Volvo1 authCode <Autorisierungscode>
Der Code ist kurzlebig und nur einmal verwendbar. Bei einem Fehler wiederholst du den vollständigen Login mit einem neuen Code.
Prüfe anschließend:
get Volvo1 summary get Volvo1 tokenInfo get Volvo1 scopes set Volvo1 update
tokenInfo zeigt Vorhandensein und Gültigkeit der Tokens, nicht deren Werte. Access- und Refresh-Tokens werden im FHEM-Key-Value-Store gespeichert. Das Modul erneuert Access-Tokens bei Bedarf automatisch mit dem gespeicherten Refresh-Token.
Wird die Erneuerung von Volvo abgelehnt, ist eine neue interaktive Anmeldung erforderlich. Prüfe lastError und führe reauth aus. Nach Änderungen an Client-ID, Client-Secret, API-Key oder Scopes autorisierst du ebenfalls neu.
Datenabruf und Intervalle
| Einstellung | Standard | Typische Daten |
|---|---|---|
interval |
300 Sekunden | Energie-/Ladestatus, Kilometerstand, Statistik, Warnungen und weitere dynamische Zustände. |
interval_slow |
1800 Sekunden | Reifen-, Motor- und Werkstattdiagnose. |
interval_location |
900 Sekunden | Standort. |
| Statische Endpunkte | Einmal je VIN | Fähigkeiten, Befehlsliste und Fahrzeugdetails. |
Beispiel:
attr Volvo1 interval 300 attr Volvo1 interval_slow 1800 attr Volvo1 interval_location 900
Erfolgreiche Endpoint-Abrufe werden zwischengespeichert; ihre Zeitpunkte bleiben über einen FHEM-Neustart erhalten. Ein manueller Abruf übergeht die Intervallplanung und fordert alle aktivierten Endpunkte an:
set Volvo1 update
Damit kannst du auch statische Fahrzeugdetails und befristete Bild-URLs neu laden. Reduziere die Intervalle nicht unnötig: Volvo kann Abfragen begrenzen, und häufigeres Polling macht veraltete Backendwerte nicht automatisch aktueller.
Readings verstehen
Readings entstehen abhängig von Scopes und API-Antworten dynamisch. Verschachtelte JSON-Felder werden mit Unterstrichen abgeflacht; Einheiten können in zusätzlichen _unit-Readings erscheinen.
| Reading / Präfix | Bedeutung |
|---|---|
authStatus |
Authentifizierungsstatus. |
lastUpdate |
Letzter erfolgreicher Datenabruf. |
lastError, lastErrorCode |
Letzter bekannter Fehler. |
state_* |
Energie- und Ladezustandsdaten, etwa state_batteryChargeLevel.
|
doors_*, windows_*, warnings_* |
Karosseriestatus und Warnungen. |
fuel_*, batteryCharge_*, odometer_*, statistics_* |
Energie-, Fahrt- und Fahrzeugwerte. |
engine_*, engineDiagnostics_*, workshopDiagnostics_*, tyres_* |
Motor-, Diagnose- und Reifendaten. |
vehicle_*, capabilities_* |
Fahrzeugdetails und Fähigkeiten. |
location_* |
Standort und gegebenenfalls Adressdaten. |
commands_*, commandAccessibility_* |
Befehle und deren Verfügbarkeit. |
command_state, last_command |
Status des zuletzt gesendeten Fahrzeugbefehls. |
Ein fehlendes Reading bedeutet nicht automatisch einen Modulfehler. Prüfe Scope, Fahrzeugunterstützung und Volvo-Freigabe. Ein erfolgreicher API-Abruf ist außerdem nicht zwingend eine aktuelle Messung direkt am Fahrzeug.
Fahrzeugbefehle
| FHEM-Befehl | Wirkung |
|---|---|
set Volvo1 lock / set Volvo1 unlock |
Verriegeln / Entriegeln. |
set Volvo1 horn |
Hupe betätigen. |
set Volvo1 climate / set Volvo1 climate_stop |
Klimatisierung starten / stoppen. |
set Volvo1 charge_start / set Volvo1 charge_stop |
Laden starten / stoppen. |
set Volvo1 charge_limit 80 |
Zielladestand setzen; Modulwertebereich 10 bis 100 Prozent, Fahrzeugunterstützung vorausgesetzt. |
set Volvo1 precondition |
Vorkonditionierung anfordern. |
Die passenden Scopes müssen aktiviert und autorisiert sein. Eine unmittelbare FHEM-Rückmeldung über die Übergabe bedeutet noch nicht, dass die Aktion am Fahrzeug erfolgreich abgeschlossen ist. Prüfe danach command_state, last_command und den tatsächlichen Fahrzeugzustand.
Dashboard
get Volvo1 _showDashboard get Volvo1 _dashboardURL
Das Dashboard gruppiert Messwerte und Zustände in Kacheln und bietet unterstützte Fahrzeugaktionen. Bei aktiviertem Standortbereich erscheint eine Standortkachel mit Karte.
- Bearbeiten ist beim Aufruf über
_showDashboardverfügbar. - Dort kannst du Kacheln und einzelne Readings ein-/ausblenden sowie Labels und Reihenfolgen speichern.
- Die isolierte Dashboard-URL ist nicht editierbar und zeigt keinen Bearbeitungsstift.
- Die Vier-Wege-Pfeile aktivieren den kompakten Verschiebemodus.
- Das responsive Mehrspaltenlayout zeigt die gespeicherte Reihenfolge spaltenweise, nicht als starres zeilenweises Raster.
- Die Konfiguration wird je Device im FHEM-Key-Value-Store gespeichert.
Die Adresse liegt unter deinem FHEMWEB-Pfad, beispielsweise /fhem/VolvoConnect/Volvo1. Verwende bevorzugt den vom Modul gelieferten Link.
Einbettung in andere Oberflächen
Die relative Fragmentadresse erhältst du mit:
get Volvo1 _dashboardEmbedURL
Der Parameter embed=1 liefert ein HTML-Fragment für geeignete Oberflächen. Eine einfache Iframe-Einbindung der vollständigen Seite ist beispielsweise:
<iframe src="/fhem/VolvoConnect/Volvo1" style="width:100%;height:900px;border:0"></iframe>
Passe FHEMWEB-Pfad und Device-Namen an. Anmeldung, Browserregeln und die Möglichkeiten der Zieloberfläche gelten weiterhin. Die weiterführenden FTUI-Beispiele in der Repositorydokumentation sind nicht als getestete FTUI-Installation zugesichert.
Standort und Adressauflösung
Bei aktivem scope_location ist die zusätzliche Adressauflösung standardmäßig eingeschaltet: Neue Koordinaten werden an OpenStreetMap Nominatim übermittelt. Wenn du das nicht möchtest, deaktiviere die externe Adressabfrage:
attr Volvo1 location_reverse_geocode 0
Das deaktiviert die zusätzliche Adressauflösung, nicht den Volvo-Standortabruf. Soll das Modul auch keine Standortdaten von Volvo abrufen, deaktiviere den Standort-Scope und autorisiere die geänderte Auswahl neu.
Updates und Sicherungen
Für spätere stabile Updates:
update all https://raw.githubusercontent.com/stapetz/fhem-modules/main/controls_volvo.txt shutdown restart
Prüfe das Updateprotokoll und danach das Internal VERSION. Lade Dashboardseiten vollständig neu.
Sichere zusammengehörig:
- FHEM-Device-Definition und Attribute.
- Die FHEM-Konfiguration.
- Den FHEM-Key-Value-Store für Tokens, Abrufzustände und Dashboardkonfiguration.
- Einen nachvollziehbaren Modulstand.
Sicherungen können Zugangsdaten enthalten und müssen geschützt werden. Bei einem Umzug prüfst du Redirect-URI, Netzwerkerreichbarkeit und Volvo-Portal-Konfiguration.
set Volvo1 reauth entfernt die Tokens und startet die Anmeldung neu; Device-Attribute und Dashboardkonfiguration werden dadurch nicht zurückgesetzt.
Häufige Probleme
| Problem | Prüfung / Abhilfe |
|---|---|
Gerät bleibt bei auth_required |
VIN, Clientdaten, API-Key, Redirect-URI und Fahrzeugfreigabe prüfen; mit reauth neu anmelden.
|
| OAuth-Code abgelehnt | Frischen Code verwenden; nur den code-Wert kopieren. Redirect-URI und Scopes prüfen.
|
| Nach Scope-Änderung keine Daten | Erneute Volvo-Autorisierung erforderlich. |
| Wenige oder fehlende Readings | get Volvo1 scopes, Fahrzeugunterstützung und Volvo-Freigabe prüfen; anschließend set Volvo1 update.
|
| Daten oder Standort wirken veraltet | Aktualität des Volvo-Backends und langsamere Intervalle beachten; kein Live-Ortungssystem. |
| Fahrzeugbefehl wirkt nicht | Scope, Autorisierung, Verfügbarkeit, Fahrzeugzustand und command_state prüfen.
|
| Fahrzeugbild nicht mehr sichtbar | Befristete Bild-URL mit set Volvo1 update neu abrufen.
|
| Dashboard lässt sich nicht bearbeiten | Über get Volvo1 _showDashboard öffnen, nicht über die isolierte Dashboard-URL.
|
| Token-Erneuerung schlägt fehl | lastError prüfen und gegebenenfalls vollständig neu anmelden.
|
Für eine lesende Diagnose:
get Volvo1 summary get Volvo1 tokenInfo get Volvo1 scopes
Veröffentliche Ausgaben nur bereinigt. Insbesondere vollständige Device-Listen und Konfigurationsdateien können geheime Attribute oder private Fahrzeugdaten enthalten.
Dokumentation und Support
- Modulübersicht und Schnellstart
- Ausführliche Installations- und Betriebsanleitung
- Änderungshistorie
- Fehlerberichte und Weiterentwicklungen
- Volvo Cars Developer Portal
Beschreibe bei Fehlerberichten Modulversion, erwartetes und tatsächliches Verhalten sowie reproduzierbare Schritte und bereinigte Fehlermeldungen. Nenne keine Zugangsdaten, Autorisierungscodes, Tokens, VIN oder Standortdaten.