ELM327との通信は Python-OBDに丸投げでデータを拾うことはできるようになった。
Bluetoothは Raspbian Busterに最初から入ってるので、
- /etc/systemd/system/dbus-org.bluez.service を編集
(ExecStart行の末尾に -Cと、ExecStartPost行を追加)
ExecStart=/usr/lib/bluetooth/bluetoothd -C ExecStartPost=/usr/bin/sdptool add SP
- bluetoothctl
scan on → ELM327ドングルの MACアドレスが出るまで待つ pair XX:XX:XX:XX:XX:XX trust XX:XX:XX:XX:XX:XX
- bluetoothctlで connect XX:XX:XX:XX:XX:XXとやっても接続できない、Python-OBDから触りに行ったときに接続確立するっぽいのでここではやらない
- /dev/rfcomm1 にバインドする
sudo rfcomm bind 1 XX:XX:XX:XX:XX:XX
- Python-OBDのインストール
pip3 install obd
- あとは Python-OBDでの作業、/dev/rfcomm1を指定して obd.OBD()してる。
import obd import os from time import sleep connection = obd.OBD('/dev/rfcomm1') while(1): cmd = obd.commands.RPM response = connection.query(cmd) print(response.value) sleep(0.1)
ところが、ちょっと気になる点がいくつか。
- 割と高い確率でELM327とECU間の通信が確立できなくて、条件がまだ整理できてない。
- 使っているドングルが緑/黄/赤の LEDがついていて、スマホアプリから読み出してるときは緑色のLEDが点灯(=ECU通信状態?)、黄色が点滅(=Bluetooth通信中?)、赤色が点灯(=電源)しているが、Python-OBDから読み出しているときは緑色が点灯していない。何か読み出し手順が違うのかも。
0 件のコメント:
コメントを投稿