M5StickCを、BLEデバイスに任意の操作が可能なBLEセントラルデバイスにし、WebSocketサーバとして、ブラウザのJavascriptやNode.jsからつなげられるようにします。
本投稿は、以下の目的で整理したものです。
・ESP32でのBLEセントラルのひな型にする。
・ESP32でのWebSocketサーバのひな型にする。
・ESP32でのBLEデバイスのひな型にする。
・ブラウザからM5StickCに接続してBLEデバイスに任意の操作をする。
ひな型として、ソースコードを以下に上げておいたので、詳細はそちらを参照してください。
poruruba/ESP32_WebBLE
以下の3つからなります。
・BLEセントラルのM5StickC(WebBLE_Centralフォルダ)
・BLEセントラルのM5StickCにWebSocketで接続するWebページ(htmlフォルダ)
・BLEセントラルから接続されるサンプルのM5StickC(BLE_TestDeviceフォルダ)
Webページは以下からもアクセスできます。
WebSocketサーバへのリクエストパラメータ
| type | パラメータ | 説明 |
|---|---|---|
| scan | 周辺のBLEデバイスを探索します | |
| duration | 探索期間(秒) | |
| serviceuuid | サービスUUID(任意) | |
| scanresult | 発見されたBLEデバイスの情報を取得します。 | |
| address | デバイスBLEアドレス | |
| connect | BLEデバイスに接続します。 | |
| address | デバイスBLEアドレス | |
| addresstype | アドレスタイプ(任意) | |
| primary | BLEデバイスのすべてのプライマリサービスを取得します。 | |
| service | BLEデバイスの指定のサービスUUIDのプライマリサービスを取得します。 | |
| serviceuuid | サービスUUID | |
| chars | BLEデバイスの指定したサービスUUIDのすべてのキャラクタリスティックを取得します。 | |
| serviceuuid | サービスUUID | |
| char | BLEデバイスの指定したサービスUUIDとキャラクタリスティックを取得します。 | |
| serviceuuid | サービスUUID | |
| uuid | キャラクタリスティックUUID | |
| read | BLEデバイスの指定したキャラクタリスティックから値を読み出します。 | |
| uuid | キャラクタリスティックUUID | |
| write | BLEデバイスの指定したキャラクタリスティックに値を書き込みます。 | |
| uuid | キャラクタリスティックUUID | |
| value | 値(16進数文字列) | |
| withresponse | Write with Responseかどうか | |
| startnotify | BLEデバイスの指定したキャラクタリスティックのNotification/Indicateを有効化します。 | |
| uuid | キャラクタリスティックUUID | |
| stopnotify | BLEデバイスの指定したキャラクタリスティックのNotification/Indicateを無効化します。 | |
| uuid | キャラクタリスティックUUID |
以上