LoginSignup
1
0

More than 1 year has passed since last update.

SORACOMプラットフォームを活用したiPhoneGPSトラッカー

Posted at

概要

ソラコム社の提供するGPSマルチユニットは購入後、簡単な作業と設定でGPSトラッキングが可能となります。
ただ、デバイス(1万円強)とSIM(1000円くらい)を購入し、月額料金(300円くらい)を払うとなった場合、少々ハードルが上がってしまいます。
でもiPhoneユーザーであればデバイスとSIM購入せず、条件次第ではランニングコストゼロでお手持ちのiPhoneでGPSトラッカーを作ることができそうなので、その方法をご紹介できればと思います。

準備

SORACOM Arcの利用設定

SORACOM Arcというサービスを利用するとSIMを購入することなく、お手持ちのデバイスでSORACOMプラットフォームへの接続と通信が可能となります。
SORACOM Arcを利用するには、WireGuardというアプリをインストールし、SORACOMコンソールでの設定が必要となりますが、難しいことは置いておいて、以下の手順で利用できます。

この作業でSORACOMプラットフォームへの接続環境が準備完了です。
※ちなみにSORACOM Arcは1アカウント1回線は無料で、2回線めから有料となります。

Node-PAD

Node-REDという神開発ツールがあり、(無償ではないですが)Node-PADいうアプリをインストールすることでiPhoneで自作アプリを作れるようになります。
ただ、iPhoneの小さい画面でノードを置き、繋ぎ、文字を打ち込むのは結構な修行なので、挑まれる方はその点あらかじめご覚悟ください。

実装

ここから実装方法です。
結論から言うと、以下のようなフローで実装できます。
image.png
①locationノード(ios deviceグループ)…位置情報の取得
②changeノード(機能グループ)…①で取得した位置情報を変数に格納
③injectノード(共通グループ)…定周期でイベントを発生させる
④functionノード(機能グループ)…送信データの作成
⑤http requestノード(ネットワークグループ)…データの送信
その他はデバッグ用で必須ではないため、説明は省きます。

設定については以下となります。

①locationノード(ios deviceグループ)…位置情報の取得

こちらは置くだけです。
位置情報を定周期(?)で取得します。

②changeノード(機能グループ)…①で取得した位置情報を変数に格納

①で取得した緯度と経度がmsg.payload.locationのlatとlonに入っているので、それぞれflow変数lat、lonにセットします。
image.png

③injectノード(共通グループ)…定周期でイベントを発生させる

ここがポイントです。

image.png
初回起動(図の3秒)は適当に設定して、繰り返しの時間間隔で送信の間隔(インターバル)を設置します。
図では15秒としていますが、位置情報として取得したい時間間隔を設定してください。
ソラコムのGPSマルチユニットでは最短1分間隔でしか設定できませんでしたが、最短1秒での設定が可能です。
※短くしすぎると通信量が増え、場合によっては通信料が追加で発生しますのでご注意ください。

④functionノード(機能グループ)…送信データの作成

ノーコードを目指しましたが、ここは少しプログラムっぽく・・
②でセットしたflow変数を送信用のJSONデータにまとめます。
image.png

var data = {};
data["lat"]=flow.get("lat");
data["lon"]=flow.get("lon");
msg.payload = data;
return msg;

⑤http requestノード(ネットワークグループ)…データの送信

あとはPOSTで「http://uni.soracom.io」に送信するだけ
image.png

作業としては以上です。
デプロイしてください。

WireGuardに接続した状態で、このフローを動かし、前述のレシピを参考にSORACOM Harvest Dataの設定をすると、以下のように地図上にマッピングが可能となります。
image.png

SORACOM Harvest DataにアップロードされたデータはSORACOM Lagoonでいい感じに可視化できます(設定は割愛させていただきます)。
※SORACOM Lagoonも無償のFreeプランがあります。

データ収集時の注意

私の知る限り、Node-PADが常にアクティブでなければフローが動かないようです(違っていればツッコミお願いします)。
なので、設定>画面表示と明るさ>自動ロックで「なし」に設定する必要があります。
image.png

さらに他のアプリも使わず、画面に触らないように気を付けなければいけませんので、ご注意ください。

Androidでの実装

今回はiPhoneでの実装を紹介していますが、AndroidでもRedMobileというツールを使うことで実装は可能です。
以下を参考にしていただければと思います。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0