編集履歴一覧に戻る
moooのアイコン画像

mooo が 2021年05月15日20時35分16秒 に編集

コメント無し

タグの変更

-

傾斜センサ

+

振動スイッチ

メイン画像の変更

メイン画像が変更されました

本文の変更

# 結論 **ドアの施錠状況を監視してLINEへ通知するシステムを作りました。** 動作動画↓鍵を閉めると動画上部にLINEの通知が飛んでくる。 @[youtube](https://youtu.be/98C1YE54XD8) ※この記事はobniz IoT コンテスト 2021投稿用です。 # はじめに 皆さん、出先で「家の鍵、本当に閉めたか……?」となることはありませんか?僕はとてもよくあります。

-

出先で気になったが最後、その日はもう鍵のことしか考えられなくなりますよね。しかもこの疑問が頭をよぎるのは、ほぼ確実にもう家へ引き返せないタイミングです。最悪ですね。

+

出先で気になったが最後、その日はもう鍵のことしか考えられなくなりますよね。しかもこの疑問が頭をよぎるのは99%もう家へ引き返せないタイミングです。由々しき問題ですね。 一方で、世の中には鍵の閉め忘れ防止グッズとして[ChecKEY](https://www.miwa-lock.co.jp/miwa_smartphone/tec/products/checkey2.html)や[Qrio Lock](https://qrio.me/smartlock/)などが売られています。やはりすぐに思いつく問題というのは既に先人が解消してくれているわけです。この閉め忘れ防止グッズを買えばすべて解決するので記事にすることもありません。

-

これは割と誰でもよくある現象みたいで、「カギ閉め忘れる なぜ」みたいなあほなワードで検索するだけでも結構悩んでる人が引っかかりますし、メカニズムを説明している記事も出てきました。 また、既に世の中には鍵の閉め忘れ防止グッズとして[ChecKEY](https://www.miwa-lock.co.jp/miwa_smartphone/tec/products/checkey2.html)や[Qrio Lock](https://qrio.me/smartlock/)などが売られています。

+

-

やはり僕なんかが考える問題というのは往々にして先人が解消してくれているわけです。あーよかった。この閉め忘れ防止グッズを買えばすべて解決するので記事にすることもありません。

+

-

・ ・

**我が家の規格に合っていないので使えない!!!!** というわけで、ドアの施錠状況を監視してスマホに通知してくれるシステムを構築していきたいと思います。

+

(ちなみに、ざっとelchikaの記事を眺めているだけで鍵の閉め忘れ防止をしてくれる、よりクオリティの高いシステムが見つかります。最高) ![既に先人が解消してくれている例](https://camo.elchika.com/d8918e7a1431cc2e22fb82a80596767fe5b923e4/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f34353662393834392d393136372d346564612d393531372d6135663838353165326432322f36383963363732632d613363662d343934322d616338352d343963366466616338663739/)

# メイキング ## システム構成 ざっとこんな感じのシステムにしたいと思います。

-

![システム構成](https://camo.elchika.com/dfc6e396ca6c7b5d94a5cc2e49abeeebe9072686/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f34353662393834392d393136372d346564612d393531372d6135663838353165326432322f33346336363437392d316638322d343234622d396538352d343034643532656265326338/)

+

![システム構成](https://camo.elchika.com/b8ea246ae267de002cf771fc88b57abff4426b85/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f34353662393834392d393136372d346564612d393531372d6135663838353165326432322f33623662376636342d623366612d346431352d623631332d613164343234303763303661/)

必要なものは下記です。

-

1. obniz Board 1Y(なんとコンテスト用に株式会社 obniz様が無償で提供してくれました。感謝)

+

1. obniz Board 1Y

1. 振動スイッチ(自分は[これ](https://www.amazon.co.jp/dp/B07SR9HQ5J/ref=cm_sw_r_tw_dp_B0QT5VF9SG6G43F8M1KJ?_encoding=UTF8&psc=1 )を使いました) 登録する必要があるサービスは下記です。 1. obniz開発者コンソール 1. LINE notify 1. IFTTT

-

## 実装

+

## H/W実装

今回はサムターンという内側から鍵を手回しできる部分の傾きを監視することで施錠状況を確認します。 ![今回監視する対象](https://camo.elchika.com/d496147d0446e9b276af3a30d2f40c9dcf8e3662/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f34353662393834392d393136372d346564612d393531372d6135663838353165326432322f39623439323763372d383230352d343865652d396131642d396131366564653464376563/) 我が家の場合このサムターンが開錠時に縦向き、施錠時に横向きになることが分かっているので、振動スイッチで開錠時=ON、施錠時=OFFとなるような回路を組むことにしました。 ちなみに振動スイッチとは、中に金属球が入っていて傾きに応じて導通と開放の2状態を遷移するスイッチです。今回の用途に使えそうで安かったので採用しましたが、振動スイッチの名の通り軽い振動でガンガン反応するので今回の用途では非常に使い勝手が悪かったです。 振動スイッチをこんな感じで配線します。 ![回路図](https://camo.elchika.com/47f4be02ca01aa2a449f3e04f7d6177bdc3a8e5c/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f34353662393834392d393136372d346564612d393531372d6135663838353165326432322f35663862386161392d303931312d346438362d626539622d303366373831376233646630/) 完成品はこちら。雑ですね。 ![完成品](https://camo.elchika.com/df81de6a1595115985c5f9c36470de776b5d3bf9/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f34353662393834392d393136372d346564612d393531372d6135663838353165326432322f32336337643765362d383431652d343930612d623232642d326331313436646339363331/)

-

サムターンには直接振動スイッチが貼り付けられ、配線的に厳しかったobniz Board無残に吊るされています。まさかこんな世紀末な感じになるとは……。 ちなみにケーブルをしっかり固定しないとサムターンが回るたびに振動スイッチ揺れてスイッチがガンガン反応します。かなり感度がよいので最初故障かと思いました。

+

サムターンには直接振動スイッチが貼り付けられ、ケースすら用意されなかったobniz Board無残に吊るされています。まさかこんな世紀末な感じになるとは……。 ちなみにここでケーブルをしっかり固定しないとサムターンが回るたびにケーブルが引っ張られ、それに釣られて振動スイッチ揺れてスイッチがガンガン反応します。最初実装したときにLINEへ死ぬほど通知が送られてきて故障したかと思いました。

電源の供給方法はなんでもいいですが、ドアからコンセントまで配線すると邪魔なのでモバイルバッテリーも貼り付けて給電しています。 これで物理レイヤーの実装は完了です。

-

次はobnizのプログラムと通知システムの構築です。

+

## S/W実装 次はobniz本体のプログラムと通知システムの構築です。

-

obniz開発者コンソールに登録したらデバイスを登録ましょ。デバイス登録たらプリの管理から、 クラド実行→デバイスがオイン実行 選択しま 次に下アプリを登録しま

+

前準備はこんな感じ。 1. LINE Notifyの登録 1. IFTTTの登録 1. IFTTTでCreate 1. If Thisをクリックてwebhooksを選択 1. Event Nameをてきとに名付ける 1. Then ThatクリックてLINEを選択 1. 確か認証が出るのでLiINE Notifyのトでログイン 1. Recipient送りたいトーク先、Messageに鍵が閉まった旨のメッセージを設定する 1. webhooksのkey確認 keyの場所は[この事](https://www.wassyoi-hack.com/webhook2ifttt2smartplug/)が分かりや1. 準備完了

+

これでLINEへ通知する部分の実装は9割完成したので、次はobniz本体の実装です。 obniz本体の実装で上で準備した、Event Nameとwebhooksのkeyを使うのでどっかにコピペしておきましょう。 obniz側の準備はこんな感じ。 1. obniz開発者コンソールに登録 1. デバイスを登録 1. デバイスの"アプリの管理"からクラウド実行→デバイスがオンライン時に実行を選択 1. 準備完了 これでobnizがwifiに接続されるたびに登録したアプリが実行されます。 自前でサーバーを立ててobnizを監視して……みたいなことはしなくてもいいのでとても簡単ですね。 実装するアプリは下です。 コピペしたらよいですが、下記の部分のEVENT_NAMEとWEBHOOKS_KEYだけさっき用意した値に書き換えてください。

```arduino:アプリ

+

var url="https://maker.ifttt.com/trigger/EVENT_NAME/with/key/WEBHOOKS_KEY"; ``` ```arduino:アプリ

<html> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" /> <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script> <script src="https://unpkg.com/obniz@3.x/obniz.js" crossorigin="anonymous" ></script> </head> <body> <div id="obniz-debug"></div> <script>

-

// let tid = setTimeout(() => { // //HIGH -> LOW 立ちさがりを検知するまでスリープ // obniz.sleepIoTrigger(false); // }, 25000);

var obniz = new Obniz("OBNIZ_ID_HERE"); // called on online obniz.onconnect = async function() { obniz.display.print("connect"); await obniz.wait(1000); var value = await obniz.io0.inputWait(); if(value) { obniz.display.print("lock"); await obniz.wait(1000);

-

var url="https://maker.ifttt.com/trigger/EVENT_NAME/with/key/YOUR_KEY";

+

var url="https://maker.ifttt.com/trigger/EVENT_NAME/with/key/WEBHOOKS_KEY";

$.get(url, { }); obniz.sleepIoTrigger(false); } else { obniz.display.print("open"); await obniz.wait(1000); obniz.sleepIoTrigger(true); } // called while online. obniz.onloop = async function() { }; }; // called on offline obniz.onclose = async function() { }; </script> </body> </html> ```

-

このプログラムを書き込むと、鍵の施錠時画面に"lock"や"open"と映ってすぐさま画面が暗転するようにります下記のように動作するよう書かれています。 1. 振動センサが反応するとープを解除する。 1. 振動センサ値を確認して施錠状況を判定する 1. 施錠されていたら鍵が閉まっている旨をLINEへ通知鍵が開いていたら何もしない。 1. リープする。

+

動作的こん感じ1. スタートするとオンラインになるのでアプが実行される。 1. 振動スイッチ現在の値を取得横向きになっていたらwebhooks発行縦向きなら何もしない。 1. io0の値の揺れでタートアップする設定でスリープ。io0は振動スイッチなので振動スイッチが揺れるとスタートアップする。 1. 振動スイッチが揺れる(鍵をかける)とシステムがスタートする。

-

ただし、まだIFTTTになにも登録していないのでLINEへ通知などは飛ばせせん

+

無事動作するとLINEへメッセージが送られてき![可愛いメッセージ](https://camo.elchika.com/e3f4b2e87b3f10376c2f30969403dad007cf8020/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f34353662393834392d393136372d346564612d393531372d6135663838353165326432322f66646333366536322d616163652d343838352d393830652d656530646166613731613564/)

+

# まとめと所感

+

実装的には玄関に設置するため電源を這わすことが難しかったことで、結果的に上手く省エネな構成にできて満足しています。 振動スイッチのことも結構悪く書きましたが、obnizのスリープ解除トリガーにioの値変化を使用できるので今回の構成とは相性が良かったです。たまたまなんですが。

-

+

開発した所感としては回路的にもプログラム的にも技術的課題なく実装できてしまったので、実装が完了した段階で正直拍子抜けしました。 回路的な困難さやソフト的な困難さは取っ払っておくから作りたいシステムに集中してくれ!という開発者の声が聞こえてくるような手厚いサービスのおかげで、締め切り直前の駆け足開発でも上手く動くシステムが完成してしまった点はかなり素晴らしい点だと感じます。 一方で、今回の記事のような小規模なシステムでは若干オーバースペック気味だとも感じました。大規模なシステムの構築時にもっと力を発揮する気がするので、数台のobnizボードを使用した