Wie Ihr vielleicht wisst, kann man im Quellcode der Bestellstatus Seite bereits einige Zeit vorher sehen, ob eine VIN und damit ein Fahrzeug zugeordnet wurde.
Der manuelle Weg ist die Seite aufzurufen, den Quellcode anzuzeigen und dann nach -„vin“:- oder -5YJ- zu suchen. Entweder man findet dann seine VIN oder den Wert „null“.
Um das ganze zu vereinfachen, habe ich mir ein Script geschrieben, was mir beim Aufrufen der Seite den Wert (5YJ… oder null) direkt anzeigt, die Seite automatisch nach einer gewissen Zeit neu lädt und, falls eine VIN gefunden wurde, mir eine Push Benachrichtigung aufs Handy schickt. Das hat auch wunderbar funktioniert, als mir eine VIN zugeteilt wurde.
Damit Ihr auch etwas davon habt, habe ich das Script noch ein bisschen verfeinert und möchte es euch hier zur Verfügung stellen.
ANLEITUNG:
========= Anfang Push Vorbereitung =========
Falls Ihr eine Push Mitteilung auf euer Handy bekommen möchtet, so müsst Ihr euch bei IFTTT registrieren und die IFTTT App auf eurem Handy installieren. Falls euch Push nicht so wichtig ist, könnt ihr diesen ersten Teil überspringen.
-
Geht auf http://ifttt.com und klickt oben rechts auf „Sign Up“. Es öffnet sich ein Menü in dem Ihr euch mit eurem Google oder Facebook Account einloggen könnt. Falls Ihr einen eigenen Account für IFTTT anlegen möchtet, klickt auf Sign up im „Or use your password to sign up or sign in“ Text. Dort einfach eure E-Mail Adresse eingeben und ein selbstgewähltes Passwort eintragen.
[album]975[/album] -
Nachdem Ihr euch registriert habt und auf der Seite eingeloggt seid, oben rechts auf den Avatar klicken. Im öffnenden Menü klickt ihr auf „Create“
[album]976[/album] -
Klickt nun auf das + bzw. „This“
[album]977[/album] -
Gebt „webhooks“ im Suchfeld ein und klickt auf das blaue Icon.
[album]978[/album] -
„Connect“ anklicken
[album]979[/album] -
Klickt auf „Receive a web request“
[album]980[/album] -
Gebt einen Namen für euren Trigger/Event ein. Ich habe hierfür „vin_found“ genommen und merkt euch den Namen. Anschliessend klickt auf „Create trigger“
[album]981[/album] -
Klickt auf das + bzw. „That“
[album]982[/album] -
Gebt „notifications“ im Suchfeld ein und klickt auf das blaue Icon mit der Glocke.
[album]983[/album] -
Wieder „Connect“ anklicken.
[album]984[/album] -
Wählt „Send a notification from …“. Das reicht für uns.
[album]985[/album] -
Hier könnt ihr nun den Aufbau der Push Nachricht vorgeben. Nehmt z.B. „{{OccurredAt}} - VIN gefunden! {{Value1}}“. Value1 wird später durch die gefundene VIN ersetzt. OccuredAt ist die aktuelle Zeit beim ausführen der Push Nachricht. Klickt dann „Create action“.
[album]986[/album] -
Klickt „Finish“
[album]987[/album] -
Falls ihr die App schon installiert habt, das Pop-Up einfach wegklicken.
[album]988[/album] -
Klickt wieder auf den Avatar oben rechts und dann im Menü auf „My services“.
[album]989[/album] -
Klickt auf den „Webhooks“ Eintrag.
[album]990[/album] -
Oben rechts auf „Documentation“ klicken.
[album]991[/album] -
Kopiert euch den Key in einem Texteditor oder schreibt ihn auf. Ihr müsst den gleich in meinem Script eintragen.
[album]992[/album]
Startet die App auf eurem Handy und loggt euch auch dort ein.
========= Ende Push Vorbereitung =========
Das eigentliche Script wird mit dem AddOn „Tampermonkey“ in eurem Browser ausgeführt. Installiert deshalb zuerst das AddOn. https://www.tampermonkey.net
Nachdem das AddOn installiert wurde, muss eventuell der Browser neu gestartet werden. Ihr solltet neben der Adresszeile im Browser das Tampermonkey Icon sehen.
-
Klickt auf das Tampermonkey Icon und dann auf „Neues Script erstellen“.
-
Ersetzt den Text im Editor durch den folgenden Code:
// ==UserScript==
// @name Tesla VIN Extractor
// @namespace http://namespace.badpat
// @version 0.5
// @description Checks whether a VIN has been assigned to the product. Displays the result as an alert, on the page and/or triggers IFTTT
// @author Badpat
// @match https://www.tesla.com/de_DE/teslaaccount/product-finalize?rn=*
// @grant GM_xmlhttpRequest
// @grant GM_getValue
// @grant GM_setValue
// @grant unsafeWindow
// ==/UserScript==
(function() {
'use strict';
var AUTORELOAD = true;
var RELOAD_MIN = 15; // Nach wieviel Minuten soll die Seite neu geladen werden?
var SHOWALERT_null = false; // Soll ein Alert angezeigt werden, wenn keine VIN gefunden wurde? Achtung: Alerts blockieren das automatische Neuladen.
var SHOWALERT_vin = false; // Soll ein Alert angezeigt werden, wenn eine VIN gefunden wurde?
var PUSH = false; // Soll eine Push Benachrichtigung über IFTTT erfolgen, wenn eine VIN gefunden wurde.
var IFTTT_key = "Dein-IFTT-Key" // Beispiel: "W2fHqiFS0J5Fug7DfQOkr"
var IFTTT_trigger = "Dein-IFTT-Trigger" // Beispiel: "vin_found"
if (PUSH) {
// Check whether GM_xmlhttpRequest can access IFTTT
if (GM_getValue("runTest", true)) {
GM_xmlhttpRequest({
method: "GET",
url: "https://maker.ifttt.com/trigger/" + IFTTT_trigger + "/with/key/" + IFTTT_key + "?value1=Funktionstest!",
onload: function(res) {
GM_setValue("runTest", false);
}
});
}
}
if (unsafeWindow.Tesla.ProductF.Data.Insurance.vin === null) {
if (SHOWALERT_null) {
alert('Keine VIN gefunden. :-( ');
}
document.getElementsByClassName('section-title')[0].textContent += " ( VIN: " + unsafeWindow.Tesla.ProductF.Data.Insurance.vin + " :-( )";
if (AUTORELOAD) {
setTimeout("location.reload(true);", (RELOAD_MIN * 60 * 1000)); // RELOAD_MIN * 60 sec * 1000 msec
}
} else {
if (SHOWALERT_vin) {
alert("VIN gefunden! :-D\n\nDeine VIN lautet: " + window.Tesla.ProductF.Data.Insurance.vin);
}
document.getElementsByClassName('section-title')[0].textContent += " ( VIN: " + unsafeWindow.Tesla.ProductF.Data.Insurance.vin + " :-D )";
if (PUSH) {
GM_xmlhttpRequest({
method: "GET",
url: "https://maker.ifttt.com/trigger/" + IFTTT_trigger + "/with/key/" + IFTTT_key + "?value1=" + unsafeWindow.Tesla.ProductF.Data.Insurance.vin
});
}
}
})();
-
Scrollt im Editor etwas nach oben, bis Ihr die Parameter seht. (Beginne alle mit „var“).
-
Konfiguriert das Script nach euren Wünschen:
- AUTORELOAD, „true“ falls das Script automatisch die Seite neu laden soll. Ansonsten „false“
- RELOAD_MIN, wieviel Minuten soll gewartet werden bis die Seite neu geladen wird.
- SHOWALERT_null, lasst das auf „false“ es sei denn Ihr möchtet etwas testen.
- SHOWALERT_vin, „true“
- PUSH, falls Ihr IFTTT eingerichtet habt: „true“, ansonsten „false“
- IFTTT_key, der Key den Ihr im letzten Schritt bei IFTTT angezeigt bekommen habt. HIER Anführungszeichen nicht vergessen!
- IFTTT_trigger, der Trigger/Eventname, den Ihr euch ausgesucht habt. HIER Anführungszeichen nicht vergessen!
-
Speichert das Script über Datei>Speichern. Achtung nicht das Browser „Datei“, sondern im Browserfenster der Editor. Der hat ein eigenes Menü.
-
Geht auf Tesla.com und loggt euch ein. Klickt auf „Verwalten“/„Manage“ eurer Bestellung.
-
Falls ihr PUSH aktiviert habt, fragt euch Tampermonkey beim ersten Mal, ob ihr das Laden einer fremden Ressource erlauben möchtet. Das ist der Zugriff auf die Push Schnittstelle. Wählt dort bitte links unten „Immer erlauben“ aus. Danach solltet Ihr, wenn alles richtig eingerichtet ist, eine Push Mitteilung auf dem Handy erhalten. Als VIN steht dort allerdings „Funktionstest!“.
-
Je nach Konfiguration und ob bereits eine VIN zugeteilt wurde oder nicht, wird ein Alert angezeigt. Der Wert von „Vin“ wird immer oben, rechts neben „DeinName Tesla“, angezeigt.
Das war’s. Das Script wird jedes Mal ausgeführt, wenn die Seite neu geladen wird. Entweder von euch manuell oder automatisch durch das Script. Das regelmäßige Neuladen wird bei einer gefundenen VIN automatisch unterbrochen. Also keine Angst vor ständigen Nachrichten.
Falls ihr Fragen habt, so stellt Sie bitte hier im Thread, damit alle etwas davon haben.