見出し画像

Raspberry Pi(ラズパイ)で温度と湿度を測定し、Googleデータポータルで可視化するプログラミング解説

Raspberry Piを利用して部屋の温度・湿度を測定し、Google Cloud Platform(BigQuery及びデータポータル)に送り、データの格納・可視化を行うと同時に、一定範囲の湿度を超えたらSlackに通知するシステムを作成します。

概要

こんな方におススメ(*´▽`*)
・IoTプロダクトを作ってみたい
・リアルなデータをクラウドと連携して可視化してみたい

アウトプットのイメージは次のようになります。

・Raspberry Piで定期的に温度、湿度を取得して、Googleデータポータルで可視化

温度湿度グラフ

・異常値(湿度70%以上または湿度30%以下)を検出したら、slackに通知

画像29

IoTデバイスとGoogle Cloud Platfrom

画像24

Raspberry PiのようなIoTデバイスからの測定データ等をGoogle Cloud Platformで処理するには上図のような流れが考えられます。

Google Cloud Platformをフル活用すると、②のようにCloud IoT CoreやCloud Pub/Sub、Dataflow、Functionsなどを経由してBigQuery等にデータを格納、それをデータポータルやスプレッドシートで可視化というかたちにできます。

②のようにIoTとクラウドを組み合わせて活用することで、データ通信をクラウド上で実行することによる通信量の削減、セキュリティの向上などのメリットがあります。特に複数台のデバイスを使用したりする大規模なIoTシステムでは有用と言えるでしょう。

ただし、個人として小規模で利用する範囲では、オーバースペックになることが多く逆にコストが大きくなってしまう可能性もあるので、今回の記事では、簡易的な方法として、上図における①の流れで直接Raspberry PiからBigQueryにデータを格納し、同時にSlackへの通知も行うシステムを作ります。

今回使わなかったGoogle Cloud Platformの中には以下のようなものがあるので参考にしてください。

Cloud IoT Core

IoTデバイスとクラウドを繋ぐゲートウェイのような役割を果たします。Pub/Subにデータを受け渡すほか、IoTデバイスへのファームウェアのアップデートの送信も含めたデバイスの認証・管理などができます。

Cloud Pub/Sub

データの送受信を行うためのメッセージングサービスです。IoT Coreを通じてRaspberry Piからのデータを受信する(Subscribe)、DataFlowやFunctionsに送信する(Publish)、といったPub/Sub型のモデルでデータ配信ができます。

Cloud DataFlow

データ処理を簡単に実行できるフルマネージド型のサービスです。Google側でテンプレートが用意されているので、コードを書くことなくPub/SubからのデータをBigQueryに格納することができます。

Cloud Functions

関数・スクリプトをクラウド上で実行するためのサービスです。こちらはDataFlowとは違い自分でコードを書かなければなりませんが、ただデータを左から右に受け渡すだけではなく、受け取ったデータに応じてスマホに通知といった複雑な処理をコードを書くことによって実行できます。

本記事では、Raspberry PiからSlackに直接通知をおこなっていますが、Cloud Functionsを利用すればサーバーレスで通知ができるので、通信量の削減等につながります。

本記事の全体像

1.Raspberry Piの事前準備

2.DHT22の動作確認

3.データをGoogle BigQueryに送信

4.データポータルによる可視化

5.Slackへの通知機能の追加

上のような流れでシステムを作成していきます。1と2ではRaspberry Pi及びDHT22のセットアップ、3と5ではPythonスクリプトの作成、3と4ではGoogle Cloud Platform上での操作を中心に解説しています。

1.Raspberry Piの事前準備

まずは、ラズパイをセットする手順を簡単に説明します。

用意するもの

・Raspberry Pi(無線LAN機能が搭載されているもの、本記事ではRaspberry Pi Zero WHを使用)

・DHT22(温度・湿度センサー)

・microSDカード(16GB以上推奨)

・各種ケーブル、電源等

画像26

(参考)PCでRaspberry PiのOSをインストール

Raspberry Piとは別のPCを利用して、microSDカードにRaspberry PiのOS(旧Raspbian)をインストールします。スターターキットを購入するなどで既にインストール済みのmicroSDカードが手元にある場合はこの作業は必要ありません。

2020年2月に公式からRaspberry Pi Imagerというツールが公開されてからは、OSのインストールは非常に簡単になりました。

上の公式サイトから、お手持ちのPCのOSに合わせてリンクをクリックするとダウンロードできます。

ダウンロードが終わったらファイルを実行してRaspberry Pi Imagerをインストール・起動してください。

無題

インストールしたいOSとSDカードを選択して「WRITE」をクリックすればインストールが始まります。

OSはRaspberry Pi OSなら何でも良いですが、よくわからなければ一番上のOSで説明文に「A port of Debian with the Raspberry Pi Desktop (Recommended)」と書かれているものをインストールしておけば問題ありません。

他のツールを使ってインストールする場合、SDカードのフォーマットとインストールの二段階の手順が必要となりますが、Raspberry Pi Imagerではインストール時に自動的にフォーマットもしてくれるようです。OSに「Erase」を選択すればフォーマットだけを行うこともできます。

インストールが終わったらSDカードを抜いてもいい旨のメッセージが表示されます。これでSDカードをRaspberry Piに挿入すると、OSが起動し初期設定の画面が表示されます。ディスプレイやマウス・キーボードをつないで設定を始めても構いませんが、今回はPCからリモート操作する方法を説明します。ディスプレイ等をつながずに最初からリモート操作だけで済ますには事前に無線LANの設定を行いましょう。

PCにインストール済みのSDカードを再度挿入します。
コマンドライン等を開き、E:などのSDカードのルートディレクトリに移動して、「wpa_supplicant.conf」という名前でファイルを作成、メモ帳などで編集し以下の内容を書き込み保存してください。

ここから先は

18,252字 / 24画像

¥ 1,000

この記事が気に入ったらチップで応援してみませんか?