LEGOシティのトレイン(https://www.lego.com/ja-jp/themes/city/train)
のリモコンやアプリでは一つの電車しか操作できないので、
電車を複数台動かそうとすると都度リモコンやスマホを用意する必要があります。
少し調べた限りだとサードパーティでも複数台動かせるアプリなどが見つからなかったので(ご存知でしたら教えて下さい)
作ってみました。
当初スマホアプリで作成しようとしたものの、
Web Bluetooth APIというブラウザでbluetooth接続するライブラリがあることを知ったので、
インストール不要のブラウザで操作できるものにしました。
完成品はこちらです。
内容
対応ブラウザであればnavigator.bluetooth
クラスが用意されているので、それを使用。
実装自体はJavaScriptを介したBluetoothデバイスとの通信などのドキュメントを参考に、
かなり簡単にbluetoothに接続できます。
つまづいたポイント
LEGOの電池(LEGO Powered UP ハブ)に接続するための情報が中々無く、
下記サイトを参考に、少しずつ情報を集めていきました。
LEGO Wireless Protocol 3.0.00 Doc v3.0.00 r17 documentation
undera/pylgbst
LEGO Power Function 2.0 and BLE
所感
bluetooth機器に対してはバイナリで信号を送るので、そのバイナリ情報さえ分かれば比較的簡単に実装できることが分かりました。
ただ、iPhoneではそもそもAPIが用意されておらず、PCまたはAndroidスマホ限定になってしまいました。(macであればGoogle ChromeからはOK)
あと、こういうライブラリだと当然ながら非同期処理が多く、
今回は実装に時間をかけたくなかったのでasync/awaitを多用したコードになりES6対応のブラウザオンリーになってしまいました。
※そのためかiPhoneでbluetoothが使えるブラウザ「コネクトブラウザ」で動きませんでした。
次はスマホアプリで作ろうと思います。