
さくらのIoTモジュールでGPSリアルタイムトラッキング(完成編)
さくらのIoTモジュールでGPSリアルタイムトラッキング を行いまして、長女ちゃんの登下で実用していたのですが、今回IFTTTで帰宅時に家に近づくとスマホに通知が来るようにしましたので完結編としてまとめます。
目次
概要
さくらのIoTモジュールでGPS情報を送り、Web上のマップでリアルタイムに位置情報を表示します。
家に近づいたらIFTTTでスマホに通知を送ります。
さくらのIoTモジュール+GPSの設定
詳細は以下のとおりでマイコンにはArduino Nano互換機を使用しています。
安すぎるー!
Arduino IDE用コード
マイコンで5秒毎にGPSモジュールの情報(緯度、軽度、受信衛星数)を受けて、緯度経度から自宅からの距離を計算します。距離の概算には以下を参考にさせていただきました。
通学・帰宅を判断するために距離ステータスを設け、家から300m以上離れると1を代入し帰宅時に200m以内に入ると2、100m以内で3、50m以内で4としています。
以上のデータをGPS受信衛星数が4以上の時にIoT通信モジュールにI2Cで転送し、3G回線でプラットフォームに通信しています。
IFTTTの設定
IoT通信モジュールからの距離ステータスをうけて長女ちゃんが家に近づいたらスマホに通知が来るようにIFTTTを利用しました。
IFTTTとは
if this then thatの略で各種Webサービス同士を連携して自分好みのWebサービス(レシピ)を生成することができます。ここではthis(トリガ)にwebに値(3つまで)を送信(GETまたはPOST)できるMakerチャンネルを使用しthat(アクション)にスマホに通知を送るIF Notificationsチャンネルを使用しました。
レシピ生成
Makerチャンネルを使用して、スマホに通知を送る方法は以下に詳細が記載せれており非常に参考になります。
- Makerチャンネルを作成
- レシピを作成
新しいレシピを作成してthisにMakerチャンネルをthatにIF Notificationsチャンネルを選択します。
イベント名は”sakuraGPS”としました。
通知内容は
長女ちゃん家まであと {{Value1}} m
としValue1には家からの距離が代入されるようにします。
以下でサーバーからGET(またはPOST)すると通知が来ます。
Webサーバーの設定
「さくらのIoT Platform α版」では、下記のサービスが提供されています。
- Outgoing WebHook:モジュール→サーバー
- WebSocket:双方向
- Incoming Webhook:サーバー→モジュール
今回は、このブログを動かしている Raspberry Pi 2 サーバーに、「Outgoing WebHook」から値を受信し、処理しています。
Nginx の設定
/sakura/ ディレクトリに Basic 認証を付けています。
下記を追加
※ 設定の詳細はこちらの記事に記載しております。
ラズパイサーバー ★ Nginx 追加設定
PHP
- Outgoing WebHook を受信し、/sakura/gps.txt に書き出す
- channel 4 の statusが2以上に切り替わった時、IFFTに距離を送信する
/sakura/index.php
何故か高頻度で空の値が入ってくるので、(PHP側の原因なのか?データなのか?原因究明できていません)null チェックをしています。
gps.txt
緯度、経度、衛星数、距離、ステータスが書き出されます。
HTML ( OpenStreetMap … JavaScript)
地図(OpenStreetMap)でリアルタイムトラッキングさせる記述です。
このような感じで、地図上に現在地のアイコンが表示されます。
※ 動作の様子はこちらの記事に記載しております。
さくらのIOTモジュールでGPSリアルタイムトラッキング
動作
無事に通知が来ることを確認できました
これで家の鍵をもたせてない長女ちゃんがいつ帰ってきても安心だね!