コモノポリタン

コモノ、デジモノが好きなKomonopolitan住民 (はてなダイアリーからの引っ越しです)

【Home AssistantでDIY Smart Home】zigbeeデバイスを活用せよ:鍵編(Door&Windowセンサー改造)

【Home Assistant(Hass.io)】
Xiaomi Door&Windowセンサーでクレセント錠開閉を確認する

「Home Assistant(Hass.io)でホームオートメーション 再起動!」シリーズです。

 zigbee2mqttをセットアップしてHome AssistantでZigbeeバイスを使えるようにし、Xiaomi Door&Windowセンサーを活用してドアおよび窓の開閉の確認はできるようになりました。次は念願の「戸締り」確認です。

 窓の開閉の情報が取れると「そろそろ換気してはどうでしょうか」なんて警告が出せたりしそうで良いのですが、肝心のお出かけチェック(戸締り確認)には使えません。仕組み的には「磁石+リードスイッチ」で十分だと思いますが、大きさがネックです。うちのクレセント錠は下の写真のようですので、レバーと窓枠との隙間は8~9mmしかありません。
f:id:maky_Ba:20210301234216j:plain:w250

 そこでXiaomi Door&Windowsセンサーを改造して、リードスイッチを外だしできるようにします。

 なお、センサーのzigbee2mqttへの登録やHome Assistantでの設定などの基本的なところは下記の記事と同じです。
maky-ba.hatenablog.com

この記事の前提条件
Home Assistant 2021.2.3
HassOS 5.12
Server Raspberry Pi 4(2GB)

1. 準備

f:id:maky_Ba:20201228224745j:plain:w200:left Xiaomi Aqara Door & Window Sensor (MCCGQ11LM)
おなじみのXiaomiのzigbeeセンサー。今回はこれを改造して電池駆動の2値センサーとして活用します。
価格:AliExpressで4個とかまとめて買うと1個1,000円ぐらいかな。
f:id:maky_Ba:20210301230330j:plain:w160:left リードスイッチSP3-1A16-3A
小さなリードスイッチ5本セットです。リードスイッチの弱点である壊れやすいガラス管の周りをプラスチックで覆っているので取り扱い性に優れています。壊れにくくて良いです。
価格:秋月電子通商で5本300円でした。
f:id:maky_Ba:20210301230048j:plain:w160:left 長方形超強力マグネット 4P
リードスイッチを動作させる磁石は今回はいつものダイソーではなくセリアで長方形のものを入手しました。うちのクレセント錠のハンドル部分の厚みにちょうどぴったし(少しあまるかな)
価格:セリアで110円でした。

2. Door&Windowセンサーを四枚におろす

 本体の短辺のペアリングボタンの下のくぼみに爪をかけて2枚におろすと電池交換できるようになります(下の左の写真)。さらに本体側の灰色カバーの横の溝に細いマイナスドライバーなどを差し込んであげるとカバーがハズレます。細いピン上のもので下に刺さっているので曲げないようになるべく垂直にグレーのカバーを外してくださいね。下の右写真が、4枚(?)におろしたものです。
f:id:maky_Ba:20210111020837j:plain:w240  f:id:maky_Ba:20210111020918j:plain:w240
 「ドア編」でも少しお見せしましたが、基盤を裏返すとリードスイッチが横(写真では下)に見えます。リードスイッチの動作原理についてはココがわかりやすいかと思います。磁石の縦・横の説明もありますし。(1970年の論文もあります。こちらは図表含めしっかりまとまってます)
f:id:maky_Ba:20210111021744j:plain:w300
 まあざっくりいうと、ガラス管の中にある金属片が通常では離れていて磁石を近づけるとくっつく(=スイッチオン!)という仕組みです。

 再び基盤の表に戻ると写真の右上に「GND」と「DI+」というシルク印刷が並んでいるところがあります。ここがテスト用なのか拡張用なのかわかりませんが、短絡するとzigbeeメッセージが飛びます。ここにON/OFFするセンサーを付ければ(比較的)安価にzigbee二値センサーが完成!というわけです。
f:id:maky_Ba:20210111023352j:plain:w300

 内部端子を短絡(ショート)させたり、磁石を近づけたりして、Home Assistantでの表示の変化を確認してみます。

ドア
開閉
磁石 本体
リードセンサー
通電状況
内部端子
(DI+ <-> GND)
通電状況
mqtt
センサー値
HA
表示
閉じる=on 開放=off true 閉鎖
開く=off 開放=off false 開放
閉じる=on 短絡=on true 閉鎖
開く=off 短絡=on true 閉鎖

 つまりは本体のリードスイッチもしくは内部端子のどちらかがオン状態(通電、短絡)になるとHome Assistantの表示は「閉鎖」になるのです。つまり本体側に磁石を近づけなければ(=開放状態ならば)内部端子のOn/Offで開放/閉鎖の状態を作り出すことができるわけです。

3. 改造

 元電子工作少年でしたので、半田ごてなどもあります。うん十年前の「少年」だったころに使った半田ごて、はんだ、半田ごて台などがそのまま道具箱にありました…。昨今の環境規制など大丈夫だろうか、だめでしょうね、きっと…。気にせずリード線をDIとGNDにはんだ付けします。
f:id:maky_Ba:20210301231010j:plain:w300

 はんだ面は恥ずかしいので裏側を。結構ランド間が狭いので気を付けないと短絡(ショート)してしまいます*1。この半田ごてはかつては「電子工作用」でしたが、そのころはDIPモジュールのTTLロジックIC(74シリーズとか)のころの話なので細かいはんだ付けに向きません。しかも老眼…。ハズキルーペも駆使して頑張りましたよ。
f:id:maky_Ba:20210301231219j:plain:w300

 ペアリング用のボタンがあった穴を利用して内部から線を引き出します。線の隙間からSIMカードの取り出しピンやゼムクリップを伸ばしたものでつつけばボタンを押すこともできます、注意は必要ですが。
f:id:maky_Ba:20210301231809j:plain:w300

 さらに引き出したリード線の先に秋月電子通商のリードスイッチをはんだ付けしてゆきます。ちっこいので養生用のテープとかで仮止めしながらはんだ付けしてゆきましょう。磁束をとらえる大切な部分ですし、本体の(プラスチックで隠されている)リードスイッチを破損することにもなるので、リードスイッチの両端は曲げたりしないで真っ直ぐのままはんだ付けしてください。
f:id:maky_Ba:20210301230909j:plain:w300

 リードスイッチを格納するケース(底蓋無)を3Dプリンタでつくりました。リクエストあればThingiverseに載せますが、まあ必要な人はいないのではと思います、小さすぎて家のプリンタではサイズの再現性が低いですし。
 溝にリードスイッチと配線を入れます。蓋の代わりに両面テープ(私は例によって3MのコマンドタブMを使用)を貼ります。
f:id:maky_Ba:20210301233341j:plain:w240 f:id:maky_Ba:20210301233646j:plain:w240

4. おわりに

 本体とリードスイッチ部分を両面テープで窓枠に貼り、百均の長方形マグネットも両面テープでハンドル横に貼り付けて完成です。完成した姿はこんな感じです。
f:id:maky_Ba:20210301235258j:plain:w240

 本体との間の線の上に貼って目立たなくする窓枠色のテープとかあると良いかなぁ。勢いとノリでぺたぺたセンサーを貼り付けましたが、窓2枚・鍵1個毎に1000円のXiaomiセンサーが2個必要です。ううむ。安いとみるか高いとみるか…。

 それから今設定していて気が付きましたが、知らないうちにXiaomi Door&Windowセンサーに温度計機能が!エンティティが増えていました。zigbee2mqttのデバイス紹介(Xiaomi MCCGQ11LM)には元々"temperature"とありましたが当初出てきていないので「そんなものか」と思っていました。温度センサーデータがなかなか発信されなかったのかな。ま、参考値程度に*2

maky-ba.hatenablog.com

*1:上の表を見ればわかりますが、短絡してしまうと常に閉鎖状態に…一種の文鎮化ですね。一回ショートさせてはんだ吸い取り線で吸い取ったり何やかんやしているうちに本体のリードスイッチを壊してしまいました。気を付けましょう。

*2:送信頻度もそれほど高くないし窓につけると日差しとか受けるので、本当に参考程度にしかなりませんね。