LoginSignup
6
8

More than 3 years have passed since last update.

ラズパイで部屋の温湿度を測ってtweetする

Last updated at Posted at 2019-06-19

Raspberry Piに接続した温湿度センサー(DHT11)で測った温度・湿度をWebhook経由でGoogleスプレッドシートに送って、かつtweetできるようにしてみた備忘録です。(下図参照)
ifttt.PNG

温湿度センサー(DHT11)とRaspberry Piの接続

はじめに、DHT温湿度センサー(DHT11)とRaspberry Piを以下の通り接続します。

DHT11 Raspberry Pi
VCC 3.3V
GND GND
DATA GPIO4

次に、DHT11を扱えるようにするために、「DHT11_python」ライブラリを落とします。
LX Terminalで以下のコマンドを実行します。

git chone https://github.com/szazo/DHT11_python.git

/home/piフォルダ内に、「DHT11_python」というフォルダができています。
その中にある「dht11_example.py」というファイルをThonny Python IDEで開き、Pin番号を4番に修正します。

dht11_example.py
import RPi.GPIO as GPIO
import dht11
import time
import datetime

# initialize GPIO
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.cleanup()

# read data using pin 4
instance = dht11.DHT11(pin=4) #pin番号を4(GPIO4)に修正

while True:
    result = instance.read()
    if result.is_valid():
        print("Last valid input: " + str(datetime.datetime.now()))
        print("Temperature: %d C" % result.temperature)
        print("Humidity: %d %%" % result.humidity)

    time.sleep(1)

「dht11_example.py」を実行します。
正しく動作していれば、取得時間、温度、湿度が表示されます。

pi@raspberrypi:~ $ cd DHT11_python
pi@raspberrypi:~/DHT11_python $ dir
LICENSE.md  README.md  __init__.py  dht11.py  dht11_example.py
pi@raspberrypi:~/DHT11_python $ python dht11_example.py
Last valid input: 2019-06-19 00:54:21.994905
Temperature: 29 C
Humidity: 43 %
Last valid input: 2019-06-19 00:54:24.147734
Temperature: 30 C
Humidity: 42 %

IFTTTでwebhookからGoogleスプレッドシートに書き込むレシピを作る

IFTTTでwebhookからGoogleスプレッドシートに書き込むレシピを作ります。
こちらのページを全面的に参考にして設定したので、こちらのページを参照にしてください。

レシピはこんな感じになります。

Pythonファイルを作るときに、
Value1は取得時間
Value2は温度
Value3は湿度
が入るようにしていきます。

キャプチャ.PNG

IFTTTでwebhookからtweetするレシピを作る

次は、取得時間、温度、湿度をtweetするレシピを作ります。
要領はGoogleスプレッドシートの時とほぼ同じです。

「This」はGoogleスプレッドシートのものと同じ。
Event Nameも同じものにします。

「That」はつぶやきたいTwitterアカウントを連携させて、Tweet textを記入します。
Value1~3はGoogleスプレッドシートのものと同じものになります。

レシピはこんな感じになります。
レシピ.PNG

Webhookに流すようにPythonファイルを修正する

「dht11_example.py」を修正し、Raspberry Piで温湿度を取得し、Webhookに流すようにします。
下のコードをコピペすればたぶん動作すると思います。
(ファイルは「dht11.py」と同じディレクトリに保存してください。)

dht_ifttt.py
import RPi.GPIO as GPIO
import dht11
import time
import datetime

# IFTTT_Webhook
def ifttt_webhook():
    payload = {"value1": time,
                "value2": temp,
                "value3": humi }
    url = "https://maker.ifttt.com/trigger/{Event Name}/with/key/{Your Key}"
    response = requests.post(url, data=payload)

# initialize GPIO
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.cleanup()

# read data using pin 4
instance = dht11.DHT11(pin=4)

while True:
    result = instance.read()
    if result.is_valid():
        break

date = datetime.datetime.now()
time = date.strftime("%Y/%m/%d %H:%M")
temp = result.temperature
humi = result.humidity

ifttt_webhook()

Rasbianのcron機能で定期実行する

Raspberry Piを操作しなくても、定期的にプログラムを実行するように、Raspbianのcronという機能を使います。
ここでは1時間に一度、dht_ifttt.pyを実行するようにします。

LX Terminalで以下のコマンドを実行します。

crontab -e

「Select an editor」と表示されたら、「2」の/bin/nanoを選択してください。

「nano」が開いたら、カーソルをがメインの一番下に移動し、以下のコマンドを入力します。

00 * * * * /usr/bin/python3 /home/pi/raspberrypi/dht11_ifttt.py
  • Ctrl + X で終了します。
  • 「変更されたバッファを保存しますか?」と表示されたら、「Y」キーを押します。
  • 「書き込むファイル~」と表示されたら、「Enter」キーを押します。
  • 以下の表示がされたら書き込み終了です。
crontab: installing new crontab

あとは、hh時00分に気温、湿度が記録されていることを確認しましょう。

以上。

6
8
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
6
8