Wie oft fahre ich von der Arbeit nach Hause, sehe dass die Tankleuchte angeht und denke mir… „ich gehe morgen 10 Minuten früher und fahre zur Tankstelle!“ und wie oft ist es mir morgens wieder eingefallen, dass ich noch tanken muss… hmm… ich glaube nie!!
Gebraucht wird:
- Bluetooth ODB2 Stecker – ich habe mir den „kkmoon bluetooth can bus obd2“ geholt – 9,99€
- Tasker (siehe oben)
- Torque Pro für 3,64€
Webserver PHP und MySQL – habe bei 1und1 so ein Paket und es funktioniert prima - Torque Viewer (kostenlos)
- Günstigste Tankstelle
Ich habe den Quellcode vom Torque Viewer ein bisschen anpassen müssen, damit ich ein schönen JSON String bekomme, wenn sich die CCU meine Fahrzeugdaten holt, aber es war wirklich kein Hexenwerk (ich kann kein PHP).
Umsetzung:
Als erstes sollte man auf ein Handy Torque installieren, eine Verbindung zum Bluetooth Stecker herstellen und ein bisschen rumspielen. Einfach mal die ganzen Möglichkeiten ausprobieren und schauen was man so an Informationen bekommen kann. Dann muss man den Torque Viewer auf einem Webserver (PHP/DB) installieren und mit Torque verbinden. Auf der Gihub-Seite ist alles schön und verständlich beschrieben. Jetzt hat man direkten Zugriff auf alle gespeicherten Daten. Naja... nur das Format gefällt mich nicht so. Für Homematic braucht man eigentlich immer nur die letzte DB-Zeile. Tja... dann muss man halt am Torque Viewer etwas rumschrauben.
Hier meine Version: (ich weiß nicht mehr was ich so geändert habe... am Besten mit dem originalen vergleichen)
Im Prinzip habe ich nur das Ding so verändert, dass er mir eine JSON-Zeile zurückliefert. Sooo.... und jetzt back to HM. Ich habe ein Programm geschrieben, der immer ausgelößt wird, wenn ich wieder anwesend bin. Also... immer wenn ich Heim komme, dann schau mal wie mein Tank aussieht.
Code: Alles auswählen
dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("wget -q -O - http://xxxxxxxxxxxxxxx.tu.tv/export.php?filetype=jsonHm");
dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
string stdout = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
var posValueStart = "\"kff126b\":\"";
var posValueEnd = "\",";
var posValue = stdout.Find(posValueStart) + posValueStart.Length();
string value = stdout.Substr(posValue, 7).StrValueByIndex(posValueEnd, 0);
real valReal = value.ToFloat();
dom.GetObject("person1_tankinhalt").State(valReal);
Man kann natürlich auch andere Variablen auslesen, z.B. die Gesamtkilometerzahl, damit man die nächste Inspektion ankündigt oder so... naja... ihr werdet bestimmt viel Spaß mit dem ODB2 Stecker haben
Und wenn Fragen sind, einfach schreien!