LoginSignup
0
0

More than 5 years have passed since last update.

ラズパイで取得したセンサー値をGoogleSpreadSheetsでグラフ化する【Pub/Sub準備編】(2/4)

Last updated at Posted at 2018-07-04

ラズパイで取得したセンサー値をGoogleSpreadSheetsでグラフ化するのPub/Sub準備編です。

本記事ではラズパイでセンサー値を取得し、Pub/Subのトピックを作成するところまでを設定します。
ざっくり図にすると次の通り。
image.png

Pub/Sub を補足すると、データの入口と出口のエンドポイントをそれぞれトピックと
サブスクリプションと呼び、Pub/Subへの送信と受信をそれぞれパブリッシュと
サブスクライブと呼びます。

今回の要件ではIoTCoreから受け取ったデータをサブスクライバーに転送します。

image.png

IoTCoreの役割は次の2つです。

  • 端末レジストリでIoTデバイスを管理する
  • 管理されたデバイスから受け取ったデータをパブリッシュする

今回は次の順に設定を行います。

プロジェクトを作成する

gcpに適当なプロジェクトが必要です。 無ければ作成します。
今回は raspi-comfort-sensor という名前で作成しました。

image.png

IoTCoreとPub/Subの設定を行う

IoTCoreとPub/Subの設定を行います。
具体的には次の作業を行います。

正確なところは次の公式ドキュメントを確認してください。

また記事内では次の通り設定に名前を付けました。

項目 名前 補足
レジストリID raspi-comfort-sensor-iotcore-registry 端末レジストリの名前。 この単位でIoTCoreを設定する。
トピック raspi-comfort-sensor-pubsub-topic Pub/Subがメッセージを受信するエンドポイントの名前。
端末ID raspi-is 端末レジストリにラズパイを登録するときの名前。

今回はラズパイからデータ送信を行う際にラズパイの
ホスト名を端末IDとして流用するので両者を一致させておく。

端末レジストリとトピックを作成する

ウェブUIで次の通り作成します。

image.png

次の項目を入力します。

image.png

上記設定で次の通りPub/Subトピックも追加されています。

image.png

ラズパイを端末レジストリに登録する

次にラズパイを端末レジストリに登録するのですが、その前にラズパイと
IoTCore間の通信を暗号化するためのキーペアをラズパイで作成します。

キーペアの作成と登録については公式の Add a public key to the device
記載されています。

次の通りです。

pi@raspi-is:~ $ mkdir iotcore
pi@raspi-is:~ $ cd iotcore
pi@raspi-is:~/iotcore $  openssl req -x509 -newkey rsa:2048 -keyout rsa_private.pem -nodes \
>     -out rsa_cert.pem -subj "/CN=unused"
Generating a 2048 bit RSA private key
............................................+++
..........................+++
writing new private key to 'rsa_private.pem'
-----
pi@raspi-is:~/iotcore $ ls -l
合計 8
-rw-r--r-- 1 pi pi 1090  1月  5 10:23 rsa_cert.pem
-rw------- 1 pi pi 1704  1月  5 10:23 rsa_private.pem

作成した rsa_cert.pem を使って端末レジストリにラズパイを登録します。

image.png

次の項目を入力します。

image.png

完了すると次の通りレジストリの詳細で端末が確認できます。

image.png

以上でGCP側の設定は完了です。

ラズパイからIoTCoreにデータ送信する

送信プログラムはJava8+Mavenで作成しました。

もしOracleからJDKをダウンロードするのであればLinux ARM 32 Hard Float ABIを選択します。
Mavenは公式からアーカイブを取得して解凍してパスを通します。

送信プログラムを作成する

Googleの Cloud IoT Core Java MQTT example を元に作成しました。
ソースはgithubにあげましたのでそちらでご確認ください。

送信する

送信プログラムの動作確認が出来たら、Ambient向けに作成したスクリプト
修正して送信プログラムを起動する処理を追加してください。

import os

    cmd = 'cd /home/pi/iotcore/; java -jar raspi-comfort-sensor-iotcore-1.0.jar ' 
    opt = '--temperature {} --humidity {} --pressure {} --illuminance {} --co2 {}'  \
          .format(temperature, humidity, pressure, illuminance, co2)

    os.system(cmd + opt)

動作確認できたらcronに仕込みます。
以上でPub/Subの準備は完了です。

次は BigQuery蓄積編 です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0