玄関の鍵の状態をLineに通知する
1. 課題
・鍵をかけたかどうか心配になる
・鍵の開閉はオンラインでできないほうがまだ安心
2. 解決策
・鍵の開閉状態を検知し、鍵がかかっているかどうかをLINE notifyを使って通知
3. 手順
(a) 準備したもの
・Raspberry Pi 4
・ホール素子 DN6851
・ネオジム磁石
(b) ハードのセットアップ
・接続する図は省略、基本的には上のイメージ図の感じで結線
・磁石とホール素子の位置はこんな感じ
*仮固定ではあるのですが、見た目が悪いので奥さんには大変不評です。
サムターン部にネオジム磁石を取り付け、ホール素子はサムターンに対向できそうな位置に固定。ホール素子からRPiまでは導線を3本無理やりひきまわしています。
・このときのために玄関先のシューズクローク内にコンセントをつけてもらい、ラズパイを稼働させていました(今までは温湿度を測っていただけ)。
4. プログラム
(a)準備
・とりあえずRaspberry piのGPIOをpythonから
使えるようにする
$ sudo apt-get install pigpio
- 参考にしたページ
https://karaage.hatenadiary.jp/entry/2017/02/10/073000
・LINE Notifyを使えるようにする
- 参考にしたページ:
https://nakomii.hatenablog.com/entry/python_line_notify
・ホール素子Raspberry piにつなぐ
- 参考にしたページ:
https://brown.ap.teacup.com/nekosan0/253.html
https://uyamazak.hatenablog.com/entry/2019/08/06/095134
・ドアのサムターン部分にネオジム磁石と、ホール素子を固定する
(b)コード
・現在の鍵の状態はlock_state.csvというファイルに記録しておく
・現在のgpioの状態を確認
・lock_state.csvと同じであれば何もしない
・lock_state.csvと値が異なる場合、「鍵をかけた」OR「鍵を開けた」のどっちかを通知。その後lock_state.csvに状態を上書き(鍵があいていれば0、鍵が閉じていれば1)
・cronを使って5秒間隔でプログラムを実行させる
・cronで5秒おきにプログラムを実行
* * * * * for i in 'seq 0 5 59';do (sleep ${i}; python /home/pi/Documents/lock/lock_line.py) &done;
・これで5秒に1回サムターンの状態を確認して、状態が変化していればLINEグループに通知します。
・文字だけだとLINEでも解錠/施錠の状態を見間違えやすいので、LOCK、UNLOCKのアイコンなどを探して一緒に通知するとわかりやすいです。
・受信用LINEグループを奥さんと共有することで、お互いいつ自宅を離れていつ戻ってきたかなどが確認できます。
5. 運用してみた感想
・「鍵かけたっけ?」に対して、ちゃんと確認できるのでお出かけ直後に一旦鍵を見に戻る、という必要がなくなった
・子供が度のいつ帰ってきたかが把握できるのでちょっと安心