Paso 4: Datos de OBD II
Datos de OBD II es muy limpio y hay mucho escritos sobre ella en internet. Por lo tanto, si algo que te interesa por favor vaya hacer alguna lectura. Valdrá la pena. Aquí están algunos puntos salientes:
- Hay realmente varios especificaciones implementadas que caen bajo el paraguas familiar de OBD II. Lo cool es no tienes que saber sobre esta parte del tiempo como los lectores modernos de OBD II y adaptadores resolver esto para usted.
- También hay datos del CANBUS por ahí (generalmente accesible a través del puerto OBD II y a menudo a través de otras interfaces físicas). La parte desafortunada es mucho las especificaciones son propietarias (o intencionalmente indocumentados). Para más información sobre vaya aquí:
- No todos los coches de la "norma" OBD II PIDs apoyará. Apoyarán más. Por ejemplo mi coche no informe la temperatura de aceite a menos que usted envíe una lata secuencia. Uno es un encabezado y una es la consulta (o en lenguaje CANBUS es más como una suscripción de alguna manera).
Conexión física es bastante simple. Conecte el dispositivo OBD II en el puerto OBD II de su coche, que está generalmente situado en algún lugar debajo del tablero en el lado del conductor.
Lo que he hecho para esta parte es usar la librería python-OBD para agarrar algunos datos estándar de OBD II y exponerlo como JSON para el fácil consumo de estilo de IoT. El repositorio es aquí: https://github.com/brendanwhitfield/python-OBD . Sin embargo, se puede instalar via pip con a:pip install obd
. Documentación de Bredan es realmente muy bueno. Hay varias bifurcaciones de esto así, que hacen algunas cosas interesantes. En particular esta: https://github.com/Pbartek/pyobd-pi es interesante como se centra en ser usado con la frambuesa pi.
Con el fin de obtener datos de OBD II a su Edison necesita una interfaz física. Un interfaz del usb funciona, pero para mayor comodidad usar un bluetooth uno. Si elige una interfaz USB que tienes menos que hacer y la declaración en mi código: connection = obd.OBD('/dev/rfcomm0')
probablemente debería leer connection = obd.OBD()
o la sección en paréntesis debe consultar el dispositivo serie de linux que es el dispositivo usb.
Para aquellos que utilizan un dispositivo bluetooth es lo que tenía que hacer. Quizá deba probar algunas otras cosas para hacer que funcione correctamente. Configuración Bluetooth parece ser una cosa finiky en linux todavía y no sé por qué.
- Inicio la https://software.intel.com/en-us/articles/intel-e... bluetooth bluetooth completo documentación está disponible aquí: https://software.intel.com/en-us/articles/intel-e...
- Añadir a un agente - los documentos no dicen lo que esto significa - básicamente hay nombres preestablecidos, pero no pude averiguar lo que querían decir. Me quedé con utilizado en la documentación y parece que funciona.
- Par (uso bluez control util para configurar como en la documentación mencionada anteriormente.
- A continuación, ejecute
rfcomm bind rfcomm0
esto unirá que conexión bluetooth para el dispositivo de linux/dev/rfcomm0. Si te fijas en mi listado de código que esto es lo que me refiero a hora de configurar la conexión de OBD II. - Si desea ejecutar un script que hace esto en el inicio, siga las instrucciones aquí: https://communities.intel.com/message/292186#2921... Aunque he tenido éxito encendido y apagado con esto. El emparejamiento de bluetooth debe sobrevivir a un reinicio.
Los datos de OBD II están accesible a través de varios contextos de la web en el programa principal de matraz que expondrá como datos JSON que luego pueden ser utilizados por servicios de Internet como el francobordo.