ラズパイでBLEタグ – bluepyについて [Peripheralクラス]
[bluepy] はBLEデバイスを制御するためのライブラリ(Pythonモジュール)です。
以下のクラスが提供されています。
| クラス | 機 能 | Peripheral | BLEデバイスに対してペリフェラルとして制御する基本的なクラス | Scnanner | BLEデバイスの探索(スキャン)を制御するクラス | ScnanEntry | BLEデバイスを探索する条件設定するクラス | DefaultDelegate | 通知を処理する基本となるクラス オーバライドによって必要に応じたカスタマイズが可能です。  | 
UUID | UUIDの値を管理するクラス | Service | サービスオブジェクトを処理するクラス サービスオブジェクトは、ペリフェラルの持つ機能をキャラクタリスティックとデスクリプションの集合として表すものです。  | 
Characteristic | キャラクタリスティックの読み書きを処理するクラス | Descripter | クラス名のみ予約されているだけで、メソッド等はまだ実装されていません(2017年11月時点) | 
ここでは、Peripheralクラスとメソッドを中心に説明します。
その他のクラスや詳しい内容は、bluepy に関するドキュメントページ(英語)をご覧ください。
以下は、Peripheralクラスで提供されるメソッドの一覧です。
| メソッド | 機 能 | 
| connect | BLEコネクションの確立 対象とするREX-SEEK2のデバイスアドレスを指定  | 
| disconnect | BLEコネクションの切断 | 
| getServices | サービスリストの取得 | 
| getServiceByUUID | 指定したUUIDのサービスの取得 | 
| getCharacteristics | Characteristicリストの取得 | 
| getDescriptors | Descriptorリストの取得 | 
| withDelegate | 通知イベント発生時に呼び出されるDelegateオブジェクトの設定 | 
| setDelegate | withDelegateと同じ | 
| waitForNotifications | 通知イベントの受取待ち | 
| writeCharacteristic | Characteristicへ値を設定 | 
| readCharacteristic | Characteristicの値を読出し | 
Peripheralクラスのコンストラクタと各メソッド
[Peripheralクラスのコンストラクタ]
| 書式 | Peripheral(deviceAddress, addrType) | 
| 機能 | Peripheralクラスのオブジェクトの使用を開始するためのコンストラクタです。 deviceAddressで指定されたBluetoothアドレスで指定されたBLEデバイスへ接続します。  | 
| deviceAddress | “XX:XX:XX:XX:XX:XX”形式のBluetoothアドレス文字列 | 
| addrType | アドレスタイプを「ADDR_TYPE_PUBLIC」「ADDR_TYPE_RANDOM」のどちらかで指定 | 
| 戻り値 | Peripheralオブジェクト | 
[connectメソッド]
| 書式1 書式2 書式3  | 
connect(deviceAddress) connect(deviceAddress, addrType) connect(deviceAddress, addrType, iface)  | 
| 機能 | BLEコネクションの確立 | 
| deviceAddress | 接続対象のBLEデバイスアドレスを”XX:XX:XX:XX:XX:XX”形式の文字列で指定 | 
| addrType | アドレスタイプを「ADDR_TYPE_PUBLIC」「ADDR_TYPE_RANDOM」のどちらかで指定 | 
| iface | 自身のBluetoothインターフェイスのデバイスを指定 | 
| 戻り値 | 
[disconnectメソッド]
| 書式 | disconnect() | 
| 機能 | BLEコネクションの切断 | 
[getServicesメソッド]
| 書式 | getServices() | 
| 機能 | サービスリストの取得 | 
| 戻り値 | BLEデバイスが提供するサービスのリスト Python 3.x の場合の戻り値は、dictionary view object になる  | 
[getServiceByUUIDメソッド]
| 書式 | getServiceByUUID(uuidVal) | 
| 機能 | サービスオブジェクトの取得 | 
| uuidVal | UUIDオブジェクト | 
| 戻り値 | 該当UUIDでBLEデバイスが提供するサービスのオブジェクト/td> | 
[getCharacteristicsメソッド]
| 書式 | getCharacteristics(startHnd, endHnd, uuid) | 
| 機能 | 指定範囲のキャラクタリスティックリストの取得 | 
| startHnd | 範囲の最初のハンドル | 
| endHnd | 範囲の最後のハンドル | 
| uuid | UUID特定を特定する場合にそのUUIDを指定する UUIDを特定しない場合は、”None”を指定する UUIDを表す文字列、数値、UUIDオブジェクトのいずれか  | 
| 戻り値 | 指定範囲のキャラクタリスティックのリスト | 
[getDescriptorsメソッド]
| 書式 | getDescriptors(startHnd, endHnd) | 
| 機能 | 指定範囲のデスクリプタリストの取得 | 
| startHnd | 範囲の最初のハンドル | 
| endHnd | 範囲の最後のハンドル | 
| 戻り値 | 指定範囲のデスクリプタのリスト | 
[withDeligateメソッド]
[setDeligateメソッド]
| 書式 | withDelegate(delegate) setDelegate(delegate)  | 
| 機能 | 通知イベントが発生したときに呼び出されるDelegateオブジェクトを設定します。 | 
| delegate | 設定するDelegateオブジェクト | 
| 戻り値 | Peripheralオブジェクト | 
[waitForNotificationsメソッド]
| 書式 | waitForNotifications(timeout) | 
| 機能 | BLEデバイスからの通知を待ちます。 timeoutで指定した秒数が経過しても通知を受とらない場合は、エラーとなります。  | 
| timeout | タイムアウト時間(秒) | 
| 戻り値 | True: BLEデバイスからの通知が発生した False: タイムアウトが発生した  | 
[writeCharacteristicメソッド]
| 書式 | writeCharacteristic(handle, val, withResponse) | 
| 機能 | handleで指定したハンドルのキャラクタリスティックで指定した値を書き込みます。 withResponseにTrueを指定すると、デバイスへの書き込み成功の応答を待ちます。  | 
| handle | キャラクタリスティックのハンドル | 
| val | キャラクタリスティックcに書き込む値 | 
| withResponse | TRUE:書き込み成功を待つ FALSE:待たない | 
[readCharacteristicメソッド]
| 書式 | readCharacteristic(handle) | 
| 機能 | handleで指定したハンドルのキャラクタリスティックの値を読み出します。 | 
| handle | キャラクタリスティックのハンドル | 
| 戻り値 | キャラクタリスティック |