人気記事

Amazon Location Service IoT iPhone ライフログ

AWS Location ServiceからiPhoneの位置を追跡する

更新日:

前回の記事ではiPhoneとAWS IoTでMQTT通信を行いました。

AWS IoTとiPhoneアプリでMQTTを行う方法【動画付き】

今回はiPhoneの位置情報をAWS IoTに送信し、更にAWS Location Serviceによるトラッキング(位置追跡)を試しました。

スポンサーリンク

構成

iPhoneからAWS IoTにMQTTで緯度、経度をpublishし、Lambdaを経由してAmazon Location ServiceのTrackを使って、位置追跡を行いました。

位置情報をpublishするソースコード

CLLocationManagerから位置情報が更新された時にpublishします。

// 位置情報を取得した場合
    func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
        guard let location: CLLocationCoordinate2D = manager.location?.coordinate else { return }
                print("locations = \(location.latitude) \(location.longitude)")
        let publishProperties = MqttPublishProperties()
        publishProperties.contentType = "JSON"
        
        let date: Date = Date()
        let unixtime: Int = Int(date.timeIntervalSince1970)
        
        let json: JSON = [
            "payload": [
                "deviceid": "iPhone-location",
                "timestamp": unixtime,
                "location":[
                    "lat":location.latitude,
                    "long":location.longitude
                ]
            ]
        ]
        
        if let strJson = json.rawString() {
            mqtt!.publish("iphone/lacation", withString: strJson, qos: .qos1)
        }
        
    }

AWS側の設定

以下リンクの説明通りにLambdaとAmazon Location Serviceを設定

https://docs.aws.amazon.com/location/latest/developerguide//tracking-using-mqtt.html

位置追跡結果の取得

AWS CLIを使って取得できます。

aws location get-device-position-history --device-id "iPhone-location" --start-time-inclusive "2022-01-16T06:05:07.327Z" --end-time-exclusive "2022-01-17T19:20:07.327Z" --tracker-name "iPhoneTracker"
{
    "DevicePositions": [
        {
            "DeviceId": "iPhone-location",
            "Position": [
                139.76705309787633,
            35.68144517816189
            ],
            "ReceivedTime": "2022-01-16T06:05:08.754000+00:00",
            "SampleTime": "2022-01-16T06:05:08+00:00"
        },
        {
            "DeviceId": "iPhone-location",
            "Position": [
          139.75284555346155,
                35.6855127405154
            ],
            "ReceivedTime": "2022-01-16T06:05:09.403000+00:00",
            "SampleTime": "2022-01-16T06:05:09+00:00"
        },
        {
            "DeviceId": "iPhone-location",
            "Position": [
                 139.7454742892775,
                 35.660116269038845
            ],
            "ReceivedTime": "2022-01-16T06:05:10.485000+00:00",
            "SampleTime": "2022-01-16T06:05:10+00:00"
        },

まとめ

当初はAWS Location Serviceのmap上に位置追跡したルートを可視化できる想定できたが、方法は分かりませんでした。ただ緯度・経度が出てくるので他サービスを使ってiPhoneの位置追跡の結果を可視化することはできそうです。

Amazon Location ServiceにはGeofencesという指定したエリアの出入りを通知する機能もあり、ドローンが指定エリアに入らないように制御する、社員が会社のエリア内に入ったら通知する、といった使い道があるようです。

参考

AWSは公式サイトに設定手順が記載されていますが、日本語訳は読みづらく英語の方が分かりやすいと思うのですが、AWSの基本的なサービスを知っている前提で説明されているように見受けられます。

AWSの基本的なサービスを把握するには「AWS認定ソリューションアーキテクト アソシエイト」を取得するのが良いです。筆者の所属する企業始め多くの企業ではAWSを扱うエンジニアには上記の認定を取得することが求められます。筆者は取得した際に仕事の考課査定にもプラスになりました。

「AWS認定ソリューションアーキテクト アソシエイト」には数多くの教材が存在しますが、筆者としては十分な講義量とハンズオンが用意されているUdemyの【2022年版】これだけでOK! AWS 認定ソリューションアーキテクト – アソシエイト試験突破講座 をオススメします。筆者と周りのエンジニアからも評判が良かったです。

試験の費用が150US $と安くないので【2022年版】AWS 認定ソリューションアーキテクト アソシエイト模擬試験問題集(6回分390問) という6回分の模擬試験も受けておくとより安全です。

-Amazon Location Service, IoT, iPhone, ライフログ
-, , ,

Copyright© ITエンジニアへの転身 , 2022 All Rights Reserved Powered by STINGER.