* 注意 *
本家のほうでWeb Bluetooth向けのSDKが開発されているようです。よって現在では、この記事に書かれているようなhackなしで普通にKonashiをお楽しみいただけます。素晴らしい!(追記:2016年10月8日)
この記事について
iOS上からJavaScriptで制御できるホビー向けBLEデバイスkonashiと、そのJavaScript開発環境のkonashi.jsが面白い。せっかくなのでAndroidでも遊んでみましょう、という趣旨の記事です。
前回の記事でkonashiやWeb Bluetoothについて少しだけ解説しています。Web Bluetoothを使ってLEDを点滅させる例を紹介しましたが、今回はkonashi.js向けのコードを(なるべく)そのまま持ってきてOpen Web上で事項する事を目標としてみました。
仕組み
konashi.jsを使った開発では、konashi-bridge.jsによって提供されるAPIを使ってBLEデバイスの制御を行います。このkonashi-bridge.jsの中にあるk.triggerToNative()を上書きし、Web Bluetooth APIを用いたコードに置き換えることで簡単なサンプルコードをChrome上で実行してみました。
利用者から見た場合konashi-bridge.jsに続けてkonashi-bridge-webapi.jsを読み込むだけで既存のコードが利用できる事を目標としています。
konashi-bridge-webapi.js
GitHubでオリジナルのSDKをforkして、konashi-bridge-webapi.jsを追加したbranchを公開しています。とりあえずLチカサンプルを動かすところまでを考えて
find
pinMode
digitalWrite
のみを実装しました。後は遊んでいて必要になったら付け足す感じで。pull requestも歓迎です。というか、ある程度まとまった段階でupstreamにmergeしたいところです。
今のところjs/konashi-bridge-webapi.jsを追加しただけなので別段forkする必要はなかったのですが、想定しているkonashi-bridge.jsのバージョンとの対応がとれた方がわかりやすいかな、と。その点、同じrepository/branch上でcommitしてあれば安心なので、あまり深く考えずにforkしました。まぁ、将来pull requestできれば良いね、くらいのつもりで。
サンプル
monakazさんがjdso.itで公開しているLチカのサンプルを動かしてみました。例によってWeb Bluetoothがsecure origin必須なため、jsdo.it上ではforkできず、JSFiddle上でfork?しています。Android Chrome Dev 48(要chrome://flags#enable-web-bluetooth)で動作確認しました。
追記
2015/11/22 22:05
同じくmonakazさんのナイトライダーも動かしてみたくてdigitalWriteAll
の実装を追加しました。やはりJSFiddleで公開してあります。