Raspberry Piで1時間ごとに温度と湿度を測定してLINEに通知する方法
RaspberryPiで1時間ごとに温度と湿度を測定してLINEに通知する方法を紹介します。
この投稿で紹介しているRaspberryPiはRaspberry Pi3 B+を使っています。
RaspberryPiからスマホのLINEに通知する方法はLINE Notifyを使って実行しています。
LINE Notifyについて紹介している投稿がこちら↓
「RaspberryPiからスマホのLINEにメッセージを送信する方法」
1時間ごとに温度と湿度を測定してLINEに通知するプログラム
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
import RPi.GPIO as GPIO import dht11 import schedule import requests import urllib.parse as parse import time import datetime def measure(): token = 'LINE Notifyで発行されたトークンを記入'#LINE Notifyで発行されたトークン url = 'https://notify-api.line.me/api/notify'#LINE NotifyのAPIのURL dt = datetime.datetime.now()#現在時刻の取得 d1=dt.strftime('\n%Y/%m/%d %H:%M:%S')#始めに改行を入れて見やすくする while True:#温度と湿度が測定されるまでループ result = instance.read() if result.is_valid(): temp="Temperature: %-3.1f C" % result.temperature#温度 humi="Humidity: %-3.1f %%" % result.humidity#湿度 break d2= "\n" + temp + "\n"+ humi ms_data =d1 + d2#現在時刻と温度、湿度の文字列をくっつける post_data = {'message': ms_data}#送信するメッセージ headers = {'Authorization': 'Bearer ' + token} #送信 res = requests.post(url, data=post_data, headers=headers) print(res.text)#メッセージが送信されたかどうかの確認 GPIO.setmode(GPIO.BCM) schedule.every(1).hours.do(measure)#1時間ごとにmeasureを実行する命令 try: instance = dht11.DHT11(pin=4) measure()#実行したときの時刻と温度、湿度をLINEに通知 while True: schedule.run_pending()#schedule.every(1).minutes.do(measure)を実行 time.sleep(1) except KeyboardInterrupt: print("GPIO-Cleanup") GPIO.cleanup() |
まず始めに、39行目でプログラムを実行したときの時刻と温度、湿度を測定してLINEに通知するようにしています。
それから、1時間ごとの時刻と温度、湿度を測定してLINEに通知しています。
ラズパイとdht11の配線については下の参考サイトに載ってるサイトを参考にしました。
※5行目のimport urllib.parse as parseはいらないです。すいません
プログラムが実行された様子

2021年03月27日 11時28分27秒
Temperature(温度):19.4C
Humidity(湿度):53.0%
家に置いてあるアナログの温度計と湿度計との誤差があまりなかったので、ちゃんと測定できています。
11時28分に測定を開始してから1時間後

1分ごと
1時間ごとに温度と湿度を測定すると時間がかかるので、1分ごとに測定してLINEに通知がきた様子がこちら↓
35行目をschedule.every(1).minutes.do(measure)にすることで1分ごとに測定することができます。


参考サイト
●import scheduleについて
https://qiita.com/dgkmtu/items/3bd3794b44a0aa03bfe3
●dht11の配線とdht11を動かすためのコードのインストール方法について