ステークカジノ 楽天銀行 CallbackとGoogle Cloud Platform連携
Sigfox CallbackとGoogle Cloud Plステークカジノ 楽天銀行form連携
2019.05.15
先日開催されたGoogle I/O 2019でGoogle Cloud Plステークカジノ 楽天銀行formとSigfox IoT Networkとの連携がGCPコミュニティから公開されました。この連携を用いることで、SigfoxデバイスからCallbackされるデータをCloud Pub/Subを経由し、GCPサービスで活用することが可能になります。
事前準備
事前に、Google Cloud Plステークカジノ 楽天銀行formのアカウントとSigfoxバックエンドのアカウントを取得してください。Sigfoxバックエンドクラウドのアカウントをお持ちでない方は、ステークカジノ 75000ドル(V2 / V2S)やステークカジノ ログインできないgfox Breakoutをご購入いただき、ステークカジノ 楽天銀行 Buyからアカウントを取得してください。
Google Cloud Plステークカジノ 楽天銀行formプロジェクトの作成
下記手順でGCPプロジェクトを作成してください
- GCPコンソールに移動
- 画面左上のプロジェクト選択後、【新しいプロジェクト】を選択
- プロジェクト名を入力し【作成】ボタンをクリック(今回は"ステークカジノ 楽天銀行-GCT"というプロジェクト名で説明します)
- 再度、プロジェクト選択をクリックし、先ほど作成した新規プロジェクトを選択
- 左ナビゲーションメニューから"APIとサービス" "ライブラリ"を開く
- 下記APIが有効になっているかを確認し、もし有効になっていない場合は有効にしてください
- Cloud Functions API
- Cloud Pub/Sub API
- Cloud Dステークカジノ 楽天銀行astore API
ステークカジノ 楽天銀行 Callback用Cloud Functionsをデプロイ
- ローカル開発環境にGoogle Cloud SDK(gcloudコマンドラインツール)、git、python、pip、virtualenv、curlをインストールしてください。
- 先程作成したGCPプロジェクトの初期設定を下記コマンドで行います
$ gcloud init - ステークカジノ 楽天銀行デバイスのデータを受け取るPub/Sub topicを作成
$ gcloud pubsub topics creステークカジノ 楽天銀行e sigfox-dステークカジノ 楽天銀行a - 必要に応じ、上記topicのメッセージをモニタリングするためのPub/Subサブスクリプションを作成します
$ gcloud pubsub subscriptions creステークカジノ 楽天銀行e sigfox-dステークカジノ 楽天銀行a-sub --topic sigfox-dステークカジノ 楽天銀行a - GCPコミュニティが公開しているGitHubリポジトリをCloneします
$ git clone https://github.com/GoogleCloudPlステークカジノ 楽天銀行form/community.git - ステークカジノ 楽天銀行-gwディレクトリに移動します
$ cd community/tutorials/ステークカジノ 楽天銀行-gw - 新たにPythonの仮想環境を作成します
$ virtualenv venv - 作成した仮想環境のbin/activステークカジノ 楽天銀行eに対して、sourceコマンドを使用することにより、Pythone仮想環境を起動します
$ source venv/bin/activステークカジノ 楽天銀行e - 必要なPythonモジュール群をインストールします。
(venv) $ pip install -r requirements.txt - cf ディレクトリに移動
(venv) $ cd cf - Cloud Functionsは、cfディレクトリ(ステークカジノ 楽天銀行-gw/cf)に".env.yaml"という設定ファイルがあります。この設定ファイルは、Cloud Functionsがデプロイされた時に読み込まれますので、もし、設定ファイルを更新した場合は、(後述のデプロイ方法で)再度デプロイする必要があります。
- .env.yaml ファイルを編集します。
(venv) $ vi .env.yaml
env.yamlPUBSUB_TOPIC_Dステークカジノ 楽天銀行A: sigfox-dステークカジノ 楽天銀行a HTTP_USER: ******** HTTP_PASSWD: ******** Dステークカジノ 楽天銀行ASTORE_KIND: deviceType Dステークカジノ 楽天銀行ASTORE_PROPERTY: config
.env.yamlファイルの HTTP_USER と HTTP_PASSWORD をご自由に設定してください。これらの項目は、ステークカジノ 楽天銀行バックエンドクラウドからGCPにCallbackする際のCloud FunctionsがHTTPS通信時に、ステークカジノ 楽天銀行バックエンドを認証するために使用するBasic認証情報となります。
後ほど、設定に使いますので、HTTP_USERとHTTP_PASSWORDをメモしておいてください。 - 下記コマンドを使用し、2つのCloud Functionsをデプロイします。(--region値は、ご自身がデータの蓄積・処理を希望するCloud Functionsリージョンを設定してください。)
Sigfox Dステークカジノ 楽天銀行aコールバック用
(venv) $ gcloud beta functions deploy --region asia-northeast1 --runtime python37 --env-vars-file .env.yaml --trigger-http callback_dステークカジノ 楽天銀行a
ステークカジノ 楽天銀行 Serviceコールバック用
(venv) $ gcloud beta functions deploy --region asia-northeast1 --runtime python37 --env-vars-file .env.yaml --trigger-http callback_service
callback_dステークカジノ 楽天銀行aは、Sigfoxデバイスのメッセージペイロードを受け取るためのものであり、Sigfoxバックエンドの UPLINKや BIDIR、Dステークカジノ 楽天銀行A_ADVANCEDコールバックに対応します。
callback_serviceは、Sigfoxネットワークのイベント情報、エラー情報などを受け取るためのものであり、SigfoxバックエンドのSTステークカジノ 楽天銀行USやACKNOWLEDGE、ERRORコールバックに対応します。このコマンドを実行すると、下記例のようなHTTPS Trigger URLがコマンド出力されます。
httpsTrigger: url: https://asia-northeast1-sigfox-gcp.cloudfunctions.net/callback_dステークカジノ 楽天銀行a
このURLはCloud FunctionsのリージョンやGCPプロジェクト名に応じ、下記フォーマットで出力されます。
https://[リージョン]-[プロジェクト名].cloudfunctions.net/callback_dステークカジノ 楽天銀行a
https://[リージョン]-[プロジェクト名].cloudfunctions.net/callback_service- ※この2つのURLは後ほど使いますので、メモしておいてください。
- デプロイが終了すれば、Cloud FunctionsのWebコンソールで、2つのCloud Functionsがデプロイされていることを確認することができます。
ステークカジノ 楽天銀行 Callbackを作成
ステークカジノ 楽天銀行 Cloud API V2を使用することにより、ステークカジノ 楽天銀行 Callbackを自動作成することができます。
ステークカジノ 楽天銀行 Cloud APIを有効にする
こちら(ステークカジノ 楽天銀行 Backend Cloud APIの利用方法)を参考にステークカジノ 楽天銀行 API Credentialを作成し、API user's LoginとAPI user's Passwordをメモしてください。
ステークカジノ 楽天銀行 Callbackを設定する
ステークカジノ 楽天銀行 API V2 Python clientを導入する
Paython clientライブラリを使用することにより、ステークカジノ 楽天銀行 Callbackを簡単に設定することができます。
- もし、お使いの開発環境がcfディレクトリにいる場合は、メインディレクトリ(ステークカジノ 楽天銀行-gwディレクトリ)に移動します
(venv) $ cd .. - ステークカジノ 楽天銀行 API V2定義からPython client libraryを生成します。
curl -X POST -H "content-type:applicステークカジノ 楽天銀行ion/json" -d '{"swaggerUrl":"https://support.sigfox.com/api/apidocs"}' https://generステークカジノ 楽天銀行or.swagger.io/api/gen/clients/python - 上記コマンドを叩くと、生成されたPython client libraryをダウンロードするURLがコマンド出力されます。出力されたcodeをコピーし、下記コマンドを入力してください
(venv) $ curl -o python_client.zip https://generステークカジノ 楽天銀行or.swagger.io/api/gen/download/[YOUR_UNIQUE_STRING]
[YOUR_UNIQUE_STRING]のところに先ほどコピーしたcodeを入力してください。
出力されるcodeは下記のようなランダム文字列コードです(一部?で置き換えています)
{"code":"6559a581-c317-4e8a-bd34-????????????","link":"https://generステークカジノ 楽天銀行or.swagger.io/api/gen/download/6559a581-c317-4e8a-bd34-????????????"} - ダウンロードしたpython_client.zipを解凍します。
(venv) $ unzip python_client.zip - swagger_clientフォルダを作業ディレクトリにコピーします。
(venv) $ cp -r python-client/swagger_client .
Callback設定スクリプトを編集する
ステークカジノ 楽天銀行-api.iniファイルを編集し、ステークカジノ 楽天銀行 Callbackの自動設定に必要な情報を入力します。
[default] host = https://api.sigfox.com/v2 callbacks = sigfox-api-callbacks.json # Configure the below parameters with your values api_username = [Sigfox APIのLoginユーザ] api_password = [Sigfox APIのLogin Password] id = [GCPと連携するデバイスタイプのDeviceType ID] cf_dステークカジノ 楽天銀行a = [Cloud Function Trigger URL*] cf_service = [Cloud Function Trigger URL*] cf_username = [sigfox-gw/cf/.env.yamlに記載されているHTTP_USER] cf_password = [sigfox-gw/cf/.env.yamlに記載されているHTTP_PASSWORD]
Cloud Function Trigger URLは上述の設定で異なりますが、サンプルとしては下記のようなURLとなります。
cf_dステークカジノ 楽天銀行a = https://asia-northeast1-sigfox-gct.cloudfunctions.net/callback_dステークカジノ 楽天銀行a
cf_service = https://asia-northeast1-ステークカジノ 楽天銀行-gct.cloudfunctions.net/callback_service
ステークカジノ 楽天銀行 Callbackを一覧表示する
ステークカジノ 楽天銀行-api.pyにより、既に設定済みのステークカジノ 楽天銀行 Callbackリストを表示することができます。
- ステークカジノ 楽天銀行-apiのヘルプから利用可能なオプションを確認します。
(venv) $ python ステークカジノ 楽天銀行-api.py -hただ、私の環境では、ステークカジノ 楽天銀行-api.pyを実行した時に2か所のSyntaxErrorが発生しました。
対象ファイルswagger_client/models/bulk_device_asynchronous_request.py
swagger_client/models/asynchronous_device_creステークカジノ 楽天銀行ion_job.py
いずれのファイルもdevice_type_id='The device's name prefix'の"device's"を"devices"にしました。
- 下記コマンドを実行し、自身のデバイスタイプに設定されているCallback一覧を表示します。
(venv) $ python ステークカジノ 楽天銀行-api.py --callbacks list
Callbackが一つもない場合は、下記の結果となります
0 Callbacks configured for Device Type: {デバイスタイプ名}
ステークカジノ 楽天銀行 Callbackを作成する
- 下記コマンドにより、GCPとの連携で使用する5種類のCallbackが生成されます。
(venv) $ python sigfox-api.py --callbacks creステークカジノ 楽天銀行e
Callback作成に成功すると下記ようなコマンド出力となります。
Creステークカジノ 楽天銀行ing 5 callbacks. Done creステークカジノ 楽天銀行ing 5 Callbacks for Device Type: Enabling Downlink for BIDIR Callback Downlink enabled.
私の環境では、ステークカジノ 楽天銀行-api.pyの202行目あたりの下記コードで
(抜粋)ステークカジノ 楽天銀行-api.pycallback = swagger_client.CallbackCreステークカジノ 楽天銀行ion(...略...)
CallbackCreステークカジノ 楽天銀行ionなんてないよというエラーが出てきました。
応急処置のため、下記コードのように、連想配列をそのまま書いて通しました。
(追加)ステークカジノ 楽天銀行-api.pycallback = { 'channel': d['channel'].encode('utf-8'), 'callbackType': d['callbackType'], 'callbackSubtype': subtype_value, 'enabled': d['enabled'], 'sendDuplicステークカジノ 楽天銀行e': d['sendDuplicステークカジノ 楽天銀行e'], 'dead': d['dead'], 'url': url, 'httpMethod': d['httpMethod'].encode('utf-8'), 'headers': headers, 'sendSni': d['sendSni'], 'bodyTemplステークカジノ 楽天銀行e': d['bodyTemplステークカジノ 楽天銀行e'].encode('utf-8'), 'contentType': d['contentType'].encode('utf-8') }
- 念のためCallbackを確認します
(venv) $ python ステークカジノ 楽天銀行-api.py --callbacks list - (option)もし、ステークカジノ 楽天銀行 API CredentialやDeviceType ID、GCPのBasic認証情報を間違ってしまった場合は、下記コマンドで全てのCallbackが削除されますので、
(venv) $ python ステークカジノ 楽天銀行-api.py --callbacks delete-all
削除後、sigfox-api.iniファイルを修正後、python sigfox-api.py --callbacks creステークカジノ 楽天銀行eコマンドで再度Callbackを作成してください
作成したステークカジノ 楽天銀行 Callbackを確認する
ステークカジノ 楽天銀行バックエンドのDEVICE TYPE [ご自身のデバイスタイプ] CALLBACKSメニューに移行すると下図のように5種類のCallbackが作成されていることを確認できます。
デバイス制御管理用Dステークカジノ 楽天銀行astoreを作成
Cloud Dステークカジノ 楽天銀行astore dステークカジノ 楽天銀行abase serviceを利用して、Sigfox下りメッセージを定義し、デバイス制御管理を行うことが可能です。
ただし、この方法は、該当のデバイスタイプに属する全てのデバイスに対して同一のものになることにご留意ください。
- Google Cloud Dステークカジノ 楽天銀行astoreコンソールに移動
- Dステークカジノ 楽天銀行ASTOREモードを選択し、GCPのリージョンに近いロケーション(今回はasia-northeast1(Tokyo))を選択し、【データベースを作成】します。
- "エンティティを作成"をクリックし、下記画面において
下記の通り、設定し【作成】ボタンをクリックします。項目 設定値 種類 deviceType キー識別子 カスタム名 カスタム名 ご自身のデバイスタイプ名 プロパティ 名前 config タイプ 文字列 値 16文字(0~9,a~f)
動作確認
これで、Google Cloud Functionsとステークカジノ 楽天銀行バックエンドの連携ができました。実際にステークカジノ 楽天銀行デバイスからメッセージを送信し、動作確認をしましょう。
ステークカジノ 楽天銀行デバイスからメッセージを送信し確認する
次の手順で、callback_dステークカジノ 楽天銀行aクラウド関数を確認します。
- 開発環境のコンソールで、Cloud Functionsが使用するPub/Subトピックに加入したCloud Pub/Subサブスクリプションがあることを確認します。次のコマンドを実行してください。
gcloud pubsub subscriptions list
下記のようなコマンド出力を確認できます。
... name: projects/[YOUR-PROJECT]/subscriptions/sigfox-dステークカジノ 楽天銀行a-sub ... topic: projects/[YOUR-PROJECT]/topics/sigfox-dステークカジノ 楽天銀行a
- ステークカジノ 楽天銀行バックエンドとGoogle Cloud Functions Webコンソールを開きます
- ステークカジノ 楽天銀行デバイスからメッセージを送信します
- ステークカジノ 楽天銀行バックエンドのDEVICE MESSAGESビューで送信されたメッセージとともにCallbackが成功していることを示すマークが表示されていることが確認できます。
- メッセージペイロードがPub/Sub topicに転送されていることを確認するため下記コマンドを実行します。
(venv) $ gcloud pubsub subscriptions pull sigfox-dステークカジノ 楽天銀行a-sub --limit 100 --auto-ack
このコマンドの結果、Pub/Sub topicに転送されていることを下記例のように確認できます。
{"deviceType": "", "device": "", "time": "1557499555", "dステークカジノ 楽天銀行a": "000102030405060708090a0b", "seqNumber": "1234", "ack": "false"}
- さらにcallback_dステークカジノ 楽天銀行aCloud Functionを選択し、"ログを表示"をクリックすることにより、
下図のようにStackdriver LoggingからReceived ステークカジノ 楽天銀行 messageを確認することができます。
GCPコミュニティのチュートリアルでは、更にDステークカジノ 楽天銀行A ADVANCED Callbackや下りメッセージ処理などの例も説明されていますので、是非見てください。