初めてのBLE (10) Raspberry Piでペリフェラル②CPUの温度を送る

 ラズパイで動いているBlueZを使うには、Bluetooth protocol stack for Linuxのサンプルを利用します。

  Bluetooth protocol stack for Linuxのtestディレクトリ

(参考文献)BlueZのAPI/サンプルコードのメモ

example-gatt-serverを動かす

 エディタMuに上記のサンプル群に入っているbluezutils.pyを読み込み、同名で保存します。newでexample-gatt-serverの中身をコピーし、example-gatt-server.pyで保存します。実行します。bluezutils.pyは、example-gatt-server.pyの実行に必要なファイルです。ほかのサンプルと違って、このプログラムはpython3に対応しています。

 このプログラムは、Gattの中の標準サービスBattery Serviceを使って、模擬的に数値を100から5秒ごとに-2しています。ほかにもサービスがありますが、ダミーです。

example-gatt-serverを修正して温度を送る

 ラズパイのCPUの温度は、vcgencmd measure_tempで求まります。temp=xxという答えが返るので、xxのところだけを抜き出します。温度(摂氏40~80度)ですから、byteの数値範囲に入るので、そのままバッテリ残量変数battery_lvlに代入します。

 変更部分は、もう一つあります。一番先頭に、import subprocessを追加します。

 実行します。

 これでラズパイでGatt Serverが動き始めましたが、このプログラムはアドバタイジングをしません。

sudo hciconfig hci0 leadv

 

を実行すると、アドバタイジングを開始し、セントラルからの接続を待ちます。

 オン・セミコンダクターのBLEであるRSL10 Bluetooth Low Enaergy Exploerを使って情報を見ます。connectで接続し、Discover Serviceでサービスを表示しました。Battery Serviceのサービスが見えます。CPUの温度が送られてきているのが確認できます。

前へ

初めてのBLE (9) Raspberry Piでペリフェラル①bluetoothctlとhciconfig

次へ

初めてのBLE (11) Raspberry Piでペリフェラル③BME280に対応