海 物語 大当たり 曲k8 カジノラズパイで気温と湿度を測定、LINEで通知を受け取る ~後編~仮想通貨カジノパチンコqoo10 当選 履歴

海 物語 大当たり 曲k8 カジノラズパイで気温と湿度を測定、LINEで通知を受け取る ~後編~仮想通貨カジノパチンコqoo10 当選 履歴

海 物語 大当たり 曲k8 カジノラズパイで気温と湿度を測定、LINEで通知を受け取る ~後編~仮想通貨カジノパチンコqoo10 当選 履歴

ftx 仮想 通貨 チャートk8 カジノ

パチスロ まどマギ ムック本 前回は、温湿度センサーモジュール「SHT31」を使って気温と湿度を測定し、記録するところまで解説しました。今回はこのデータをLINEのメッセージとして送信する方法までを解説します。

ラズパイからLINE宛てにメッセージを送る

 第10回では、撮影した画像をLINEに送る仕組みについてご紹介しました。今回も同じ方法で、測定した気温と湿度のデータをLINEへ送信してみましょう。

 ラズパイからLINEでメッセージを送るためには「アクセストークン」を発行する必要があります。その手順は第10回で紹介していますので、そちらをたどって設定してください。ここではトークンの取得が終了したところから解説します。

 第10回ではシェルスクリプトでのメッセージ送信を例に挙げましたが、今回はPythonのプログラムで送る方法についてご紹介します。

 Pythonには「requests」というライブラリがあります。requestsはHTTP通信ライブラリなので、これを使うとWebサイトにアクセスすることができるので、「https://notify-api.line.me/api/notify」からLINEあてにメッセージを送信できます。プログラムは以下の通りです。

#!/usr/bin/env python# -*- coding: utf-8 -*-import requestsurl = "https://notify-api.line.me/api/notify" token = "(取得したトークン)"headers = {"Authorization" : "Bearer "+ token} message = "ラズパイからメッセージ" payload = {"message" : message} r = requests.post(url, headers = headers, params=payload)

 「token」とあるところに取得したトークンを記述すればOKです。「message」には好きなメッセージを入れてみてください。これを「line.py」などのプログラム名で保存しておきましょう。そして

$ python line.py

 と入力すれば、LINEにメッセージを送ることができます。

SHT31LINEにメッセージが送信されるLINE宛てに測定した気温と湿度を送る

 LINEでメッセージが送れるようになったら、これを踏まえて、測定した結果をLINEで送るプログラムを作成しましょう。改変する部分は「message」の場所です。気温「roomtemp」と湿度「roomhum」の値を「.1f」で小数点以下第1位で丸めて「str」で文字列に変換し、それをひとかたまりにしてLINEに送ります。

#!/usr/bin/env python# -*- coding: utf-8 -*-import smbusimport datetimeimport requestssmb = smbus.SMBus(1)# SHT31のI2Cアドレスaddr = 0x45# データの読み出しsmb.write_i2c_block_data(addr, 0x2C, [0x06])data = smb.read_i2c_block_data(addr, 0x00, 6)# 気温st = data[0] <<8 | data[1]roomtemp = -45 + (175 * st/float((2**16 – 1)))# 湿度srh = data[3] <<8 | data[4]roomhum = 100 * srh/ float((2**16 – 1))# 温度と湿度をLINEで送るurl = "https://notify-api.line.me/api/notify" token = "(取得したトークン)"headers = {"Authorization" : "Bearer "+ token} message = ["気温" + str(format(roomtemp,'.1f')) + "C", "湿度" + str(format(roomhum,'.1f')) + "%"] payload = {"message" : message} r = requests.post(url, headers = headers, params=payload)

 先ほどは「ラズパイからメッセージ」という単純な文字列を送りました。測定データは小数で表されたデータなので、そこから桁数を小数点以下第1位にし、さらにそれを文字列として変更したうえで、表示を整えました。これをcronなどと組み合わせれば、定期的にデータを測定してLINEに送信するようにできます。

SHT31気温と湿度が送信される暑さ指数をLINEで送る

 ここまで段階を経て述べてきましたが、最終目的である「暑さ指数(WBGT)」により、アラートをLINEに送ってくれる仕組みを作りましょう。

 暑さ指数と警報基準の関係は以下のようになります。

■暑さ指数と基準の関係

暑さ指数(WBGT)基準31以上危険28以上、31℃未満厳重警戒25以上、28℃未満警戒21以上、25℃未満注意21未満ほぼ安全

 WBGTの求め方ですが、環境省のWebサイトによると以下のようになります。

 WBGT=0.7×Tw+0.2×Tg+0.1×Ta

 ここでTgは黒球温度の観測値、Taは気象庁観測の気温、Twは湿球温度です。ただし家の中で測定する場合は、それなりの装置がないと黒球温度や湿球温度を測定することはできません。そこで同じページにある予測値の式を利用します。

 WBGT=0.735×Ta+0.0374×RH+0.00292×Ta×RH+7.619×SR-4.557×SR2-0.0572×WS-4.064

 ここでTaは気温(℃)、RHは相対湿度(%)、SRは全天日射量(kW/m2)、WSは平均風速(m/s)です。全天日射量や平均風速ですが、全天日射量の平均は0.2程度です。これに加えて平均風速を0として考えると、もう少し式が簡単になります。

WBGT=0.735×Ta+0.0374×RH+0.00292×Ta×RH-3.4516

 これを踏まえてプログラムを設計しましょう。変数を「wbgt」として暑さ指数と基準の関係に当てはめると以下のようになります。

wgbt>31で「危険」を送信28<wbgt<31で「厳重警戒」を送信25<wbgt<28で「警戒」を送信21<wbgt>25で「注意」を送信wbgt<21で「ほぼ安全」を送信

 これらの場合分けをして、条件に合うメッセージをLINEで送る仕組みを作ります。場合分けですが、「if」と「elif」、「else」で条件を分岐させればよさそうです。これを踏まえてプログラムを作ると以下のようになります。

#!/usr/bin/env python# -*- coding: utf-8 -*-import smbusimport datetimeimport requestst = datetime.datetime.today()smb = smbus.SMBus(1)# SHT31のI2Cアドレスaddr = 0x45# データの読み出しsmb.write_i2c_block_data(addr, 0x2C, [0x06])data = smb.read_i2c_block_data(addr, 0x00, 6)# 気温st = data[0] <<8 | data[1]roomtemp = -45 + (175 * st/float((2**16 – 1)))# 湿度srh = data[3] <<8 | data[4]roomhum = 100 * srh/ float((2**16 – 1))# WBGTを求めるwbgt = 0.735 * roomtemp + 0.0374 * roomhum + 0.00292 * roomtemp * roomhum – 3.4516# 温度と湿度をLINEで送るurl = "https://notify-api.line.me/api/notify" token = "(取得したトークン)"headers = {"Authorization" : "Bearer "+ token} message = ["気温" + str(format(roomtemp,'.1f')) + "C", "湿度" + str(format(roomhum,'.1f')) + "%"] # ←変更payload = {"message" : message} r = requests.post(url, headers = headers, params=payload)if wbgt >= 31: message = ["暑さ指数 危険!"]elif 28 <= wbgt < 31: message = ["暑さ指数 厳重警戒!"] elif 25 <= wbgt < 28: message = ["暑さ指数 警戒!"]elif 21 <= wbgt <25: message = ["暑さ指数 注意!"]else: message = ["ほぼ安全"]# 念のためコンソールにデータを表示print ('wbgt : %.1f' %wbgt)print ('Temp : %.1f C' %roomtemp)print ('Humi : %.1f %%'%roomhum)# ここまで# WBGT警報をLINEで送るurl = "https://notify-api.line.me/api/notify" token = "(取得したトークン)"headers = {"Authorization" : "Bearer "+ token} payload = {"message" : message} r = requests.post(url, headers = headers, params=payload)

 このプログラムには「sht31_wbgt.py」などのように、名前を付けて保存しましょう。気温と湿度がメッセージで送られたあと、WBGTの指数に従って「警戒!」などのメッセージが送られます。途中、計算がちゃんとされているか確かめるためにprint文を入れていますが、これは削除しても構いません。

SHT31暑さ指数と気温、湿度が送信される

 あとは定期的に測定してメッセージが送られるようにしましょう。こちらもcronを使います。

$ sudo crontab -e

 とエディットモードで表示したら、以下のように記述します。

*/10 * * * * python /home/pi/sht31_wbgt.py

 これで10時10分、10時20分のように、毎時10分おきにLINEのメッセージが送られます。

仮想通貨カジノパチンコ都内 パチンコ 駐車 場

コメントを残す

業界連盟:ベラジョン カジノ 評判 日本 カジノ k8 カジノ k8 カジノ k8 カジノ ログイン k8 カジノ k8カジノ k8 カジノ スロット | Feed | RSS | sitemap.html | Sitemap