#初めに
##何故、Google Cloud PlatformのIoT Coreを使用するか。
自宅でセンシングしたデータをサーバレスでWEBから表示出来るようにしたかったため。
##何故、GoogleCloudPlatformか。
Google Cloud Next Tokyo'17に参加して興味を持ったため。
##目標
ラズパイからIoT Coreへ繋がるところ一通りやってみます。
#前提
2017年11月時点の情報です。
ラズパイでPythonが動く環境とpipとvirtualenvが入っている必要があります。
以下の投稿を参考にして環境は用意しました。
Raspberry Piに Python開発環境を構築する
pipのインストール方法
Pythonの仮想環境を構築できるvirtualenvを使ってみる
#使用するまでの手順
##1.APIを有効にする
GCPのコンソールでビッグデータのIoT Coreを選択すると、APIを有効にするかどうか問われるので有効にする。
##2.端末レジストリを作成する
次に、端末レジストリを作成する。コンソールの指示に従い、レジストリID、Cloudリージョン、Pub/Subのトピックを入力する。IoT Coreのアカウント(iot@system.gserviceaccount.com)にPub/Subの公開権限を付与するようポップアップで指示されるので、続行する。
##3.デバイス(ラズパイ)で公開鍵、暗号鍵のセットを作成する
ラズパイでopensslを実行して鍵のセットを作成する。
$ openssl req -x509 -newkey rsa:2048 -keyout rsa_private.pem -nodes -out rsa_cert.pem -subj "/CN=unused"
##4.デバイスを登録する
IoT Coreのコンソール上で作成したレジストリを選択すると「端末の追加」ボタンがあるので押す。
色々入力をもとめられるので以下の通り入力する。
フィールド | 入力内容 |
---|---|
端末 ID | (適当なID) |
端末の通信 | 許可 |
公開鍵の形式 | RS256_X509 |
公開鍵の値 | ラズパイで作成したrsa_cert.pemの中身 |
##5.デバイスからリクエストを送る
公式にサンプルプログラムがあったので、デバイスからPhysonを使用してリクエストを送ります。
$ curl -sL https://raw.githubusercontent.com/GoogleCloudPlatform/python-docs-samples/master/iot/api-client/http_example/requirements.txt -o requirements.txt -o requirements.txt
$ curl -sL https://raw.githubusercontent.com/GoogleCloudPlatform/python-docs-samples/master/iot/api-client/http_example/cloudiot_http_example.py -o cloudiot_http_example.py
$ virtualenv env
$ pip install -r requirements.txt
$ python cloudiot_http_example.py --registry_id=(レジストリID) --project_id=(プロジェクトID) --device_id=(デバイスID) --message_type=event --algorithm=RS256 --private_key_file=(秘密鍵へのパス)/rsa_private.pem --cloud_region=(プロジェクトがあるリージョン)
以下のようなメッセージが出力され、レスポンスが200であれば正常です。
Publishing message 1/100: 'reg-id/test-payload-1'
('HTTP response: ', <Response [200]>)
##6.コンソールを確認する
コンソールの端末詳細画面でLatest activityのTelemetry event receivedがデバイスでコマンドを叩いた時刻になっていればOKです。
#終わりに
ひとまずデバイスをIoT Coreに繋ぐところまでできました。
IoT Coreのメイン機能はデバイスの管理とハブ機能の二つっぽいですね。センシングデータを見せる化するためにはPub/Subでさらにどうにかする必要なので、次回はPub/Subをやります。
#参考にしたサイト
GCP公式Quickstart
GCP公式HTTP Client Samples
ラズパイのPython環境は以下のサイトを参考に構築いたいしました。偉大なる先人たちに感謝いたします。
Raspberry Piに Python開発環境を構築する
pipのインストール方法
Pythonの仮想環境を構築できるvirtualenvを使ってみる