初めての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の温度が送られてきているのが確認できます。