目的
- Raspberry Piを使って何かしたい!
- 家の中がどれだけ寒いか知りたい!
やりたいこと
- Raspberry Piで部屋の温度を測定する
- IFTTT経由でGoogleスプレッドシートに温度を記録する
- 部屋の温度変化をグラフ化する
用意したもの
Raspberry Pi
- Raspberry Pi 3 MODEL B
- 家電量販店で購入、ケースも一緒に
温度センサー
- DHT11 温湿度センサー
- OSOYOO(オソヨー) の電子工作キットにあったセンサーを使用
- http://osoyoo.com/ja/2017/07/18/dht11-temperature-humidity-sensor-module/
- いろいろなセンサーが欲しかったのでセットを購入
- https://www.amazon.co.jp/gp/product/B01M6ZFNSS/
- Amazonなどで単品でも売ってるようです
- ジャンパワイヤー
- Raspberry Piとセンサーをつなぐために使用
- 今回はセンサーとGPIOを直接つないだので、オス-オスを3本使用した
Googleスプレッドシート
- https://www.google.com/intl/ja_jp/sheets/about/
- 受信したデータの記録場所として使用
- 可視化も簡単にできるので便利!
IFTTT
- https://ifttt.com
- レシピを設定し、Raspberry PiとGoogleスプレッドシートをつなぐ
セットアップ
1. 温湿度センサーをセットアップ
- 下記のドキュメントを参考にセットアップする
- 今回はPythonのソースコードを使用
- 温度・湿度が測定できた
$ python dht11-test.py
Temperature = 22 C Humidity = 35 %
Temperature = 22 C Humidity = 35 %
Temperature = 0 C Humidity = 0 %
Temperature = 22 C Humidity = 36 %
Temperature = 0 C Humidity = 0 %
Temperature = 22 C Humidity = 36 %
たまに "0 C" や "0 %" となっているのは無視してOK
↓ OSOYOOのドキュメントをから抜粋
ラズパイはDHT11の信号を読み取れる時、マイクロ秒のリアルタイム・タイミングが必要ですが、ラズパイでのOS、Raspbianはリアルタイムシステムではないので、正しくチェックできない時は、データが紛失しました。
2. IFTTTのWebhookをセットアップ
- IFTTTのWebhooksを使う
- 「Documentation」をクリック
- アクセスで使うKeyが発行される
{event}を切り替えることで、IFTTTのトリガーを切り替えられる
パラメータは3つまで指定できる(value 1,2,3)
3. IFTTTのレシピを作成
- 新しいレシピを作る
-
thisをクリックし、トリガーを設定する
-
thatをクリックし、アクションを設定する
- "Google Sheets"を検索しクリック
- 「Connect」をクリックし、Googleアカウントの許可を与える
- 「Add row to spreadsheet」を選択
時間ごとのデータを蓄積したいのでこちらを使う
- actionの情報を追加していく
-
Spreadsheet name
スプレッドシートの名前を指定 (存在しなければ作成される) -
Formatted row
スプレッドシートに出力されるフォーマットを指定
IFTTTのWebhookで指定するvalue1,2,3が指定できる -
Drive folder path
GoogleDrive内のパスを指定
-
Spreadsheet name
- このように設定、問題なければ「Create action」をクリック
- "Google Sheets"を検索しクリック
- 設定が完了したら、レシピ名を修正して「Finish」をクリック
これでレシピが完成!
- テストしてみる
Keyを取得したページで簡単にテストができる
4. Googleスプレッドシートに温度・湿度を追加
- 測定した温度と湿度の情報を 2で準備したWebhookで指定する
湿度も取れるので一緒に追加する
設定項目 | 設定内容 | 備考 |
---|---|---|
value1 | 測定日時 | グラフ化しやすいフォーマットで追加 |
value2 | 温度 | |
value3 | 湿度 |
- 下記のリクエストを参考に、温度・湿度を測定するプログラム内でデータを送る
curl -X POST -H "Content-Type: application/json" -d '{"value1":"2018/01/06 0:03:03","value2":"24","value3":"33"}' https://maker.ifttt.com/trigger/temperature/with/key/{Key}
# {key} : IFTTTのWebhookのKeyを指定
プラスαでやりたいこと
-
温度測定処理をサービス化
- systemdを使ってサービスに追加していく
-
IFTTTで他のものと連携できないか調べる
- 一定温度に達したら通知
- 寒くなったら自動でエアコンをつける
などなど
参考文献
- OSOYOO(オソヨー)のチュートリアル
- 使用したフリー素材サイト