中国製のIoTドアセンサーを使っていましたが、いちいちスマートフォンの専用アプリを開かないと確認出来ないのがネックでした。
その製品でのIFTTT連携で外部出力が可能になりますが、IFTTTを利用するのに課金をせねばなりません。
課金した挙句中国メーカーに情報取られるなら自分で作りますわ。
そんな思いでドア開閉センサーを買ったのが2年前・・・。
割と優先度は低かったため作成を先延ばしにしていましたが、最近作成を開始しました。
なお、この製品はNC(ノーマリークローズ)/NO(ノーマリーオープン) 両接点に対応している。
磁石部が近くにある(センサーと磁石が接触している)場合にOFF、離れたときにONとなる場合はNC。
逆で近くにある場合にON、離れたときにOFFとなる場合はNO。
今回はNCとして利用。
似たような製品によっては、NC/NOのどちらかしか実装していないものがあるので注意が必要。
といっても Raspberry Pi や Arduinoボード などを使う場合、開発時に自身で調整可能だからどちらでもよい。
ただし、ネット情報をそのままコピペする方は調べて購入する必要あり。
手前がセンサー部、左奥が磁石。
いわゆる「何でも自分でやろう」というDIY精神
以降は製品を使用した例となります。
単純にドア開閉を記録する機器を作成したいので、Home Assistantなどのホームオートメーション用システムが別途必要。
今回は自作システムに組み込むので Node-RED 、WEBサーバー、DBサーバーをそれぞれ使用。
自作システムなので余計な処理は基本発生しないし、内向けネットワークでことが済む。突然一部機能が有償の課金となることもない。
ただし画面表示についてはセンスが問われる。
一般的な日曜大工のDIYでも、見た目に関してセンスが問われるのは同じですよね・・・。
データの流れはこんな感じ。
・データ登録
1.ドアが開閉される。開閉情報はHTTP通信でNode-REDに送信される。
2.Node-REDからDBサーバーへデータを登録。
・データ参照
1.データ閲覧用のWEBページを開く。WEBサーバー側プログラムがDBサーバーに問い合わせして表示データを取ってくる。
2.表示データを加工してWEBページに表示。
ON/OFF(0/1)データの管理だけであれば、ドア開閉だけではなく他の用途でも流用は可能となる。
開発ボードは ESP-12F(ESP8266)を使用。
中華製ドアセンサーを解体して白箱を流用。中身を入れ替えて玄関ドアに設置しました。
スケッチは下記のようにArduino IDEを使用。
ArduinoOTAを使用しているため、USB接続ではなくWifi経由でスケッチ書き込みが可能となっている。
Node-REDは下記のように登録した。
valが1の時はドアを開けたときの通知、valが0の時はドアを閉めたときの通知です。
通常は0の値を通知後にひたすら待機状態。
DBには下記のようにデータが蓄積される。
データ参照したい場合のWEB表示は下記のような感じ。
開いた通知が届いていなくて閉じた通知が2回続いている。
センサーの認識制度(接触範囲)が若干悪く、センサー側と磁石側の取り付け位置調整が必要。
でも開閉のどちらかが検知出来ればよい認識なので厳密に調整するつもりはない。
しばらく運用してみて認識しない状態が多いようであれば改善はするかも。
★2022-07-31追記
1秒以内にドアを開けて閉じた場合、登録データがキー重複になるみたい。
DB側のテーブルにプライマリーキー設定していたが、外して通常インデックスに切り替えた。
多分、これで短時間でのデータ登録エラーは解消されるはず。
データ登録の優先度と時系列を考えると根本解決ではない気がするが、品質は多少向上したはず・・・。
-
購入金額
469円
-
購入日
2020年07月07日
-
購入場所
Amazon.co.jp
kaerkiさん
2022/07/31
かもみーるさん
2022/07/31
スマートホーム製品として普通に売ってます。
例えば下記のようなものとか。
https://www.switchbot.jp/products/switchbot-contact-sensor
この部品は自分でやるタイプなのでシステムとか自分で用意する必要があります。
ドア開閉を検知した情報をログとして残すなどデータを活用する方向性だと、電子工作だけでは終わらないタイプです。
ドア開閉を検知してメロディを鳴らすだけなら夏休みの自由研究とかよいかもしれない。