Volkswagen ID.7: Unterschied zwischen den Versionen
(3 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 11: | Zeile 11: | ||
/usr/bin/python3 -m weconnect_mqtt --username <username> --password <passwort> --mqttbroker <IP-Adresse des FHEM MQTT-Servers> --prefix weconnect --pictures --picture-format png --convert-times Europe/Berlin --no-capabilities | /usr/bin/python3 -m weconnect_mqtt --username <username> --password <passwort> --mqttbroker <IP-Adresse des FHEM MQTT-Servers> --prefix weconnect --pictures --picture-format png --convert-times Europe/Berlin --no-capabilities | ||
Damit das Programm beim Neustart des Betriebssystems ebenfalls startet | Damit das Programm beim Neustart des Betriebssystems ebenfalls startet, muss es als Service registriert werden. | ||
Dazu bitte eine Datei /etc/systemd/system/weconnect-mqtt.service mit dem Inhalt | Dazu bitte eine Datei /etc/systemd/system/weconnect-mqtt.service anlegen mit dem Inhalt | ||
<pre> | <pre> | ||
[Unit] | [Unit] | ||
Zeile 27: | Zeile 27: | ||
WantedBy=multi-user.target | WantedBy=multi-user.target | ||
</pre> | </pre> | ||
Diesen Service mit | |||
systemctl start weconnect-mqtt | systemctl start weconnect-mqtt | ||
manuell starten bzw. mit | manuell starten bzw. mit | ||
Zeile 34: | Zeile 34: | ||
===FHEM-Device === | ===FHEM-Device === | ||
Der ID7 ist ziemlich gesprächig, man muss sich daher genau überlegen, welche Daten man wirklich benötigt. Zum Ausprobieren folgender | Der ID7 ist ziemlich gesprächig, man muss sich daher genau überlegen, welche Daten man wirklich benötigt. Zum Ausprobieren folgender Vorschlag | ||
<div class="mw-collapsible mw-collapsed"> | |||
Code:<div class="mw-collapsible-content"> | |||
<pre> | <pre> | ||
defmod ID7 MQTT2_DEVICE MQTTBridge | defmod ID7 MQTT2_DEVICE MQTTBridge | ||
Zeile 217: | Zeile 219: | ||
} | } | ||
</pre> | </pre> | ||
</div> | |||
</div> | |||
==Offene Fragen== | |||
* Eine Schwierigkeit besteht darin, dass die Daten des Fahrzeuges nur teilweise zur Verfügung stehen, wenn ein anderer Benutzer im Fahrzeug angemeldet ist. Till Steinbach, der Autor des Python-Servers, steht auf dem Standpunkt, dass ein automatischer Benutzerwechsel im Python-Server nicht nötig ist und sieht die Verantwortung dafür bei Volkswagen. | |||
[[Kategorie:Elektromobilität]] | [[Kategorie:Elektromobilität]] |
Aktuelle Version vom 11. August 2024, 10:34 Uhr
Dr VW ID.7 ist ein batterieelektrisches Fahrzeug (BEV) mit semipermanenter Anbindung an die Server von Volkswagen connect.
Anbindung via MQTT
Mit einem relativ kompakten Code von Till Steinbach kann man die Fahrzeugdaten von VW connect abfragen und als MQTT-Nachricht an FHEM senden.
Python-Server
Zur Installation sei auf die Anleitung von Till Steinbach verwiesen, sie den obigen Link. In Kürze:
- Python 3.8 muss installiert sein
- weconnect-mqtt installieren mit
pip3 install weconnect-mqtt
- Zum Ausprobieren den Server starten über die Kommandozeile
/usr/bin/python3 -m weconnect_mqtt --username <username> --password <passwort> --mqttbroker <IP-Adresse des FHEM MQTT-Servers> --prefix weconnect --pictures --picture-format png --convert-times Europe/Berlin --no-capabilities
Damit das Programm beim Neustart des Betriebssystems ebenfalls startet, muss es als Service registriert werden. Dazu bitte eine Datei /etc/systemd/system/weconnect-mqtt.service anlegen mit dem Inhalt
[Unit] Description=WeConnect-mqtt After=network-online.target [Service] Type=simple # change the username and commandline parameters here: User=fhem ExecStart=/usr/bin/python3 -m weconnect_mqtt --username <username> --password <passwort> --mqttbroker <IP-Adresse des FHEM MQTT-Servers> --prefix weconnect --pictures --picture-format png --convert-times Europe/Berlin --no-capabilities [Install] WantedBy=multi-user.target
Diesen Service mit
systemctl start weconnect-mqtt
manuell starten bzw. mit
systemctl enable weconnect-mqtt
den automatischen Start beim Systemstart einrichten.
FHEM-Device
Der ID7 ist ziemlich gesprächig, man muss sich daher genau überlegen, welche Daten man wirklich benötigt. Zum Ausprobieren folgender Vorschlag
defmod ID7 MQTT2_DEVICE MQTTBridge attr ID7 autocreate 0 attr ID7 babbleName ID7 attr ID7 devStateIcon charging_car.*:ev_car@darkorange finished_car.*:ev_car@green .*_car:ev_car@black attr ID7 devicetopic weconnect attr ID7 group energyControl attr ID7 readingList MQTTBridge:weconnect/mqtt/weconnectConnected:.* connected\ MQTTBridge:weconnect/mqtt/weconnectUpdated:.* connection_updated\ MQTTBridge:weconnect/mqtt/weconnectUpdateInterval_s:.* interval\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/readiness/readinessStatus/connectionState/isOnline:.* isOnline\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/readiness/readinessStatus/connectionState/isActive:.* connection_isActive\ MQTTBridge:weconnect/mqtt/error/code:.* mqtt_error_code\ MQTTBridge:weconnect/mqtt/error/message:.* mqtt_error_message\ \ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/controls/wakeup:.* wakeup\ \ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/.*pictures:.* { json2nameValue($EVENT, '', $JSONMAP) }\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/climatisation:.* { json2nameValue($EVENT, '', $JSONMAP) }\ \ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/charging/chargingSettings/maxChargeCurrentAC:.* charge_current\ \ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/access/accessStatus/overallStatus:.* door_security\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/access/accessStatus/doorLockStatus:.* door_lock_status\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/access/accessStatus/doors/frontLeft/lockState:.* door_FL_ls\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/access/accessStatus/doors/frontLeft/openState:.* door_FL\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/access/accessStatus/windows/frontRight/openState:.* door_FR\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/access/accessStatus/doors/frontRight/lockState:.* door_FR_ls\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/access/accessStatus/doors/rearRight/lockState:.* door_RR_ls\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/access/accessStatus/doors/rearLeft/lockState:.* door_RL_ls\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/access/accessStatus/doors/trunk/lockState:.* trunk_ls\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/access/accessStatus/doors/trunk/openState:.* trunk\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/access/accessStatus/windows/frontLeft/openState:.* window_FL\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/access/accessStatus/windows/frontRight/openState:.* window_FR\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/access/accessStatus/windows/rearLeft/openState:.* window_RL\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/access/accessStatus/windows/rearRight/openState:.* window_RR\ \ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/parking/parkingPosition/latitude:.* parking_latitude\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/parking/parkingPosition/longitude:.* parking_longitude\ \ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/charging/batteryStatus/currentSOC_pct:.* SOC\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/measurements/fuelLevelStatus/currentSOC_pct:.* SOC\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/fuelStatus/rangeStatus/primaryEngine/currentSOC_pct:.* SOC\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/charging/chargingSettings/targetSOC_pct:.* SOC_target\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/automation/chargingProfiles/nextChargingTimer/targetSOCreachable:.* SOC_reachable\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/chargingProfiles/chargingProfilesStatus/nextChargingTimer/targetSOCreachable:.* SOC_reachable\ \ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/measurements/temperatureBatteryStatus/temperatureHvBatteryMin_K:.* battery_tempMin\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/measurements/temperatureBatteryStatus/temperatureHvBatteryMax_K:.* battery_tempMax\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/batteryChargingCare/chargingCareSettings/batteryCareMode:.* battery_careMode\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/batterySupport/batterySupportStatus/batterySupport:.* battery_Support\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/batterySupport/batterySupportStatus/error/message:.* batttery_error_message\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/batterySupport/batterySupportStatus/error:.* batttery_error\ \ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/charging/chargingSettings/request:.* charge_request\ \ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/automation/chargingProfiles/profiles/1/maxChargingCurrent:.* charge_current\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/charging/chargingSettings/autoUnlockPlugWhenCharged:.* charge_autoUnlock\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/charging/chargingSettings/autoUnlockPlugWhenChargedAC:.* charge_AC_autoUnlock\ \ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/charging/chargingStatus/chargeMode:.* charge_mode\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/charging/chargingStatus/chargePower_kW:.* charge_power\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/charging/chargingStatus/chargeRate_kmph:.* charge_rate\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/charging/chargingStatus/chargeType:.* charge_type\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/charging/chargingStatus/chargingSettings:.* charge_settings\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/charging/chargingStatus/chargingState:.* charge_state\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/charging/chargingStatus/remainingChargingTimeToComplete_min:.* charge_timeremain\ \ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/charging/plugStatus/externalPower:.* charge_plugpower\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/charging/plugStatus/ledColor:.* charge_plugcolor\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/charging/plugStatus/plugConnectionState:.* charge_plugstate\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/charging/plugStatus/plugLockState:.* charge_plugls\ \ \ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/measurements/rangeStatus/totalRange_km:.* range\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/measurements/rangeStatus/electricRange:.* range\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/charging/batteryStatus/cruisingRangeElectric_km:.* range\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/fuelStatus/rangeStatus/primaryEngine/remainingRange_km:.* range\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/fuelStatus/rangeStatus/totalRange_km:.* range\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/measurements/odometerStatus/odometer:.* odometer\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/vehicleHealth.*/mileage_km:.* odometer\ \ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/automation/climatisationTimer/timers/1/enabled:.* timers_1_enabled\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/automation/climatisationTimer/timers/2/enabled:.* timers_2_enabled\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/automation/chargingProfiles/profiles/1/preferredChargingTimes/None/id:.* chargeTimer_id\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/automation/chargingProfiles/profiles/1/preferredChargingTimes/4/enabled:.* chargeTimer_4_enabled\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/automation/chargingProfiles/profiles/1/preferredChargingTimes/4/startTime:.* chargeTimer_4_startTime\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/automation/chargingProfiles/profiles/1/preferredChargingTimes/4/endTime:.* chargeTimer_4_endTime\ \ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/chargingProfiles/chargingProfilesStatus/profiles/1/preferredChargingTimes/None/id:.* chargeTimer_id\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/chargingProfiles/chargingProfilesStatus/profiles/1/preferredChargingTimes/4/enabled:.* chargeTimer_4_enabled\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/chargingProfiles/chargingProfilesStatus/profiles/1/preferredChargingTimes/4/startTime:.* chargeTimer_4_startTime\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/chargingProfiles/chargingProfilesStatus/profiles/1/preferredChargingTimes/4/endTime:.* chargeTimer_4_endTime\ \ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/climatisation/climatisationStatus/climatisationState:.* clima_state\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/climatisation/windowHeatingStatus/windows/front/windowHeatingState:.* clima_window_F\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/climatisation/windowHeatingStatus/windows/rear/windowHeatingState:.* clima_window_R\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/climatisation/climatisationSettings/climatizationAtUnlock:.* clima_atUnlock\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/climatisation/climatisationSettings/targetTemperature_C:.* clima_temperature\ \ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/climatisationTimers/climatisationTimersStatus/timers/1/enabled:.* timers_1_enabled\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/climatisationTimers/climatisationTimersStatus/timers/2/enabled:.* timers_2_enabled\ \ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/automation/chargingProfiles/profiles/1/preferredChargingTimes/4/id:.* chargeTimer_4_id\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/chargingProfiles/chargingProfilesStatus/profiles/1/preferredChargingTimes/4/id:.* chargeTimer_4_id\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/automation/chargingProfiles/profiles/1/preferredChargingTimes/4:.* chargeTimer_4\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/chargingProfiles/chargingProfilesStatus/profiles/1/preferredChargingTimes/4:.* chargeTimer_4\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/automation/chargingProfiles/nextChargingTimer:.* chargeTimer_next\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/chargingProfiles/chargingProfilesStatus/nextChargingTimer:.* chargeTimer_next\ \ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/coUsers/0:.* coUsers_0\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/coUsers/0/id:.* coUsers_0_id\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/coUsers/0/role:.* coUsers_0_role\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/coUsers/0/roleReseted:.* coUsers_0_roleReseted\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/coUsers/0/enrollmentStatus:.* coUsers_0_enrollmentStatus\ \ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/.*/webApp/status:.* status_app\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/.*/predictiveWakeUp/status:.* status_wakeup\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/.*/roadExperienceManagementLocalization/status:.* status_roadex\ \ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/vehicleHealthInspection/maintenanceStatus/inspectionDue_days:.* maintenance_due\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/vehicleHealthInspection/maintenanceStatus/error/message:.* maintenance_eror_message\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/vehicleHealthInspection/maintenanceStatus/error:.* maintenanance_error\ \ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/charging/chargingSettings/request/6e1647f9-a0aa-4896-80bf-b9ec44c89e6a/status:.* 6e1647f9_status\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/charging/chargingSettings/request/6e1647f9-a0aa-4896-80bf-b9ec44c89e6a/operation:.* 6e1647f9_operation\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/charging/chargingSettings/request/6e1647f9-a0aa-4896-80bf-b9ec44c89e6a/body:.* 6e1647f9_body\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/charging/chargingSettings/request/6e1647f9-a0aa-4896-80bf-b9ec44c89e6a/requestId:.* 6e1647f9_charge_requestId\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/charging/chargingSettings/request/6e1647f9-a0aa-4896-80bf-b9ec44c89e6a/vcfRequestId:.* 6e1647f9_charge_vcfRequestId\ MQTTBridge:weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/charging/chargingSettings/request/6e1647f9-a0aa-4896-80bf-b9ec44c89e6a:.* 6e1647f9_else\ \ attr ID7 setList update:noArg weconnect/mqtt/weconnectForceUpdate_writetopic True\ interval:60,300 weconnect/mqtt/weconnectUpdateInterval_s_writetopic\ battery_careMode:activated,deactivated weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/batteryChargingCare/chargingCareSettings/batteryCareMode_writetopic\ clima:start,stop,on,off weconnect/vehicles/WVWxxxxxxxxxxxxxxx/controls/climatisation_writetopic\ clima_atUnlock:True,False weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/climatisation/climatisationSettings/climatizationAtUnlock_writetopic\ clima_temperature:slider,20,1,25 weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/climatisation/climatisationSettings/targetTemperature_C_writetopic\ clima_windowheat:True,False weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/climatisation/climatisationSettings/windowHeatingEnabled_writetopic\ clima_frontleft:True,False weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/climatisation/climatisationSettings/zoneFrontLeftEnabled_writetopic\ clima_frontright:True,False weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/climatisation/climatisationSettings/zoneFrontRightEnabled_writetopic\ SOC_target:slider,50,10,100 weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/charging/chargingSettings/targetSOC_pct_writetopic\ charge_current:maximum,reduced weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/charging/chargingSettings/maxChargeCurrentAC_writetopic\ charge_autoUnlock:on,off weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/charging/chargingSettings/autoUnlockPlugWhenCharged_writetopic\ charge_AC_autoUnlock:on,off weconnect/vehicles/WVWxxxxxxxxxxxxxxx/domains/charging/chargingSettings/autoUnlockPlugWhenChargedAC_writetopic\ attr ID7 sortby 2 attr ID7 stateFormat {my $soc=ReadingsVal("ID7","SOC",0);;\ my $ran=ReadingsVal("ID7","range",0);;\ my $cst=ReadingsVal("ID7","charge_state","");;\ my $ret;;\ if( $cst eq "charging"){\ $ret=sprintf("<p align=\"left\">\n%s_car\n<br/>%d %% (%d km)",$cst,$soc,$ran);;\ my $cp=ReadingsVal("ID7","charge_power",0);;\ my $tr=ReadingsVal("ID7","charge_timeremain",0);;\ $ret.=sprintf("\n<br>charging %.1f kW, %d min",$cp,$tr)\ }elsif( $cst eq "notReadyForCharging" ){\ $ret=sprintf("<p align=\"left\">\n%s_car\n<br/>%d %% (%d km)",$cst,$soc,$ran);;\ }elsif( $cst eq "chargePurposeReachedAndNotConservationCharging"){\ $ret=sprintf("<p align=\"left\">\nfinished_car\n<br/>%d %% (%d km)",$soc,$ran);;\ my $ce=ReadingsVal("Wally","energy_today",0);;\ $ret.=sprintf("\n<br>acquired %.1f kWh",$ce)\ }\ $ret.="\n</p>";;\ return $ret;;\ } attr ID7 userReadings message:SOC.* {my $soc=ReadingsVal("ID7","SOC",0);;\ my $ran=ReadingsVal("ID7","range",0);;\ my $cst=ReadingsVal("ID7","charge_state","");;\ my $ret=sprintf("Der ID7 hat %d %% Batterieladung, das reicht für %d Kilometer",$soc,$ran);;\ if( $cst eq "charging"){\ my $cp=ReadingsVal("ID7","charge_power",0);;\ my $tr=ReadingsVal("ID7","charge_timeremain",0);;\ $ret.=sprintf(", geladen wird noch %d Minuten mit %.1f Kilowatt.",$tr,$cp)\ }\ return $ret;;\ },\ parking_location:parking_latitude.* {my $lat=ReadingsVal("ID7","parking_latitude",0);;\ my $lon=ReadingsVal("ID7","parking_longitude",0);;\ return ((sqrt(($lon-0.00)**2+($lat-0.00)**2)<=0.01)?"Home":"unknown")\ }
Offene Fragen
- Eine Schwierigkeit besteht darin, dass die Daten des Fahrzeuges nur teilweise zur Verfügung stehen, wenn ein anderer Benutzer im Fahrzeug angemeldet ist. Till Steinbach, der Autor des Python-Servers, steht auf dem Standpunkt, dass ein automatischer Benutzerwechsel im Python-Server nicht nötig ist und sieht die Verantwortung dafür bei Volkswagen.