explorer2019-handson

SORACOM LTE-M Enterprise Buttonで位置情報を通知するハンズオン(※メール経由通知版)

概要

本ハンズオンでは以下の内容を作成します。

※ LINEで通知する版は こちら です。

アーキテクチャ

必要なもの

このドキュメントを進めるにあたり以下のデバイスが必要となります。

このドキュメントを進めるにあたり以下のアカウントが必要となります。

このドキュメントを進めるにあたり以下の知識が必要となります。

AWSのアカウントをお持ちでないかたは こちら から作成してください。 LINEアカウントを保有していない方、IDを忘れた方はスタッフにお知らせください。

Harvest に Enterprise Button の位置情報とクリックタイプを保存する

Enterprise Button をクリックした際に SORACOM Harvest に対して位置情報とクリックタイプを保存する方法を解説します。

■ ユーザーコンソールへログインする

SORACOM ユーザーコンソール(SAMユーザログイン) へアクセスします。SAMユーザのログイン画面が表示されますので、以下の通り入力し [ログイン] ボタンをクリックしてください。

項目 入力内容
オペレータID ボタンに付属しているカードに記載されているOPから始まる文字列
ユーザ名 user
パスワード Sora20191102

以下のような「SIM 管理」画面が表示されたらログイン完了です。

■ グループを作成し、Enterprise Button を所属させる

  1. ユーザーコンソール の “Menu” から “SIM グループ” を選択します。

  2. “グループを作成する” (グループが存在しない場合) あるいは “追加” ボタンよりグループを作成します。任意の名前 (たとえば “handson-button”) をつけて “グループ作成” ボタンをクリックします。

  3. “Menu” から “SIM 管理” を選択します。

  4. Enterprise Button の SIM の左端にある チェックボックスを選択し、”操作” => “所属グループ変更” を選択します。

  5. “新しい所属グループ” に作成したグループを選択し、”グループ変更” をクリックします。

■ Harvest の利用を開始する

  1. 所属させたグループの名前をクリックし、グループ設定の変更画面に遷移します。

  2. ”SORACOM Harvest 設定” を開き、”OFF” となっているスイッチをクリックして “ON” に変更します。”保存” をクリックすれば、Harvest が有効となります。ポップアップされる注意事項では “OK” をクリックします。“保存” をクリックしないと設定が変更されないのでご注意ください。

■ 簡易位置測位機能の利用を開始する

“SORACOM Air for Cellular 設定” を開き、”簡易位置測位機能” を “ON” に変更し、”保存” をクリックします。

■ バイナリパーサー を設定する

“SORACOM Air for Cellular 設定” を開き、”バイナリパーサー設定” を “ON” に変更し、フォーマットに @button と記載し、”保存” をクリックします。

■ Enterprise Button を押して Harvest を確認する

いよいよ Enterprise Button を押します。ボタンをクリックし、 LED がオレンジ色となり、数秒後に緑色となればデータの送信は成功です。

Harvest 上のデータを以下の手順で確認します。

  1. “Menu” から “SIM 管理” を選択します。

  2. Enterprise Button の SIM の左端にある チェックボックスを選択し、”操作” => “データを確認” を選択します。

  3. “データ” 列にて、”clickTypeName” が “SINGLE” であることを確認します。

  4. マップピンアイコンを選択することで表示を地図に変更して、位置情報を確認します。左上の “+” や “-“ でズームを調整できます。”データ” にも $metadata.location オブジェクトとしてで位置情報が入っています。

  5. Enterprise Button は以下 3 種類のクリックに対応しています。それぞれぜひ試してみてください。連続してデータの送信をしたい場合は Harvest の画面にて「自動更新」を “ON” にしてみてください。

    • シングル: 短く(1.2 秒未満) 1 回押す
    • ダブル: 2 秒以内にシングルクリックを 2 回行う
    • ロング: 1.2 秒以上押し続ける。

位置情報をSORACOM Funk 経由でメールで通知する

Enterprise Button から SORACOM Funk と AWS Lambda を介して クリックされた位置の情報をメールで通知する方法を解説します。

■ Amazon SESの設定

Amazon SESからメールが発信できるよう、設定を行います。

  1. Amazon SES管理コンソール を開きます。   ※東京リージョンでは提供されていないため、Oregonを指定しています。

  2. メニューの Email Addresses を開き、 Verify a New Email Addressをクリックします

  3. Verify a New Email Addressのダイアログが開きます。ご自身のメールアドレス(通知先)を入力し、Verify This Email Addressをクリックします。

  4. Verification Email Sent と表示されます。Close をクリックします。

  5. 設定したメールアドレスに通知メールが届きます。メール本文中に記載のURLにアクセスすると認証が完了します。   Verification Statusが verified になったことを確認します。

※送信元と送信先のメールアドレスを別にする場合は両方の登録が必要です

■ Amazon IAMの設定

Lambda関数からメールが送信できるロールを作成します。

  1. IAM管理コンソール を開き、続けて ポリシーの作成 をクリックします。

  2. サービスに ses と入力し、アクションに SendEmailSendRawEmailを選択します。

  3. リソースには すべてのリソース を選択し、ポリシーの確認 をクリックします。

  4. ポリシー名に任意の名前を入力し、ポリシーの作成ボタンをクリックします。

  5. 続けてロールの作成を行います。   ロール メニューから ロールの作成をクリックします。

  6. ”このロールを使用するサービスを選択” から Lambda を選択し、次のステップに進みます。

  7. “Attachアクセス権限ポリシー” から、上記で作成したポリシーを選択します。

  8. タグが不要ですので、確認ボタンをクリックします。

  9. 最後にロール名を入力し ロールの作成 ボタンをクリックします。

■ AWS Lambda を設定する

位置情報をメールで通知を行うLambda関数を作成します。

  1. AWS Lambda 管理コンソール を開きます。

  2. 下記の画面が表示された場合は 関数の作成 をクリックします。

  3. 作成方法は 1から作成 を選択します。 続けて任意の関数名をつけ、ランタイムに Python 3.7 を選択、実行ロールに 既存のロールを使用する とし、ロール名に上記で作成したロールを指定します。

  4. 関数が作成されました。関数の編集画面が開きますので、下記のソースコードを貼り付けます。

  5. 環境変数 src_mail dst_mail に送信元メールアドレス、送信先メールアドレスを入力して、画面一番上の 保存 をクリックします。

  6. Lambda の ARN をコピーしてメモ帳などに写しておきます。

ソースコード

以下のコードをコピー&ペーストで貼り付けてください。

import boto3
import os
import json

REGION = "us-west-2"

def lambda_handler(event, context):
    # 環境変数取得
    src_mail = os.environ['src_mail']
    dst_mail = os.environ['dst_mail']

    # 位置情報取得
    try:
        location_lat = context.client_context.custom["location"]["lat"]
        location_lon = context.client_context.custom["location"]["lon"]
    except:
        return 400

    # メッセージ生成
    Subject = "ボタンが押されました"
    Body    = "おおよその位置:緯度:" + str(location_lat) + " 緯度:" + str(location_lon) + "\n https://www.google.com/maps/search/?api=1&query=" + str(location_lat) + "," + str(location_lon)

    # メール送信
    data = push_email(src_mail,dst_mail,Subject,Body)
    result = data['ResponseMetadata']['HTTPStatusCode']
    return result

def push_email(source,destination,subject,body):
    client = boto3.client('ses',region_name=REGION)
    response = client.send_email(
        Source=source,
        Destination={'ToAddresses':[destination]},
        Message={'Subject':{'Data':subject},'Body':{'Text':{'Data':body}}}
        )
    return response

■ Lambda 実行用の AWS IAM ユーザーを作成する

作成したLambda関数にSORACOM Funkからアクセスできるよう、IAMユーザを作成し権限を付与します。

IAMポリシーの作成

  1. IAM管理コンソール を開き、続けて ポリシーの作成 をクリックします。

  2. ポリシーの作成画面でJSONを選択し、以下の内容を入力します。Resourceには先程コピーしたLambdaのARNを入力します。入力が終わったら ポリシーの確認 をクリックします。

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "AllowAuroraToExampleFunction",
          "Effect": "Allow",
          "Action": "lambda:InvokeFunction",
          "Resource": "先ほどコピーしたLambdaのARN"
        }
      ]
    }
    

  3. 続いてポリシー名を入力し、ポリシーの作成ボタンをクリックします。

IAMユーザの作成

作成したIAMポリシーをアタッチしたユーザを作成します。

  1. 左側メニューのユーザを選択し、ユーザを追加 ボタンをクリックします。

  2. 作成画面が開きますので、ユーザ名を入力、プログラムによるアクセス を選択し次のステップに進みます。

  3. アクセス許可の設定を行います。 既存のポリシーを直接アタッチ を選択し、先程作成したポリシー名を選択し紐付けます。

  4. タグは不要です。続けて 確認 をクリックします。

  5. 確認画面で ユーザの作成 をクリックします。

  6. 作成したユーザーの アクセスキーID およびシークレットアクセスキーをコピーします。

■ AWS IAM ユーザーの認証情報を SORACOM に登録する

  1. SORACOM ユーザーコンソールの右上のユーザー名をクリックし、セキュリティ を選択します。

  2. “認証情報ストア” => “認証情報を登録” を選択します。

  3. “認証情報 ID” は任意に記載し、先ほどコピーした AWS ユーザーのアクセスキー ID およびシークレットアクセスキーを入力し、”登録” をクリックします。

■ Funk を設定する

  1. ユーザーコンソールの “SIM 管理” メニューより、作成した SIM のグループ名を選択します。
  2. “SORACOM Funk 設定” を開き、”ON” にし、先ほど登録した認証情報やコピーした Lambda の ARN を入力して “保存” をクリックします。

■ Enterprise Button を押して メール通知 を確認する

ここまでで設定が完了しました。 ボタンを押すと、設定したメールアドレスに通知が来るはずです。 URLをクリックすると、Google Map上に位置が表示されます。 (基地局情報を基準としているため、誤差があります)

確認できない場合は、Lambda のメトリックにて「ログが出ているか」「エラーが出ていないか」を確認してください。

サービスの解除と課金の停止(参考)

今回は貸出ボタンのため問題ありません。

簡易位置測位機能、Harvest、Funk を有効にしたグループ配下に SIM があると基本使用料金が発生します。詳細は下術の目安となる料金の章をご確認さい。 これらを解約したい場合は、それぞれの機能についてグループで無効化します。

  1. ユーザーコンソールの “SIM 管理” メニューより、作成した SIM のグループ名を選択します。

  2. “SORACOM Funk 設定” を開き、”OFF” にし “保存” をクリックします。

  3. “SORACOM Harvest 設定” を開き、OFF にし “保存” をクリックします。

  4. “SORACOM Air for Cellular 設定” を開き、”簡易位置測位機能” および “バイナリパーサー設定” を “OFF” にし “保存” をクリックします。 5.ユーザーコンソール から 対象の SIM のチェックボックスを選択 => “操作” => “所属グループ変更” を選択します。

  5. “グループ解除” を選択します。

■ 目安となる料金