Soracom

Users

スタートガイド

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

※ TIPS: ランダムな文字列は 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 Funk の設定を行う 

SORACOM ユーザーコンソール の SIM グループの管理画面から “SORACOM Air for Cellular 設定” で [バイナリパーサー設定] を “ON” にした後、以下のように入力してから [保存] をクリックします。 ※ SIM グループを作成していない場合は作成した上で、ボタンの SIM に割り当てておいてください。

  • フォーマット: @button

Button - Funk - AWS Lambda / air 1

同じ SIM グループの管理画面から “SORACOM Funk 設定” を “ON” にした後に表示されるダイアログで以下のように入力します。

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

Button - Funk - Google Cloud Functions / funk 1

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

ステップ 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

※ TIPS: ランダムな文字列は 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 の設定を行う 

SORACOM ユーザーコンソール の SIM グループの管理画面から “SORACOM Air for Cellular 設定” で [バイナリパーサー設定] を “ON” にした後、以下のように入力してから [保存] をクリックします。 ※ SIM グループを作成していない場合は作成した上で、ボタンの SIM に割り当てておいてください。

  • フォーマット: @button

Button - Funk - AWS Lambda / air 1

これ以降は Getting Started: Google Cloud Pub/Sub アダプターを使用する | SORACOM Funnel3. Funnel を設定する を行ってください。 ※ 4. Funnel を使用して Pub/Sub にデータを送信する はスキップしてください

SORACOM Funnel 設定の際には以下に注意してください

  • トピック名は 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: この後の開発に向けた情報源