Etape 4: Données OBD II
Les données OBD II sont très soignées et il sont beaucoup écrit à ce sujet sur internet. Donc, si c’est quelque chose que vous êtes intéressé s’il vous plaît aller faire de la lecture. Il sera utile de votre temps. Voici quelques points saillants :
- Il n’y a en fait plusieurs spécifications mises en œuvre qui entrent dans le cadre familier d’OBD II. La partie fraîche est vous n’avez pas à connaître ce la plupart du temps comme lecteurs OBD II modernes et adaptateurs vont comprendre cela pour vous.
- Il y a aussi des données CANBUS là-bas (généralement accessible via le port OBD II et souvent par d’autres interfaces physiques). La partie malheureuse est beaucoup du cahier des charges qui sont propriétaires (ou intentionnellement sans papiers). Pour plus d’informations sur qui allez ici :
- Pas toutes les voitures prend en charge toutes les « standard » OBD II PIDs. Ils supporteront la plupart. Par exemple ma voiture ne relatent pas température d’huile à moins que vous l’envoyiez une canette séquence. On est un en-tête et un est la requête (ou dans le jargon de CANBUS, ça ressemble plus à un abonnement à certains égards).
Branchement physique est assez simple. Branchez l’appareil OBD II dans le port OBD II sur votre voiture, qui est habituellement situé quelque part sous le tableau de bord du côté du conducteur.
Ce que j’ai fait pour cette partie consiste à utiliser la bibliothèque python-OBD pour récupérer certaines données OBD II standards et exposez-le au format JSON pour simple consommation de style de l’ITO. Le référentiel pour cela se trouve ici : https://github.com/brendanwhitfield/python-OBD . Toutefois, vous pouvez l’installer via pip avec a:pip install obd
. Documentation de Bredan est en fait assez bien. Il y a plusieurs fourches de cela aussi bien, qui font des choses intéressantes. Notamment celui-ci : https://github.com/Pbartek/pyobd-pi est intéressant car il met l’accent sur utilisé avec le raspberry pi.
Afin d’obtenir les données OBD II de votre Edison vous aurez besoin d’une interface physique. Une interface usb fonctionnera, mais par souci de commodité, j’utilise une connexion bluetooth une. Si vous avez choisi une interface USB, vous aurez moins à faire et l’instruction dans mon code : connection = obd.OBD('/dev/rfcomm0')
doit se lire sans doute connection = obd.OBD()
ou la section dans les parenthèses de renvoyer à l’équipement de série de linux qui est votre périphérique usb.
Pour ceux qui utilisent un appareil bluetooth, c’est ce que j’avais à faire. Vous devrez peut-être essayer quelques autres choses pour qu’il puisse fonctionner correctement. Configuration Bluetooth semble être une chose finiky dans linux encore et je ne sais pas pourquoi.
- Début bluetooth https://software.intel.com/en-us/articles/intel-e... bluetooth complet documentation est disponible ici : https://software.intel.com/en-us/articles/intel-e...
- Ajouter un agent - les docs ne disent pas ce que cela signifie - il y a essentiellement des noms prédéfinis, mais je ne pouvais pas comprendre ce qu’ils entendaient. J’ai collé avec celui qu’ils utilisés dans la documentation, et il semble fonctionner.
- Paire (utilisation bluez contrôle util de mettre en place que dans les documents énumérés ci-dessus.
- Puis exécutez
rfcomm bind rfcomm0
cela se liera cette connexion bluetooth pour le périphérique/dev/rfcomm0 linux. Si vous regardez dans ma liste de code, que c’est ce que je veux parler lorsque vous configurez la connexion OBD II. - Si vous souhaitez exécuter un script qui fait ça au démarrage suivez les instructions ici : https://communities.intel.com/message/292186#2921... Bien que j’aie eu et-marche de succès avec cela. Le jumelage bluetooth devrait survivre à un redémarrage.
Les données OBD II sont ensuite accessibles via plusieurs contextes de web dans le programme principal de ballon qui va les exposer sous forme de données JSON qui peuvent ensuite être utilisées par des services de l’ITO comme franc-bord.