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
200
個人のAWSアカウントをマルチ運用してみた
miura55
2
300
さらばあのボタンとは言わせない 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
Google Cloud Next '24 Recap in ZOZO Datastreamを使用したリアルタイムデータストリーミングの紹介 / realtime datastreaming with Datastream
takahitosakuma
0
140
QA経験のないエンジニアリング マネージャーがQAのカジュアル面談に出て 苦労していること・気づいたこと / scrum fest niigata 2024
yoshikiiida
2
690
Exadata Database Service on Dedicated Infrastructure(ExaDB-D) UI スクリーン・キャプチャ集
oracle4engineer
PRO
2
1.7k
データベース04: SQL (1/3) 単純質問 & 集約演算
trycycle
0
180
サービス開発におけるVue3とTypeScriptの親和性について
tsukuha
10
1.8k
5分で分かる(かもしれない) Vector engine for OpenSearch Serverless
tsukuboshi
1
440
YJIT Makes Rails 1.7x faster / RubyKaigi 2024
k0kubun
4
630
データ分析力を高めるSQL研修サービス『SQL Everyone』
hikarut
1
410
.NET GraphQL Client のリアル
sansantech
PRO
1
540
パフォーマンス最適化のベストプラクティス
databricksjapan
0
220
日本が誇るイタリアのダンスミュージック!? ユーロビートって何??
minorun365
PRO
2
240
SRE活動を促進させるドキュメント技術 〜ドキュメントレビューって、どうやってる?〜
kenta_hi
0
110
Featured
See All Featured
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
14
1.5k
Optimising Largest Contentful Paint
csswizardry
13
2.4k
[RailsConf 2023] Rails as a piece of cake
palkan
29
4.1k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
22
1.4k
Intergalactic Javascript Robots from Outer Space
tanoku
266
26k
Visualization
eitanlees
137
14k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
9
1.3k
From Idea to $5000 a Month in 5 Months
shpigford
377
45k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
352
28k
Become a Pro
speakerdeck
PRO
13
4.6k
The Straight Up "How To Draw Better" Workshop
denniskardys
228
130k
Fantastic passwords and where to find them - at NoRuKo
philnash
39
2.5k
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