最近はどこのマンションにもあるモニターホンですが、リビングから離れた部屋に居たり、イヤホンでテレビを見ていたりすると気が付かないことがあります。
そこで、ラズパイを使ってスマホに通知する仕組みを作りました。
モニターホンは来客があると、カメラでお客さんの姿を映します。
このとき液晶が明るくなるので、これをセンサーで検出しました。
このへんの話は、以前のCDSを使った話のそのままです。
s51517765.hatenadiary.jp
これによって、来客を検出したらLINEのメッセージを送ります。
LINE APIの使い方はこの辺で説明しています。
s51517765.hatenadiary.jp
もちろん、Slackやその他、メールなども応用できます。
s51517765.hatenadiary.jp
完成イメージ
モニターホンにラズパイと回路を設置します。工程 (じゃー~~n)
(※脳内BGMタモリ倶楽部風にベートーベンのピアノ協奏曲第五番「皇帝」)CDSの土台はTAMIYAの5mmの角棒を加工して作成しました。
500円ほどで買えて、カッターやのこぎり、ドリルなどで加工できて便利です。
タミヤ 楽しい工作シリーズ No.131 プラ材5mm角棒 6本入 (70131)
- 出版社/メーカー: タミヤ(TAMIYA)
- 発売日: 2009/06/23
- メディア: おもちゃ&ホビー
- 購入: 1人 クリック: 5回
- この商品を含むブログを見る
先端にドリルで半分ぐらいの深さまで穴を掘ります。
実際にCDSをはめ込みながら深さを調整します。
CDSの足にリード線をつけて埋め込みます。
本来は接着するのがベストですが、とりあえず動作確認からということでテープで止めているだけです。
今回は足を片側に2本とも出したので、ショートしないように気を付けます。
本来は両側に出す予定だったが、空けた穴が少し寄ってしまったのでこんな形に。
はんだ小手は今まで使っていた30Wのものから23Wに変えました。
Amazonでは温度が低すぎて使えない、という意見もありますがそんなことはないと思います。
(品番はKS-20Rと20Wのような名前なのに、実際には23Wと書かれている。)
- 出版社/メーカー: 太洋電機産業(goot)
- メディア: Tools & Hardware
- 購入: 1人 クリック: 11回
- この商品を含むブログ (1件) を見る
プログラム
# -*- coding: utf-8 -*- import wiringpi import time import requests from datetime import datetime as dt import token1 print("Start WiringPi!") # プルアップ INPUT collector_pin = 15 # 10番pin(GPIO15) # OUTPUT LED_pin =23 #16番pin(GPIO23) # GPIO初期化 wiringpi.wiringPiSetupGpio() # GPIOを入力モード(0)/出力モード(1)に設定 wiringpi.pinMode( collector_pin,0) wiringpi.pinMode( LED_pin,1) wiringpi.digitalWrite(LED_pin,0) def send_line(): url = "https://notify-api.line.me/api/notify" LINE_TOKEN=token1.LINE_TOKEN #トークンは別ファイル(token1.py)から読み込む headers = {"Authorization": "Bearer " + LINE_TOKEN} tdatetime = dt.now() message = 'お客さんだよ! '+tdatetime.strftime('%H%M%S') payload = {"message": message} r = requests.post(url, headers=headers, params=payload) while(True): if (wiringpi.digitalRead(collector_pin))==1: #print("High") wiringpi.digitalWrite(LED_pin, 1) else: tdatetime = dt.now() print("来客!"+tdatetime.strftime('%H%M%S')) wiringpi.digitalWrite(LED_pin, 0) send_line() print("Send message!") time.sleep(10) #短い時間の間に複数回LINE を呼び出すと実行されないため time.sleep(1)
動作確認
Cds(明るさセンサー)で来客を通知する
注意
tokenのキーを読み込ませるファイルを最初token.pyとしたら、なぜかErrorが。何かしらの予約語と被ってしまったのでしょう。
突然WiringpiのErrorになってかなり迷ってしまった。
前にも似たようなことがあったなぁ。
Traceback (most recent call last): File "cds.py", line 2, in <module> import wiringpi File "/usr/local/lib/python3.4/dist-packages/wiringpi.py", line 28, in <module> _wiringpi = swig_import_helper() File "/usr/local/lib/python3.4/dist-packages/wiringpi.py", line 15, in swig_import_helper import imp File "/usr/lib/python3.4/imp.py", line 26, in <module> import tokenize File "/usr/lib/python3.4/tokenize.py", line 40, in <module> __all__ = token.__all__ + ["COMMENT", "tokenize", "detect_encoding", AttributeError: 'module' object has no attribute '__all__'
抵抗器,SODIAL(R)30個のフォトレジスタLDRフォトライト依存抵抗性5ミリメートル
- 出版社/メーカー: SODIAL
- メディア: その他
- この商品を含むブログを見る