Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Praktische Anwendungen (Showcase)
  4. Skript zum Abfragen von VW-CarNet

NEWS

  • Wartung am 15.11. – Forum ab 22:00 Uhr nicht erreichbar
    BluefoxB
    Bluefox
    11
    2
    216

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

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

Skript zum Abfragen von VW-CarNet

Skript zum Abfragen von VW-CarNet

Scheduled Pinned Locked Moved Praktische Anwendungen (Showcase)
88 Posts 17 Posters 16.8k Views 11 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • S Offline
    S Offline
    Sneak-L8
    wrote on last edited by
    #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 Reply Last reply
    2
    • Boris73B Offline
      Boris73B Offline
      Boris73
      wrote on last edited by
      #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 Reply Last reply
      0
      • S Offline
        S Offline
        Sneak-L8
        wrote on last edited by
        #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 Reply Last reply
        0
        • M Offline
          M Offline
          malc
          wrote on last edited by
          #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 Reply Last reply
          0
          • S Offline
            S Offline
            Sneak-L8
            wrote on last edited by
            #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 Reply Last reply
            0
            • M Offline
              M Offline
              malc
              wrote on last edited by
              #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 Reply Last reply
              0
              • S Offline
                S Offline
                Sneak-L8
                wrote on last edited by
                #7

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

                1 Reply Last reply
                0
                • M Offline
                  M Offline
                  malc
                  wrote on last edited by
                  #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 Reply Last reply
                  0
                  • O Offline
                    O Offline
                    OMCastle
                    wrote on last edited by
                    #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 Reply Last reply
                    0
                    • R Offline
                      R Offline
                      Ralf69
                      wrote on last edited by
                      #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 Reply Last reply
                      0
                      • K Offline
                        K Offline
                        Kunibert
                        wrote on last edited by
                        #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 Reply Last reply
                        0
                        • R Offline
                          R Offline
                          Ralf69
                          wrote on last edited by
                          #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 Reply Last reply
                          0
                          • K Offline
                            K Offline
                            Kunibert
                            wrote on last edited by
                            #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 Reply Last reply
                            0
                            • R Offline
                              R Offline
                              Ralf69
                              wrote on last edited by
                              #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 Reply Last reply
                              0
                              • K Offline
                                K Offline
                                Kunibert
                                wrote on last edited by
                                #15

                                You have a PM 🙂

                                1 Reply Last reply
                                0
                                • GurondG Offline
                                  GurondG Offline
                                  Gurond
                                  wrote on last edited by
                                  #16

                                  Hallo ihr beiden.

                                  Mich Interessiert dieses Thema auch brennend.

                                  Ich bin auch ein GTE Fahrer 😄

                                  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 Reply Last reply
                                  0
                                  • R Offline
                                    R Offline
                                    Ralf69
                                    wrote on last edited by
                                    #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 Reply Last reply
                                    0
                                    • K Offline
                                      K Offline
                                      Kunibert
                                      wrote on last edited by
                                      #18

                                      Home-Automatisierer scheinen GTE-Fans zu sein 🙂 🙂

                                      1 Reply Last reply
                                      0
                                      • GurondG Offline
                                        GurondG Offline
                                        Gurond
                                        wrote on last edited by
                                        #19

                                        Der GTE ist ja auch ein Klasse Auto 😄 .

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

                                        1 Reply Last reply
                                        0
                                        • G Offline
                                          G Offline
                                          gimix
                                          wrote on last edited by
                                          #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 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          47

                                          Online

                                          32.4k

                                          Users

                                          81.3k

                                          Topics

                                          1.3m

                                          Posts
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Recent
                                          • Tags
                                          • Unread 0
                                          • Categories
                                          • Unreplied
                                          • Popular
                                          • GitHub
                                          • Docu
                                          • Hilfe