Neues Car-Net - Version 4
Re: Neues Car-Net - Version 4
hab heute eine Info gelesen, dass die App von Mercedes jetzt auch eine Integration in Alexa hat, d.h. man kann vom Wohnzimmer aus per Sprachbefehl gewisse Aktionen der App (z.b. die Vorklimatisierung) steuern. Vielleicht wäre das auch eine guter Hinweis für die Entwickler von VW - fänd ich super!
LG
Didi
GTE blackrubin 09/2017
Didi
GTE blackrubin 09/2017
Anzeige
Re: Neues Car-Net - Version 4
RedRaz hat geschrieben:Hallo!
Ich suche auch den "alternativen" Zugriff auf die Car- Net Funktionen (ohne APP) um in meine Haussteurungerung leicht auf Funktionen des Fahrzeugs zugreifen zu können bzw. diese zu steuern.
Die Wallbox (KEBA P30c) habe ich von Ip-Symcon aus bereits im Netzwerk und im Zugriff (zur Zeit nur Werte auslesen), möchte aber mit IPS bzw IPSview von den Pads im Haus auf das Fahrzeug zugrifen und nicht immer mühsam das Handy nehmen. Ein Ziel wird sein die Überschussleistung der PV Anlage gesteuert ins Auto zu bringen. Ebenso möchte ich pr Tip aus den Screen das Auto z.B. vorheizen.
Hat jemand was mit Car-net und IPSymcon im Rahmen seiner Haussteuerung gemacht? (PHP)
Funktioniert der Login wie weiter oben noch?
LG
RedRaz
Jup, hab ich mittlerweile.
Vom User SL4E habe ich mal ein Python-Script bekommen, welches ich jetzt in PHP übersetzt habe. Bisher können nur Daten ausgelesen werden, die nächsten Tage erweitere ich es noch um Steuerungs-Funktionen (Starten/beenden und einstellen von Ladevorgang, Klima etc.)
Aber hier schon mal die bisherige Version davon.
Code: Alles auswählen
<?php
$sUser = 'deine@mail.de';
$sPass = 'Passwort';
$sBaseURL = 'https://www.volkswagen-car-net.com/portal';
$sLoginURL = $sBaseURL.'/en_GB/web/guest/login';
$sApp = '17_WAR_cored5portlet';
$sAuthToken = base64_encode($sUser);
$aCookies = array('CARNET_AUTH' => $sAuthToken);
$aParams = array('cookies' => $aCookies);
$oRequest = curl_init();
curl_setopt($oRequest, CURLOPT_URL, $sLoginURL);
curl_setopt($oRequest, CURLOPT_RETURNTRANSFER, true);
curl_setopt($oRequest, CURLOPT_COOKIE, "CARNET_AUTH=".$sAuthToken);
curl_setopt($oRequest, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($oRequest, CURLOPT_COOKIESESSION, true);
curl_setopt($oRequest, CURLOPT_COOKIEJAR, 'carnet-cookie-'.$sAuthToken);
curl_setopt($oRequest, CURLOPT_SSL_VERIFYPEER, false);
$sReturn = curl_exec($oRequest);
preg_match('<meta name="_csrf" content="([^"]*)"/>', $sReturn, $aCsrfToken);
$sCsrfToken = $aCsrfToken[1];
$aParams = array('_'.$sApp.'_login' => $sUser, '_'.$sApp.'_password' => $sPass);
$sLoginURL = $sBaseURL.'/de_DE/web/guest/login?p_auth='.$sCsrfToken.'&p_p_id='.$sApp.'&p_p_lifecycle=1&p_p_state=normal&_'.$sApp.'_javax.portlet.action=login';
curl_setopt($oRequest, CURLOPT_URL, $sLoginURL);
curl_setopt($oRequest, CURLOPT_POST, true);
curl_setopt($oRequest, CURLOPT_COOKIEJAR, 'carnet-cookie-'.$sAuthToken);
curl_setopt($oRequest, CURLOPT_COOKIE, "CARNET_AUTH=".$sAuthToken);
curl_setopt($oRequest, CURLOPT_HTTPHEADER, array('Connection: keep-alive'));
curl_setopt($oRequest, CURLOPT_POSTFIELDS, $aParams);
$sReturn = curl_exec($oRequest);
$sSessionURL = curl_getinfo($oRequest, CURLINFO_EFFECTIVE_URL);
//Debug-Ausgabe
//$aReturn = array($sSessionURL, $sCsrfToken, $oRequest);
//Einen der folgenden Variablen für den Aufruf verwenden.. Je nach Funktion
//Zeigt Fahrzeugdetails
$sActionURL = '/-/vehicle-info/get-vehicle-details';
//Auch irgendwelche Fahrzeugdaten
$sActionURL = '/-/vsr/get-vsr';
//Zeigt die Tripstatistiken an
$sActionURL = '/-/rts/get-latest-trip-statistics';
//Zeigt Batteriedaten
$sActionURL = '/-/emanager/get-emanager';
$sURL = $sSessionURL.$sActionURL;
curl_setopt($oRequest, CURLOPT_URL, $sURL);
curl_setopt($oRequest, CURLOPT_HTTPHEADER, array('Origin: https://www.volkswagen-car-net.com', 'Host: www.volkswagen-car-net.com', 'Referer: '.$sSessionURL, 'Expect: ', 'Content-Type: application/json;charset=utf-8 */*', 'X-CSRF-Token: '.$sCsrfToken));
curl_setopt($oRequest, CURLOPT_FOLLOWLOCATION, true);
$sReturn = curl_exec($oRequest);
$aRequestInfo = curl_getinfo($oRequest);
print_r(json_decode($sReturn));
?>
Keine Haftung für Schäden und/oder Probleme und unter der Creative Common Lizenz BY-NC-SA 4.0 für euch von mir bereitgestellt. Also Weiterverteilung nur unter gleichen Voraussetzungen, nicht für kommerzielle Nutzung und Quellangabe.
Lizenzinfos: https://creativecommons.org/licenses/by-nc-sa/4.0/
Weiteres zu dem Thema:
Ich hätte als Idee, ein Webportal aufzuziehen, bei dem ihr eure Car-Net Verbrauchs-/Fahrdaten mit o.g. Interface synchronisieren könnt und euch mit den anderen Nutzern der Seite messen könnt. So mit Top-Charts für effizienteste Fahrweise etc. Wer würde sowas interessant finden oder ist es die Arbeit nicht wert?
Re: Neues Car-Net - Version 4
Hello rehlus!
Super dass Du den PHP Code hier bereitgestellt hast - freue mich schon auf das Ausprobieren und auf die Erweiterungen zur Steuerung. Vielen Dank für Deinen Einsatz! Wäre toll wenn es eine Aulistung der möglichen "Kommandos" gäbe, bzw eine Doku. Gibt es da etwas "Offizielles" von VW?
Bei mir stockt es weil ich noch immer auf das Fahrzeug warte - soll noch 14 Tage dauern, dann kann ich auch endlich weiter an Themen Ladesteuerung und Carnetfunktionen weiterarbeiten. Werde berichten wenn es endlich soweit ist.
LG
RedRaz
Super dass Du den PHP Code hier bereitgestellt hast - freue mich schon auf das Ausprobieren und auf die Erweiterungen zur Steuerung. Vielen Dank für Deinen Einsatz! Wäre toll wenn es eine Aulistung der möglichen "Kommandos" gäbe, bzw eine Doku. Gibt es da etwas "Offizielles" von VW?
Bei mir stockt es weil ich noch immer auf das Fahrzeug warte - soll noch 14 Tage dauern, dann kann ich auch endlich weiter an Themen Ladesteuerung und Carnetfunktionen weiterarbeiten. Werde berichten wenn es endlich soweit ist.
LG
RedRaz
Re: Neues Car-Net - Version 4
Hi,
also von VW gibt es nichts offizielles. Im Grunde baut man den kompletten Aufruf inkl. Login / Aufbau der Session / Abruf der Daten / Auslösen einer Aktion nach, so wie es normal der Browser macht. Gelingt ganz gut mit dem Entwickler-Plugin von Google Chrome (F12). Am anfang bin ich noch ziemlich angestanden, weil mir nicht bekannt war, welche Cookies, XSS Tokens etc. VW bei der Anmeldung voraussetzt.. Hier im Thread wurde dann mal ein Python Script gepostet.
Für das Python Script das ich erweitert habe, habe ich die entsprechenden Funktionen schon gebaut, bei PHP schauts leider noch nicht ganz so gut aus, weil dort die HTTP POST Requests mit CURL gemacht werden und die etwas anders funktionieren als bei Python Request.
Lange Rede kurzer Sinn, das Python Script von SL4E findest du auf Seite 2, hier ist mal unkommentiert meine Version, bei der es auch Steuerungsmöglichkeit besteht.
Im Prinzip müssen bei allen aktiven Steuerungsbefehlen POST Requests mit einem JSON Body (siehe triggerAction) versendet werden. Da es in PHP (cURL) etwas anders implementiert ist (Versuche gerade herauszufinden wie), wirft die VW API einen ErrorCode 2 zurück, weil die Anfrage nicht verarbeitet werden kann.
Derweil sollte aber die Python Version ausreichend sein.
also von VW gibt es nichts offizielles. Im Grunde baut man den kompletten Aufruf inkl. Login / Aufbau der Session / Abruf der Daten / Auslösen einer Aktion nach, so wie es normal der Browser macht. Gelingt ganz gut mit dem Entwickler-Plugin von Google Chrome (F12). Am anfang bin ich noch ziemlich angestanden, weil mir nicht bekannt war, welche Cookies, XSS Tokens etc. VW bei der Anmeldung voraussetzt.. Hier im Thread wurde dann mal ein Python Script gepostet.
Für das Python Script das ich erweitert habe, habe ich die entsprechenden Funktionen schon gebaut, bei PHP schauts leider noch nicht ganz so gut aus, weil dort die HTTP POST Requests mit CURL gemacht werden und die etwas anders funktionieren als bei Python Request.
Lange Rede kurzer Sinn, das Python Script von SL4E findest du auf Seite 2, hier ist mal unkommentiert meine Version, bei der es auch Steuerungsmöglichkeit besteht.
Code: Alles auswählen
#!/usr/bin/python
import re
import requests
import base64
import sys
import json
import os
import datetime
email='xx@yyy.de'
password='*******'
funct=sys.argv[1]
def apicall(email, password, function):
csfr_re = re.compile('<meta name="_csrf" content="([^"]*)"/>')
base = "https://www.volkswagen-car-net.com/portal"
def b64(text):
return requests.utils.quote(base64.b64encode(text.encode('utf-8')))
def extract_csfr(r):
return csfr_re.search(r.text).group(1)
def headers(csfr):
return {'X-CSRF-Token': csfr}
# headers = {}
s = requests.Session()
s.cookies.set('CARNET_AUTH', b64(email))
# Request login form and get CSFR:
r = s.get(base + '/en_GB/web/guest/login', verify=False)
csfr = extract_csfr(r)
# Login:
app = '17_WAR_cored5portlet'
url = base + (
"/en_GB/web/guest/login?"
"p_auth=" + csfr + "&"
"p_p_id=" + app + "&"
"p_p_lifecycle=1&"
"p_p_state=normal&"
"_" + app + "_javax.portlet.action=login"
)
post_data = {
'_' + app + '_login': email,
'_' + app + '_password': password,
}
r = s.post(url, data=post_data)
if 'guest/login' in r.url:
raise Exception('Unable to login :(')
logged_url = r.url
csfr = extract_csfr(r)
payload={}
if function == 'car.status':
urlsuffix="/-/vsr/get-vsr"
elif function == 'car.lasttrip':
urlsuffix="/-/rts/get-latest-trip-statistics"
elif function == 'charge.detailstatus':
urlsuffix="/-/emanager/get-emanager"
elif function == 'charge.status':
urlsuffix="/-/emanager/get-emanager"
elif function == 'car.details':
urlsuffix="/-/vehicle-info/get-vehicle-details"
elif function == 'trip.details':
urlsuffix="/-/rts/get-latest-trip-statistics"
elif function == 'charge.start':
urlsuffix="/-/emanager/charge-battery"
payload={'triggerAction':'true'}
elif function == 'charge.stop':
urlsuffix="/-/emanager/charge-battery"
payload={'triggerAction':'false'}
elif function == 'climate.start':
urlsuffix="/-/emanager/trigger-climatisation"
payload={"triggerAction":"true"}
elif function == 'climate.stop':
urlsuffix="/-/emanager/trigger-climatisation"
payload={"triggerAction":"false"}
elif function == 'heating.start':
urlsuffix="/-/emanager/trigger-windowheating"
payload={"triggerAction":"true"}
elif function == 'heating.stop':
urlsuffix="/-/emanager/trigger-windowheating"
payload={"triggerAction":"false"}
elif function == 'charge.limit.70':
urlsuffix="/-/emanager/set-rdt-settings"
payload={"rdt":{"settings":{"minChargeLimit":"70"}}}
elif function == 'charge.limit.75':
urlsuffix="/-/emanager/set-rdt-settings"
payload={"rdt":{"settings":{"minChargeLimit":"75"}}}
elif function == 'charge.limit.80':
urlsuffix="/-/emanager/set-rdt-settings"
payload={"rdt":{"settings":{"minChargeLimit":"80"}}}
elif function == 'charge.limit.85':
urlsuffix="/-/emanager/set-rdt-settings"
payload={"rdt":{"settings":{"minChargeLimit":"85"}}}
elif function == 'charge.limit.90':
urlsuffix="/-/emanager/set-rdt-settings"
payload={"rdt":{"settings":{"minChargeLimit":"90"}}}
else:
urlsuffix="/-/vsr/get-vsr"
if payload == '':
q = s.post(logged_url + urlsuffix,{}, headers=headers(csfr),)
else:
q = s.post(logged_url + urlsuffix, data=json.dumps(payload), headers=headers(csfr),)
print(q.text)
apicall(email, password, funct)
Derweil sollte aber die Python Version ausreichend sein.
Re: Neues Car-Net - Version 4
- Profil
- Beiträge: 249
- Registriert: Do 10. Sep 2015, 09:07
- Hat sich bedankt: 1 Mal
- Danke erhalten: 9 Mal
Hi, coole Sache das.
Welche python hast du benutzt?
bei mir spuckt er in python 2 einen Fehler wegen der ersten Fuktionsdeklaration aus und in 3 wegen der Klammernbei Textausgabe.
Ich kann es zwar nicht nutzen weil meine Autos in der Stahlbetongarage ohne Empfang parken...
Aber ich habe die Grippe und langeweile ;-/
Welche python hast du benutzt?
bei mir spuckt er in python 2 einen Fehler wegen der ersten Fuktionsdeklaration aus und in 3 wegen der Klammernbei Textausgabe.
Ich kann es zwar nicht nutzen weil meine Autos in der Stahlbetongarage ohne Empfang parken...
Aber ich habe die Grippe und langeweile ;-/
Freund der Gleichstromladung
Re: Neues Car-Net - Version 4
- Profil
- Beiträge: 328
- Registriert: Mi 23. Aug 2017, 10:57
- Wohnort: 68259 Mannheim
- Hat sich bedankt: 6 Mal
- Danke erhalten: 178 Mal
Hallo,
da ich meinen Wagen noch nicht habe, spiele ich gerade ein bisschen in der Carnet iOS App im Demo Modus.
Kann mir mal einer den Unterschied der beiden Gesten zum aktualisieren der Fahrzeugdaten erklären?
Wenn ich das Fahrzeugsymbol runter ziehe erscheint das Cloud Symbol und die Daten werden aktualisiert.
Wenn ich nun noch weiter herunter ziehe erscheint zusätzlich ein Fahrzeug Icon und nach drei Sekunden wird auch was synchronisiert.
Aber wo ist der unterschied? Die Hilfe Funktion der App ist ihren Namen nicht wert.
Gruß Fränkl
Gesendet von iPhone mit Tapatalk
da ich meinen Wagen noch nicht habe, spiele ich gerade ein bisschen in der Carnet iOS App im Demo Modus.
Kann mir mal einer den Unterschied der beiden Gesten zum aktualisieren der Fahrzeugdaten erklären?
Wenn ich das Fahrzeugsymbol runter ziehe erscheint das Cloud Symbol und die Daten werden aktualisiert.
Wenn ich nun noch weiter herunter ziehe erscheint zusätzlich ein Fahrzeug Icon und nach drei Sekunden wird auch was synchronisiert.
Aber wo ist der unterschied? Die Hilfe Funktion der App ist ihren Namen nicht wert.
Gruß Fränkl
Gesendet von iPhone mit Tapatalk
e-Golf 300 seit 12/2017, ID.3 First MAX seit 10/2020
Re: Neues Car-Net - Version 4
- Profil
- Beiträge: 962
- Registriert: So 9. Mär 2014, 19:53
- Hat sich bedankt: 7 Mal
- Danke erhalten: 69 Mal
Meiner Meinung und Beobachtung nach:
Kurz ziehen = Sync der App mit dem Server
Lamg ziehen und 3 Sekunden halten = OCU im Fahrzeug wird „geweckt“ und schickt aktualisierte Daten an den Server, dann Sync der App
Kurz ziehen = Sync der App mit dem Server
Lamg ziehen und 3 Sekunden halten = OCU im Fahrzeug wird „geweckt“ und schickt aktualisierte Daten an den Server, dann Sync der App
1.500 km Gratis Tesla Supercharging > https://ts.la/florian59849
10% auf Tesla Maßgepäck für Frunk&Trunk > https://oscarandhamish.refr.cc/floriane
VW e-Up! seit 17.4.2014
TESLA Model 3 seit 27.2.2019
SONO SION reserviert am 2.8.2016
10% auf Tesla Maßgepäck für Frunk&Trunk > https://oscarandhamish.refr.cc/floriane
VW e-Up! seit 17.4.2014
TESLA Model 3 seit 27.2.2019
SONO SION reserviert am 2.8.2016
Re: Neues Car-Net - Version 4
- Profil
- Beiträge: 9253
- Registriert: So 27. Jan 2013, 22:52
- Wohnort: Radebeul
- Hat sich bedankt: 1080 Mal
- Danke erhalten: 2587 Mal
Cloud Symbol = Abrufen der zuletzt vom Fahrzeug an den Server gesendeten Daten, Abgleich mit App
Fahrzeug-Symbol = Steuergerät 75 aufwecken und neue Daten an den Server schicken, Abgleich mit App
Ich finde das Abrufen der (veralteten) Daten vom Server recht sinnfrei, da viele Inhalte nicht aktuell sind. Daher wecke ich jedes Mal das Fahrzeug auf, wenn ich eine Info über den momentanen Zustand haben möchte. Von mir aus können die sich das Cloud Symbol sparen.
Warum das Auto nicht serienmäßig bei Abruf der Daten angesprochen wird, sondern über diesen Umweg, weiß ich nicht. Es ist aber schon deutlich besser gelöst als bei Car-Net Version 3, wo man nie so richtig wusste, ob der gerade angeforderte Status tatsächlich in Echtzeit vom Auto kommt.
Fahrzeug-Symbol = Steuergerät 75 aufwecken und neue Daten an den Server schicken, Abgleich mit App
Ich finde das Abrufen der (veralteten) Daten vom Server recht sinnfrei, da viele Inhalte nicht aktuell sind. Daher wecke ich jedes Mal das Fahrzeug auf, wenn ich eine Info über den momentanen Zustand haben möchte. Von mir aus können die sich das Cloud Symbol sparen.
Warum das Auto nicht serienmäßig bei Abruf der Daten angesprochen wird, sondern über diesen Umweg, weiß ich nicht. Es ist aber schon deutlich besser gelöst als bei Car-Net Version 3, wo man nie so richtig wusste, ob der gerade angeforderte Status tatsächlich in Echtzeit vom Auto kommt.
2012-2015: Think PIV4 || 2016-2018: VW e-up!
2018-2020: Mietfahrzeuge || 2021-2023: Renault Twingo Electric
Und nun Deutschlandticket Nutzer ohne Auto.
2018-2020: Mietfahrzeuge || 2021-2023: Renault Twingo Electric
Und nun Deutschlandticket Nutzer ohne Auto.
-
- Vergleichbare Themen
-
-
Mein "neues Navi" Phase 1 / Android Auto / veraltete Android Version
von C-Zer0 » Fr 12. Mai 2023, 10:37 » in ZOE - Modifikationen -
Letzter Beitrag von C-Zer0
Fr 12. Mai 2023, 10:37
-
Mein "neues Navi" Phase 1 / Android Auto / veraltete Android Version
-
-
Vergleich Enyaq Version Mai 21 vs Mai 23
von tyman » Di 30. Mai 2023, 12:00 » in Enyaq iV - Allgemeine Themen -
Letzter Beitrag von peterrle
Fr 16. Jun 2023, 18:17
-
Vergleich Enyaq Version Mai 21 vs Mai 23
-
-
aktuelle Software Version
von xxixus » Do 29. Jun 2023, 10:05 » in smart #1 - Allgemeine Themen -
Letzter Beitrag von Teleboy
Sa 30. Sep 2023, 15:15
-
aktuelle Software Version
-
-
Wo verstecken sich die 21PS Mehrleistung der 50kWh Batterie Version?
von Clinnt » Mi 27. Sep 2023, 23:46 » in ZS EV - Allgemeine Themen -
Letzter Beitrag von Mombi
Mo 16. Okt 2023, 11:46
-
Wo verstecken sich die 21PS Mehrleistung der 50kWh Batterie Version?
-
-
Kona Edition 30+ vs. Trend Version (Facelift) Kaufberatung
von Feldi2021 » Do 30. Nov 2023, 10:06 » in Kona - Allgemeine Themen -
Letzter Beitrag von Feldi2021
Di 5. Dez 2023, 20:41
-
Kona Edition 30+ vs. Trend Version (Facelift) Kaufberatung