Schritt 4: OBD-II-Daten
OBD-II-Daten ist recht ordentlich und es ist viel geschrieben, über das Internet. Also, wenn es etwas ist, was Sie interessiert sind bitte gehen Sie, etwas zu lesen zu tun. Es werden lohnt sich. Hier sind einige markante Punkte:
- Es gibt tatsächlich mehrere Spezifikationen implementiert, die fallen unter dem umgangssprachlichen Dach der OBD II. Der interessante Teil ist musst du nicht über die meiste Zeit als moderne OBD II-Leser wissen und Adapter werden dies für Sie herausfinden.
- Es gibt auch draußen CANBUS-Daten (in der Regel über die OBD II-Schnittstelle und oft über andere physische Schnittstellen zugänglich). Der unglückliche Teil gibt eine Menge der Spezifikationen für das proprietäre (oder absichtlich nicht dokumentierte) sind. Mehr dazu finden Sie hier:
- Nicht alle Fahrzeuge unterstützen alle die "standard" OBD II PIDs. Sie unterstützen die meisten. Zum Beispiel mein Auto nicht Öltemperatur zu berichten, es sei denn, Sie es eine Dose senden Sequenz. Gehört eine Kopfzeile und eine ist die Abfrage (oder in CANBUS Sprachgebrauch ist es eher wie ein Abonnement in gewisser Weise).
Physikalischen Anschluß ist ziemlich einfach. Schließen Sie das OBD II-Gerät in den OBD II-Anschluss an Ihrem Auto, das in der Regel irgendwo unter dem Armaturenbrett auf der Fahrerseite befindet.
Was ich getan habe, für diesen Teil ist mit der Python-OBD-Bibliothek, greifen einige standard OBD-II-Daten und setzen es als JSON für einfache IoT Stil Verbrauch. Das Repository dafür ist hier: https://github.com/brendanwhitfield/python-OBD . Allerdings können Sie es über Pip mit a: installieren.pip install obd
. Bredan Dokumentation ist eigentlich ziemlich gut. Es gibt mehrere Gabeln davon, die einige interessante Dinge zu tun. Vor allem diese: https://github.com/Pbartek/pyobd-pi ist interessant, da es konzentriert sich auf mit dem Raspberry Pi verwendet wird.
Um OBD-II-Daten zu Ihrem Edison zu gelangen benötigen Sie eine physikalische Schnittstelle. Eine USB-Schnittstelle funktioniert, aber ich benutze für Bequemlichkeit eine Bluetooth ein. Wenn Sie entschieden haben, eine USB-Schnittstelle, Sie weniger haben zu tun, und die Erklärung in meinem Code: connection = obd.OBD('/dev/rfcomm0')
sollte wahrscheinlich lesen connection = obd.OBD()
oder Abschnitt in Klammern sollte beziehen sich auf die Linux serielle Schnittstelle, Ihr USB-Gerät ist.
Für die Verwendung eines Bluetooth-Geräts ist das, was ich zu tun hatte. Sie müssen versuchen, ein paar andere Dinge, um es zu funktionieren. Bluetooth-Setup scheint in Linux noch etwas Finiky und ich bin mir nicht sicher warum.
- Start Bluetooth https://software.intel.com/en-us/articles/intel-e... volle Bluetooth-Dokumentation gibt es hier: https://software.intel.com/en-us/articles/intel-e...
- Fügen Sie ein Agent - Docs nicht sagen, was das bedeutet - im Grunde gibt es voreingestellte Namen, aber ich konnte nicht herausfinden, was sie bedeuteten. Ich blieb mit dem, was sie in der Dokumentation verwendet und es scheint zu funktionieren.
- Paar (Verwendung Bluez Kontrolle Util es wie in der oben genannten Dokumentation eingerichtet werden.
- Führen Sie dann
rfcomm bind rfcomm0
das binden die Bluetooth-Verbindung an den Linux-Gerät/Dev/rfcomm0. Schaut man in meinem Codeauflistung Dies ist, was ich zu verweisen, wenn die OBD-II-Verbindung einrichten. - Wenn Sie ein Skript ausführen, das bedeutet beim starten, möchten, folgen Sie den Anweisungen hier: https://communities.intel.com/message/292186#2921... Obwohl ich ein- und Erfolg damit gehabt. Die Bluetooth-pairing sollte einen Neustart überleben.
Die OBD-II-Daten erreichen Sie dann über mehrere Web-Kontexte im Kolben Hauptprogramm, das ihnen als JSON-Daten verfügbar machen wird, die dann von IoT-Dienste wie Freeboard verwendet werden können.