SORACOM LTE-M Button と Google Cloud を連携させる方法は 2 種類あります。
ボタンと Google Cloud Functions 連携をすばやく構築したい ― SORACOM Funk + Google Cloud Functions パターン
ボタンと Google Cloud Functions 連携をすばやく構築したい場合は、SORACOM Funk から Cloud Functions を呼び出すパターンを利用します。
ここでは Cloud Functions で Webhook (HTTP トリガー) を作成し、SORACOM Funk から呼び出せるように構成する手順を解説します。
ステップ 1: 関数を作成する
Google Cloud ダッシュボードのナビゲーションメニューから "Cloud Functions" を探してクリック、その後に [関数の作成] をクリックします。"API が有効になっていません" と表示される場合は [API を有効にする] をクリックしてから [関数の作成] に進んでください。
表示されるダイアログに以下のように入力した後、[作成] をクリックします。
- 名前:
button-app1-DuHiex2ezieVoon9
(後半のランダムな文字列は 16 文字程度を付与することを推奨します) - 割り当てられるメモリ: 256 MB
- トリガー: HTTP
- 未認証の呼び出しを許可する:
- ソースコード: インライン エディタ
- ランタイム: Node.js 8
- index.js: 下記 JS のように書き換え
- 実行する関数:
helloWorld
ランダムな文字列は pwgen in JavaScript といったツールを活用すると便利です。
/**
* Responds to any HTTP request.
*
* @param {!express:Request} req HTTP request context.
* @param {!express:Response} res HTTP response context.
*/
exports.helloWorld = (req, res) => {
console.log(req.headers);
console.log(req.body);
res.status(204).end();
};
作成した関数をクリックし [トリガー] タブをクリックして表示された URL をメモしておきます。
ステップ 2: SORACOM グループを設定する
バイナリパーサーを設定する
バイナリパーサーの設定はグループに対して行います
ここでは、グループの設定を変更する操作のみを説明します。グループの仕組みやグループを作成する操作について詳しくは、グループ設定 を参照してください。
SIM グループのバイナリパーサーを設定します。バイナリパーサーの設定について詳しくは、バイナリパーサーを設定する を参照してください。
なお、@button
を入力します。
SORACOM Funk を有効にする
Funk の設定はグループに対して行います
ここでは、グループの設定を変更する操作のみを説明します。グループの仕組みやグループを作成する操作について詳しくは、グループ設定 を参照してください。
同じ SIM グループ画面で
をクリックします。SIM グループ画面を表示する操作について詳しくは、グループの設定を変更する を参照してください。
スイッチをクリックして「ON」にします。
として「Googl Cloud Functions」を選択し、 と を入力して をクリックします。
- 送信データ形式: JSON
- 関数の URL: (先ほどメモをした URL)
IoT SIM の Funk の設定が完了しました。
SORACOM CLI / SORACOM API の場合
soracom groups put-config
(Group:putConfigurationParameters API
) を使用します。
{namespace}
は、SoracomBeam
です。
ボディで指定するプロパティについては、以下の key
と value
のペアを配列で指定します。
"SoracomFunk": {
"enabled": true | false, // 機能自体のオンオフ、デフォルトは false
"destination" : {
"provider": "google", // 利用するクラウドサービス
"service": "cloud-functions", // クラウドサービスに応じて変更
"resourceUrl": "各サービスのリソース情報" // クラウドサービスに応じて変更 (以下設定例参照)
},
"contentType": "unspecified" | "application/json" | "text" | "binary" // 送信するデータ形式
}
設定例
"SoracomFunk": {
"enabled": true,
"destination": {
"provider": "google",
"service": "cloud-functions",
"resourceUrl": "Google Cloud Functions のURL"
},
"contentType": "application/json"
}
ステップ 3: 動作確認
確認は Cloud Functions の管理画面で行います。関数の管理画面から [ログを表示] をクリックします。"新しいログを読み込む" をクリックして適宜最新の情報に更新してください。
ステップ 4: トラブルシュート
- LTE-M Button の LED が最終的に赤色点灯になる
- A: LTE-M Button が SIM グループに所属していることを確認してください。
- B: SIM グループ内の Google Cloud Functions に対する URL 設定を確認してください。
- C: Google Cloud Functions 以降の設定を見直すようにしてください。
{ "payload":"TQEDUQ==" }
のように読めない文字列になっている- SORACOM Air for Cellular 設定のバイナリパーサーで
@button
を設定するようにしてください。
- SORACOM Air for Cellular 設定のバイナリパーサーで
ステップ 5: この後の開発に向けた情報源
- Google Cloud Functions 関連
- SORACOM LTE-M Button 関連
payloads
の内容は、SORACOM LTE-M Button for Enterprise ユーザーガイドの 送信されるデータフォーマット を参照してください。
SORACOM Funnel + Google Cloud Pub/Sub パターン
関数の保護を手軽に実現したい、もしくは、大量のデータストリームの処理を必要とするアプリケーションを構築したい場合は、SORACOM Funnel から Google Cloud Pub/Sub を通じて Google Cloud Functions を利用する方法があります。
ここでは Google Cloud Pub/Sub から Google Cloud Functions への連携部分について追加で解説します。
ステップ 1: Google Cloud Pub/Sub を作成する
Getting Started: Google Cloud Pub/Sub アダプターを使用する | SORACOM Funnel | SORACOM Users の 1. Pub/Sub を設定する と 2. Funnel で使用するアカウントを作成する を行ってください。
内容としては以下の通りです。
- Cloud Pub/Sub の API を有効にする
- Cloud Pub/Sub に Publish できるサービスアカウントを "API/とサービス > 認証情報" で作成する
- 本ガイドでは
soracom-funnel-pubsub-user1
というサービスアカウント名を作成し、JSON 形式の認証情報を取得しておきます。
- 本ガイドでは
- Cloud Pub/Sub を作成する
- 本ガイドでは
button-topic1
というトピック名とします。
- 本ガイドでは
ステップ 2: 関数を作成する
Google Cloud ダッシュボードのナビゲーションメニューから "Cloud Functions" を探してクリック、その後に [関数の作成] をクリックします。"API が有効になっていません" と表示される場合は [API を有効にする] をクリックしてから [関数の作成] に進んでください。
表示されるダイアログに以下のように入力した後、[作成] をクリックします。
- 名前:
button-app1-DuHiex2ezieVoon9
(後半のランダムな文字列は 16 文字程度を付与することを推奨します) - 割り当てられるメモリ: 256 MB
- トリガー: Cloud Pub/Sub
- トピック: 末尾が /topics/button-topic1 となっているもの
- 未認証の呼び出しを許可する:
- ソースコード: インライン エディタ
- ランタイム: Node.js 8
- index.js: 下記 JS のように書き換え
- 実行する関数:
helloPubSub
ランダムな文字列は pwgen in JavaScript といったツールを活用すると便利です。
/**
* Triggered from a message on a Cloud Pub/Sub topic.
*
* @param {!Object} event Event payload.
* @param {!Object} context Metadata for the event.
*/
exports.helloPubSub = (event, context) => {
console.log(event.attributes);
console.log(Buffer.from(event.data, "base64").toString());
};
ステップ 3: SORACOM グループを設定する
バイナリパーサー、Funnel の設定はグループに対して行います
ここでは、グループの設定を変更する操作のみを説明します。グループの仕組みやグループを作成する操作について詳しくは、グループ設定 を参照してください。
SIM グループのバイナリパーサーを設定します。
バイナリパーサーの設定について詳しくは、バイナリパーサーを設定する を参照してください。
なお、
には、@button
を入力します。続けて、同じ SIM グループの SORACOM Funnel を設定します。
SIM グループ画面で
をクリックします。SIM グループ画面を表示する操作について詳しくは、グループの設定を変更する を参照してください。
スイッチをクリックして「ON」にします。
転送先サービスには「Google Cloud Pub/Sub」を指定し、転送先トピックに
button-topic1
を入力します。認証情報は
soracom-funnel-pubsub-user1
というアカウント名に紐づく JSON 形式の認証情報を利用します。
ステップ 4: 確認
確認は Google Cloud Functions で行います。関数の管理画面から [ログを表示] をクリックします。"新しいログを読み込む" をクリックして適宜最新の情報に更新してください。
ステップ 5: トラブルシュート
- LTE-M Button の LED が最終的に赤色点灯になる
- A: LTE-M Button が SIM グループに所属していることを確認してください。
- B: SORACOM Air for Cellular 設定のバイナリパーサーを ON にした上で フォーマットに
@button
が設定されているか確認してください。 - C: Google Cloud Pub/Sub 以降の設定を見直すようにしてください。
- サービスアカウントに Pub/Sub パブリッシャー権限 が付与されている必要があります。
ステップ 6: この後の開発に向けた情報源
- Google Cloud 関連
- SORACOM LTE-M Button 関連
payloads
の内容は、SORACOM LTE-M Button for Enterprise ユーザーガイドの 送信されるデータフォーマット を参照してください。
- SORACOM Funnel 関連
- 保存された認証情報は、認証情報ストア に保存されており、ここから追加・編集・削除といった管理が可能です。
- SOARCOM Funnel から送信される JSON の内容については、SORACOM Funnel から送信されるデータフォーマット を参照してください。