Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Praktische Anwendungen (Showcase)
  4. Skript zum Abfragen von VW-CarNet

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.8k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.2k

Skript zum Abfragen von VW-CarNet

Geplant Angeheftet Gesperrt Verschoben Praktische Anwendungen (Showcase)
88 Beiträge 17 Kommentatoren 17.1k Aufrufe 11 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • S Offline
    S Offline
    Sneak-L8
    schrieb am zuletzt editiert von
    #1

    Hallo zusammen,

    ich habe mal das PythonSkript: https://github.com/wez3/volkswagen-carn … net_web.py auf JavaScript für ioBroker portiert, so dass man sich verschiedene Werte aus dem CarNet als States in ioBroker speichern lassen kann:

    ! ````
    /* Skript zum Abragen des Status im Car-Net von Volkswagen
    ** V1.0.0 - 03.06.2018 - initiale Version (02.07.2018 fertiggestellt)
    ** V1.0.1 - 03.07.2018 - Wenn Location leer, dann Info in Adresse stellen
    ** - Längen-/Breitengrad mit °= 0 anstelle > 0 abfragen
    /
    ! var request = require('request');
    ! var base = "https://www.volkswagen-car-net.com";
    var authbase = "https://security.volkswagen.com";
    var csrf = "";
    var refUrl = "";
    var viewState = "";
    var cookieJar = null;
    var urlHeader = null;
    var code = "";
    var state = "";
    var unterwegs = "unterwegs - zuletzt:";
    var email = "
    "; // User Car-Net-Account
    var password = "
    "; // Passwort Car-Net-Account
    var mapsApiKey= ""; // API-Key für Google Maps Platform (noch optional)
    var errCount = 0; // Anzahl zulässige Fehler bis Mail verschickt wird
    var defaultHeader = {
    'Accept': 'application/json, text/plain, /',
    'Content-Type': 'application/json;charset=UTF-8',
    'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0.1; D5803 Build/23.5.A.1.291; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/63.0.3239.111 Mobile Safari/537.36'
    };
    var stateBatterieProz = "emanager.batteryPercentage";
    var stateLadevorgang = "emanager.chargingState";
    var stateLadedauer = "emanager.chargingRemaining";
    var stateReichweite = "emanager.electricRange";
    var stateMinLadung = "emanager.minChargeLimit";
    var stateletzteVerb = "vehicle.lastConnectionTimeStamp";
    var stateGesamtKm = "vehicle.distanceCovered";
    var stateReichweiteV = "vehicle.range";
    var stateServiceTermin= "vehicle.serviceInspectionData";
    var statePosBreite = "location.lat";
    var statePosLaenge = "location.lng";
    var statePosAdresse = "location.address";
    ! createState(stateBatterieProz, -1, {
    read: true,
    write: false,
    name: "Ladezustand der Hauptbatterie in 10%-Schritten",
    type: "number",
    unit: "%",
    def: -1
    });
    ! createState(stateLadevorgang, null, {
    read: true,
    write: false,
    name: "Zustand des Ladevorgangs",
    type: "string",
    unit: "",
    def: null
    });
    ! createState(stateLadedauer, null, {
    read: true,
    write: false,
    name: "Verbleibende Ladedauer bis 100% SoC",
    type: "string",
    //role: "datetime",
    def: null
    });
    ! createState(stateReichweite, -1, {
    read: true,
    write: false,
    name: "Elektrische Reichweite mit aktuellem Batteriestand",
    type: "number",
    unit: "km",
    def: -1
    });
    ! createState(stateMinLadung, -1, {
    read: true,
    write: false,
    name: "Mindest-SoC bei Ladevorgang",
    type: "number",
    unit: "%",
    def: -1
    });
    ! createState(stateletzteVerb, null, {
    read: true,
    write: false,
    name: "Zeitpunkt der letzten Verbindung zum Fahrzeug",
    type: "string", // "number",
    role: "datetime",
    def: null
    });
    ! createState(stateGesamtKm, -1, {
    read: true,
    write: false,
    name: "Gesamt-Kilomater-Stand",
    type: "number",
    unit: "km",
    def: -1
    });
    ! createState(stateReichweiteV, -1, {
    read: true,
    write: false,
    name: "Reichweite des Fahrzeugs",
    type: "number",
    unit: "km",
    def: -1
    });
    ! createState(stateServiceTermin, null, {
    read: true,
    write: false,
    name: "Nächster Service-Termin",
    type: "string",
    def: null
    });
    ! createState(statePosBreite, 0, {
    read: true,
    write: false,
    name: "Breitengrad der Position des Fahrzeugs",
    type: "number",
    def: 0
    });
    ! createState(statePosLaenge, 0, {
    read: true,
    write: false,
    name: "Längengrad der Position des Fahrzeugs",
    type: "number",
    def: 0
    });
    ! createState(statePosAdresse, null, {
    read: true,
    write: false,
    name: "Anschrift der Position des Fahrzeugs",
    type: "string",
    def: null
    });
    ! function carNet_error(meldung, typ) {
    if (typ === undefined)
    typ = "";
    ! var sendMail = true;
    log('CarNet: ' + meldung, 'error');
    if (typ == "main") {
    errCount ++;
    if (errCount < 3)
    sendMail = false;
    }
    if (sendMail)
    sendTo("email", {
    subject: "FEHLER bei CarNet-Verarbeitung",
    text: meldung
    });
    }
    ! function getPartOfSite(content, startTag, endTag, startOffset) {
    if (startOffset === undefined)
    startOffset = 0;
    var pos = content.indexOf(startTag, startOffset);
    if (pos >= 0) {
    pos += startTag.length;
    var pos2 = content.indexOf(endTag, pos +1);
    if (pos2 >= 0) {
    return {
    found: true,
    value: content.substring(pos, pos2).trim(),
    start: pos,
    end: pos2,
    cutter: pos2 + endTag.length
    };
    }
    }
    return null;
    }
    ! function get_csrf(body) {
    var data = getPartOfSite(body, '');
    if (data === null) {
    carNet_error('Kein Token für Login gefunden\n' + body);
    return "";
    }
    return data.value;
    }
    ! function get_loginUrl(body) {
    var data = getPartOfSite(body, '"path":"', '"');
    if (data === null) {
    carNet_error('Keine Login-URL gefunden\n' + body);
    return "";
    }
    return data.value;
    }
    ! function get_viewState(body) {
    var data = getPartOfSite(body, 'name="javax.faces.ViewState" id="j_id1:javax.faces.ViewState:0" value="', '"');
    if (data === null) {
    carNet_error('Keinen Viewstate für Login gefunden\n' + body);
    return "";
    }
    return data.value.replace(/\x3a/g, ":").replace(/\x2f/g, "/").replace(/\x2e/g, ".");
    }
    ! function get_redirectUrl(body) {
    var data = getPartOfSite(body, '');
    if (data === null) {
    carNet_error('Keine Redirect-URL nach Login gefunden\n' + body);
    return "";
    }
    return data.value.replace('&', '&');
    }
    ! function get_code(body) {
    var data = getPartOfSite(body, 'code=', '&');
    if (data === null) {
    carNet_error('Keinen Code nach Login gefunden\n' + body);
    return "";
    }
    return data.value;
    }
    ! function get_state(body) {
    // Hier indexOf anstelle getPartOfsite, weil es keinen EndeString gibt
    var pos = body.indexOf('state=');
    if (pos < 0) {
    carNet_error('Keinen State nach Login gefunden\n' + body);
    return "";
    }
    return body.substr(pos + 6);
    }
    ! function get_newUrl(url) {
    var data = getPartOfSite(url, '/', '?', 10);
    if (data === null) {
    carNet_error('Konnte keinen Path aus URL ' + url + ' extrahieren');
    return "";
    }
    return base + '/' + data.value + '?p_auth=' + state + '&p_p_id=33_WAR_cored5portlet&p_p_lifecycle=1&p_p_state=normal&p_p_mode=view&p_p_col_id=column-1&p_p_col_count=1&_33_WAR_cored5portlet_javax.portlet.action=getLoginStatus';
    }
    ! function get_request(url, mayRedirect, forms, doJSON) {
    var options = {
    url: url,
    jar: cookieJar
    };
    if (urlHeader !== null)
    options.headers = urlHeader;
    if (mayRedirect === undefined || mayRedirect === null)
    mayRedirect = true;
    if (! mayRedirect)
    options.followRedirect = function (resp) { return false; };
    if (forms !== undefined)
    options.form = forms;
    if (doJSON === undefined || doJSON === null)
    doJSON = false;
    if (doJSON)
    options.json = true;
    return options;
    }
    ! function isAbrufOk(oper, err, stat, body) {
    if (err)
    carNet_error('Fehler "' + err + '" beim ' + oper);
    else if(body) {
    return true;
    } else
    carNet_error("Kein Inhalt bei " + oper + " (Status " + stat.statusCode + ")");
    return false;
    }
    ! function isRedirectOk(oper, err, stat, body) {
    if (err)
    carNet_error('Fehler "' + err + '" beim ' + oper);
    else if(stat.statusCode == 302) {
    return true;
    } else
    carNet_error(oper + " ist keine Weiterleitung (Status " + stat.statusCode + "): " + body);
    return false;
    }
    ! function carNet_login() {
    csrf = "";
    refUrl = "";
    viewState = "";
    cookieJar = request.jar();
    urlHeader = null;
    code = "";
    state = "";
    //request(base + '/portal/en_GB/web/guest/home', process_login1);
    request(get_request(base + '/portal/en_GB/web/guest/home'), process_login1);
    }
    ! function process_login1(err, stat, body) {
    if (isAbrufOk("Login-Seite", err, stat, body)) {
    urlHeader = {
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,
    /*;q=0.8',
    'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0.1; D5803 Build/23.5.A.1.291; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/63.0.3239.111 Mobile Safari/537.36',
    'Referer': base + '/portal'
    };
    var detailsUrl = stat.request.uri.href;
    csrf = get_csrf(body);
    if (csrf === "")
    return;
    //console.log("Session = " + csrf);
    request(get_request(base + "/portal/web/guest/home/-/csrftokenhandling/get-login-url"), process_login2);
    }
    }

    function process_login2(err, stat, body) {
    if (isAbrufOk("Login-Seite 2", err, stat, body)) {
    var loginUrl = get_loginUrl(body);
    if (loginUrl === "")
    return;
    //console.log('Login-URL: ' + loginUrl);
    request.get(get_request(loginUrl, false), process_login3);
    }
    }

    function process_login3(err, stat, body) {
    if (isRedirectOk("Login-Setie 3", err, stat, body)) {
    refUrl = stat.headers.location;
    if (refUrl === "") {
    carNet_error("Keine Location für Redirect gefunden");
    return;
    }
    //console.log('refURL: ' + refUrl);
    request.get(get_request(refUrl), process_login4);
    }
    }

    function process_login4(err, stat, body) {
    if (isAbrufOk("Login-Setie 4", err, stat, body)) {
    viewState = get_viewState(body);
    if (viewState === "")
    return;
    //console.log('ViewState = ' + viewState);
    var formData = {
    'loginForm': 'loginForm',
    'loginForm:email': email,
    'loginForm:password': password,
    'loginForm:j_idt19': '',
    'javax.faces.ViewState': viewState,
    'javax.faces.source': 'loginForm:submit',
    'javax.faces.partial.event': 'click',
    'javax.faces.partial.execute': 'loginForm:submit loginForm',
    'javax.faces.partial.render': 'loginForm',
    'javax.faces.behavior.event': 'action',
    'javax.faces.partial.ajax': 'true'
    };
    // AuthHeader aktualisieren
    urlHeader['Faces-Request'] = 'partial/ajax';
    urlHeader.Referer = refUrl;
    urlHeader['X-CSRF-Token'] = '';
    request.post(get_request(authbase + '/ap-login/jsf/login.jsf', null, formData), process_login5);
    }
    }

    function process_login5(err, stat, body) {
    if (isAbrufOk("Login-Seite 5", err, stat, body)) {
    //console.log('Status = ' + stat.statusCode);
    var redirectUrl = get_redirectUrl(body);
    if (redirectUrl === "")
    return;
    request.get(get_request(redirectUrl, false), process_login6);
    }
    }

    function process_login6(err, stat, body) {
    if (isRedirectOk("Login-Seite 6", err, stat, body)) {
    var redirectUrl2 = stat.headers.location;
    if (redirectUrl2 === "") {
    carNet_error("Keine Location für Redirect2 gefunden");
    return;
    }
    code = get_code(redirectUrl2);
    if (code === "")
    return;
    state = get_state(redirectUrl2);
    if (state === "")
    return;
    //console.log('redirectUrl2: ' + redirectUrl2 + ', code = ' + code + ', state = ' + state);
    request.get(get_request(redirectUrl2), process_login7);
    }
    }

    function process_login7(err, stat, body) {
    if (isAbrufOk("Login-Seite 7", err, stat,body)) {
    //console.log('Status = ' + stat.statusCode);
    urlHeader['Faces-Request'] = '';
    urlHeader.Referer = stat.request.uri.href;
    var post_data = {
    '_33_WAR_cored5portlet_code': code,
    '_33_WAR_cored5portlet_landingPageUrl': ''
    }
    var newUrl = get_newUrl(urlHeader.Referer);
    if (newUrl === "")
    return;
    //console.log('newUrl = ' + newUrl);
    request.post(get_request(newUrl , false, post_data), process_login8);
    }
    }

    function process_login8(err, stat, body) {
    if (isRedirectOk("Login-Seite 8", err, stat,body)) {
    var redirectUrl3 = stat.headers.location;
    if (redirectUrl3 === "") {
    carNet_error("Keine Location für Redirect3 gefunden");
    return;
    }
    request.get(get_request(redirectUrl3), process_login9);
    }
    }

    function process_login9(err, stat, body) {
    if (isAbrufOk("Login-Seite 9", err, stat, body)) {
    //console.log('Status = ' + stat.statusCode);
    csrf = get_csrf(body);
    if (csrf === "")
    return;
    //console.log('neuer csrf = ' + csrf);
    urlHeader = defaultHeader;
    urlHeader.Referer = stat.request.uri.href;
    urlHeader['X-CSRF-Token'] = csrf;
    //request.post(get_request(stat.request.uri.href + '/-/msgc/get-new-messages', null, null, true), process_messages);
    //request.post(get_request(stat.request.uri.href + '/-/vsr/request-vsr', null, null, true), process_vsr);
    //request.post(get_request(stat.request.uri.href + '/-/vsr/get-vsr', null, null, true), process_vsr2);
    request.post(get_request(stat.request.uri.href + '/-/cf/get-location', null, null, true), process_location);
    request.post(get_request(stat.request.uri.href + '/-/vehicle-info/get-vehicle-details', null, null, true), process_vehicleDetails);
    request.post(get_request(stat.request.uri.href + '/-/emanager/get-emanager', null, null, true), process_emanager);
    }
    }

    function process_messages(err, stat, body) {
    if (isAbrufOk("Messages", err, stat, body)) {
    //console.log('Status = ' + stat.statusCode);
    console.log('Messages = ' + JSON.stringify(body));
    }
    }

    function process_vsr(err, stat, body) {
    if (isAbrufOk("Get VSR", err, stat, body)) {
    //console.log('Status = ' + stat.statusCode);
    console.log('Get VSR = ' + JSON.stringify(body));
    }
    }

    function process_vsr2(err, stat, body) {
    if (isAbrufOk("Process VSR", err, stat, body)) {
    //console.log('Status = ' + stat.statusCode);
    console.log('Process VSR = ' + JSON.stringify(body));
    }
    }

    function process_location(err, stat, body) {
    if (isAbrufOk("Location", err, stat, body)) {
    //console.log('Status = ' + stat.statusCode);
    //console.log('Location = ' + JSON.stringify(body));
    //var data = body; // JSON.parse(body);
    if (body.errorCode != 0)
    carNet_error('Fehler ' + body.errorCode + ' beim Abruf Positions-Daten: ' + JSON.stringify(body));
    else {
    var posStatus = body.position;
    if (posStatus !== undefined && posStatus !== null) {
    if ((posStatus.lat != 0) && (posStatus.lng != 0)) {
    setState(statePosBreite, posStatus.lat, true);
    setState(statePosLaenge, posStatus.lng, true);
    requestGeocoding(posStatus.lat, posStatus.lng);
    }
    } else
    if (getState(statePosAdresse).val.substr(0, unterwegs.length) != unterwegs)
    setState(statePosAdresse, unterwegs + ' ' + getState(statePosAdresse).val, true);
    }
    }
    }

    function process_vehicleDetails(err, stat, body) {
    if (isAbrufOk("Vehicle Details", err, stat, body)) {
    //console.log('Status = ' + stat.statusCode);
    //console.log('Vehicle Details = ' + JSON.stringify(body));
    if (body.errorCode != 0)
    carNet_error('Fehler ' + body.errorCode + ' beim Abruf Fahrzeug-Daten: ' + JSON.stringify(body));
    else {
    var vehStatus = body.vehicleDetails;
    if (vehStatus !== undefined && vehStatus !== null) {
    if (vehStatus.lastConnectionTimeStamp.length > 0) {
    var datum = vehStatus.lastConnectionTimeStamp[0];
    // tt.mm.jjjj zu jjjj-mm-tt drehen
    datum = datum.substr(6, 4) + '-' + datum.substr(3, 2) + '-' + datum.substr(0, 2);
    datum = datum + " " + vehStatus.lastConnectionTimeStamp[1]
    //setState(stateletzteVerb, datum, true);
    var x = new Date(datum);
    setState(stateletzteVerb, x, true);
    //console.log("Timestamp: " + datum + '=>' + x);
    }
    if (vehStatus.distanceCovered > 0)
    setState(stateGesamtKm, parseInt(vehStatus.distanceCovered.replace('.', "")), true);
    if (vehStatus.range > 0)
    setState(stateReichweiteV, parseInt(vehStatus.range), true);
    if (vehStatus.serviceInspectionData !== "")
    setState(stateServiceTermin, vehStatus.serviceInspectionData, true);
    }
    }
    }
    }

    function process_emanager(err, stat, body) {
    if (isAbrufOk("eManager-Daten", err, stat, body)) {
    //console.log('Status = ' + stat.statusCode);
    //console.log('eManager = ' + JSON.stringify(body));
    if (body.errorCode != 0)
    carNet_error('Fehler ' + body.errorCode + ' beim Abruf eManager-Daten: ' + JSON.stringify(body));
    else {
    var ladeStatus = body.EManager.rbc.status;
    if (ladeStatus !== undefined && ladeStatus !== null) {
    setState(stateBatterieProz, ladeStatus.batteryPercentage, true);
    //console.log('Ladestand: ' + ladeStatus.batteryPercentage + "%");
    setState(stateLadevorgang, ladeStatus.chargingState, true);
    //console.log('Ladevorgang: ' + ladeStatus.chargingState);
    if (ladeStatus.chargingRemaningHour > 0 || ladeStatus.chargingRemaningMinute > 0)
    setState(stateLadedauer, ladeStatus.chargingRemaningHour + ":" + ladeStatus.chargingRemaningMinute, true);
    else
    setState(stateLadedauer, "", true);
    //console.log('Verbl. Ladedauer: ' + ladeStatus.chargingRemaningHour + "h " + ladeStatus.chargingRemaningMinute + "min");
    setState(stateReichweite, ladeStatus.electricRange, true);
    //console.log('Reichweite: ' + ladeStatus.electricRange + "km");
    }
    setState(stateMinLadung, body.EManager.rdt.settings.minChargeLimit, true);
    //console.log('Mindestladung: ' + body.EManager.rdt.settings.minChargeLimit + "%");
    }
    }
    }

    ! function process_geocoding(err, stat, body) {
    if (isAbrufOk("Geocoding", err, stat, body)) {
    //console.log('Status = ' + stat.statusCode);
    //console.log('Location = ' + JSON.stringify(body));
    //var data = body; // JSON.parse(body);
    if (body.status != "OK")
    //carNet_error('Fehler ' + body.status + '/' + body.error_message + ' beim Abruf Geocoding: ' + JSON.stringify(body));
    log('Fehler ' + body.status + '/' + body.error_message + ' beim Abruf Geocoding: ' + JSON.stringify(body), 'error');
    else {
    var address = "<unbekannt>";
    if ((body.results.length> 0) & body.results[0].formatted_address !== "")
    address = body.results[0].formatted_address;
    setState(statePosAdresse, address, true);
    }
    }
    }

    function requestGeocoding(lat, lng) {
    var url = 'https://maps.googleapis.com/maps/api/geocode/json?latlng='+lat+','+lng;
    if (mapsApiKey !== "")
    url = url + '&key=' + mapsApiKey;
    //console.log("Geocoding-URL: " + url)
    request({
    url: url,
    headers: defaultHeader,
    json: true
    }, process_geocoding);
    }

    function doRequest() {
    carNet_login();
    }

    ! doRequest(); // einmal gleich losstarten
    schedule("*/30 * * * *", doRequest);</unbekannt>

    
    Die Benachrichtigung bei Fehlern per Mail kann man natürlcih auch rauswerfen und User und Passwort Eures Accounts müsst Ihr selbst eintragen.
    
    Ab und an bekomme ich noch den Fehler, dass ich die Abfrage "over quota" ausführe, aber insgesamt klappt das schon ganz gut.
    
    Kommentare, Verbesserungswünsche, … nur zu :-)
    
    Viele Grüße
    
    Sneak-L8
    1 Antwort Letzte Antwort
    2
    • Boris73B Offline
      Boris73B Offline
      Boris73
      schrieb am zuletzt editiert von
      #2

      Hi Sneak L8!

      Funktioniert prima, ich werde mir noch eine Unterverzeichnis-Struktur der States überlegen, die klar machen,

      dass es zu Car-Net gehört.

      Meine offene Frage: Weisst Du, wie wir die Requests modifizieren müssen, damit sie mit mehreren VWs umgehen?

      Und states dann unter <javascript car-net/car1/location/|/emanager/vehicle="">anlegen?

      Grüße, Boris</javascript>

      1 Antwort Letzte Antwort
      0
      • S Offline
        S Offline
        Sneak-L8
        schrieb am zuletzt editiert von
        #3

        Hallo Boris,

        freut mich, wenn Dir das Skript gefällt und es funktioniert. Das Thema "mehrere Fahrzeuge" kam mir auch schon in den Sinn, aber da ich nur ein Auto habe, konnte ich das Thema noch nicht weiter verfolgen. Evtl. gibt es da weitere "Kommandos" zum Wechseln des Fahrzeugs.

        Beim Tausch mit einem anderen Entwickler hab ich z.B. noch die weiteren Kommandos:

        • /-/msgc/get-messages
        • /-/rts/get-latest-trip-statistics
        • /-/rts/get-last-refuel-trip-statistics
          gefunden.

        Viele Grüße

        Sneak-L8

        1 Antwort Letzte Antwort
        0
        • M Offline
          M Offline
          malc
          schrieb am zuletzt editiert von
          #4

          Hallo!

          Ich habe dein Script mal ausprobiert, zuvor habe ich mich auf der WebSeite angemeldet und konnte alles. Das Script schafft es leider nicht.

          Muss ich noch etwas einstellen?

          Malc

          9:19:55.329	[info]	javascript.0 script.js.common.services.VW-CarNet: registered 0 subscriptions and 1 schedule
          19:20:56.267	[error]	javascript.0 script.js.common.services.VW-CarNet: CarNet: Keine Redirect-URL nach Login gefunden
          Proxy Error
          The proxy server received an invalid response from an upstream server.
          The proxy server could not handle the request POST /ap-login/jsf/login.jsf.
          
          

          Fan von ioBroker!

          <size size="50">und falls ich eine Frage stelle die irgendwo schon mal beantwortet wurde: "Ja, Suchfunktion genutzt, aber keine Lösung gefunden / nicht die richtigen Suchbegriffe gewusst."

          …</size>

          1 Antwort Letzte Antwort
          0
          • S Offline
            S Offline
            Sneak-L8
            schrieb am zuletzt editiert von
            #5

            Die Fehlermeldung (irgendwie wird sie inDeinem Post beim Draufklicken als Link interpretiert) sagt "error reading from upstream server". Das ist eine der üblichen Fehlermeldungen, wenn der/die Server bei VW gerade mal wieder nicht verfügbar sind. Das kommt immer wieder mal vor.

            Probier's nocheinmal und der Fehler ist vermutlich weg.

            1 Antwort Letzte Antwort
            0
            • M Offline
              M Offline
              malc
              schrieb am zuletzt editiert von
              #6

              Nabend.

              das Script läuft nun eine Tag alle halbe Stunde. Bisher hat es noch keine Daten empfangen.

              Ist sicher nicht tragisch, ich werd mal schauen was da passiert.

              Malc

              Fan von ioBroker!

              <size size="50">und falls ich eine Frage stelle die irgendwo schon mal beantwortet wurde: "Ja, Suchfunktion genutzt, aber keine Lösung gefunden / nicht die richtigen Suchbegriffe gewusst."

              …</size>

              1 Antwort Letzte Antwort
              0
              • S Offline
                S Offline
                Sneak-L8
                schrieb am zuletzt editiert von
                #7

                Hm, komisch. Bei welchem Login-Step kommt der Fehler?

                1 Antwort Letzte Antwort
                0
                • M Offline
                  M Offline
                  malc
                  schrieb am zuletzt editiert von
                  #8

                  Heute morgen kamen die ersten Daten. Ohne das ich was geändert habe. Die Theorie der Verfügbarkeit ist Realistisch :-)

                  Fan von ioBroker!

                  <size size="50">und falls ich eine Frage stelle die irgendwo schon mal beantwortet wurde: "Ja, Suchfunktion genutzt, aber keine Lösung gefunden / nicht die richtigen Suchbegriffe gewusst."

                  …</size>

                  1 Antwort Letzte Antwort
                  0
                  • O Offline
                    O Offline
                    OMCastle
                    schrieb am zuletzt editiert von
                    #9

                    Hallo zusammen,

                    ich habe keinen eGolf, möchte aber dennoch gerne das Skript benutzen. Die Daten für Reichweite, KM und Inspektion kann ich abfragen.

                    Kann mir jemand dabei helfen das Skript anzupassen, um die weitere Informationen, z.B. auch die jeweils gefahrenen Strecken abzufragen?

                    Grüße

                    Oliver

                    Raspberrymatic auf Pi3 mit CUL für Eltako

                    • 30 HomeMatic Aktoren, 10 Eltako Aktoren

                    IOBroker auf OrangePi Plus 2e

                    • 30 Xiamoi, 5 Netatmo, VW Golf Skript, Viessmann Heizung, ICal, PluseCounter für Strom und Gas, Instar Kameras
                    1 Antwort Letzte Antwort
                    0
                    • R Offline
                      R Offline
                      Ralf69
                      schrieb am zuletzt editiert von
                      #10

                      Hallo in die Runde,

                      das sieht ja klasse aus und deckt sich mit meinem Plan, einen Adapter für VW Net zu erstellen. Mein Golf GTE will auch gerne in meine ioBroker Welt aufgenommen werden.

                      Hab gerade meinen ersten selbstentwickelten Adapter erfolgreich zum laufen gebracht. Einen Adapter für Nachrichtenversand über das Threema Gateway. (wen's interessiert auf Github nach ioBroker.threema-gw suchen)

                      Ich denke mit ein bisschen Teamarbeit sollte der VW Adapter zügig entwickelt werden können.

                      Ist an sich keine Rocket-Science.

                      Mit einem Adapter ließe sich dann wahrscheinlich auch auf mehrere Fahrzeuge schauen, da jede Instanz unabhängig konfiguriert werden kann.

                      Viele Grüße

                      Ralf

                      1 Antwort Letzte Antwort
                      0
                      • K Offline
                        K Offline
                        Kunibert
                        schrieb am zuletzt editiert von
                        #11

                        Hallo Ralf,

                        habe auch einen GTE und wäre sehr an einem Adapter installiert, kann aber leider 0 entwickeln. Ich erkläre mich aber gerne als Alpha-Tester bereit :-)

                        LG

                        1 Antwort Letzte Antwort
                        0
                        • R Offline
                          R Offline
                          Ralf69
                          schrieb am zuletzt editiert von
                          #12

                          Hallo Kunibert,

                          in der Tat ist es noch im Entwicklungsstadium aber gerne schon "testbar".

                          in github einfach mal nach ioBroker.vw-carnet suchen.

                          Wenn Du den Adapter über manuelles hinzufügen installieren willst, kannst du das gerne auf eigene Gefahr tun. Eine NPM Installation habe ich noch nicht.

                          Aktuell ruft der Adapter für mich alle möglichen Werte ab. Ich arbeite noch an diversen Fehlerabfangroutinen. Daher kann es vermehrt zu Fehlern im Log kommen. (z.B. wenn das Fahrzeug sich bewegt)

                          Wenn Du mir aber beim testen helfen und mit weiteren Anforderungen die Nutzbarkeit verbessern magst - nur zu.

                          Wenn Du Fragen zur Installation hast - einfach per PN melden. Wegen des Alphastatus und der damit verbundenen Risiken würde ich den Kreis der Nutzer noch überschaubar halten.

                          V.G.

                          1 Antwort Letzte Antwort
                          0
                          • K Offline
                            K Offline
                            Kunibert
                            schrieb am zuletzt editiert von
                            #13

                            Ja, sehr gerne. Melde mich via PM zur Installation.

                            Seit 02.12., ca. 11 Uhr, funktioniert das Skript bei mir leider nicht mehr, bekomme die folgende Fehlermeldung via Mail zugeschickt:

                            Fehler "Error: Invalid URI "/ap-login/jsf/error.jsf?tenantId=V-EU-IM&appId=Cwp&languageId=en_GB"" beim Login-Seite 6
                            
                            1 Antwort Letzte Antwort
                            0
                            • R Offline
                              R Offline
                              Ralf69
                              schrieb am zuletzt editiert von
                              #14

                              Hallo Kunibert,

                              der Adapter ist inzwischen zu 95% fertig und läuft auch ohne Fehlermeldungen/Abbrüche in meiner Konfiguration.

                              (also meinem Car-Net Account samt meinem Google API Key)

                              Aber um mal zu sehen was der Adapter kann ist er durchaus schon jetzt locker geeignet.

                              Meld Dich einfach

                              1 Antwort Letzte Antwort
                              0
                              • K Offline
                                K Offline
                                Kunibert
                                schrieb am zuletzt editiert von
                                #15

                                You have a PM :-)

                                1 Antwort Letzte Antwort
                                0
                                • GurondG Offline
                                  GurondG Offline
                                  Gurond
                                  schrieb am zuletzt editiert von
                                  #16

                                  Hallo ihr beiden.

                                  Mich Interessiert dieses Thema auch brennend.

                                  Ich bin auch ein GTE Fahrer :D

                                  Also wenn ich irgendwie Helfen kann gebt mir bescheid. Leider kann ich mit Entwicklung auch kaum was anfangen wie der Kunibert, würde mich dennoch Anbieten beim Testen zu Helfen.

                                  Liebe Grüße Gurond

                                  1 Antwort Letzte Antwort
                                  0
                                  • R Offline
                                    R Offline
                                    Ralf69
                                    schrieb am zuletzt editiert von
                                    #17

                                    Hallo Gurond

                                    ich bin in den letzten Zügen zur ersten Betaversion.

                                    Wenn Du aber magst, kannst Du gerne Kunibert folgen und "auf eigene Gefahr" testen.

                                    Meld Dich zur Beschreibung einfach per PN.

                                    Da kann ich DIr die Installation erklären und ggf. Hilfestellung leisten.

                                    Solange ich die Beschreibung noch nicht auf GitHub habe und die Installation nicht über NPM läuft würde ich das gerne auf diesem Wege handhaben.

                                    V.G.

                                    Ralf

                                    1 Antwort Letzte Antwort
                                    0
                                    • K Offline
                                      K Offline
                                      Kunibert
                                      schrieb am zuletzt editiert von
                                      #18

                                      Home-Automatisierer scheinen GTE-Fans zu sein :-) :-)

                                      1 Antwort Letzte Antwort
                                      0
                                      • GurondG Offline
                                        GurondG Offline
                                        Gurond
                                        schrieb am zuletzt editiert von
                                        #19

                                        Der GTE ist ja auch ein Klasse Auto :D .

                                        Mein nächster soll aber dann ein Tesla werden :P . Wenn man erstmal in den Genuss der E-Mobilität gekommen ist, möchte man davon auch nicht mehr weg. :) PN kommt :)

                                        1 Antwort Letzte Antwort
                                        0
                                        • G Offline
                                          G Offline
                                          gimix
                                          schrieb am zuletzt editiert von
                                          #20

                                          haha geil, bin auch GTE Fahrer ^^und auch sehr zufrieden. Und an die Anbindung des VW Car Nets an den ioBroker, daran hab ich auch gedacht aber bin auch kein richtiger Programmierer.

                                          Ich weiss jetzt nicht was genau deine Anbindung machen kann, kannst du das mal vllt erläutern?

                                          Was ich cool fände, zB. über Alexa den Ladevorgang zu starten oder zu stoppen oder Reichweiter abzufragen :).

                                          Standheizung starten realisiere ich grade über einen externen "Drücker" der dann meine Standheizungstaste drückt wenn ich morgens "Alexa, Guten Morgen" sage ^^

                                          Viele Grüße

                                          gimix

                                          1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          830

                                          Online

                                          32.4k

                                          Benutzer

                                          81.5k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe