前回のLinux版の BLE Gateway Server のアップデートを行いました。
改良内容は、プロトコルの拡張となり、1回に送信可能データ桁数を増やしました。
旧版は25byteで、識別に必要なデバイス名を3-5byte、残りの最大20byte
を利用できましたが、
新は、データ部最大 25byte使用可能です。
[改良の仕組み]
Bluetooth device adress(BD address)を使い、server側から、
子機(peripheral)を識別するように。検出方法を変更しています。
この変更により、advertising パケットの最大25 byteを全てデータ領域で
使用できるようになりました。
*) 下記のアドレス種類の例外があり、対象は
public address 機種のみです、random address は対象外としています。
# 概要
旧版(アドレス指定無し)と、同様です。
# 参考 /Bluetooth Device Address
Bluetoothに対応しているデバイスを識別するために使われるのがアドレス:Bluetooth Device Addressで、
BD_ADDR、BDアドレスなどと表記されることもあります。
Bluetooth v4のアドレスは48ビット(EUI-48)を使用しており、
Public AddressとRandom Addressの2種類のアドレスが使用可能です。
・Public Address
これはIEEE 802準拠のアドレスであり、EthernetのMACアドレスと同等のアドレスです。
製品製造時に機器ごとに書き込まれる固定のアドレスです。
機器を製造した企業や機器の個別アドレスを含みます。
*)
48ビットのアドレス
パブリック・デバイス・アドレスは、Bluetooth SIGが企業ごとに発行した24ビットの識別子と、
企業が製品1つづつに割り振る24ビットの識別子から構成されます。
・Random Address
セキュリティを考慮した、各端末(機器)で自動生成される端末アドレスです。
乱数を使います。Bluetooth v4では一般的で、機器の製造工程で書き込む必要がありません。
参考:
http://micro.rohm.com/jp/techweb_iot/knowledge/iot02/s-iot02/04-s-iot02/2732
# code (BETA)
central : nanoPi/ ble_gateway_sv2
https://github.com/kuc-arc-f/ble_gateway_sv2
peripheral : RN4020 +atmega
RN4020_sv2_0_9_3.ino
https://gist.github.com/kuc-arc-f/d2408ff3752d8023db81b33baf2555f0
==== 2017/08/06 ====
esp32 driver(ESP-IDF)
app_bt.c
https://gist.github.com/kuc-arc-f/93a175c7821331f0e0d4934579acd972
=== Update:2017/09/07 ===
update: 0.9.3 scan動作の変更等
http://knaka0209.blogspot.jp/2017/09/nanoPi-8.html
update v0.9.2をリリースしました。
設定ファイルから、子機デバイス情報を設定可能になりました。
blog: http://knaka0209.blogspot.jp/2017/08/nanoPi-6.html
========
# 補足/プロトコル 新/旧比較
新verは、旧と比較してプロトコル仕様が異なり、互換性がありません。
25 byte 固定 (例は、5byte * 5 項目)
device nameを廃止
BD address を追加
V2/ プロトコル仕様(PDF)
https://github.com/kuc-arc-f/ble_gateway_sv2/blob/master/doc/Protocol-Spec-ble-Rn4020-pubAddr.pdf
# V2/ 設定手順
#) public address の調査
BT アプリ等で、起動時の advertising データ内の BD address を確認します。
===2017/08/06 ===
BTアプリによって、アドレス英数の大文字/小文字が逆になる現象を発見しました。
bluepyは、アドレス英数文字は全て小文字表示のようですので、
チェック用の python 追加しました。必要あれば参考下さい。
scan5-checkAddr.py
https://github.com/kuc-arc-f/ble_gateway_sv2/blob/master/ble_gateway_sv2/scan5-checkAddr.py
=========
#) address メモしておきます。(参考)
複数デバイスを設置する場合ですが、
*) 例、表形式にまとめておきます。
内容は、BD Addres , 用途、センサ種類
#) BLE server に設定します。
ble_gateway_sv2.py
=== 2017/08/23 ===
update 0.9.2 で、デバイス追加方法を変更しています。
http://knaka0209.blogspot.jp/2017/08/nanoPi-6.html
====
旧版のREADME 手順と重複しますが
https://github.com/kuc-arc-f/ble_gateway_sv/blob/master/README.md
http_func.py --送信先の設定 (* 例は thingSpeak
ble_gateway_sv.py /send_http()
--request param設定、BLE収集配列から、HTTP送信用のバッファにセットします。
完了したら、server 起動します。
*) 今回は、2台で各1項目で 種類少なめですが。
# NANOPI NEO で、BLE GATEWAY SERVER を設置する
http://knaka0209.blogspot.com/2017/07/nanoPi-2.html
# Update, BLE gateway server 0.9.2
http://knaka0209.blogspot.jp/2017/08/nanoPi-6.html
# BLE -IOT関連まとめ
http://knaka0209.blogspot.jp/2017/07/BLE-matome.html
0 件のコメント:
コメントを投稿