はじめに
大学との企業連携の取り組みとして、IoT.kyotoが講義を行うことになりました。
そこで、学生さんがIoTを簡単に体験できるIoTシステムを作ることになり
今回はSORACOM LTE-M Button Plusを使って簡単なIoTシステムを作成しました。
使用サービス
デバイス:SORACOM LTE-M Button Plus
SORACOMサービス:SORACOM Funnel
AWSサービス:AWS IoT Core、AWS Lambda
LINEサービス:Messaging API
今回のアーキテクチャ
SORACOM LTE-M Button Plus
SORACOM LTE-M Button Plus は3種類のクリックに応じたアクションをクラウド側で設定できる、自分だけのIoTボタンを作れるデバイスです。
本商品はボタンによるクリック入力に加え、備え付けの接点端子への入力時間にあわせて3種類の出力情報を送信することが可能です。
人間がボタンをクリックする用途だけでなく、マグネットセンサーやフロートセンサーなど接点を活かした応用で活用の幅を広げます。
LTE-M通信を内蔵し、単四電池で駆動しますので、Wi-Fi環境に依存せず、屋外でもご利用いただけます。
https://soracom.jp/store/5207/
今回は、このSORACOM LTE-M Button Plusを押すと、ご自身のLINEへ通知されるという簡単なIoTシステムを作成していきます。
ハンズオン
事前準備
- SORACOMのユーザーコンソールにSORACOM LTE-M Button PlusのSIMが登録されていること
- LINEアカウントを持っていること
注意事項
- 当記事の内容は有料サービスを利用します。発生した料金は実施者負担となりますので、ご理解の上で実施ください。
- LINEのMessaging APIは無料で使用することができますが、無料で送れるメッセージの通数はプランによって変わりますので詳しくは公式ページをご確認ください。
https://developers.line.biz/ja/docs/messaging-api/overview/#line-official-account-plan
ステップ1:IAMユーザーを作成する
- AWSマネジメントコンソールにサインインする
- 「IAM」を開く
- 左のタブから「ユーザー」を開く
- [ユーザーを追加]をクリックし、ユーザーを作成する
- 「ユーザー名」に「iot-test」と入力し、「アクセスキー」にチェックをつけ、[次のステップ:アクセス権限]をクリックする
- 既存のポリシーである「AWSIoTDataAccess」をアタッチし、[次のステップ:タグ]をクリックする
- 「タグの追加(オプション)」では、何も入力せずに次へ進む
- 設定した内容に問題がないことを確認し、[ユーザーを作成する]をクリックする
- csvをダウンロードするか、アクセスキーIDおよびシークレットアクセスキーをメモ帳などに控え、[閉じる]をクリックする
ステップ2:AWS IoT Coreのエンドポイントを確認する
- 「IoT Core」を開く
- 左のタブから「設定」を開く
- 「デバイスデータエンドポイント」に記載されている「エンドポイント」をメモ帳などに控えておく
ステップ3:SORACOMユーザーコンソールで認証情報を登録する
- SORACOMユーザーコンソールにログインする
- 画面右上に表示されるユーザーのプルダウンメニューを開き、[セキュリティ]をクリックする
- 「認証情報ストア」 ー [認証情報を登録]をクリックする
- 以下の情報を設定し、[登録]をクリックする
認証情報ID:iot-test
概要:iot-test
種別:AWS認証情報
AWS ACCESS KEY ID:「IAMユーザーの作成」で取得・メモしたアクセスキーIDを入力
AWS SECRET ACCESS KEY:「IAMユーザーの作成」で取得・メモしたシークレットアクセスキーを入力
ステップ4:SIMグループを作成する
- 画面左上のメニューから、「SORACOM AIR FOR セルラー」 ー 「SIMグループ」をクリックする
- [+ 追加]をクリックする
- 「iot-test-group」を入力し、[グループ作成]をクリックする
- 「基本設定」タブ ー 「SORACOM Air for セルラー設定」を開く
- 下へスクロールし、以下を設定し、[保存]をクリックする
バイナリパーサー:ON
フォーマット:@button
- 「SORACOM Funnel 設定」を開く
- 以下を設定し、[保存]をクリックする
転送先サービス:AWS IoT
転送先URL:https://<「AWS IoT Coreのエンドポイントを確認する」でメモしたエンドポイント>/button_topic/
※画像はエンドポイントが「abcdefghijklmn-opq.iot.ap-northeast-1.amazonaws.com」の場合の例
認証情報:iot-test
SIM IDを追加:ON
ステップ5:SIMグループをSORACOM LTE-M Button PlusのSIMに割り当てる
- 画面左上のメニューから、「SORACOM AIR FOR セルラー」 ー 「SIM管理」をクリックする
- SORACOM LTE-M Button PlusのSIMにチェックをつけ、右クリックする
- [所属グループを変更]をクリック
- 「新しい所属グループ」で「iot-test-group」を選択し、[グループ変更]をクリックする
- これでSORACOMサービスの設定は完了です
ステップ6:LINEの設定
- LINE Developersにログインする
- [LINEアカウントでログイン] をクリックする
- [QRコードログイン] をクリックする
- 表示されたQRコードをLINEから読み込む
- スマホとパソコンを行き来し、以下の通り設定する
- [ログイン] ボタンをタップ(スマホ)
- 4桁の番号を確認(パソコン)
- 4桁の番号を入力(スマホ)
- [本人確認] ボタンをタップ(スマホ)
- パソコンの画面に戻り、[LINEビジネスIDを作成] をクリックする
- 以下の入力し、[Create my account]をクリックする ※日本語になっている場合があります
Developer name:任意の名前を入力(yamada)
Your email:任意のメールアドレスを入力
I have read・・・:チェックをつける - 以降の手順が日本語のため、右下の「English」を「日本語」に変更する
- [新規プロバイダー作成] をクリックする
- プロバイダー名に名前(例:yamada)を入力し、[作成] をクリック
- [Messaging API]をクリックする
- 以下を設定し、[作成]をクリックする
会社・事業者の所在国・地域:日本
チャネル名:名前を入力(例:yamada)
チャネル説明:ハンズオン用
大業種:個人
小業種:該当するものを選択
メールアドレス:任意のメールアドレスを入力
LINE公式アカウント利用規約の内容に同意します:チェックをつける
LINE公式アカウントAPI利用規約の内容に同意します:チェックをつける
- [OK] をクリックする
- [同意する] をクリック
- 「チャネル基本設定」タブを下にスクロールし、「あなたのユーザーID」をメモ帳などに控える
- 「Messaging API設定」タブへ移動し、「チャネルアクセストークン」の[発行] をクリックする
- 「チャネルアクセストークン」をメモ帳などに控える
- 「Messaging API設定」タブの上の方へスクロールし、表示されているQRコードをLINEから読み込んで、友だちに追加する
- このような画面が表示されれば、LINEの設定は完了です
ステップ7:Lambda関数を作成する
- AWSマネジメントコンソールにサインインする
- 「Lambda」を開く
- 左のタブから「関数」を開き、[関数の作成]をクリックする
- 以下を設定し、[関数の作成]をクリックする
オプション:一から作成
関数名:iot-test
ランタイム:Python3.9 - 設定画面が表示されるため、下へスクロールし、コードソースへ移動する
- コードソースに記載されている内容を全て削除する
- 以下のコードをコピーし、貼り付ける
import json import urllib.request def lambda_handler(event, context): print(event) text = "ボタンが押されました。" url = 'https://api.line.me/v2/bot/message/push' headers = { 'Content-Type': 'application/json', 'Authorization': 'Bearer ' + 'チャネルアクセストークン' } body = { 'to': "あなたのユーザーID", 'messages': [ { "type": "text", "text": text, } ] } req = urllib.request.Request(url, data=json.dumps(body).encode(), method='POST', headers=headers) urllib.request.urlopen(req) return { 'statusCode': 200, }
- 「LINEの設定」でメモした以下の内容を変更し、最後に[Deploy]をクリックする
あなたのユーザーID
チャネルアクセストークン
※ダブルクォーテーション(””)、シングルクォーテーション(’’)を削除しないように注意 - ここでアーキテクチャのおさらいをします
- あとはIoT Coreの設定をするだけですが、赤枠で囲んだ部分がちゃんと動作するのかを確認しておきます
- [Test | ▽] ー [Configure test event]をクリックする
- 「イベント名」に「test」を入力し、[保存]をクリックする
- [Test | ▽]をクリックする
- 以下の画面のように「ボタンが押されました。」とLINEに通知されることを確認する
※通知されていない場合は、変更した「あなたのユーザーID」および「チャネルアクセストークン」に誤りがないか確認してみてください
ステップ8:IoT Coreのルールを作成する
- AWSマネジメントコンソールにサインインする
- 「IoT Core」を開く
- 左のタブから「メッセージのルーティング」ー「ルール」を開き、[ルールを作成]をクリックする
- 以下を入力し、[次へ]をクリックする
ルール名:iot_test
ルール説明:ハンズオン用 - 以下を入力し、[次へ]をクリックする
SQLステートメント:SELECT * FROM ‘button_topic/#’ - 以下を設定し、[次へ]をクリックする
ルールアクション:Lambda
Lambda関数:iot-test
※「Lambda関数を作成する」で作成したLambda関数を指定 - 確認画面が表示されるため、[作成]をクリックする
- これでIoT Coreの設定は完了です。
ステップ9:SORACOMボタンを押してみよう!
全ての設定が完了したので、SORACOMボタンを押してみましょう!
※ボタンを押した後にオレンジ色のライトが点滅しますが、これはネットワークに接続している最中です。最後に緑点灯になれば、LINEに通知が来るはずです
※緑点灯ではなく、赤点滅や赤点灯の場合は、設定に誤りがあるか電池残量がないので、見直しをしてみてください
まとめ
このようにSORACOM、AWS、LINEを使用することで簡単なIoTシステムを作成することができます。
今回使用したLambda関数内の「ボタンが押されました。」部分を変更すれば、好きなメッセージを通知できますし、SORACOMボタンには3種類のアクション(1回押し、2回押し、長押し)があるので、Lambda内で処理を分岐させたりもできます。
是非、ご自身だけのIoTシステムを作成してみてください!