部屋の温度の通知をLine Notifyで行おうという企画です。
まぁ、直接的なエアコンの制御ではないですが、ツールとして良いのではないかな?という感じで作って見ました。
思ったよりも簡単なので、おススメです。
流れは以下になります。
1.Line Notify トークン取得
2.温度を測定する機器の作成(既にあるものを流用)
3.SynologyサーバーにてPythonの実行
では、以下、説明してきます。
1.Line Notify トークン取得
以下のLineのリンクからトークンを取得します。
以下のような画面が開きます。
右上のログオンをクリックしてログオンします。
ログオンしたら、下図の通り、自分のアカウントの所を押して、マイページを押します。
トークンを発行します。
トークンは何かに記録して置いたほうが良いと思います。
自分のアカウントに関わる関係の候補が出ますが、まぁ、通常、自分だけに通知が来れば良いのではないかと思いますので、自分を選択しましたよ。
画面はトークン取得後の画面なので若干違うかも知れませんが、大体こんな感じでLine Notifyの設定は終了です。
2.温度を測定する機器の作成(既にあるものを流用)
以前、作成したESP32による温度測定器を利用します。
下の表示をする装置ですね。
その時の記事↓
そのままESP32のプログラミング部分は変わらずに使います。
便利と言えば便利ですね。
3.SynologyサーバーにてPythonの実行
最後にWebページをPythonにてスクレイピングして、Line Notifyにて送るプログラミングを載せておきます。
これもその前回その時に作成した記事から流用して、Line Notify用にちょっとだけ書き換えたものですので、すぐ出来ました。
# coding: utf-8
from urllib.request import urlopen
from bs4 import BeautifulSoup
import time
import requests
# arduinoサイトを開く
html = urlopen("http://192.168.1.64/")
bsObj = BeautifulSoup(html, "html.parser")
#urlオープンでの安定化時間
time.sleep(3)
# arduinoの表から値をもらう
Temp = bsObj.select('.value')[0].contents[0]
Humi = bsObj.select('.value')[1].contents[0]
# temp,humiの値が--だったら、測定値が出なかったら。
while Temp == "--":
html.close()
# arduinoサイトを開く
html = urlopen("http://192.168.1.64/")
bsObj = BeautifulSoup(html, "html.parser")
#urlオープンでの安定化時間
time.sleep(3)
# arduinoの表から値をもらう
Temp = bsObj.select('.value')[0].contents[0]
Humi = bsObj.select('.value')[1].contents[0]
Temp01 = float(Temp)
Humi01 = float(Humi)
# サイトクローズ
html.close()
#Line notify で送る
Text01 = "温度:" + str(Temp01) + "℃"
Text02 = "湿度:" + str(Humi01) + "%"
def send_line_msg():
data = {"message": f"\n{Text01}\n{Text02}"}
# headers
access_token = 'xxxxxxxxxxxxxxxxxxxxxxxxx' # 発行されたトークンへ置き換える
headers = {"Authorization": f"Bearer {access_token}"}
# send massage
requests.post("https://notify-api.line.me/api/notify", data=data, headers=headers)
if __name__ == "__main__":
send_line_msg()
で、出来上がったプログラムをSynologyのサーバーでタイムスケジュールで20分毎に動かしてみました。
参考にさせて頂いたサイト↓
最後、設定いじっていたので、ちょっと時間が20分毎では無いですが、途中ちゃんと20分毎に届いていますね。
う~ん。便利かも。。
今回、タイムスケジュールの中で、このスケジュールは、夜間は温度とか別段知りたくないので動かないようにしています。
寝ている時に通知がバンバン来ても、やかましいので。
なので、朝8時~夜20時まで計測した値を通知してくれるようにしました。
しかし、今回、Line Notifyは簡単でしたね。
まぁ、タダで使えるものは何でも使うべしということでしょうか。
これで家の温度の問題はかなり片付いたと思います。
後はグラフ化か~。かなり難しそうだなぁ。。
心折れる感じかもしれないです。
でも、まぁ、今年はこの辺りで良いかなぁ。。と思っています。