ノンプログラミングでIoTを体験してみよう

はじめに

新年明けましておめでとうございます。
札幌勤務の樋渡です。

札幌の今年の冬は50年振りの大雪に見舞われ
年末年始は雪かきで、全身筋肉痛の日々が続いております。
正月の某ホームセンターの福袋にトレーニングマシーン系のグッズが入っていたので
そちらで体力を付けて今年も頑張っていきたいと思います。

IoTとは

さて突然ではございますが
みなさまはIoT(Internet of Things)にどのようなイメージをお持ちでしょうか。
一般的にIoTとは

  • センサーからの情報を取得して活用する。
  • 取得した情報をクラウド上に蓄積する。
  • 蓄積したデータを活用・分析し人工知能等に活用する。
  • 分析したデータを人に対しフィードバックする。
  • 蓄積、解析した情報を元にモノをコントロールする。

等々幅広い意味で使用されております。

このように文章として記載してみると、なんとなく敷居が高そうに感じられますが
実はノンプログラミングでIoTを体験する事が可能です。

IoTで「帰宅管理システム」を構築してみる

まずは家族に「何か日常であったら便利なシステムはないか」とヒアリングしてみました。
その中で 「子供が習い事等で遅くなることがあるため、外出・帰宅をリアルタイムで知りたい」
と言う意見があり、今回は 「帰宅管理システム」 を構築してみる事にしました。

<帰宅管理システム内容>

  • 自宅周辺エリアの出入りと共に、家族用のLINEグループにメッセージを自動的に送信
  • 合わせて、Salesforce上に帰宅履歴情報を登録

センサーの考察

近年、IoTの市場活性化と共に個人向けの手ごろな価格帯のセンサーも数多くなってきています。
そのようなセンサーを用意するのも良いのですが、今回はなるべく身近なものを使用して実現させたいため
スマホに搭載されているGPS機能の位置情報を使用する事にしました。

連携方式の考察

今回は位置情報を元に、LINEとSalesforceに情報を連携する必要があります。
そこで、この要件を実現出来そうな連携サービスを調べてみた所、以下の候補が見つかりました。

IFTTT (イフト)

  • アプレットと呼ばれるアプリの組み合わせを作成し連携する事が可能
  • 1トリガで1つのアプリの連携が可能
  • 連携可能なサービスは、約360種類
  • 対応家電や機器も多くアイデア次第で色々なIoTを実現する事が可能
  • 無料でSalesforceにも連携する事が可能
  • 登録した待機系アプレットは15分間隔で実行される
  • iOS、Androidアプリ対応

Zapier (ザピエル / ザピアー)

  • Zap(ザップ)と呼ばれるアプリの組み合わせを作成し連携する事が可能
  • 1トリガで複数のアプリの連携が可能 ※Freeプランは単一アプリのみ
  • 連携可能なサービスは、約750種類
  • Salesforceも対応しているが有料
  • 条件指定がIFTTTより柔軟で、より高度な連携が可能
  • プランにより、待機系トリガ監視間隔が異なる
  • Freeプランで使えるZapは5つ。発動回数は1月100回まで
  • iOS、Androidアプリ未対応

Microsoft Flow (マイクロソフトフロー)

  • Microsoftが2016年4月にプレビュー版を公開したサービス
  • 1トリガで複数のアプリの連携が可能
  • 対応サービス数は72種類と少なめ
  • Salesforceも対応しているが有料
  • Freeプランの場合、実行数 750 回/ 1ヶ月まで
  • 待機系トリガは15分間隔で実行だが、有料プランによっては最大1分間隔まで短縮可能

※情報は2016/11月時点のものなので詳細は各ページでご確認ください。

今回は、無料でSalesforceに対応しているIFTTTを使用する事にしました。

IFTTTのアカウント登録と事前準備

< LINE >
 家族用の「帰宅連絡グループ」を作成し家族をメンバー登録しておきます。

< Salesforce >
 カスタムオブジェクト「帰宅履歴」を作成します。
 オブジェクトに「緯度」「経度」「検知住所」「地図URL」「IN or OUT」の項目を作成しておきます。

< IFTTT >

IFTTT_TOP.png

 トップページより「Get started」ボタンを押下しEmailとPasswordを設定しSignUpで完了です。

アプレット作成

NewApplet.png

IFTTTの右上のユーザーメニューより「New Applet」を選択

if_this_then_that.png

アプレット設定画面が開くので、こちらから設定を進めていきます。

作成方法は簡単で

  1. 「this」を選択してトリガアクションを指定
  2. 「that」を選択して発動アクションを指定

するだけです。

まずは「this」を指定してみましょう。

this1.png

選択対象となるアプリのアイコン群が表示されます。
この中から、今回使用する 「Android Location」 アイコンを選択します。
※この時、Android Locationへのアカウントの認証があります。

AndroidLocation.png

すると、Android Locationで使用出来るトリガの一覧が表示されます。
左より「指定エリアに入った場合」「指定エリアに出入りした場合」「指定エリアから出た場合」となるため
今回は真ん中の「指定エリアに出入りした場合」を選択します。

AndroidLocationSet.png

検知対象となるエリアを地図から選択します。
GPSの精度上、半径100m以下の縮尺は設定出来ません。

設定完了したら「Create trigger」を押下します。

if_this_then_that2.png

次に「that」を指定します。

先ほどと同様にアプリ群の中から「Salesforce」を選択します。
※この時、Salesforceへのログイン要求があるので対象組織にログインします。

salesforce.png

ここでSalesforceで使用できるアクションが選択できます。
 ・「Post Chatter message (Chatterへメッセージを投稿)」
 ・「Post Chatter link (Chatterへリンクを投稿)」
 ・「Post Chatter file (Chatterへファイル添付)」
 ・「Advanced: Insert a Record (高度な操作: レコード挿入)」
今回は「Advanced: Insert a Record (高度な操作: レコード挿入)」を選択します。

salesforceSet.png

・SObject
 レコードを登録する対象のオブジェクトを選択
 ※今回はカスタムオブジェクト「帰宅履歴」を選択
・Field Name1 ~ 5
 カスタムオブジェクトの項目API名を設定
 項目は最大5項目まで指定可能
・Field Value1 ~ 5
 Android Locationより取得できる値を設定
 緯度、経度、日時、住所、地図URL、In or Outが選択可能

それぞれ対応するField Valueの値がField Nameに設定されます。
新規レコード登録の際に値を設定出来る項目は最大5項目までとなります。

設定が完了したら「Cerate action」ボタンを押下します。

finish.png

最後に「Finish」ボタン押下で設定完了です。
これで、指定エリアを出入りするたびにSalesforceへその情報が蓄積されていきます。

次にAndroid LocationとLINEとの連携用アプレットを作成します。
トリガとなるAndroid Locationは先ほどと同様の設定を行い「that」でLINEアプリを指定します。
※こちらもこのタイミングで対象のLINEアカウントの認証があります。

LINE.png

LINEで指定できるアクションは一つでメッセージ送信のみなので、こちらを選択します。

LINEset.png

・Recipient
 投稿対象を選択
 個人、およびグループを指定可能
 今回は「帰宅連絡」グループを指定
・Message
 投稿用メッセージを設定
 Android Locationの取得項目を差し込む事が可能
・Photo URL
 画像表示したい場合のURLを指定

設定が完了したら「Cerate action」ボタンを押下します。

finish2.png

最後に「Finish」ボタン押下で設定完了です。

これで今回の連携に必要な2つのアプレットの作成が完了です。

それでは動作確認をしてみましょう。

動作確認のための事前準備

Android Locationを使用するためには、GPS付のスマホにIFTTTアプリを
インストールする必要があります。
GooglePlayよりIFTTTアプリをインストールし、ログインして先ほど登録したアプレットを確認します。
ただしくアプレットが読み込めていたら設定完了です。

IFTTT_APP.png

作成したIoTを試してみる

<初期状態>

salesforce_ini.png

LINE_ini.png

<地図エリアの出入り発生後>

salesforce_data.png

LINE_data.png

外出と帰宅でほぼ同時刻にSlaesforceとLINEに通知が届きました。
IN or OUT のexitedはエリア外に出た時、enteredはエリアに入った事を示します。
その他の座標や地図情報は仕掛けたAndroid Locationのものとなるため、複数のエリアを
指定している場合に役立ちそうです。

おわりに

今回の仕掛けは、子供が冬休みに入ったこともあり以外と重宝しています。
IFTTTやZapierやMicrosoft Flowの合わせ技で、さらに幅広いアプリ間連携が
可能なためアイデア次第で、もっと色々なIoTを実践する事が可能です。

ぜひ参考にして頂き、皆様もIoTを体験してみてください。