RasPi4のBLEで検知してDB保存した周囲のデバイスをグラフ化

Posted by: otsuka

RasPi4のBLEで検知した周囲のデバイスをDB保存 の続きです。

influxDB に保存したスキャンデータをグラフ化するため、
Grafana
https://grafana.com
を使用します。

RasPi 向けのインストール手順
https://grafana.com/tutorials/install-grafana-on-raspberry-pi/
に従って、

Grafana の apt リポジトリの鍵を登録し、

$ wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -

Grafana の apt リポジトリを追加して

$ echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list

レポジトリデータ更新後 インストールします。

$ sudo apt update
$ sudo apt install -y grafana

influxDB の deb パッケージと違ってこのままでは起動していないので、systemd service の設定をして自動起動するようにします。

$ sudo /bin/systemctl enable grafana-server
$ sudo /bin/systemctl start grafana-server

これで、Raspbian OS の avahi-daemon が広告している raspberrypi.local の port 3000 に http アクセスすると画面が表示されます。

RasPi の IP アドレスが分かっているのであれば、/etc/grafana/grafana.ini の http_addr に設定して grafana-server を restart すれば以下のような感じに IP アドレスでもアクセスすることができます。

http://192.168.0.157:3000

初回は admin:admin でログインできます。
ログイン後すぐ default パスワードから変更を求められますので適宜変更してください。

ログインすると以下のような管理画面が表示されます。
"Add your first data source" を実行します。

InfluxDB を選択すると設定ページへ移行します。

influxDB の URL を設定します。
(入力支援用に表示されている default 設定を自分で入力し直せば OK)

下の方へスクロールして Database 名を正しく設定し変更を保存します。

表示対象のデータベースを正しく設定できたらダッシュボードを追加します。

新しい空のダッシュボードを作成したら、空のパネルを追加します。

データの表示期間を選択して

表示したい期間の範囲に設定し、

一般的な database では table にあたる measurement から表示したい sensor を選択、

sensor から MAC アドレスごとの RSSI を表示させます。

グラフにプロットしてみると以下のようになります。
(全データはプロットしきれないので200弱のデータで表示しています)

デバイスの多く見えているのはやはり社内に人がいて各自の持っているスマートフォンがたくさんある時間で、
見えているのもののほとんどは iOS や Android の BLE が出している COVID-19 Exposure Notificatins のビーコンです。

Exposure Notification の MAC アドレスは20分ごとにランダムに変更されてしまうため
どのデバイスの持ち主がどの時間に観測範囲に居るというような情報をビーコンだけから読み取ることはできませんが、
RSSI からどの程度近い場所にどれくらいのデバイスがあるか、といった傾向ぐらいは読み取ることができるかと思います。