Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
AWSで作るGPSトラッキングシステム
Search
KMiura
October 07, 2023
Technology
0
480
AWSで作るGPSトラッキングシステム
JAWS FESTA 2023 in Kyushu
https://jaws-ug-kyushu.doorkeeper.jp/events/160725
KMiura
October 07, 2023
Tweet
Share
More Decks by KMiura
See All by KMiura
Cloudflare WorkersがPythonに対応したので試してみた
miura55
0
190
個人のAWSアカウントをマルチ運用してみた
miura55
2
290
さらばあのボタンとは言わせない SORACOM LTE-M Button powerd by AWSをまだ使えるようにした(前編?)
miura55
0
120
App Runnerでパラメーターストアの値を使ってみた
miura55
0
310
ultraArmをモニター提供してもらった話
miura55
0
120
JAWS UG名古屋2023年活動報告
miura55
0
140
AWS Step Functionsの新機能「Call third-party API」を試してみた
miura55
1
110
AWS Step Functionsの新機能「Call third-party API」を試してみた
miura55
0
210
AWS CDKの新機能「cdk migrate」を試してみた
miura55
1
330
Other Decks in Technology
See All in Technology
Deno で作る快適な “as Code” プラットフォーム – TSKaigi 2024
pizzacat83
4
310
「知的単純作業」を自動化する、地に足の着いた大規模言語モデル (LLM) の活用
nrryuya
8
8.3k
【TSkaigi】2024/05/11 当日スライド
kimitashoichi
14
4k
[2024년 5월 세미나] 생성형 AI와 함께하는 데이터 분석가 커리어
datarian
0
1.2k
テストコードを書きながらCompose Multiplatformを乗りこなす
subroh0508
0
150
Databricksの生成AI戦略
taka_aki
1
370
株式会社EventHub・エンジニア採用資料
eventhub
0
2.1k
個人的、Kubernetes の最新注目機能! (2024年5月版) / TechFeed Experts Night#28 〜 コンテナ技術最前線
pfn
PRO
3
210
【リラン】AIの光と闇?失敗しないために知っておきたいAIリスクとその対応 ①政府の動き編
tkhresk
0
140
RailsConf 2024 Keynote "Startups on Rails in 2024"
irinanazarova
0
820
SWC Transformerから見るTypeScript関数記述ベストプラクティス
fujiyamaorange
1
180
汎用ポリシー言語Rego + OPAと認可・検証事例の紹介 / Introduction Rego & OPA for authorization and validation
mizutani
1
160
Featured
See All Featured
Producing Creativity
orderedlist
PRO
338
39k
Put a Button on it: Removing Barriers to Going Fast.
kastner
58
3.1k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
188
16k
Web Components: a chance to create the future
zenorocha
306
41k
Thoughts on Productivity
jonyablonski
60
3.9k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
84
45k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
126
32k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
1
130
Fashionably flexible responsive web design (full day workshop)
malarkey
398
65k
Principles of Awesome APIs and How to Build Them.
keavy
121
16k
Embracing the Ebb and Flow
colly
80
4.2k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
14
8.4k
Transcript
AWSで作るGPSトラッキングシステム KMiura(@k_miura_io)
自己紹介 • 三浦 耕生(こうき) • 三次元地図のスタートアップのエンジニア • JAWS UG名古屋運営 •
好きなAWSのサービス: AWS IoT、 Lambda、ECS @k_miura_io koki.miura05
はじめに • 本セッションはJAWSミート2023の続きです • 個人的な検証内容であり所属企業に関連するものではありません(超重要) https://bit.ly/3ZJkCQI
今日のアジェンダ • デバイスからAmazon Location Serviceに位置情報を登録する • 位置情報を可視化する • 更に旅の気分を上げる
サイクルコンピュータをつくりたい • ロングライドだと走行距離や速度を記録し ておきたくなる • ハンドルに固定するサイクルコンピュータ なるものが売られている • GPSを使ったナビ機能が搭載されたモデ ルもある(値段は7,
8万円ほど)
頑張れば自作できるんじゃないか?
システム構成 https://docs.aws.amazon.com/ja_jp/location/latest/ developerguide/tracking-using-mqtt.html
使用デバイス • マイコン:M5Stack Core2 powered by AWS • GPSセンサー:M5Stack用GPSユニット (AT6558
+ MAX2659)
デバイスのプログラム • UI Flowで簡単にGPSの情報をAWSに送信 する • 画面のレイアウトが直感的にできて便利 • UI FlowならAWS
IoTの接続に対応したブ ロックが存在する
AWS IoT Core→Amazon Location Service • AWS IoT Coreで受け取ったトピックはAWS IoT
Ruleを使うことでローコードで Amazon Location Serviceに接続できる • Lambdaを使うケースも公式ドキュメントにはある (https://docs.aws.amazon.com/location/latest/developerguide//tracking- using-mqtt-with-lambda.html)
IoT Rules • SQLステートメントはデバイスから送信されるデータをすべて受け取る • アクションには予め用意したTrackerを指定する
Location Serviceの アクション • デバイスID、経度、緯度はデバイス から送信されるトピックのキーを指定 • タイムスタンプはAWS IoTの組み込 み関数「timestamp()」を指定
DEMO
CLIで確認 • マネジメントコンソールだと記録を閲覧できないのでCLI で確認 • 最大で30日以内のロケーション履歴を取得できる • ガッツリ実家の位置がバレるので位置情報は赤塗りw
ここまでがJAWSミートでやったこと
どうせなら地図 で可視化したい
参考になりそうなサンプル • ドンピシャなサンプルが公開されてた(Reactを使用) • ここまでやってきた IoT Rules → Location Serviceの連携部分と可視化用の地図を用
意するCloudformationのテンプレート付き https://github.com/aws-samples/amazon-location- samples/tree/main/maplibre-js-react-iot-asset-tracking
無事に地図で可視化できた
可視化できたが… 正確に位置情報を取得できてない状態だとゼロ地点がプロットされている
どうしてこうなった? • GPSセンサーで取得される値をそのままAWSにPublishしてることでこうなっている • GPSセンサーで取得できるパラメータの中にある「quality」の値で判断することで送信す る位置情報を選別すると解決
新幹線で検証 quality=1のとき quality=0の時(トンネル内)
可視化した結果
一見するとできてるように見えるが
やけに検索結果が少ない… フィルターを追加したものの指定した範囲のデータが全部表示できてない気がする
どうしてこうなった? • APIの仕様上、1回のリクエスト最大で100件の履歴しか取得できない • 100件を超える履歴はAPIのレスポンスに入っているNextTokenを使うことで取得すること ができる →NextTokenを更新しながら履歴を順次追加することで指定した日時の範囲内のトラッカー履 歴を取得することができた
検索履歴をすべて表示できた
DEMO
更に旅を楽しむために • 目的地に近づいたら何かしらデバイスでイベント起こしたい • M5StackのLED光らせたい
Geofenceが使えそう
動かしてみた
システム構成 • geojson.ioなどで用意した geojsonをジオフェンスコレクショ ンに登録しておく • 登録しておいたジオフェンスにト ラッカーデバイスが入ったことを トリガーにEventBridge経由で Lambdaを起動してデバイスに
メッセージをPublishさせている • 本当はStepFunctions使ってノー コードでやりたかったけど StepFunctionsでメッセージを Pushできなさそうだった…
今回のソースコード https://github.com/Miura55/amazon-location-iot-app
まとめ • Amazon Location ServiceとIoT Coreを連携することでコードを書かなくてもデ バイスの位置情報を記録することができる • 位置情報の可視化はAmplify UIやAWS
SDKを組み合わせて自分でUIを用意す る必要がある • ジオフェンシングイベントを活かすことでデバイスに通知を飛ばすことができる Amazon Location Service × AWS IoTで楽しい旅を!
END