SORACOM LTE-M Button と Azure を連携させる方法は 2 種類あります。
ボタンと Azure Functions 連携をすばやく構築したい ― SORACOM Funk + Azure Functions パターン
ボタンと Azure Functions 連携をすばやく構築したい場合は、SORACOM Funk から Azure Functions を呼び出すパターンを利用します。
手順
ここでは Azure Functions で Webhook (HTTP トリガー) を作成し、SORACOM Funk から呼び出せるように構成する手順を解説します。
ステップ 1: 関数アプリを作成する
Azure ポータルの "リソースの作成" から "Function App" を探してクリック、その後に表示される画面で [作成] をクリックします。
検索窓で function
と入力すると素早く探すことができます。
フォームで以下の通り入力した後、[確認および作成] をクリックし、その先の確認画面で [作成] をクリックします。
- サブスクリプション: <利用可能なサブスクリプションを選択してください>
- リソースグループ: 新規作成 をクリック >
button-app1
(任意の文字列) - 関数アプリ名:
button-app1-Wee3Eeja
(ランダムな文字列を付与することを推奨します) - 公開: コード
- ランタイムスタック: Node.js
- バージョン: 12
- 地域: Japan East
ランダムな文字列は pwgen in JavaScript といったツールを活用すると便利です。
デプロイが終了したら [リソースに移動] をクリックします。
関数の管理画面から "関数" の右にある [+] をクリックした後、"ポータル内" を選択し、[続行] をクリックします。
次の画面では "webhook + API" を選択し、[作成] をクリックします。
関数の管理画面に表示される "index.js" を以下のように書き換えてから [保存] をクリックします。その後 [関数の URL の取得] をクリックすると表示される URL をメモしておいてください。
module.exports = async function (context, req) {
context.log(req.headers);
context.log(req.body);
context.res = { status: 204 };
};
ステップ 2: SORACOM グループを設定する
バイナリパーサー、Funk の設定はグループに対して行います
ここでは、グループの設定を変更する操作のみを説明します。グループの仕組みやグループを作成する操作について詳しくは、グループ設定 を参照してください。
SIM グループのバイナリパーサーを設定します。
バイナリパーサーの設定について詳しくは、バイナリパーサーを設定する を参照してください。
なお、
には、@button
を入力します。続けて、同じ SIM グループの SORACOM Funk を設定します。
同じ SIM グループ画面で
をクリックします。SIM グループ画面を表示する操作について詳しくは、グループの設定を変更する を参照してください。
以下のように設定します。
- サービス: Azure Functions
- 送信データ形式: JSON
"認証情報" で [認証情報を新規作成する...] をクリックします。
表示されたダイアログで以下の通り入力した後、[登録] をクリックします。
- 認証情報 ID:
azure_functions_button-app1_cred1
- API トークン: <Azure Functions でメモした URL の
?code=
以降の文字列>
登録が正常に完了すると SORACOM Funk の設定画面に戻ってきます。
- 認証情報 ID:
"認証情報" に、先ほど登録をした
azure_functions_button-app1_cred1
が表示されていることを確認して、[関数の URL] に、先ほどメモをした URL の?code=
以前の文字列を入力して [保存] をクリックします。
以上で設定はすべて終了です。
ステップ 3: 動作確認
確認は Azure Functions で行います。関数の管理画面から [HttpTrigger1] をクリックし index.js
を表示したら [ログ] をクリックすると、ログウィンドウが開き確認できるようになります。
ステップ 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
を設定するようにしてください。
- SORACOM Air for Cellular 設定のバイナリパーサーで
- Azure Functions のログに表示されない
- Azure Functions 管理画面を再読み込み (リロード) してみてください。
ステップ 5: この後の開発に向けた情報源
- Azure Functions 関連
- SORACOM LTE-M Button 関連
payloads
の内容は、SORACOM LTE-M Button for Enterprise ユーザーガイドの 送信されるデータフォーマット を参照してください。
Azure Functions のエンドポイントセキュリティ
Azure Functions のエンドポイント (URL) に付与されている ?code=
の値は [Azure Functions ダッシュボード] > [関数] > {関数名} > [管理] > 関数キー で見つけることができます。
この API キーの利用方法は Azure Functions / API キーの承認 をご覧ください。
大量のボタンデバイスからのデータを確実に処理したい ― SORACOM Funnel + Azure Event Hubs パターン
大量のボタンデバイスからのデータを確実に処理したい場合は、SORACOM Funnel から Azure Event Hubs を通じて Azure Functions を利用する方法があります。
Azure Functions の Webhook の呼び出し制約 が存在するため、大量のデータを常時受け付けるようなアプリケーションになる場合には本パターンを検討します。注意点は、Azure Event Hubs は仮想サーバの課金体系に近く、データの発生頻度や量によっては費用が割高になる可能性もあるため、コスト面からの検討も必要となります。
手順
ここでは Azure Event Hubs から Azure Functions への連携部分について追加で解説します。
ステップ 1: Azure Event Hubs を作成する
Getting Started: Azure Event Hubs アダプターを使用する | SORACOM Funnel | SORACOM Users の 1. Azure 側の設定 を行ってください。
ステップ 2: Function App (関数) を作成する
Azure ポータルの "リソースの作成" から "Function App" を探してクリック、その後に表示される画面で [作成] をクリックします。
検索窓で function
と入力すると素早く探すことができます。
フォームで以下の通り入力した後、[確認および作成] をクリックし、その先の確認画面で [作成] をクリックします。
- サブスクリプション: <利用可能なサブスクリプションを選択してください>
- リソースグループ:
SoracomFunnelDemo0
(Event Hubs と同じリソースグループを選びます) - 関数アプリ名:
button-app2-tie4rohK
(ランダムな文字列を付与することを推奨します) - 公開: コード
- ランタイムスタック: Node.js
- バージョン: 12
- 地域: Japan East
ランダムな文字列は pwgen in JavaScript といったツールを活用すると便利です。
デプロイが終了したら [リソースに移動] をクリックします。
関数の管理画面から "関数" の右にある [+] をクリックした後、"ポータル内" を選択し、[続行] をクリックします。
次の画面では "その他のテンプレート..." を選択し、[テンプレートの完了と表示] をクリックします。
イベントハブ接続の [新規] をクリックし、表示されるダイアログで 接続する Event Hub を選びます。その他の項目はデフォルトのままにしておいて [作成] をクリックします。
関数の管理画面に表示される "index.js" を以下のように書き換えてから [保存] をクリックします。
module.exports = async function (context, eventHubMessages) {
eventHubMessages.forEach((message, index) => {
context.log(message);
});
};
ステップ 3: SORACOM グループを設定する
バイナリパーサー、Funnel の設定はグループに対して行います
ここでは、グループの設定を変更する操作のみを説明します。グループの仕組みやグループを作成する操作について詳しくは、グループ設定 を参照してください。
SIM グループのバイナリパーサーを設定します。
バイナリパーサーの設定について詳しくは、バイナリパーサーを設定する を参照してください。
なお、
には、@button
を入力します。続けて、同じ SIM グループの SORACOM Funnel を設定します。
詳しくは、ステップ 2: SORACOM を設定する を参照してください。
ステップ 4: 確認
確認は Azure Functions で行います。関数の管理画面から [EventHubTrigger1] をクリックし index.js
を表示したら [ログ] をクリックすると、ログウィンドウが開き確認できるようになります。
ステップ 5: トラブルシュート
- LTE-M Button の LED が最終的に赤色点灯になる
- A: LTE-M Button が SIM グループに所属していることを確認してください。
- B: SORACOM Air for Cellular 設定のバイナリパーサーを ON にした上で フォーマットに
@button
が設定されているか確認してください。 - C: Azure Event Hubs 以降の設定を見直すようにしてください。
- 特に Function App からトリガーとして "イベント ハブ接続" を選ぶ際の "ポリシー" には リッスン の権限があるポリシーを選ぶようにしてください。
ステップ 6: この後の開発に向けた情報源
- Azure 関連
- SORACOM LTE-M Button 関連
payloads
の内容は、SORACOM LTE-M Button for Enterprise ユーザーガイドの 送信されるデータフォーマット を参照してください。
- SORACOM Funnel 関連
- 保存された認証情報は、認証情報ストア に保存されており、ここから追加・編集・削除といった管理が可能です。
- SOARCOM Funnel から送信される JSON の内容については、SORACOM Funnel から送信されるデータフォーマット を参照してください。