ラズパイで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 キャラクタリスティックのハンドル
戻り値 キャラクタリスティック