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

GeoFence使って 侵入検知作ってみた /aws_basics_location_service_lt

GeoFence使って 侵入検知作ってみた /aws_basics_location_service_lt

2021.07.17 AWSの基礎を学ぼう 特別編
最新サービスをみんなで触ってみるはじめての位置情報サービス
でのLT資料です。
LT内で出てくるLambdaのソースコードは近日中に公開予定です。

Kenichiro Wada

July 17, 2021
Tweet

More Decks by Kenichiro Wada

Other Decks in Technology

Transcript

  1. (FP'FODF࢖ͬͯ
    ৵ೖݕ஌࡞ͬͯΈͨ
    BXTCBTJDT TPSBDPN
    2021.07.17
    AWSの基礎を学ぼう 特別編
    最新サービスをみんなで触ってみる
    はじめての位置情報サービス
    和⽥健⼀郎@Keni_W

    View Slide

  2. ⾃⼰紹介
    ⽒名:和⽥ 健⼀郎
    所属:アイレット株式会社 エンジニア
    JAWS-UG 千葉 運営メンバー
    SORACOM UG東京 運営メンバー
    昨年共著でサーバーレス本書きました。
    Twitter: @Keni_W Facebook : kenichiro.wada.3
    好きなAWSサービス : AWS Lambda
    2021 APN AWS Top Engineers

    View Slide

  3. ࠓ೔࿩͢͜ͱ
    BXTCBTJDT TPSBDPN
    • とりあえずやってみたで作った
    • 構成図とか
    • GeoFenceを作る
    • Lambdaで位置情報投⼊
    • Lambdaで通知
    • こうなる
    • 感想
    (FP'FODF࢖ͬͯ৵ೖݕ஌࡞ͬͯΈͨ

    View Slide

  4. ͱΓ͋͑ͣ΍ͬͯΈͨͰ࡞ͬͨ
    BXTCBTJDT TPSBDPN
    (FP'FODF࢖ͬͯ৵ೖݕ஌࡞ͬͯΈͨ
    • やってみた枠ということで、
    完全にLT登壇駆動開発です。
    JAWS UG IoT専⾨⽀部の体験会参加して、
    思いついた構想を実装したものです。
    • 位置情報を⼿軽にクラウド上にアップでき
    るデバイスを持っていたのも⼤きい。

    View Slide

  5. ߏ੒ਤͱ͔
    BXTCBTJDT TPSBDPN
    構成図 -位置情報取得部-
    (FP'FODF࢖ͬͯ৵ೖݕ஌࡞ͬͯΈͨ

    View Slide

  6. ߏ੒ਤͱ͔
    BXTCBTJDT TPSBDPN
    構成図 -通知部-
    (FP'FODF࢖ͬͯ৵ೖݕ஌࡞ͬͯΈͨ

    View Slide

  7. ߏ੒ਤͱ͔
    BXTCBTJDT TPSBDPN
    (FP'FODF࢖ͬͯ৵ೖݕ஌࡞ͬͯΈͨ
    • ソラコムさんが発売している
    温度、湿度、加速度センサー、
    GPSを搭載したバッテリー内
    蔵のデバイス。
    • SORACOMサービスと組み合
    わせて簡単に可視化まででき
    る超絶便利なデバイス。

    View Slide

  8. (FP'FODFΛ࡞Δ
    BXTCBTJDT TPSBDPN
    (FP'FODF࢖ͬͯ৵ೖݕ஌࡞ͬͯΈͨ
    • ⼿順の細かい説明は割愛します。
    • 今回は、弊社オフィスがある⻁ノ⾨ヒルズ
    に⾏く機会があった(出社と⾔います)ので、
    そこへの侵⼊検知を⾏なっています。
    (適切に侵⼊してますよ)

    View Slide

  9. (FP'FODFΛ࡞Δ
    BXTCBTJDT TPSBDPN
    (FP'FODF࢖ͬͯ৵ೖݕ஌࡞ͬͯΈͨ
    • geojson.ioを使って、⻁ノ⾨ヒルズの周囲
    の緯度経度を取得し、それをGeoFenceと
    してアップロードします。

    View Slide

  10. -BNCEBͰҐஔ৘ใ౤ೖ
    BXTCBTJDT TPSBDPN
    (FP'FODF࢖ͬͯ৵ೖݕ஌࡞ͬͯΈͨ
    • GPSマルチユニットからのデータは、
    SORACOM FunkからAWS Lambdaの関数
    を実⾏する際のEventオブジェクトにセッ
    トされて渡ります。

    View Slide

  11. -BNCEBͰҐஔ৘ใ౤ೖ
    BXTCBTJDT TPSBDPN
    (FP'FODF࢖ͬͯ৵ೖݕ஌࡞ͬͯΈͨ
    • Eventオブジェクト内にlat(緯度)とlon(経
    度)が⼊っているので、
    location.batchUpdateDevicePositionの
    パラメータにセット(Positon)して投⼊しま
    す。
    const devicePostion = {
    DeviceId: deviceId,
    Position: [
    event.lon,
    event.lat
    ],
    SampleTime: moment(date).toISOString()
    }
    GPSマルチユニットからの緯度
    (event.lat)、経度(event.lon)情報

    View Slide

  12. -BNCEBͰ௨஌
    BXTCBTJDT TPSBDPN
    (FP'FODF࢖ͬͯ৵ೖݕ஌࡞ͬͯΈͨ
    • ハンズオンでもやったとおり、GeoFence
    のENTER、EXITのイベントが発⽣すると、
    Cloudwatch Logsに格納されるので、それ
    をトリガーにLambda関数を起動します。

    View Slide

  13. -BNCEBͰ௨஌
    BXTCBTJDT TPSBDPN
    (FP'FODF࢖ͬͯ৵ೖݕ஌࡞ͬͯΈͨ
    • Base64エンコードされているので、それを
    デコードおよびバイナリ展開して、メッ
    セージを取り出して整形して、LINE Notify
    に送信します。
    # CloudWatchLogsからのデータはbase64エンコードされているのでデコード
    decoded_data = base64.b64decode(event['awslogs']['data'])
    # バイナリに圧縮されているため展開
    json_data = json.loads(gzip.decompress(decoded_data))
    logger.info("EVENT: " + json.dumps(json_data))
    message = json_data['logEvents'][0]['message']
    json_message = json.loads(message)
    message = create_message(json_message['detail'])

    View Slide

  14. ͜͏ͳΔ
    BXTCBTJDT TPSBDPN
    (FP'FODF࢖ͬͯ৵ೖݕ஌࡞ͬͯΈͨ

    View Slide

  15. ͜͏ͳΔ
    BXTCBTJDT TPSBDPN
    (FP'FODF࢖ͬͯ৵ೖݕ஌࡞ͬͯΈͨ

    View Slide

  16. ͜͏ͳΔ
    BXTCBTJDT TPSBDPN
    (FP'FODF࢖ͬͯ৵ೖݕ஌࡞ͬͯΈͨ

    View Slide

  17. ײ૝౳ʑ
    BXTCBTJDT TPSBDPN
    (FP'FODF࢖ͬͯ৵ೖݕ஌࡞ͬͯΈͨ
    • 結構簡単にできました。
    • GeoFenceを建物ギリギリしたら、In/Out
    がうまく検知できず(建物内は位置情報取
    れにくいため)、ちょっと⼤きめの
    GeoFenceにして対応。
    • 実際に実機で試していると、通知くるか
    な?ってドキドキ待つのが楽しかった。

    View Slide

  18. ײ૝౳ʑ
    BXTCBTJDT TPSBDPN
    (FP'FODF࢖ͬͯ৵ೖݕ஌࡞ͬͯΈͨ
    • はまった点は以下
    • 位置情報は配列で経度、緯度の順でセッ
    ト、返却される。
    • Google Mapの地図を表⽰させる場合、
    緯度・経度の順でセットするので注意。
    • 前述の通り、GPSの送信間隔によっては、
    うまく検知できないこともある。
    • ちょっとGeoFenceを⼤きめにして対処

    View Slide

  19. ײ૝౳ʑ
    BXTCBTJDT TPSBDPN
    (FP'FODF࢖ͬͯ৵ೖݕ஌࡞ͬͯΈͨ
    • はまった点は以下
    • geojson.ioで
    緯度が4xxとかでて、
    GeoFenceとして登録した際、
    エラーになりました

    View Slide

  20. ײ૝౳ʑ
    BXTCBTJDT TPSBDPN
    (FP'FODF࢖ͬͯ৵ೖݕ஌࡞ͬͯΈͨ
    • 他への流⽤としては、
    • 家と学校にGeoFenceを配置して、登下
    校を⾃動⾒守りとか。
    • デバイス保持者が区域外に出たら通知す
    るとか(逆もあり)。
    • あれ、これって
    ビジネスになる?w

    View Slide

  21. ײ૝౳ʑ
    BXTCBTJDT TPSBDPN
    (FP'FODF࢖ͬͯ৵ೖݕ஌࡞ͬͯΈͨ

    View Slide

  22. ײ૝౳ʑ
    BXTCBTJDT TPSBDPN
    (FP'FODF࢖ͬͯ৵ೖݕ஌࡞ͬͯΈͨ
    Resource create, read, update, delete, or list requests $0.01 per 1,000 = $0.01 = 1.1円
    Resource create, read, update, delete, or list requests $0.01 per 1,000 = $0.01 = 1.1円
    Map tiles retrieved (Vector or Raster) $0.04 per 1,000 = $0.04 = 4.4円
    Resource create, read, update, delete, or list requests $0.01 per 1,000 = $0.01 = 1.1円
    Geofences created, deleted or described $0.05 per 1,000 = $0.01 = 5.5円
    Geofence list requests $0.05 per 1,000 = $0.01 = 5.5円
    Positions evaluated $0.20 per 1,000 = $0.20 = 22円
    Positions written $0.05 per 1,000 = $0.05 = 5.5円
    Batch positions read $0.05 per 1,000 = $0.05 = 5.5円
    Resource create, read, update, delete, or list requests$0.01 per 1,000 = $0.01 = 1.1円

    View Slide

  23. ײ૝౳ʑ
    BXTCBTJDT TPSBDPN
    (FP'FODF࢖ͬͯ৵ೖݕ஌࡞ͬͯΈͨ
    • ちょっと試してみたい・・・
    と思ったそこのアナタ。
    今ならGPSマルチユニット、
    セール中です。
    (~2021/07/31まで)

    View Slide

  24. ײ૝౳ʑ
    BXTCBTJDT TPSBDPN
    (FP'FODF࢖ͬͯ৵ೖݕ஌࡞ͬͯΈͨ
    ご静聴
    ありがとう
    ございました

    View Slide