Volkswagen ID.7: Unterschied zwischen den Versionen

Aus FHEMWiki
Keine Bearbeitungszusammenfassung
 
(Eine dazwischenliegende Version desselben Benutzers wird 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. muss es als Service registriert werden.  
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>
erzeugen. Diesen Service mit
Diesen Service mit
  systemctl start weconnect-mqtt
  systemctl start weconnect-mqtt
manuell starten bzw. mit
manuell starten bzw. mit
Zeile 35: Zeile 35:
===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 Vorschlag
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==
==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.
* 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, 11: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

Code:
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.