Zwift用のスマートトレーナーをNode-REDとつなげたいけどいろいろ難しい件

最近、生活習慣病予防の為に家庭でエクササイズをすることと、VR+ヘルスケアのアプリケーションを自分自身で体感するため、Zwiftというサービスの利用をはじめました。

【動画あり】ロードバイク未経験者がZwiftを始めるにあたって揃えた機器を紹介

Giantkickr

このZwiftをするにあたり、スマートトレーナーというガジェットを自転車の後輪部分に取り付けます。

このスマートトレーナーは、自転車で漕ぐデータをBluetooth接続でPCに送り、そのことによってZwiftのVRに存在する自分自身の自転車が進むのですが、ふと思いました。

このスマートトレーナーのデータをNode-REDで受けてDALI-APIを通して照明でアウトプットできないかと。

Node-REDとBluetooth機器を接続するライブラリ node-red-contrib-noble

Node-REDとBluetooth機器を接続するには、node-red-contrib-nobleというライブラリがオススメということでインストールしてみました。

node-red-contrib-noble – Node-RED

Node RED

このライブラリをインストールすると、その他のフォルダに「Scan BLEs」というノードができるので、これとdebugノードをつなぐフローを作成します。

Node RED

デプロイしてしばらく待つとデバッグ画面にBluetooth機器が表示されました。

Forerunner 235は、Garminのランニングウォッチ

HTC BS B3E8DCは、huaweiのAndroidスマートフォン

Uuid : 43249f4d84774476a959c1dddb8c0f89は、不明。

そして、Wahoo KICKR 6D85が、今回、Node-REDにつなぎたいとおもっているスマートトレーナーです。

Scanした後はうんともすんともいわない

Node RED

無事にBluetoothデバイスが見つかったので、デバッグ画面に表示された「peripheralUuid」の値をScanBLEsノードにいれてみます。

Node RED

さて、つぎは自転車のペダルを動かしてスマートトレーナーがデータを送るようにしてみましょう。

Kickr2

Node-REDのデバッグを確認します。

Node RED

が、しかし!何も表示されません。以前、EnOcenaを試した時はすぐに表示されたのですがなぜでしょう?

Node-REDのserialノードを使ってEnOceanのスイッチデータを受信してみた

BluetoothにはPUSH型とPULL型のデバイスがある

ワンフットシーバスの田中正吾さんにこのコトを相談したところ、どうやらBluetoothのデバイスは、こちらからデータ出しなさい!というコマンドを送らないと出してこない場合があるという話を聞きました。

で、いろいろぐぐってみたら下記のサイトを発見。

nobleで複数のBLEデバイスを扱う際のちょい足しレシピ | Developers.IO

つまり、「BluetoothにはPUSH型とPULL型のデバイスがある」ということ。なので、スマートトレーナーからデータを取り出す場合には、データを取得するコマンドを送る必要があるそうな。

どうも、そこらへんのやり取りをするのがATT(アトリビュートプロトコル)だと。

Attribute Protocol(ATTプロトコル) | 基礎知識 | ROHM TECH WEB

メモ

ということで、BluetoothのATTプロトコルを勉強する必要がでてきました。

本当はパケットキャプチャして、スマートトレーナーからデータを取る時にMacからどんなコマンドが送られているのかがわかればいいのですが、ここらへんはおいおい確認していきます。

Wireshark · Download

【シリアル接続】Mac でシリアルコンソールを利用してみた – Qiita

Serial – Modern Terminal for the Mac – Decisive Tactics, Inc.

まとめ

Node-REDをはじめたばかりのころは簡単にデータが取れると思っていましたが、普段私達が何気なくつかっている完成されたデバイスのデータを取ろうとすると、シリアル通信でどんなビットが送られているか?というのを理解しないとすすめない感じがしました。

次は、パケットキャプチャのWiresharkを使って、実際にどんなデータがやりとりされているか解読し、スマートトレーナーからデータを取り出す方法を調べてみようと思います。

この記事を書いた人

この記事を書いた人

中畑隆拓

照明制御が得意です。
Node-REDを使ってIoT機器の情報を読み込み、DALI-APIを叩いて制御しています。

今後、設備の制御はNode-REDのようなソフトウェアが中心になると実感していて、いろんなところで講演してます。

講演予定・実績一覧

DALIだけでなくKNXやModbus、Lonworksなど、設備制御について意見交換を行うSlackを作りました。参加希望の方は問い合わせフォームより連絡ください。

お問い合わせ

シェアする

  • このエントリーをはてなブックマークに追加

フォローする