【AWS IoTボタンでメッセージ送信 1 】AWS IoT 1-Clickで簡単にSMS送信までやる
スポンサーリンク
AWS IoT ボタンを購入し、いろいろ遊んでみた。
まずは使い始めの導入編として、ボタンを押したら、ケータイのショートメールにメッセージが送信される、というところまでの内容を備忘録として記述する。
ここをポチッと押したら
こんなSMSメッセージが来る
という内容
[前提]
[料金について]
まずこれを利用するには、料金が発生する。(本体デバイスとは別に)
料金 - AWS IoT 1-Click | AWS
こちらによると、デバイスを登録して、有効にしたデバイスの数だけ料金が発生する。
例えば、1ヶ月間、1台のデバイスを有効にしていたら0.25ドル(約27円)。100台なら25ドル(約2700円)。
遊びで1台だけやるなら問題ないでしょう。また、使わないときは無効にしていれば料金は発生しないので、そのときは無効にするのを忘れずに。(日割りになる)
また、今回は導入としてはじめから用意されているSMS送信の仕組みを利用するわけだが、そこにはAWSのSNSというサービスを利用していてそこの料金が発生する。これはメール送信する(ボタンを押す)ごとに発生。(料金 - Amazon SNS | AWS)ぼくの場合は、テストとして10回くらい送信したら0.65ドル(約70円)かかった。
うーん。これはなかなか高いので、たくさん送信するのは控えたほうがよい。
とりあえずここは、導入編として数十円身銭を切ってやってみよう。
(これをSlack送信にするとこの部分は無料になるので、それは別な記事に書く)
ということで目次はこんな感じ
- [準備1] AWSアカウント
- [準備2] デバイスの購入
- [準備3] スマホアプリをダウンロード
- [準備4] AWSコンソールにサインインとリージョン変更
- 1. AWSにデバイスを登録する(AWSコンソール)
- 2. AWSにデバイスを登録する(スマホアプリとデバイス)
- 3. プロジェクトを作成する
- 5. デバイスのボタンを押してみる
- デバイスやプロジェクトの管理
- おまけ(請求金額)
スポンサーリンク
[準備2] デバイスの購入
本体のデバイスも当然必要。AWS IoT ボタンの購入で本体を購入する。
[準備4] AWSコンソールにサインインとリージョン変更
AWSコンソールにサインインする。(コンソールってのはブラウザで操作するやつ)
このときサインインするのは、IAMユーザーでするとよいでしょう。
まぁルートユーザーでも作れるが、AWS的に推奨されていないので、IAMユーザーを作成してそのユーザーで操作していくのがよい。
IAMユーザーについては以前書いた。作成方法もあるのでよかったらどうぞ。
ahrk-izo.hatenablog.com
リージョンを変更する
たいていサインインすると、「リージョンは米国東部(バージニア北部)」だったりするので、「アジアパシフィック(東京)」に変更する。
もちろんリージョンは東京でなくてもいいんだけど、どこのエリアのデータセンター使うかだから、住んでいる場所の近くのほうが通信速度はやっぱり速いので近くのリージョンにしておくのがベスト。
ちなみに、これから利用する「AWS IoT 1-Click」のサービスは、米国、EU、東京のリージョンのみ対応している(2019.11現在)。東京あってよかった。
さて、準備が終わったので、さっそく「AWS IoT 1-Click」のサービスを使っていく。
1. AWSにデバイスを登録する(AWSコンソール)
購入したデバイスを自分のAWS環境に登録することから始まる。
まずAWSコンソールで、「AWS IoT 1-Click」サービスを選択する。
検索で「iot」などと入力すれば候補としてでてくる。
「登録コードまたは登録するデバイスのID」に購入したデバイスのIDを入力する
AT&T LTE-M Button 購入確認メールに記載せれている登録コード(例: C-123456789012)を使用できます。デバイスIDはデバイスまたはパッケージにDSNまたはS/Nとして印刷されています。
このID(DSN)は、本体や箱に書いてある。
ちなみに、
デバイスの登録とは、AWS IoT 1-Click デバイスをアカウントに関連付ける方法です。新しく登録されたデバイスはデフォルトでは「無効」ですが、プロジェクトに追加すると即時アクティブ化されます。
と書いてあるので、デバイスを登録しただけではまずは無効となっているので、料金は発生しない。
ID(DSN)を入力したら、登録
デバイス ID が入力されました。このプロセスを完了には、そのデバイスを手元に用意し、物理的にボタンをクリックして登録の最終処理を実行する必要があります。iOS または Android アプリを使用して AWS IoT エンタープライズボタンを設定することをお勧めします。
ここに書いてあるとおり、ここまではデバイスの番号を登録しただけで、本体と通信はできていない。通信まで完了して登録が完了する。
「登録」を押したらコンソール(ブラウザ)はこんな画面になる
2. AWSにデバイスを登録する(スマホアプリとデバイス)
スマホで「AWS IoT 1-Click」アプリを起動する。
AWSアカウントでサインインする。こちらはメールアドレス使ったルートユーザーで。
日本語の方が安心なので、日本語に変更する。
メールアドレスと、パスワードを入力。
サインインできたらセットアップする。
デバイスの登録はコンソールでやったので、省略。下にスクロール。
※ここでのAWSリージョンは「米国西部(オレゴン)」でよい。登録自体は現在(2019.11)このリージョンにすべて登録されるらしい。メールを送信させるなどのプロジェクトは東京リージョンでも作成できる(ややこしい)
「Wi-Fiを設定」
デバイスIDのスキャンをする
この箱に貼ってあるバーコードをスキャンする
スキャンに成功(もし失敗した場合は手入力でやってみる)
「設定」に進む
しばらくスマホアプリの指示通りすすむ。
デバイスを約6秒間押す。青く点滅したら離す。(押しすぎると赤く点灯してしまって失敗する。そうなったらアプリで「←」を押してもう一度やればよい)
そうそう、BluetoothはONにしておくこと。
自宅のWi-Fiを選び、パスワードを入力して「設定」
(「マイWi-Fiネットワークを保存」はとりあえずやらなかった)
※ここまで、青く点滅している間に行うこと。できなかったら「←」で戻ってもう一度。
処理中…
デバイスの点滅が、青→白→緑に変わったら成功
スマホの画面はこうなる
AWSコンソール(ブラウザ)の画面を見ると、「1/1 登録済み」となっている。成功だ。「完了」を押す。
管理 > デバイス
デバイスが登録されているのが確認できる。デバイスリージョンは「us-west-2」、つまり米国西部(オレゴン)に登録されている。
プロジェクトはまだ作成していないので、「無効」になっている。
ここまでできれば、デバイスの登録は完了。
あとはボタンを押したらSMSが送信されるプロジェクトを作っていく。
スポンサーリンク
3. プロジェクトを作成する
「ボタンを押したらSMSが送信される」というプロジェクトを作成する。
具体的には「プロジェクト」を作成し、そのプロジェクトに登録する「プレイスメント」というのを作成する。
管理 > プロジェクト
「プロジェクトの作成」
プロジェクト名と説明(省略可)を入力し、「次へ」
(プロジェクト名:test-project)
デバイステンプレートの定義。「開始」をクリック
ここに書いてある通り、デバイステンプレートは、ボタンが押されたらどのLambda関数がキックされるかを指定する。ここではAWS IoT 1-Clickで予め用意されている「SMSを送信する」Lambda関数を使うので、自分で用意する必要はない。
(逆に言うと、自分でLambdaを用意できれば、他のことに応用できる。Slackに送信するとか)
デバイスタイプは「すべてのボタンタイプ」しかないようなので、それをクリック
デバイステンプレート名とアクションを指定する。
デバイステンプレート名:send-sms
アクション:SMSを送信する
「SMSを送信する」を選択すると、下に電話番号とメッセージの内容を入力するフォームが現れるので、それぞれ入力し「プロジェクトの作成」
(必須の電話番号のデフォルト値、必須のSMSメッセージのデフォルト値)
※国際電話になるので、090ではなく、+8190から始める。
※属性の名前は空でよい
「プロジェクトとテンプレートが正常に作成されました」
これでプロジェクトはできた。でもまだ動かない。
このプロジェクトに登録するプレイスメントを作成する。
「プレイスメントの作成」
プレイスメント名を入力し、「デバイス選択」をクリック
(プレイスメント名:test-placement)
先程登録したデバイスのID(DSN)であること確認して、選択。
プレイスメントの属性は、messageとPhoneNumberが先程登録したメッセージと電話番号であること確認して、「プレイスメントの作成」
プレイスメントができた
ダッシュボードに戻り、内容を確認する。
管理 > プロジェクト
作成したプロジェクト(test-project)が登録されている。
管理 > デバイス
デバイスが「有効」になっている。これで使えるぞ!
5. デバイスのボタンを押してみる
ここまでくればもう動くはず!
ボタンをポチっ
2〜3秒後
スマホにSMSが届いた!
登録したメッセージに、デバイスのDSNと「SINGLE」という文字。この「SINGLE」というのはボタンのクリックタイプ。実はクリックタイプは3種類あり、それぞれ以下のようになっている。
- SINGLE : シングルクリック
- DOUBLE : ダブルクリック
- LONG : 長押し
用意されているLambda関数の中でこのクリックタイプを認識して表示していること想像できる。自分でこのLambda関数にかかれているプログラムを編集できれば、いろいろできそうだ。それはまた別な記事に書く。
(2019/11/30 追記)
このLambda関数を編集してメッセージを確認する記事を書いた。興味ある方はどうぞ。
ahrk-izo.hatenablog.com
デバイスやプロジェクトの管理
使わないときは、たとえわずかでも料金が発生するので、無効化するとよい。
デバイスの無効化は、
管理 > デバイス > デバイスを選択して > アクション > 選択したデバイスの無効化
プロジェクトに登録したプレイスメントの編集は、
管理 > プロジェクト > プロジェクト選択し中に入り > アクション > 編集 からできる。
これで導入編として、AWS IoTボタンを押して、SMS送信ができた。
その後は、これを改良して、ボタンのクリックタイプによってメッセージの内容を変えたり、SMSでなくSlackへ送信するようにしていく。
スポンサーリンク
おまけ(請求金額)
テストとして10回くらいSMS送信をした。料金はいくらくらい発生しているか確認してみる。
マイ請求ダッシュボード
0.97ドル(約105円)。内訳としては、SNSが0.65ドル、IoT1Clickが0.23ドル、税金で0.09ドルといったところ。
心配な方は、ある料金があるしきい値を超えたらメールが来るように設定しておくとよい。
ahrk-izo.hatenablog.com
ちなみに、今回はAWSの知識がそんなになくてもいいので、特に書籍は使っていないが、AWSを本当の基礎からやるならこの本は良かった。ということでおすすめしておく。
参考にさせて頂いたサイト:
dev.classmethod.jp
以上。