41
63

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Raspberry Piで部屋の温度を可視化する

Last updated at Posted at 2018-01-07

目的

  • Raspberry Piを使って何かしたい!
  • 家の中がどれだけ寒いか知りたい!

やりたいこと

やりたいこと

  1. Raspberry Piで部屋の温度を測定する
  2. IFTTT経由でGoogleスプレッドシートに温度を記録する
  3. 部屋の温度変化をグラフ化する

用意したもの

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スプレッドシート

IFTTT

  • https://ifttt.com
  • レシピを設定し、Raspberry PiとGoogleスプレッドシートをつなぐ

セットアップ

1. 温湿度センサーをセットアップ

  • 下記のドキュメントを参考にセットアップする
  • 今回はPythonのソースコードを使用
    • dht11-test.pyの25,26行目のインデントがおかしいので修正する
      修正箇所
  • 温度・湿度が測定できた :thumbsup:
$ 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」をクリック
    image.png
  • アクセスで使うKeyが発行される
    image.png
    {event}を切り替えることで、IFTTTのトリガーを切り替えられる
    パラメータは3つまで指定できる(value 1,2,3)

3. IFTTTのレシピを作成

  • 新しいレシピを作る
  • thisをクリックし、トリガーを設定する
    thisをクリック
    • "Webhoocks"を検索しクリック
      Webhoocksを検索
    • 「Receive a web request」をクリック
    • 「Event Name」に任意の文字列を入力し、「Create trigger」をクリック
      今回は "temperature" と入力
      トリガーとなるEvent名を設定
  • thatをクリックし、アクションを設定する
    thatをクリック
    • "Google Sheets"を検索しクリック
      Google Sheetsを検索
    • 「Connect」をクリックし、Googleアカウントの許可を与える
    • 「Add row to spreadsheet」を選択
      時間ごとのデータを蓄積したいのでこちらを使う
      actionを選択
    • actionの情報を追加していく
      Complete action fields
      • Spreadsheet name
        スプレッドシートの名前を指定 (存在しなければ作成される)
      • Formatted row
        スプレッドシートに出力されるフォーマットを指定
        IFTTTのWebhookで指定するvalue1,2,3が指定できる
      • Drive folder path
        GoogleDrive内のパスを指定
    • このように設定、問題なければ「Create action」をクリック
      設定内容
  • 設定が完了したら、レシピ名を修正して「Finish」をクリック
    レシピの名前を設定
    これでレシピが完成!
    レシピ完成
  • テストしてみる
    Keyを取得したページで簡単にテストができる
    image.png
    • スプレッドシートを見てみる
      ファイルができてる :file_folder:
      GoogleDriveの中身
      データも入っている :smile:
      スプレッドシートの中身

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を指定
  • こんな感じで登録される (1行目は見やすいようにするため追加)
    スプレッドシートのデータ

  • 登録されたデータを使ってグラフ化する
    スプレッドシートなので簡単にグラフが作れる!これは便利 :thumbsup:
    温度グラフ

プラスαでやりたいこと

  • 温度測定処理をサービス化

    • systemdを使ってサービスに追加していく
  • IFTTTで他のものと連携できないか調べる

    • 一定温度に達したら通知
    • 寒くなったら自動でエアコンをつける
      などなど

参考文献

41
63
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
41
63

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?