Upgrade to Pro — share decks privately, control downloads, hide ads and more …

自然環境モニタリングのためのBluetooth Low Energyを用いた通知対象セグメンテーション

Kanta Demizu
February 16, 2021

自然環境モニタリングのためのBluetooth Low Energyを用いた通知対象セグメンテーション

Kanta Demizu

February 16, 2021
Tweet

More Decks by Kanta Demizu

Other Decks in Research

Transcript

  1. 報告内容 1. 研究背景 2. 研究目標 3. 研究目的 4. 位置情報検出方法の検討 5.

    システム構成 6. エッジデバイスの構成 7. データベースの構成 8. 通知フロー 9. システムの検証 10. 結論 1
  2. 研究背景 • IoT はモニタリング領域での活用が 期待されている • 舞鶴市では害獣による被害が 多く発生している まいづるメール配信サービス •

    情報過多になり、緊急時の対応が困難 • 市全域の情報を配信 • 情報配信に職員の対応が必要 • 情報源が電話情報 → 適切な情報配信が必要である 2019 年度の舞鶴市における主な事故 参考: 令和元年版舞鶴市統計書 (2021/02/11 参照) 舞鶴市のメール配信サービスの一文 参考: まいづるメール配信サービス (2021/02/11 参照) 2
  3. 位置情報検出方法の検討 システム要求: • 低消費電力である • ユーザーのプライバシーに 配慮して位置情報の精度を コントロールできる → BLE

    を用いる手法が 最適である GPS を用いる手法 • 通常時より 50[mAh] 多くの消費電力を要する • 屋内などでの測位は難しい Wireless LAN を用いる手法 • 未知のデバイスへコネクション確立させるのは難しい • 最大通信距離: 30[m] – 50[m] BLE を用いる手法 • 通常時より 10[mAh] 多くの消費電力を要する • アドバタイズによって未知のデバイスへ コネクション確立が可能である • 最大通信距離: 160[m] – 260[m] 5
  4. システム構成 • クライアントは iBeacon のフレーム形式で アドバタイズ • エッジデバイスは 設置エリアの ID

    を設定 • DB にユーザー情報・ コネクション履歴を格納 • 通知時に DB から 通知ターゲットを抽出 Cloud Server BLE Connection Client Notify Connection History Edge Devices Database API Server Device 1 balenaOS Raspberry Pi Device 2 balenaOS Raspberry Pi Cosmos DB Cloud Firestore App Service Docker システム構成 6
  5. エッジデバイスの構成 エッジデバイスは以下の役割をもつ: • BLE によってクライアントとの間で コネクションを確立する • アドバタイズパケットの Proximity UUID

    から コネクション確立した端末を識別する • データベースに コネクション履歴を格納する エッジデバイスのデバイス検出フロー 7
  6. データベースの構成 Cosmos DB 各コネクション毎にドキュメントを生成 • エッジデバイスの ID • アドバタイズパケットの Proximity

    UUID • ドキュメントの作成日時 Cloud Firestore ユーザーアカウント毎にドキュメントを生成 • 通知用トークン • ユーザーの UUID データベースのドキュメント操作は API サーバーで提供している Cloud Server BLE Connection Client Notify Connection History Edge Devices Database API Server Device 1 balenaOS Raspberry Pi Device 2 balenaOS Raspberry Pi Cosmos DB Cloud Firestore App Service Docker システム構成 8
  7. 通知フロー Client Android Device Notification Provider FCM Subscribe to Topic

    Area 1 Clients Notification クライアントへの通知フロー Firebase Cloud Messaging (FCM) Topic Messaging で通知ターゲットの管理と通知の配信を担う 9
  8. 通知フロー • 右のフローで 通知ターゲットを抽出する • 抽出したドキュメントの Proximity UUID を用いて Cloud

    Firestore の 通知用トークンを取得する • 取得した通知用トークンを用いて FCM のトピックを作成する 上記の動作をする、エリアを指定した 通知用 API を API サーバーで提供している Start エッジデバイスID(edgeId)‧ UUIDを受け取る ドキュメント作成時間を 降順ソートしたドキュメントを取得 for _, u := range HistByDevID edgeId のコネクション履歴 (HistByDevID) を取得 True c.EdgeID == edgeId UUID==u の ドキュメントを抽出(c) result = append(result, c.UUID) return result End 通知ターゲットの抽出フロー 10
  9. システムの検証: BLE のコネクション検出 コネクション確立時の情報がデータベースに格納されている 格納されたドキュメント 1 { 2 "_id": "60258e3a1541275c84175d61",

    3 "created_at": "2021-02-03T02:30:22Z", 4 "deleted_at": "", 5 "edge_id": 2, 6 "uuid": "9d26ecfa-3455-47c6-a144-cb4b6092592b" 7 } BLE コネクションの検出 11
  10. システムの検証: ターゲットへの通知 パラメータへ指定したターゲットに通知が行われている リクエストパラメータ 1 { 2 "edge_id": 2, 3

    "title": "タ イ ト ル", 4 "body": "通 知 内 容" 5 } 通知内容 レスポンス 1 { 2 "result": { 3 "SuccessCount": 1, "FailureCount": 0, 4 "Responses": [ 5 { 6 "Success": true, "Error": null, 7 "MessageID": "projects/micasa-296105/ messages/0:1613078863872929% ccf33e56ccf33e56" 8 } 9 ] 10 } 11 } 12
  11. 付録: クライアントの構成 Firebase Authentication ユーザーアカウントの作成と ユーザー認証を担う Firebase Cloud Messaging (FCM)

    Topic Messaging で通知ターゲットの 管理と通知の配信を担う Flutter クライアントアプリケーションを 構成するフレームワークである Client User Management Authentication Cloud Firestore Android Device Flutter(Dart) Notification Provider FCM User Authentication Topic Messaging クライアントへの通知の流れ
  12. 付録: BLE の通信距離測定実験 2 地点間の距離導出方法 地点 A =  

     x1 : 経度 y1 : 緯度 (1) 地点 B =    x2 : 経度 y2 : 緯度 (2) d = r cos−1(sin y1 sin y2+ cos y1 cos y2 cos(x2 − x1)) (3) コネクション確立を確認した最大距離
  13. 付録: Cosmos DB のドキュメント例 Cosmos DB のドキュメント例 1 { 2

    "_id" : ObjectId("5ffe88d5b74827f59b1d394b"), 3 "uuid" : "9d26ecfa-3455-47c6-a144-cb4b6092592b", 4 "edge_id" : 2, 5 "created_at" : "2021-01-13T05:44:53Z", 6 "deleted_at" : "" 7 }
  14. 付録: Cloud Firestore のドキュメント例 Cloud Firestore のドキュメント例 1 { 2

    "users": { 3 "VxLiREK2SqaG3fVWQle2rgyTIpq1": { 4 "token": "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...", 5 "uuid": "9d26ecfa-3455-47c6-a144-cb4b6092592b" 6 } 7 } 8 }