Soracom

Users

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

Google Cloud と組み合わせる

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

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

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

button_design_patterns / Button - Funk - Google Cloud Functions

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

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

Google Cloud ダッシュボードのナビゲーションメニューから "Cloud Functions" を探してクリック、その後に [関数の作成] をクリックします。"API が有効になっていません" と表示される場合は [API を有効にする] をクリックしてから [関数の作成] に進んでください。

Button - Funk - Google Cloud Functions / functions 1

表示されるダイアログに以下のように入力した後、[作成] をクリックします。

  • 名前: 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();
};

Button - Funk - Google Cloud Functions / functions 2

作成した関数をクリックし [トリガー] タブをクリックして表示された URL をメモしておきます。

Button - Funk - Google Cloud Functions / functions 3

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

バイナリパーサーを設定する

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

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

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

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

Button - Funk - AWS Lambda / air 1

SORACOM Funk を有効にする

Funk の設定はグループに対して行います

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

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

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

  2. スイッチをクリックして「ON」にします。

  3. [サービス] として「Googl Cloud Functions」を選択し、[送信データ形式][関数の URL] を入力して [保存] をクリックします。

    • 送信データ形式: JSON
    • 関数の URL: (先ほどメモをした URL)

    Button - Funk - Google Cloud Functions / funk 1

  4. IoT SIM が所属するグループを切り替えます。

    IoT SIM の Funk の設定が完了しました。

SORACOM CLI / SORACOM API の場合

soracom groups put-config (Group:putConfigurationParameters API) を使用します。

{namespace} は、SoracomBeam です。

ボディで指定するプロパティについては、以下の keyvalue のペアを配列で指定します。

"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 の管理画面で行います。関数の管理画面から [ログを表示] をクリックします。"新しいログを読み込む" をクリックして適宜最新の情報に更新してください。

Button - Funk - Google Cloud Functions / testflight 1

ステップ 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 を設定するようにしてください。

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

SORACOM Funnel + Google Cloud Pub/Sub パターン

関数の保護を手軽に実現したい、もしくは、大量のデータストリームの処理を必要とするアプリケーションを構築したい場合は、SORACOM Funnel から Google Cloud Pub/Sub を通じて Google Cloud Functions を利用する方法があります。

button_design_patterns / Button - 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 Users1. Pub/Sub を設定する2. Funnel で使用するアカウントを作成する を行ってください。

内容としては以下の通りです。

  1. Cloud Pub/Sub の API を有効にする
  2. Cloud Pub/Sub に Publish できるサービスアカウントを "API/とサービス > 認証情報" で作成する
    • 本ガイドでは soracom-funnel-pubsub-user1 というサービスアカウント名を作成し、JSON 形式の認証情報を取得しておきます。
  3. 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 の設定はグループに対して行います

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

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

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

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

    Button - Funk - AWS Lambda / air 1

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

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

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

  3. スイッチをクリックして「ON」にします。

  4. 転送先サービスには「Google Cloud Pub/Sub」を指定し、転送先トピックに button-topic1 を入力します。

  5. 認証情報は 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: この後の開発に向けた情報源