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

目的

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

やりたいこと

やりたいこと

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

用意したもの

Raspberry Pi

  • Raspberry Pi 3 MODEL B
    • 家電量販店で購入、ケースも一緒に

温度センサー

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で他のものと連携できないか調べる

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

参考文献


『 Python 』Article List
Category List

Eye Catch Image
Read More

Androidに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Bitcoinに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Goに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

JavaScriptに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Pythonに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Rubyに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Scalaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Swiftに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Unityに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Wordpressに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

機械学習に関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。