本ハンズオンでは以下の内容を作成します。
※ LINEをご利用でない方、ID/パスワードがわからない方は メール送信版 をご利用ください。
このドキュメントを進めるにあたり以下のデバイスが必要となります。
このドキュメントを進めるにあたり以下のアカウントが必要となります。
このドキュメントを進めるにあたり以下の知識が必要となります。
AWSのアカウントをお持ちでないかたは こちら から作成してください。 LINEアカウントを保有していない方、IDを忘れた方はスタッフにお知らせください。
Enterprise Button をクリックした際に SORACOM Harvest に対して位置情報とクリックタイプを保存する方法を解説します。
SORACOM ユーザーコンソール(SAMユーザログイン) へアクセスします。SAMユーザのログイン画面が表示されますので、以下の通り入力し [ログイン] ボタンをクリックしてください。
項目 | 入力内容 |
---|---|
オペレータID | ボタンに付属しているカードに記載されているOPから始まる文字列 |
ユーザ名 | user |
パスワード | Sora20191102 |
以下のような「SIM 管理」画面が表示されたらログイン完了です。
ユーザーコンソール の “Menu” から “SIM グループ” を選択します。
“グループを作成する” (グループが存在しない場合) あるいは “追加” ボタンよりグループを作成します。任意の名前 (たとえば “handson-button”) をつけて “グループ作成” ボタンをクリックします。
“Menu” から “SIM 管理” を選択します。
Enterprise Button の SIM の左端にある チェックボックスを選択し、”操作” => “所属グループ変更” を選択します。
“新しい所属グループ” に作成したグループを選択し、”グループ変更” をクリックします。
所属させたグループの名前をクリックし、グループ設定の変更画面に遷移します。
”SORACOM Harvest 設定” を開き、”OFF” となっているスイッチをクリックして “ON” に変更します。”保存” をクリックすれば、Harvest が有効となります。ポップアップされる注意事項では “OK” をクリックします。“保存” をクリックしないと設定が変更されないのでご注意ください。
“SORACOM Air for Cellular 設定” を開き、”簡易位置測位機能” を “ON” に変更し、”保存” をクリックします。
“SORACOM Air for Cellular 設定” を開き、”バイナリパーサー設定” を “ON” に変更し、フォーマットに @button
と記載し、”保存” をクリックします。
いよいよ Enterprise Button を押します。ボタンをクリックし、 LED がオレンジ色となり、数秒後に緑色となればデータの送信は成功です。
Harvest 上のデータを以下の手順で確認します。
“Menu” から “SIM 管理” を選択します。
Enterprise Button の SIM の左端にある チェックボックスを選択し、”操作” => “データを確認” を選択します。
“データ” 列にて、”clickTypeName” が “SINGLE” であることを確認します。
マップピンアイコンを選択することで表示を地図に変更して、位置情報を確認します。左上の “+” や “-“ でズームを調整できます。”データ” にも $metadata.location
オブジェクトとしてで位置情報が入っています。
Enterprise Button は以下 3 種類のクリックに対応しています。それぞれぜひ試してみてください。連続してデータの送信をしたい場合は Harvest の画面にて「自動更新」を “ON” にしてみてください。
Enterprise Button から SORACOM Funk と AWS Lambda を介して クリックされた位置の情報を LINE へ通知する方法を解説します。
LINE Notify を開きます。
右上の ログイン
をクリックしLINE IDでログインします。
ログイン後、マイページを開きます。
下の方にある アクセストークンの発行(開発者向け)
の トークンを発行する
をクリックします。
ダイアログが開きます。トークン名に任意の名称を記入、 1:1でLINE Notifyから通知を受け取る
を選択し 発行する
をクリックします
トークンが発行されます。 コピー
をクリックしトークンの文字列をメモしておきます。(後で利用します)
実行モジュール一式をダウンロードし保存しておきます。
AWS Lambda 管理コンソール を開きます。
下記の画面が表示された場合は 関数の作成
をクリックします。
作成方法は 1から作成
を選択します。
続けて任意の関数名をつけ、ランタイムに Python 3.7
を選択、実行ロールに 基本的な Lambda アクセス権限で新しいロールを作成
とし 関数の作成
を選択します。
関数が作成されました。関数の編集画面が開きますので、
コードエントリタイプに .zipファイルをアップロード
を選択、関数パッケージの アップロード
をクリックし先程ダウンロードしたモジュールをアップロードします。
環境変数 line_token
に先ほど取得した LINE Notify の トークンを入力して、画面一番上の 保存
をクリックします。
Lambda の ARN をコピーしてメモ帳などに写しておきます。
以下のコードが表示されます。
import os
import requests
import json
def lambda_handler(event, context):
# 環境変数取得
line_token = os.environ['line_token']
# 位置情報取得
try:
location_lat = context.client_context.custom["location"]["lat"]
location_lon = context.client_context.custom["location"]["lon"]
except:
return 1
# メッセージ生成
message = "ボタンが押されました。\nおおよその位置:緯度:" + str(location_lat) + " 緯度:" + str(location_lon) + "\n https://www.google.com/maps/search/?api=1&query=" + str(location_lat) + "," + str(location_lon)
# LINE Notify呼び出し
data = push_line(line_token,message)
response = json.loads(data)
result = 0 if response['status'] == 200 else 1
return result
def push_line(line_notify_token,message):
line_notify_url = 'https://notify-api.line.me/api/notify'
payload = {'message': message }
headers = {'Authorization': 'Bearer ' + line_notify_token}
line_notify = requests.post(line_notify_url, data=payload, headers=headers).text
return line_notify
作成したLambda関数にSORACOM Funkからアクセスできるよう、IAMユーザを作成し権限を付与します。
IAM管理コンソール を開き、続けて ポリシーの作成
をクリックします。
ポリシーの作成画面でJSONを選択し、以下の内容を入力します。Resourceには先程コピーしたLambdaのARNを入力します。入力が終わったら ポリシーの確認
をクリックします。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowAuroraToExampleFunction",
"Effect": "Allow",
"Action": "lambda:InvokeFunction",
"Resource": "先ほどコピーしたLambdaのARN"
}
]
}
続いてポリシー名を入力し、ポリシーの作成ボタンをクリックします。
作成したIAMポリシーをアタッチしたユーザを作成します。
左側メニューのユーザを選択し、ユーザを追加
ボタンをクリックします。
作成画面が開きますので、ユーザ名を入力、プログラムによるアクセス
を選択し次のステップに進みます。
アクセス許可の設定を行います。 既存のポリシーを直接アタッチ
を選択し、先程作成したポリシー名を選択し紐付けます。
タグは不要です。続けて 確認
をクリックします。
確認画面で ユーザの作成
をクリックします。
作成したユーザーの アクセスキーID およびシークレットアクセスキーをコピーします。
SORACOM ユーザーコンソールの右上のユーザー名をクリックし、セキュリティ
を選択します。
“認証情報ストア” => “認証情報を登録” を選択します。
“認証情報 ID” は任意に記載し、先ほどコピーした AWS ユーザーのアクセスキー ID およびシークレットアクセスキーを入力し、”登録” をクリックします。
ここまでで設定が完了しました。 ボタンを押すと、自分のスマートフォンのLINEに通知が来るはずです。 URLをクリックすると、Google Map上に位置が表示されます。 (基地局情報を基準としているため、誤差があります)
確認できない場合は、Lambda のメトリックにて「ログが出ているか」「エラーが出ていないか」を確認してください。
今回は貸出ボタンのため問題ありません。
簡易位置測位機能、Harvest、Funk を有効にしたグループ配下に SIM があると基本使用料金が発生します。詳細は下術の目安となる料金
の章をご確認さい。
これらを解約したい場合は、それぞれの機能についてグループで無効化します。
ユーザーコンソールの “SIM 管理” メニューより、作成した SIM のグループ名を選択します。
“SORACOM Funk 設定” を開き、”OFF” にし “保存” をクリックします。
“SORACOM Harvest 設定” を開き、OFF にし “保存” をクリックします。
“SORACOM Air for Cellular 設定” を開き、”簡易位置測位機能” および “バイナリパーサー設定” を “OFF” にし “保存” をクリックします。 5.ユーザーコンソール から 対象の SIM のチェックボックスを選択 => “操作” => “所属グループ変更” を選択します。
“グループ解除” を選択します。