ツアー - novars-jp/MaBeeeMacApp GitHub Wiki
ツアー
- コマンドラインからMaBeeeを操作します。
- ここではPythonの簡単なスクリプトを使用しましたが、curlでも、nodeでも、ブラウザでも同じことができます。
準備
MaBeee.app
- リポジトリをダウンロードまたはクローンして、zipファイルを解凍、中にあるMaBeee.appを実行してください。
- メニューバーに電池のアイコンが表示されます。
- 初回実行時は、右クリックのコンテキストメニューから「開く」で実行してください。
mabeee.py
- リポジトリにある簡単なPythonスクリプトです。
- 引数のパス(/devicesなど)をhttp://localhost:11111にくっつけて、リクエストを送信します。
- 結果のステータスコードを出力します。
- 存在する場合はJSONを出力します。
- requestsモジュールをインストールする必要がある場合があります。
pip install requests
- 私の環境では
sudo -H pip install requests
でした。
使用例
$ python mabeee.py /scan
http://localhost:11111/scan
200
{
"scan": false
}
/scanの例です。
-
$ python mabeee.py /scan
- 入力するコマンドです
-
http://localhost:11111/scan
- 送信するリクエストです
-
200
- HTTPステータスコードです。
- この場合正常終了です。
-
{ "scan": false }
- 改行をなくしていますが、これがレスポンスのボディになります。
- この場合スキャンをしていない状態です。
ツアー開始
とりあえず実行
$ python mabeee.py
http://localhost:11111/
200
{
"devices": [],
"scan": false,
"state": "Unknown"
}
stateがUnknownで起動直後の状態です。リクエストがあってからBluetoothを起動します。もう一度、今度は/stateだけ実行してみます。
$ python mabeee.py /state
http://localhost:11111/state
200
{
"state": "PoweredOn"
}
PoweredOnになりました。Bluetoothは問題なく起動したようです。次にスキャンの状態を見てみます。
$ python mabeee.py /scan
http://localhost:11111/scan
200
{
"scan": false
}
当たり前ですがスキャンしていません。スキャンを開始します。
$ python mabeee.py /scan/start
http://localhost:11111/scan/start
200
開始できたようなので、もう一度スキャンの状態をみてみます。
$ python mabeee.py /scan
http://localhost:11111/scan
200
{
"scan": true
}
されています。スキャンされたデバイスの一覧を見てみます。
$ python mabeee.py /devices
http://localhost:11111/devices
200
{
"devices": []
}
まだヒットしていないようです。スキャンにヒットするのに多少時間がかかります。MaBeeeをいれたおもちゃの電源がONになっているかも確認して、もう一度実行します。
$ python mabeee.py /devices
http://localhost:11111/devices
200
{
"devices": [
{
"battery_voltage": 0,
"battery_voltage_updated_at": "2016-08-16T03:14:53.162Z",
"id": 1,
"name": "MaBeee002234",
"pwm_duty": 0,
"rssi": -73,
"rssi_updated_at": "2016-08-16T03:15:27.160Z",
"state": "Disconnected"
}
]
}
1台ヒットしました。idが1です。このidを指定して、もう一度デバイスの情報をみてみます。
$ python mabeee.py /devices/1
http://localhost:11111/devices/1
200
{
"battery_voltage": 0,
"battery_voltage_updated_at": "2016-08-16T03:14:53.162Z",
"id": 1,
"name": "MaBeee002234",
"pwm_duty": 0,
"rssi": -73,
"rssi_updated_at": "2016-08-16T03:15:27.160Z",
"state": "Disconnected"
}
idが1のデバイスの情報だけ取得できます。このデバイスに接続します。
$ python mabeee.py /devices/1/connect
http://localhost:11111/devices/1/connect
200
厳密には接続の指示だけ出すので、すぐに200が返ってきます。もう一度状態を見てみます。
$ python mabeee.py /devices/1
http://localhost:11111/devices/1
200
{
"battery_voltage": 0,
"battery_voltage_updated_at": "2016-08-16T03:14:53.162Z",
"id": 1,
"name": "MaBeee002234",
"pwm_duty": 0,
"rssi": -69,
"rssi_updated_at": "2016-08-16T03:16:29.869Z",
"state": "Connecting"
}
stateがConnectingになっています。接続して、MaBeeeの初期化などを行なっている状況です。もう一度。
$ python mabeee.py /devices/1
http://localhost:11111/devices/1
200
{
"battery_voltage": 0,
"battery_voltage_updated_at": "2016-08-16T03:14:53.162Z",
"id": 1,
"name": "MaBeee002234",
"pwm_duty": 0,
"rssi": -70,
"rssi_updated_at": "2016-08-16T03:16:35.535Z",
"state": "Connected"
}
Connectedになりました。では出力を調整してみます。
$ python mabeee.py /devices/1/set?pwm_duty=100
http://localhost:11111/devices/1/set?pwm_duty=100
400
{
"message": "The operation is not allowed while scanning"
}
スキャン中は出力を調整できないようになっています。できなくないのですが、ものすごい遅延が発生するので現状はできなくしています。スキャンを停止します。
$ python mabeee.py /scan/stop
http://localhost:11111/scan/stop
200
スキャンの状態を見ます。
$ python mabeee.py /scan
http://localhost:11111/scan
200
{
"scan": false
}
もう一度、MaBeeeの出力を100に指定してみます。
$ python mabeee.py /devices/1/set?pwm_duty=100
http://localhost:11111/devices/1/set?pwm_duty=100
200
私はトーマスのプラレールにセットしているのですが、トーマスが走りだしました。とりあえず止めます。
$ python mabeee.py /devices/1/set?pwm_duty=0
http://localhost:11111/devices/1/set?pwm_duty=0
200
止まりました。0から100の間でいろいろ設定してみてください。
$ python mabeee.py /devices/1/set?pwm_duty=20
http://localhost:11111/devices/1/set?pwm_duty=20
200
20くらいじゃ走らないですね。40くらいがゆっくりみたいな感じでした。ここで、全体の情報を見てみます。
$ python mabeee.py
http://localhost:11111/
200
{
"devices": [
{
"battery_voltage": 0,
"battery_voltage_updated_at": "2016-08-16T03:14:53.162Z",
"id": 1,
"name": "MaBeee002234",
"pwm_duty": 20,
"rssi": -85,
"rssi_updated_at": "2016-08-16T03:20:02.056Z",
"state": "Connected"
}
],
"scan": false,
"state": "PoweredOn"
}
次にバッテリーの電圧を取得します。
$ python mabeee.py /devices/1/update?p=battery_voltage
http://localhost:11111/devices/1/update?p=battery_voltage
200
これもすぐに返ってきます。デバイスに問い合わせて値が更新されているはずなので、情報を表示してみます。
$ python mabeee.py /devices/1
http://localhost:11111/devices/1
200
{
"battery_voltage": 1.355294,
"battery_voltage_updated_at": "2016-08-16T03:21:13.076Z",
"id": 1,
"name": "MaBeee002234",
"pwm_duty": 20,
"rssi": -85,
"rssi_updated_at": "2016-08-16T03:20:02.056Z",
"state": "Connected"
}
battery_voltageとbattery_voltage_updated_atの値が更新されました。未使用の電池の場合で1.5vなので、これはすこし残量がない状態ですね。トーマスは本当はpwm_duty=20でも走るのかもしれません。
次はRSSIをアップデートしてみます。RSSIはスキャン時は自動的に更新されますが、接続中は更新を指示する必要があります。
$ python mabeee.py /devices/1/update?p=rssi
http://localhost:11111/devices/1/update?p=rssi
200
デバイス情報をみてみます。
$ python mabeee.py /devices/1
http://localhost:11111/devices/1
200
{
"battery_voltage": 1.355294,
"battery_voltage_updated_at": "2016-08-16T03:21:13.076Z",
"id": 1,
"name": "MaBeee002234",
"pwm_duty": 20,
"rssi": -74,
"rssi_updated_at": "2016-08-16T03:26:55.731Z",
"state": "Connected"
}
rssiとrssi_updated_atが更新されました。
では最後に切断してみます。
$ python mabeee.py /devices/1/disconnect
http://localhost:11111/devices/1/disconnect
200
おもちゃは止まりました。もう一度情報を見てみます。
$ python mabeee.py
http://localhost:11111/
200
{
"devices": [],
"scan": false,
"state": "PoweredOn"
}
デバイス消えました。接続するにはまたスキャンする必要があります。
こんな感じになります、遊んでみてください!