ラズパイで部屋の温湿度を測ってtweetする
Raspberry Piに接続した温湿度センサー(DHT11)で測った温度・湿度をWebhook経由でGoogleスプレッドシートに送って、かつtweetできるようにしてみた備忘録です。(下図参照)
温湿度センサー(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番に修正します。
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は湿度
が入るようにしていきます。
IFTTTでwebhookからtweetするレシピを作る
次は、取得時間、温度、湿度をtweetするレシピを作ります。
要領はGoogleスプレッドシートの時とほぼ同じです。
「This」はGoogleスプレッドシートのものと同じ。
Event Nameも同じものにします。
「That」はつぶやきたいTwitterアカウントを連携させて、Tweet textを記入します。
Value1~3はGoogleスプレッドシートのものと同じものになります。
Webhookに流すようにPythonファイルを修正する
「dht11_example.py」を修正し、Raspberry Piで温湿度を取得し、Webhookに流すようにします。
下のコードをコピペすればたぶん動作すると思います。
(ファイルは「dht11.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分に気温、湿度が記録されていることを確認しましょう。
以上。
Author And Source
この問題について(ラズパイで部屋の温湿度を測ってtweetする), 我々は、より多くの情報をここで見つけました https://qiita.com/takanorimutoh/items/e8ddae3861a562845c5d著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .