Amazon Web Services ブログ

AWS IoT Button Enterprise Program のご紹介

AWS IoT ボタンは 2015 年 10 月 に AWS re:Invent の AWS IoT サービスの発表で初めて IoT シーンに登場しました。その年の re:Invent の全参加者は、AWS IoT を実践する機会を提供する AWS IoT ボタンを受け取りました。その時以来、AWS IoT ボタンは、クリック可能な IoT デバイスに興味のあるすべての人に広く利用可能になりました。最近開かれた AWS re:Invent 2016 カンファレンスでは、AWS IoT Button Enterprise Program により企業向けの AWS IoT ボタンが公開されました。このプログラムは、物理的なボタンをクリックすることにより新しいサービスを提供したり、既存の製品を改善できるように企業を助けるためのものです。AWS IoT Button Enterprise Program では、企業はプログラム可能な AWS IoT ボタンを使用して、顧客エンゲージメントを高め、アプリケーションを拡張し、ユーザーエクスペリエンスを簡素化して、顧客に新しいイノベーションを提供することができます。IoT の力を活用することにより、企業は製品やサービスに対する顧客の需要にリアルタイムで対応することができ、シンプルなデバイスを通じて顧客に直接的なコミュニケーションを提供することができます。

 

AWS IoT Button Enterprise Program
新しい AWS IoT Button Enterprise Program がどのように機能するかについて説明します。企業は、まず AWS IoT ボタンを一括して配置し、カスタムラベルを付けてボタンをブランド化します。Amazon は AWS IoT へのアクセスを許可し AWS クラウドとの安全な通信を確保するために、各ボタンに個別の証明書と一意のプライベートキーを与えることにより、ボタンを製造し IoT ボタンデバイスを事前にプロビジョニングします。これにより、設定が容易になり、IoT ボタンデバイスのプログラミングをより簡単に開始できます。企業は、ボタンデバイスの使用とデバイスコンパニオンアプリケーションの作成により、IoT ソリューションを設計して構築します。AWS IoT Button Enterprise Program は、デプロイを確実に成功させるために、企業に AWS からの無料の支援を直接提供します。デプロイされたデバイスを機能させるためには、ユーザーのロケーションにおいて Wi-Fi で設定する必要があります。

エンタープライズにとって、IoT ボタンソリューションの実装の恩恵を受けるいくつかのユースケースがあります。いくつかのアイデアを以下に示します。

  • ピザや医療用品などのサービスやカスタム製品の再発注
  • カスタマーサービスエージェントからコールバックを要求する
  • 店舗やレストランでの支援呼び出しボタンなどの小売業務
  • 棚卸しのために製品の数を取得する在庫システム
  • 身体障がい者や高齢者向けのアラートや通知システムなどの医療アプリケーション
  • 外灯を消したり、ガレージのドアを開けるなど、デバイスのオンとオフを切り替えるスマートホームシステムのインターフェイス
  • ゲストのチェックイン/チェックアウトシステム

AWS IoT ボタン
AWS IoT Button Enterprise Program の中心となる AWS IoT ボタン。AWS IoT ボタンは、シングルクリック、ダブルクリック、および長押しの 3 種類のクリックタイプを備えた 2.4GHz Wi-Fi WPA2-PSK 対応デバイスです。ボタンを 1.5 秒以上押すと、長押しのクリックタイプが送信されます。IoT ボタンには小さな LED ライトがあり、IoT ボタンのステータスのカラーパターンが表示されます。点滅している白いライトは、IoT ボタンが Wi-Fi に接続して IP アドレスを取得していることを示します。青色の点滅は、ボタンがワイヤレスアクセスポイント (AP) モードであることを示します。押されたときにデバイスから送信されるデータペイロードには、デバイスシリアル番号、バッテリ電圧、およびクリックタイプが含まれています。現在、AWS IoT ボタンソリューションを構築するには 3 つの方法があります。最初の方法は、AWS IoT ボタンコンパニオンモバイルアプリケーションを使用することです。モバイルアプリケーションは、TLS 1.2 証明書の作成、および AWS Lambda に関連付けられた AWS IoT ルールの作成を含む、必要な AWS IoT リソースを作成します。さらに、AWS IoT を介した IoT ボタンデバイスを、Lambda 設計図から選択した新しい AWS Lambda 関数を呼び出すイベントソースにすることができます。以下より前述の Android および iOS 向けのモバイルアプリケーションをダウンロードできます。

2 番目の方法は、AWS IoT ボタンを使い始める簡単な方法として、AWS Lambda 設計図ウィザードを使用することです。モバイルアプリケーションと同様に、ウィザードは必要な AWS IoT リソースを作成し、新しい Lambda 関数を呼び出すイベントソースをボタンに追加します。3 番目の方法は、AWS IoT 入門ガイドのステップバイステップチュートリアルに従うことです。AWS IoT コンソールを活用してこれらのリソースを手動で作成します。前述の入門ガイドのいずれかを使用して、IoT ボタンを正しく構成し、簡単なワンクリックソリューションを作成したら、独自のカスタム IoT ボタンソリューションの構築を開始する準備ができているはずです。ボタンをクリックするだけで、企業は、顧客のために新しいサービスを構築し、既存のサービスの新機能を提供し、ビジネスプロセスを自動化してより効率的に運用することができます。AWS IoT ボタンソリューションの基本的な技術フローは次のとおりです。

  • ボタンがクリックされ、TLS 1.2 を使用した AWS IoT との安全な接続が確立されます
  • ボタンのデータペイロードが、AWS IoT デバイスゲートウェイに送信されます
  • ルールエンジンは、AWS IoT にパブリッシュされた受信メッセージ (JSON) を評価し、定義されたビジネスルールに基づいてアクションを実行または AWS のサービスをトリガーします。
  • トリガーされた AWS のサービスが実行されるか、アクションが実行されます。
  • デバイスの状態は、デバイスシャドウで読み取ったり、保存したり、設定したりすることができます
  • モバイルアプリやウェブアプリは、アクションに基づいてデータを受信および更新できます

AWS IoT ボタンについての一般的な知識を習得したので、AWS IoT ボタンソリューションを構築する技術的なチュートリアルに移ります。

AWS IoT ボタンソリューションのチュートリアル
ワンクリックカスタマーサービスのオプションを企業に提供するためのユースケースの簡単な例を紹介して、AWS IoT ボタンソリューションの構築にもっと深く取り組んでいきます。開始するには、AWS IoT コンソールに移動し、IoT ボタンをモノとして登録し、モノのタイプを作成します。コンソールでは、コンソールメニューでレジストリモノオプションの順に選択します。

この例の IoT モノの名前は、TEW-AWSIoTButton です。IoT モノを分類する場合は、モノのタイプを作成し、同様の IoT 「モノ」にタイプを割り当てることができます。IoT モノの TEW-AWSIoTButtonOne-click-device 属性キーの IoTButton モノのタイプとして分類し、モノの作成ボタンを選択します。

AWS IoT ボタンデバイス TEW-AWSIoTButtonThing Registry に登録されたら、次に必要な X.509 証明書とキーを取得します。AWS IoT でこのデバイスの証明書を生成させますが、このサービスでは独自の証明書を使用することができます。X.509 証明書による接続の認証は、デバイスと AWS IoT サービス間のデータ交換を保護するのに役立ちます。

証明書が AWS IoT で生成される場合は、ダウンロードページを終了した後にパブリックキーとプライベートキーが使用できなくなるため、作成されたすべてのファイルをダウンロードして保存することが重要です。さらに、生成された証明書を含むページのリンクから AWS IoT のルート CA をダウンロードすることを忘れないでください。新しく作成された証明書は非アクティブであるため、使用前に証明書をアクティブ化することが重要になります。AWS IoT は TLS プロトコルを使用して TLS プロトコルのクライアント認証モードを使用した証明書を認証します。証明書では、非対称キーをデバイスで使用でき、AWS IoT サービスにより、証明書のレジストリに対して証明書のステータスと AWS アカウントをリクエストし、検証します。サービスは、証明書に含まれるパブリックキーに対応するプライベートキーの所有権の証明にチャレンジを送ります。IoT ボタンへの AWS IoT 接続を確保する最終ステップは、承認用の IAM ポリシーを作成またはアタッチ (またはその両方) することです。

[Attach a policy] ボタンを選択してから、IoT ボタンの特定のポリシーを作成するために [Create a Policy] オプションを選択します。新しい IoT ポリシーの [Name] フィールドで、この新しいポリシーの名前の IoTButtonPolicy を入力します。AWS IoT ボタンデバイスはボタンプレスのみをサポートするため、AWS IoT ボタンポリシーは発行許可を追加するだけで済みます。そのため、このポリシーは iot:Publish アクションのみを許可します。  IoT ポリシーの Resource ARN では、AWS IoT ボタンは通常 arn: aws: iot: TheRegion: AWSAccountNumber: topic/ iotbutton /ButtonSerialNumber の形式パターンに従います。つまり、この IoT ボタンポリシーの Resource ARN は次のようになります。

AWS IoT ボタンでない IoT デバイス用の IAM ポリシーを作成している場合、Resource ARN 形式パターンは次のようになることに注意してください。arn: aws: iot: TheRegion: AWSAccountNumber: topic/ YourTopic/ OptionalSubTopic/ AWS IoT ボタン用に作成したポリシー、IoTButtonPolicy は以下のようになります。

次のステップで AWS IoT コンソールダッシュボードに戻ります。[Security] を選択してから、[Certificates] メニューオプションを選択します。前述のステップで作成された証明書を選択します。

それから、選択した証明書ページで、右上隅の [Actions] ドロップダウンを選択します。証明書に IoTButtonPolicy IAM ポリシーを追加するために、[Attach policy] オプションをクリックします。

上記の手順すべてを繰り返しますが、今回は [Attach thing] オプションを選択して [TEW-AWSIoTButton] モノを追加します。

あとは、物理的な AWS IoT ボタンに証明書とプライベートキーを追加して、IoT ボタンが完全に機能するように AWS IoT ボタンを Wi-Fi に接続します。

重要な注意点 AWS IoT Button Enterprise Program に参加をサインアップした企業に関しては、前述のすべての手順、ボタンロゴのブランド化、AWS IoT モノ作成、証明書の入手とキーの作成、ボタンへの証明書の追加は、Amazon および AWS によって完了しています。これもまた、企業が必要な AWS IoT ボタンソリューションの開発を全力で素早く実行するのに役立ちます。ここで、例で使用された AWS IoT ボタン に戻り、LED が青色に点滅するまでボタンを押して、ボタンを Wi-Fi に接続します。つまり、デバイスがワイヤレスアクセスポイント (AP) モードに入ったということです。

IoT ボタンにインターネット接続を提供し、AWS IoT へのデバイスの接続の設定を開始するために、Button ConfigureMe で始まるボタンの Wi-Fi ネットワークに接続します。ボタンの Wi-Fi に初めて接続する際には、パスワードが求められます。物理 AWS IoT ボタンデバイスの背面に示されている、デバイスシリアルナンバーの末尾 8 文字を入力します。

これで、AWS IoT ボタンの設定が完了し、システムを構築できるようになりました。次のステップは、IoT ボタンを押したときに実行されるアクションの追加です。ここで、AWS IoT ルールエンジンが出てきます。MQTT トピックストリームや Device Shadow からの IoT デバイスのデータペイロードを分析するのに使用し、AWS のサービスのアクションをトリガーします。異なるタイプのボタンを押したことが検出されたときに、さまざまなアクションを実行するためのルールを設定します。この AWS IoT ボタンソリューションはシンプルです。IoT ボタンのクリック、および AWS IoT へのボタンのペイロードの送信に応じて、2 つの AWS IoT ルールを設定します。このシナリオでは、ボタンの 1 回のクリックは、顧客からのリクエストが架空の企業のカスタマーサービスエージェントへ送信されていることを表します。しかし、ダブルクリックは顧客の架空のアカウントの現在のステータスを含むテキストが送信されることを表します。最初に作成された AWS IoT ルールは IoT ボタンのペイロードを受信し、ボタンのクリックの種類が SINGLE であるというルールの条件が満たされる場合のみ、E メールを送信するため直接 Amazon SNS へ接続します。2 番目に作成された AWS IoT ルールは、ボタンのクリックの種類が DOUBLE であるというルールの条件が満たされる場合のみ、顧客のアカウントステータスを含むテキストメッセージを送信する Lambda 関数を呼び出します。

カスタマーサービスエージェントの助けをリクエストする E メールを SNS トピックのサブスクライバーへ送信する AWS IoT ルールを作成するために、[Amazon SNS] へ進み、SNS トピックを作成します。

サブスクライブしている架空のカスタマーサービス E メール、このケースでは私の E メールアドレスを使って、トピックの E メールサブスクリプションを作成します。当然、カスタマーサポートをリクエストする E メールを受け取るためにトピックにサブスクライブしているカスタマーサービス担当者は複数いることもありえます。

AWS IoT コンソールに戻って、[Rules] メニューから [Create rule] オプションを選択します。まず、名前とルールの説明を入力します。

次に、AWS IoT ルールエンジンに使用する SQL バージョンを選択します。ここでは最新の SQL バージョンを選択しますが、バージョンを設定するよう選択しなければ、デフォルトのバージョン 2015-10-08 が使用されます。ルールエンジンは SQL に似た構文と SELECT 句、FROM 句、WHERE 句を含むステートメントを使用します。ここでは、メッセージに対して、IoT ボタンのデータペイロードの一部ではないリテラル文字列を返したいと思います。また、ペイロードの一部ではない、ボタンのシリアルナンバーをアカウント番号として返したいと思います。最新のバージョン 2016-03-23 はリテラルオブジェクトをサポートしているので、Amazon SNS にカスタムペイロードを送信できます。

ルールが作成できたので、あとは、ルールが分析されたときに実行されるルールアクションを追加するだけです。前に説明したように、IoT ボタンが 1 回押されてこのルールがトリガーされたら、カスタマーサービス担当者に E メールを送信する必要があります。そのため、この場合、私が作成した SNS トピックへ、架空のカスタマーサービス担当者、たとえば私に E メールを送信するように SNS プッシュ通知としてメッセージを送信するというルールアクションになります。SNS リソースへのアクセスを提供するには、IAM ロールを使用する必要があります。コンソールを使用している場合、適切なアクセス権限を提供するために新しいロールを作成する、または既存のロールを更新するというオプションがあります。また、ここではカスタムメッセージと SNS プッシュを行おうとしているので、[Message format] タイプは RAW を選択します。

ルールが作成できたので、最後に、AWS IoT ボタンが 1 回押されたとき、つまり、データペイロードのクリックの種類が SINGLE のときに、E メールが正常に送信されるかをテストします。

AWS IoT ボタンが 1 回押されると、SNS トピックにカスタムメッセージが発行され、以下に示す E メールが、サブスクライブしているカスタマーサービス担当者、この場合は私の E メールアドレスに送信されました。

IoT ボタンを 2 回押したときに顧客がアカウントステータスをリクエストするというシナリオで、Lambda を通してテキストを送信する AWS IoT ルールと SNS トピックを作成するには。まず、AWS Lambda アクションで AWS IoT ルールを作成します。この IoT ルールを作成するには、まず Lambda 関数、および SNS テキストベースのサブスクリプションのある SNS トピックを作成する必要があります。最初に、Amazon SNS コンソールに進み、SNS トピックを作成します。トピックが作成できたら、SNS トピックの SNS テキストサブスクリプションを作成し、テキストメッセージを受信する数を追加します。次に、Lambda 関数で使用する SNS トピックの ARN をコピーします。SNS での SMS の送信をサポートしているリージョンを使用するため、以前に SNS トピックを作成したのとは異なるリージョンで SNS トピックを作成していることに注意してください。Lambda 関数では、SNS オブジェクトのコンストラクタのパラメーターとしてリージョンを含めることにより、SNS トピックのための適切なリージョンを使用していることを確認する必要があります。作成した SNS トピック、aws-iot-button-topic-text を以下に示します。

次に、AWS Lambda コンソールへ進み、AWS IoT トリガーで、IoT ボタンとしての [IoT Type] のある Lambda 関数を作成します。要求される [Device Serial Number] は AWS IoT ボタンの裏側にあるシリアルナンバーです。AWS IoT ボタンは AWS IoT との安全な通信のために証明書とキーで設定済みであるため、この段階で証明書とキーを生成する必要はありません。

次に、IoT ボタンのデータペイロードを受信し Amazon SNS へ発行するメッセージを作成するための以下のコードで、Lambda 関数、IoTNotifyByText を作成します。

'use strict';

console.log('Loading function');
var AWS = require("aws-sdk");
var sns = new AWS.SNS({region: 'us-east-1'});

exports.handler = (event, context, callback) => {
    // Load the message as JSON object 
    var iotPayload = JSON.stringify(event, null, 2);
    
    // Create a text message from IoT Payload 
    var snsMessage = "Attention: Customer Info for Account #: " + event.accountnum + " Account Status: In Good Standing " + 
    "Balance is: 1234.56"
    
    // Log payload and SNS message string to the console and for CloudWatch Logs 
    console.log("Received AWS IoT payload:", iotPayload);
    console.log("Message to send: " + snsMessage);
    
    // Create params for SNS publish using SNS Topic created for AWS IoT button
    // Populate the parameters for the publish operation using required JSON format
    // - Message : message text 
    // - TopicArn : the ARN of the Amazon SNS topic  
    var params = {
        Message: snsMessage,
        TopicArn: "arn:aws:sns:us-east-1:xxxxxxxxxxxx:aws-iot-button-topic-text"
     };
     
     sns.publish(params, context.done);
};

あとは、AWS IoT トリガーで Lambda 関数を作成したときに自動的に作成された AWS IoT ルールを変更するだけです。それで、AWS IoT コンソールへ進み、[Rules] メニューオプションを選択します。Lambda によって作成された IoT ボタンのルールがあるので、それを選択します。通常、IoT ボタンのデバイスシリアルナンバーと同じサフィックスのある名前になっています。

ルールを選択したら、[Rule query statement] オプションの横にある [Edit] オプションを選択します。

Select ステートメントを、アカウントナンバーとしてシリアルナンバーを返すように変更したら、[Update] ボタンをクリックして AWS IoT ルールへの変更を保存します。

テストタイムIoT ボタンを 2 回クリックし、接続が成功して AWS IoT にメッセージが発行されたことを確認する緑の LED ライトが表示されるのを待ちます。数秒後、私の電話が架空のカスタマーアカウント情報のあるテキストメッセージを受信します。

これは、ビジネスで顧客のためのビジネスソリューションを構築するために AWS IoT ボタン を活用するシンプルな例です。企業が AWS IoT ボタンの量を取得する上で助けとなる新しい AWS IoT Button Enterprise Program により、また、AWS IoT サービスの事前プロビジョニングとデプロイのサポートにより、企業は独自にカスタマイズされた IoT ソリューションの構築を簡単に始められるようになりました。

今すぐご利用可能
オリジナルな第 1 世代の AWS IoT ボタンは現在 Amazon.com で入手できます。また、第 2 世代の AWS IoT ボタンは 2 月に一般公開されます。これらの IoT ボタンの主な違いは、バッテリー寿命やボタンのクリック可能回数です。オリジナルの AWS IoT ボタンを今すぐ購入されると、登録時に 20 USD の AWS クレジットが受け取れます。

企業の皆様は、現在限定プレビュー期間中の AWS IoT Button Enterprise Program に今すぐサインアップしていただけます。このプログラムは、クラウドと IoT ボタンデバイスにより、企業が既存のアプリケーションを拡張し、または新しい IoT 機能を構築できるように設計されています。

AWS IoT ボタン の詳細について、また、プログラム可能な IoT ボタンでのソリューションの構築の詳細については、「AWS IoT ボタン製品ページ」を参照してください。また、AWS IoT サービス の詳細については、AWS IoT 「開発者ガイド」、AWS IoT Device SDK ドキュメント、AWS Internet of Things ブログを参照してください。

Tara