天井に埋め込んで使用するミリ波人感センサー WZ-M100-Cを、HomeKitから使えるように設定しました。接続に使用したZigbee2MQTTでは、非対応と表示されてしまったので、設定ファイルを書き換えました。石膏ボードに丸穴を開けて取り付けたところ、すっきりとおさまりました。安定して動作してます。
WZ-M100-C
Tuya対応のWZ-M100-Cは、AliExpressで送料込み1973円売られている人検出センサーです。こちらの商品です。
天井設置型と、壁設置型の2種類のモデルがあります。電源要件が異なるだけで、内部的には同じものと思われます。以前の記事で、このページから壁設置型のモデルを購入して、Zigbee2MQTT, Homebridge経由でHomeKitから使用しました。
今回は、これの天井設置型を試してみたいと思い、同じページから購入しました。
開封する
到着してから気づいたのですが、型番が変更されていました。以前購入した製品型番は、ZY-M100だったのですが、今回の型番はWZ-M100でした。ZY-M100の時と同様に、箱は、天井設置型と壁設置型で共通で、どちらかが入ってます。
両横にそれぞれの設置型の型番が書いてあります。天井設置型が、WZ-M100-Cで、壁設置型がWZ-M100-Wです。末尾はそれぞれCeilingとWallを示してます(箱に印刷されたCeilingの綴りが間違ってました)。
別の側面には、製品仕様が記されてます。5.8Gと24Gは、使用するミリ波レーダーの種類だと思われます。
通信方式として、Wi-FiとZigbeeが選べます。(箱の表示にはBLEのチェックボックスもあるので、そのうちに提供されるのかもしれません)Tuyaのアプリから使い、AmazonやGoogleのスピーカと連携するならWi-Fiでも良いと思います。Wi-Fi接続の場合はZigbeeのハブも不要です。
ただ、Homebridge (HB) やHome Assistant (HA) から使うならば、Wi-Fiではなく、Zigbeeを選ぶべきです。HBやHAからWi-Fiモデルを使用する場合、Tuyaの開発クラウドを利用するのが一般的でした。でも開発クラウドは、1ヶ月ほどで有料になってしまいます。開発クラウドを使用しないでローカルに使うプラグインもあるようですが、設定が面倒です。一方、ZigbeeモデルならばZigbee2MQTTで使用可能です。なので今回もZigbeeモデルを選びました。
箱を開けると、こんな感じで収まってます。本体サイズは直径61mm, 高さ39mmです。思ってたよりずっとコンパクトでした。天井から露出する部分は、中央の丸い部分です。ここにある丸穴は、照度センサーと思われます。また動作確認用LEDも付いています。
本体裏側の写真です。天井への取り付け穴は53~58mmとのことです。後述するように51mmのホールソーでも大丈夫でした。
写真下の裏面のLとNと書かれた青い端子に、80V~250V ACを接続すれば動作するようです。端子はプッシュ式ですが、強く押すと下のプリント基板が沈むので、ちょっと不安な感じです。でも端子はしっかりと固定されるようです。固いVVF1.6mm銅線を接続しても外れる気配はありませんでした。
電源端子の反対側(写真の上側)にある黒い押しボタンスイッチはリセットスイッチです。後で行うZigbeeのペアリングで使用します。
本体両脇に、バネ部品がついていて、これが天井穴を内部から押さえます。緩いバネなので、取り付けた後からの取り外しも容易です。
Zigbee2MQTTで使う
これをTuyaのハブやクラウドを使用せずに、いつものようにZigbee2MQTTで直接接続して使用します。Zigbee2MQTTサーバ、MQTTブローカー (Mosquitto) 、Homebridgeが動作していて、さらにHomebridgeにZigbee2MQTTを使用するプラグインが入っている必要があります。手元の環境では、これらをRaspbetty Piで動かしてます。
設定の詳細に関しては、以下をご覧ください。
ペアリングするも非対応
電気器具のACケーブルに使う平型コードと、コンセントプラグを取り付けて、コンセントに接続し、AC 100供給しました。一応はN側に中性線が来るように配線しました。検電器があると便利です。
本体のリセットボタンを5秒程度長押しすると、Zigbeeのペアリングか始まります。Zigbee2MQTTのWeb UIでペアリングを有効にすれば、
10秒くらいでペアリングが完了します。前回、ZY-M100を使った時はスムーズに動作したのですが、今回は非対応デバイスであるというエラーメッセージが出てしまいました。型番が違うためだと思われます。以下は、Web UIのデバイス詳細のページです。
非対応との表示が出ています。デバイスの写真も表示されていません。エラーメッセージを見ると、Zigbeeモデルが ‘TS0601’、製造者名が_TZE204_e5m9c5hlというデバイスは未対応とのことでした。
設定ファイルを変更する
以前使用したZigbeeスイッチや、IKEAの電球の場合と同じく、これもZigbee2MQTTの設定ファイルに追記すれば解決しそうです。販売サイトの説明やメッセージの文字から、Tuya準拠の製品であることは確かです。そこで、Tuya製品の情報が書かれているファイル、
/opt/zigbee2mqtt/node_modules/zigbee-herdsman-converters/devices/tuya.js
をテキストエディタで開いて、製造者名である _TZE204_e5m9c5hl という文字列を探しました。すると、1箇所だけありました。以下のブロックです。
{
fingerprint: tuya.fingerprint('TS0601', ['_TZE204_sxm7l9xa']),
model: 'ZY-M100-S_1',
vendor: 'TuYa',
description: 'Mini human breathe sensor',
fromZigbee: [tuya.fz.datapoints],
toZigbee: [tuya.tz.datapoints],
whiteLabel: [
tuya.whitelabel('Wenzhi', 'WZ-M100-W', 'Human presence sensor', ['_TZE204_e5m9c5hl']),
],
exposes: [ 略 ],
meta: { 略 },
},
デバイス製造者名は、whiteLabelの項目に書かれています。壁取付けモデルのWZ-M100-Wという型番も書かれています。でも認識してくれないようです。LoraTapのZigbeeスイッチを使った時には、whiteLabelの項目にvender, modelの名前を書き込んだら動いたのですが、少し勝手が違うようです。whiteLabelの項目の型番末尾が、壁タイプの-Wとなっています。これが原因かと思い、-Cに変更してみましたが、やはり非対応のままでした。
結局、fingerprintの項目(配列になっています)に、製造者名の _TZE204_e5m9c5hl を、以下のように追記しました。
{
fingerprint: tuya.fingerprint('TS0601', ['_TZE204_sxm7l9xa','_TZE204_e5m9c5hl']),
model: 'ZY-M100-S_1',
vendor: 'TuYa',
description: 'Mini human breathe sensor',
fromZigbee: [tuya.fz.datapoints],
toZigbee: [tuya.tz.datapoints],
whiteLabel: [
tuya.whitelabel('Wenzhi', 'WZ-M100-W', 'Human presence sensor', ['_TZE204_e5m9c5hl']),
],
exposes: [ 略 ],
meta: { 略 },
},
これでsystemctlコマンドでZigbee2MQTTを再起動させたところ
sudo systemctl restart zigbee2mqtt
デバイス詳細ページに壁取り付けモデルの写真が表示され、対応済みと表記されるようになりました。
iPhoneやMacのホーム.appに人感センサとして表示されました。人の存在も検出できました。明るさセンサも機能してます。
部屋の照明を点灯・消灯すると変化します。
詳細設定を開くと、人感センサーを使った各種オートメーションも設定できます。
Zigbee2MQTTのファイルをよく理解しないで書き換えてしまいましたが、ちゃんと動いたのでヨシとします。詳しい方いらしたらぜひ教えてください。
感度を調整する
mosquitto_subコマンドでZigbee2MQTTのメッセージを確認すると、毎秒1回くらいの割合で、人の存在、明るさなどのデータが流れています。(friendly nameをWZ-M100に設定した場合の例です)
$ mosquitto_sub -t zigbee2mqtt/WZ-M100/# -v zigbee2mqtt/WZ-M100 {"detection_delay”:0.1,”fading_time":15,"illuminance_lux":4,"linkquality":105,"maximum_range”:6,”minimum_range":0.6,"presence":false,"radar_sensitivity":7,"target_distance":0} zigbee2mqtt/WZ-M100 {"detection_delay”:0.1,”fading_time":15,"illuminance_lux":4,"linkquality":102,"maximum_range”:6,”minimum_range":0.6,"presence":false,"radar_sensitivity":7,"target_distance":0} zigbee2mqtt/WZ-M100 {"detection_delay”:0.1,”fading_time":15,"illuminance_lux":4,"linkquality":105,"maximum_range”:6,”minimum_range":0.6,"presence":false,"radar_sensitivity":7,"target_distance":0} zigbee2mqtt/WZ-M100 {"detection_delay”:0.1,”fading_time":15,"illuminance_lux":4,"linkquality":108,"maximum_range”:6,”minimum_range":0.6,"presence":false,"radar_sensitivity":7,"target_distance":0} zigbee2mqtt/WZ-M100 {"detection_delay":0.1,”fading_time":15,"illuminance_lux":4,"linkquality":108,"maximum_range”:6,”minimum_range":0.6,"presence":false,"radar_sensitivity":7,"target_distance":0}
このうち、以下が感度や動作に関する設定項目です。括弧内の数値は、デフォルト値です。一番使いやすい値に設定されていると思いますので、基本的にデフォルト値で良いと思います。
- detection_delay (0.1秒)
- fading_time (15秒)
- maximum_range (6m)
- minimum_range (0.6m)
- radar_sensitivity (7)
detection_delayとfading_timeは、人の存在・不在を出力するまでの時間です。センサが設定時間の間、人の存在・不在を検出し続けたら、それを検出結果として反映します。例えば、fading_timeが15秒になっていれば、人がいなくなってから15秒後に{“presence”:false}というデータがMQTTメッセージに流れます。15秒間のfading_timeの間に、人が検出されたら、そこからまた15秒タイマーが再開します。
センサー動作を確認するために、養生テープで仮止めして、しばらく動作させてみました。
すると、人が存在しないのに検出してしまう偽陽性の誤動作が、半日に1回くらいの頻度で発生しました。突発的なノイズが原因のようです。電気的なノイズなのか、もしくは飛んでいる虫だったのかもしれません。人の存在で照明を点灯するような用途ならこれで良いと思いますが、例えば防犯ブザーのセンサとして使用する場合などは、対策したいところです。
そこで、detection_delayを0.5秒くらいに設定したところ、誤動作は発生しなくなりました。これもfading_timeと同様に動作し、人検出がdetection_delay秒以上継続した場合に検出と判定されます。detection_delayを1秒超えに設定すると、人検出に時間がかかるようになるので、0.5秒〜1秒程度が適切なようです。
これらのパラメータは、mosauitto_pubコマンドで変更可能です。例えばdetection_delayを0.5にするためには、以下のようなメッセージを流します。
$ mosquitto_pub -t zigbee2mqtt/WZ-M100/set -m '{"detection_delay”:0.5}'
Web UIからならもっと簡単です。スライダやテキストボックスから設定できます。
天井に取り付ける
動作確認できたので、いよいよ天井に取り付けます。石膏ボードなので加工は簡単です。場所を決めて、石膏ボード裏が空いていることを下地探しの針で確認します。
コンセントの増設で使ったこちらの下地探し道具をまた使いました。写真で、穴予定位置が変更になっているのは、下地があったからです。場所が決まったら、ホールソーで丸穴を空けます。
ホールソーは、Amazonで安かったです。7種類の鋸刃がセットになってます。これの直径51mmの鋸を、電動ドリルに取り付けて使いました。
綺麗な丸穴が空いたので、頑張って配線を通します。
センサーに配線をして、スプリング部品を穴の中に押し込むと、綺麗に仕上がりました。下地探しで開けてしまったピンホールがいくつか残っているので、そのうち何かで埋めておきます。
PSEマークが付いていない製品なので、VVFケーブルに直結するのはやめておきました。その代わりに石膏ボード裏側に設置した仮設コンセントに接続しました。
まとめ
Tuya系メーカーのミリ波人感センサー WZ-M100-Cを、Zigbee2MQTT 経由で、HomeKitに接続しました。Zigbee2MQTTの設定ファイルを適当に書き換えたところ、動作しました。WZ-M100は、以前紹介したZY-M100の後継機種と思います。感度を調整したところ、誤動作もなく快調です。
天井埋め込み型なので、石膏ボードに丸穴を開けて取り付けました。安価なホールソーを使いましたが、丸穴を開ける作業は簡単でした。ヨーロッパや中国の壁スイッチ・コンセント類は、丸穴で取り付けるらしいです。簡単そうで羨ましいです。
コメント