Sympapaの日記

スマートなんとかはスマートじゃない方法でつくられている

Qrio Lockの施錠状態をドアセンサーを使ってリアルタイムに取得する

こんにちは。Sympapaです。

我が家ではスマートロック: Qrio Lockを使っています。
スマートロックはスマートホームバイスの中でも快適性の上がり幅が大きいのでおススメです。
f:id:sympapa:20210814111919j:plain

しかしながらQrio LockはAPIが公開されていないのでHome Assistantとの連携には向いていません。
Home AssistantからAlexaやGoogle Homeを経由して施錠をする術は準備したし、ドアの開閉は既にAqura Door sensorを使ってリアルタイムに取得できているし、ロック状態もAlexaの定型アクションのトリガーに出来るようになっているのでこれを使ってHome Assistantで取得できます。
しかし...Alexaがロック状態を取得するには結構なタイムラグ(数十秒~1分)があり、たまにロック状態を取得できていないことも...。

Sesami LockはAPIが公開されているし安いのでQrio Lockを売って乗り替えるというテもアリですが、APIを使ったとてクラウド経由だしタイムラグはあるでしょうきっと。
それにSesami Lockには無くてQrio Lockにある機能として、Qrio Lock自体がドア開閉センサーを搭載しているのでドアが閉まるとすぐにオートロックしてくれる点があります。ドアが閉まってすぐにオートロックしてくれるので「ちゃんと施錠されたな」と音で確認できるんです。また我が家の嫁様はスマホを良く落っことして壊すのでスマホを取り出さずにロックを操作できるQrio Keyというリモコンキーを使用していただいており、同様のリモコンキーがSesami Lockには存在しない点も乗り替えに至らない理由です。

そんなワケですがQrio Lockのロック状態をリアルタイムで取得できればHome Assistantで出来ることの幅が広がります。たぶん。
今回は定番のドア開閉センサー: Aqura door sensorを使ってQrio Lockのロック状態をリアルタイムに取得できないか試していきたいと思います。
いやもちろんAqura door sensorの反応の良さは既にわかっているので「そんなの出来て当たり前」だとは思うのですが、問題はQrio Lockに内臓されているドア開閉センサーも磁気を使っているので干渉しないかという点。Qrio Lockのドア開閉センサーはリードスイッチではなくスマホに内臓しているコンパスの技術を応用しているんだとか。結構Qrio Lock本体と付属マグネットの距離は離れているのにちゃんとドア開閉を検出してくれます。
f:id:sympapa:20210921201252j:plain
今回、ロック状態を検出するために取り付けようとするマグネットはどうしてもQrio Lock本体に近い位置になるし、ロック状態で位置が変わるので地場の変化も起きそうです。
そんなワケでうまくいくかわかりませんが試していきましょう。

1.マグネットをロックのノブ部分のアタッチメントに付けてみる

見た目にごちゃごちゃしたくないのでAqura door sensorに付属している磁石は使わず、セリアで小さいネオジム磁石を買ってきてロックのノブとQrio Lockを繋ぐアタッチメントの部分に貼り付けてみることにしました。ロックが「施錠」の時はセリアの磁石はロックのノブの下に位置し、「解錠」するとロックのノブの左側へ動くといった具合です。
f:id:sympapa:20210921201220j:plain
一方、セリアの磁石がQrio Lock本体に近いのでQrio Lock内臓のドア開閉センサーに干渉しそうな気がします。
試した結果、はいやっぱりQrio Lock内臓のドア開閉センサーが誤動作しました(汗
Qrio Lock内臓ドア開閉センサーの再調整をやってみましたがダメです(><)

2.Aqara Door sensorを動かしてQrio Lockのマグネットを共用する作戦

次に思いついたのはAqara Door sensor本体を同様に位置にくっつけて、更にQrio Lockのマグネットを共用してしまえという作戦でした。
しかし磁束の方向が違うし距離が遠すぎてダメでした。

3.再びマグネットをロックのノブ部分のアタッチメントに付けてみる

そこで、さっき取り付けた位置にセリアの磁石を再び貼り付け、再度、Qrio Lock内臓ドア開閉センサーの「ドア開」「ドア閉」位置の調整をさっきとは違う方法でやってみることにしました。
Qrio Lockのアプリに従ってこの調整を実行すると、「ドア開」の状態を覚える時にはロックを「施錠」にしデッドボルト出してドアの枠に引っかけちょっとドアが開いた状態を記録し、次にロックを「解錠」してドアを完全に閉じ「ドア閉」を記憶させるという手順です。
しかしこれだと「ドア開」を記憶させた時と「ドア閉」を記憶させた時でセリアの磁石の位置が変わるので磁場が変わってしまうはずです。
実際にはドアの開閉を判定する時はどちらもロックのノブは「解錠」の位置のはずなので、どちらもロックのノブを「解錠」の状態で「ドア開」と「ドア閉」を記憶させてみたところ、うまくいきました。
f:id:sympapa:20210921201256j:plain
(後日追記: やっぱり暫く使っているとQrio Lock内臓ドア開閉センサーが誤動作しました。セリアの磁石の位置が変わって磁場が変化するのがダメなようです。現在はセリアの磁石をドアに固定し、Aqura door sensorの方をロックのノブとQrio Lockを繋ぐアタッチメントの部分に貼り付けています。)


これで無事リアルタイムにQrio Lockのロック状態をHome Assistantで取得できるようになりました。
ただ長期間使うとQrio Lock内臓ドア開閉センサーに良からぬ影響を与えないかちと心配です(汗

それにしてもAqara Door sensorの応答があまりに早すぎてびっくりしています(笑)
Qrio Lockにはオートロックを設定している時に素早くロックのノブを開→閉→開とやるとオートロックが一時的に停止するという裏コマンド(公表されてるので裏ではないですけど)みたいのがあるんですが、本当に素早く前の動作から次の動作までを0.5秒以内くらいでやらないと裏コマンドを受け付けてくれないんです。今回取り付けたAqara Door sensorは裏コマンド判定すらできそうな勢いでレスポンス良く反映されます。

すっかり気を良くしたので、次回は今回追加したQrio Lockのロック状態取得用センサーを使ってオートメーションを組んでみたいと思います。

では。