目的

ラズパイでホームセキュリティを実装しようと思います。
具体的に言うと、家の玄関の鍵が開いているかどうかをラズパイでチェックをしようというものです。

最近の鍵は、一定時間開いていると自動的に閉まる機能があるタイプもありますが、
基本的に、オートロックがない建物や一軒家の場合、玄関の鍵の閉め忘れはセキュリティ的にクリティカルとなります。

閉め忘れを無くすため、ラズパイを使い玄関の鍵のチェックをしたいと思います。


準備物

  • ラズパイ3modelB + ケース
  • ラズパイ公式カメラ
  • 3m級の電源ケーブル
  • microSDカード

  • raspbian

  • python

  • Line連携ツール

  • 自分のスマホ

となります。


実現方法

ラズパイにカメラを取り付けて、鍵の写真を撮ります。
そして、ラズパイにpythonをインストールします。そのpythonの画像比較ライブラリを使い、撮影した鍵の形状を解析したいと思います。
鍵は以下のような形となっており、開いている状態となります。
“image” ちなみに、こちらが閉じている状態です。
“image” ラズパイより鍵の状態を撮影後、その画像が開いている状態と同じと判断されれば、アラートを出します。
アラートというのは、Lineを経由して自分のスマホにLineコメントを送る仕組みです。


実装

ラズパイにカメラを取り付け後、OSインストールやセットアップを行いました。
その後pythonや画像解析ライブラリの導入、カメラ撮影機能追加、Line連携などの準備を行いました。
それらの作業については、ここでは省略して、以下では今回利用したpythonプログラムを記載します。

以下のプログラムで鍵の撮影はアラートのLine送付をおこなっております。

上記プログラムを一定間隔で実施するようにcronに設定しました。

プログラムの内容を軽く説明しますと、
あらかじめ開いた状態の鍵の画像をラズパイで撮影しておき、これを基準画像とします。 上記プログラムが実行時されると、現在の鍵の状況をラズパイが撮影します。 基準画像と違えば閉まっているという事になり、そこで終了で、また次回実行されます。

基準画像と同じか違うかという判断はpythonのopencvライブラリを利用しています。
このライブラリは2つの画像の比較して、差異を数値化してくれます。
こちらもあらかじめ何度か実施していて、基準画像と同じか違うかの閾値を導き出しております。
今回は*43*としております。
数値が小さいほど画像が似ているということのようです。
※基準画像と同じであれば0になるということではないようなのです。

そして、あるタイミングで実行した時、
基準画像と同じであった場合があると、鍵が開いているということになります。
その時は、数秒後にもう一度鍵を撮影して解析します。
その時も基準画像と同じであれば、アラートとしてLine経由で自分のスマホにコメントする仕組みです。


実際動かしているところ

4倍速動画となりますが以下がうごかしているところです。

鍵を閉めている状態から、鍵を開けて。しばらくすると、スマホのLineにコメントがきています。 成功です!!! と、お伝えしたかったのですが、

そう甘くもありませんでした。うまくいっておらず、今は取り外しており、運用していません。


外した理由とは

動画ではたまたまうまくいっただけでした。

2つの理由によりうまくいっておりません。

1つ目は
実施場所が玄関ということで、外の光が撮影に影響されます。そうするとライブラリにも影響するのでしょうか。。
設定した閾値43だと鍵の開閉の状態が時間経過でうまくいかなくなってきます。誤判定してしまいます。
こういう場合は、写真をグレースケール化して比較した方がよいのでしょうか。
それも一応やってみたのですが、今度はカメラの性能が良くないのか、鍵が開いていても閉まっていても似た画像として判定してしまいます。


2つ目は
電源ケーブルの長さです。 玄関のそばにコンセントは無く、近くにコンセントから引いていますが、廊下をまたいでしまっています。
通行の邪魔となり同居人から苦情がきました。
ワイヤレス給電とでもいうのでしょうか。 実現すればIOT分野でもかなり利用される場面増えると思うのですが。