Soracom

Users

スタートガイド
Home スタートガイド IoT デザインパターン SORACOM LTE-M Button と各種クラウドサービスを連携する 実装ガイド

Azure と組み合わせる

SORACOM LTE-M Button と Azure を連携させる方法は 2 種類あります。

ボタンと Azure Functions 連携をすばやく構築したい ― SORACOM Funk + Azure Functions パターン

ボタンと Azure Functions 連携をすばやく構築したい場合は、SORACOM Funk から Azure Functions を呼び出すパターンを利用します。

button_design_patterns / Button - Funk - Azure Functions

手順

ここでは Azure Functions で Webhook (HTTP トリガー) を作成し、SORACOM Funk から呼び出せるように構成する手順を解説します。

ステップ 1: 関数アプリを作成する

Azure ポータルの "リソースの作成" から "Function App" を探してクリック、その後に表示される画面で [作成] をクリックします。

検索窓で function と入力すると素早く探すことができます。

Button - Funk - Azure Functions / functions 1

フォームで以下の通り入力した後、[確認および作成] をクリックし、その先の確認画面で [作成] をクリックします。

  • サブスクリプション: <利用可能なサブスクリプションを選択してください>
  • リソースグループ: 新規作成 をクリック > button-app1 (任意の文字列)
  • 関数アプリ名: button-app1-Wee3Eeja (ランダムな文字列を付与することを推奨します)
  • 公開: コード
  • ランタイムスタック: Node.js
  • バージョン: 12
  • 地域: Japan East

ランダムな文字列は pwgen in JavaScript といったツールを活用すると便利です。

Button - Funk - Azure Functions / functions 2

デプロイが終了したら [リソースに移動] をクリックします。

関数の管理画面から "関数" の右にある [+] をクリックした後、"ポータル内" を選択し、[続行] をクリックします。

Button - Funk - Azure Functions / functions 3

次の画面では "webhook + API" を選択し、[作成] をクリックします。

Button - Funk - Azure Functions / functions 4

関数の管理画面に表示される "index.js" を以下のように書き換えてから [保存] をクリックします。その後 [関数の URL の取得] をクリックすると表示される URL をメモしておいてください。

module.exports = async function (context, req) {
  context.log(req.headers);
  context.log(req.body);
  context.res = { status: 204 };
};

Button - Funk - Azure Functions / functions 5

ステップ 2: SORACOM グループを設定する

バイナリパーサー、Funk の設定はグループに対して行います

ここでは、グループの設定を変更する操作のみを説明します。グループの仕組みやグループを作成する操作について詳しくは、グループ設定 を参照してください。

  1. SIM グループのバイナリパーサーを設定します。

    バイナリパーサーの設定について詳しくは、バイナリパーサーを設定する を参照してください。

    なお、[フォーマット] には、@button を入力します。

    Button - Funk - AWS Lambda / air 1

    続けて、同じ SIM グループの SORACOM Funk を設定します。

  2. 同じ SIM グループ画面で [SORACOM Funk 設定] をクリックします。

    SIM グループ画面を表示する操作について詳しくは、グループの設定を変更する を参照してください。

  3. 以下のように設定します。

    • サービス: Azure Functions
    • 送信データ形式: JSON
  4. "認証情報" で [認証情報を新規作成する...] をクリックします。

    Button - Funk - Azure Functions / funk 1

  5. 表示されたダイアログで以下の通り入力した後、[登録] をクリックします。

    • 認証情報 ID: azure_functions_button-app1_cred1
    • API トークン: <Azure Functions でメモした URL の ?code= 以降の文字列>

    Button - Funk - Azure Functions / cred 1

    登録が正常に完了すると SORACOM Funk の設定画面に戻ってきます。

  6. "認証情報" に、先ほど登録をした azure_functions_button-app1_cred1 が表示されていることを確認して、[関数の URL] に、先ほどメモをした URL の ?code= 以前の文字列を入力して [保存] をクリックします。

    Button - Funk - Azure Functions / funk 2

以上で設定はすべて終了です。

ステップ 3: 動作確認

確認は Azure Functions で行います。関数の管理画面から [HttpTrigger1] をクリックし index.js を表示したら [ログ] をクリックすると、ログウィンドウが開き確認できるようになります。

Button - Funk - Azure Functions / testflight 1

ステップ 4: トラブルシュート

  • LTE-M Button の LED が最終的に赤色点灯になる
    • A: LTE-M Button が SIM グループに所属していることを確認してください。
    • B: SIM グループ内の Azure Functions に対する URL 設定を確認してください。
    • C: Azure Functions 以降の設定を見直すようにしてください。
  • { "payload":"TQEDUQ==" } のように読めない文字列になっている
    • SORACOM Air for Cellular 設定のバイナリパーサーで @button を設定するようにしてください。
  • Azure Functions のログに表示されない
    • Azure Functions 管理画面を再読み込み (リロード) してみてください。

ステップ 5: この後の開発に向けた情報源

Azure Functions のエンドポイントセキュリティ

Azure Functions のエンドポイント (URL) に付与されている ?code= の値は [Azure Functions ダッシュボード] > [関数] > {関数名} > [管理] > 関数キー で見つけることができます。

Button - Funk - Azure Functions / apikey

この API キーの利用方法は Azure Functions / API キーの承認 をご覧ください。

大量のボタンデバイスからのデータを確実に処理したい ― SORACOM Funnel + Azure Event Hubs パターン

大量のボタンデバイスからのデータを確実に処理したい場合は、SORACOM Funnel から Azure Event Hubs を通じて Azure Functions を利用する方法があります。

button_design_patterns / Button - Funnel - Azure Event Hubs

Azure Functions の Webhook の呼び出し制約 が存在するため、大量のデータを常時受け付けるようなアプリケーションになる場合には本パターンを検討します。注意点は、Azure Event Hubs は仮想サーバの課金体系に近く、データの発生頻度や量によっては費用が割高になる可能性もあるため、コスト面からの検討も必要となります。

手順

ここでは Azure Event Hubs から Azure Functions への連携部分について追加で解説します。

ステップ 1: Azure Event Hubs を作成する

Getting Started: Azure Event Hubs アダプターを使用する | SORACOM Funnel | SORACOM Users1. Azure 側の設定 を行ってください。

ステップ 2: Function App (関数) を作成する

Azure ポータルの "リソースの作成" から "Function App" を探してクリック、その後に表示される画面で [作成] をクリックします。

検索窓で function と入力すると素早く探すことができます。

Button - Funk - Azure Functions / functions 1

フォームで以下の通り入力した後、[確認および作成] をクリックし、その先の確認画面で [作成] をクリックします。

  • サブスクリプション: <利用可能なサブスクリプションを選択してください>
  • リソースグループ: SoracomFunnelDemo0 (Event Hubs と同じリソースグループを選びます)
  • 関数アプリ名: button-app2-tie4rohK (ランダムな文字列を付与することを推奨します)
  • 公開: コード
  • ランタイムスタック: Node.js
  • バージョン: 12
  • 地域: Japan East

ランダムな文字列は pwgen in JavaScript といったツールを活用すると便利です。

Button - Funnel - Azure Event Hubs / functions 2

デプロイが終了したら [リソースに移動] をクリックします。

関数の管理画面から "関数" の右にある [+] をクリックした後、"ポータル内" を選択し、[続行] をクリックします。

Button - Funk - Azure Functions / functions 3

次の画面では "その他のテンプレート..." を選択し、[テンプレートの完了と表示] をクリックします。

Button - Funnel - Azure Event Hubs / functions 4

イベントハブ接続の [新規] をクリックし、表示されるダイアログで 接続する Event Hub を選びます。その他の項目はデフォルトのままにしておいて [作成] をクリックします。

Button - Funnel - Azure Event Hubs / functions trigger

関数の管理画面に表示される "index.js" を以下のように書き換えてから [保存] をクリックします。

module.exports = async function (context, eventHubMessages) {
  eventHubMessages.forEach((message, index) => {
    context.log(message);
  });
};

Button - Funnel - Azure Event Hubs / functions 5

ステップ 3: SORACOM グループを設定する

バイナリパーサー、Funnel の設定はグループに対して行います

ここでは、グループの設定を変更する操作のみを説明します。グループの仕組みやグループを作成する操作について詳しくは、グループ設定 を参照してください。

  1. SIM グループのバイナリパーサーを設定します。

    バイナリパーサーの設定について詳しくは、バイナリパーサーを設定する を参照してください。

    なお、[フォーマット] には、@button を入力します。

    Button - Funk - AWS Lambda / air 1

  2. 続けて、同じ SIM グループの SORACOM Funnel を設定します。

    詳しくは、ステップ 2: SORACOM を設定する を参照してください。

ステップ 4: 確認

確認は Azure Functions で行います。関数の管理画面から [EventHubTrigger1] をクリックし index.js を表示したら [ログ] をクリックすると、ログウィンドウが開き確認できるようになります。

Button - Funnel - Azure Event Hubs / testflight 1

ステップ 5: トラブルシュート

  • LTE-M Button の LED が最終的に赤色点灯になる
    • A: LTE-M Button が SIM グループに所属していることを確認してください。
    • B: SORACOM Air for Cellular 設定のバイナリパーサーを ON にした上で フォーマットに @button が設定されているか確認してください。
    • C: Azure Event Hubs 以降の設定を見直すようにしてください。
      • 特に Function App からトリガーとして "イベント ハブ接続" を選ぶ際の "ポリシー" には リッスン の権限があるポリシーを選ぶようにしてください。

ステップ 6: この後の開発に向けた情報源