Sympapaのスマートホーム日記

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

スマートホーム: Aqara motion sensorの更新間隔を5秒にするMod

Sympapaです。
以前の記事で書きましたが、我が家でメインで使用しているZigBee接続の人感センサーはAqara motion sensor (RTCGQ11LM)です。
照度センサーも内臓していて安価なのが大きな理由です。

しかし不満が全く無いわけではありません。
私はHueの人感センサーを最初に使っていたんですが、Hueの人感センサーは人感のステータスがいつでもリアルタイムに更新されます。
しかし中華人感センサーの多くは人感の検出から1分間隔で更新されるため、検出後1分間は人感が無くても「人感無し」にステータスが変わらないし検出から1分後に人感が検出されるとまたその1分後に更新される仕様になっています。
Aqara motion sensorもやはり中華らしく1分間隔です。
人感検出で照明を点けて人感無しで照明を消すといった単純なオートメーションであれば普通は1分間くらい照明が点灯していて欲しいし気にならないのですが、我が家のトイレの照明は下記ののように自動化しているので、前の人がトイレから出てすぐに次の人がトイレに入ると最長で1分間照明が点かない問題が発生してしまいます。


[人感あり]

[照明ON]

[ドアが閉まるのを待つ]

[ドアを開ける]

[照明OFF]


そんなワケで調べていたら、たぶん韓国の方が発見した改造により更新間隔を5秒に出来るそうなのでやってみました。韓国語のブログの方には分解動画もあります。
community.smartthings.com
livebywant.tistory.com

改造する

分解方法は前述の韓国語のブログに動画があるので割愛します。
改造は取り出した基板の赤い矢印の2箇所をつないで導通させるだけってことのようです。

しかし実際に開けてみると意外と狭くってフツーのコテ先のハンダゴテと私のハンダづけの腕では無理そうです(汗
発見者の韓国の方は「4B鉛筆でもいける」と書かれていたので「ちょっとくらい抵抗が高くても大丈夫そうだな」と思い導電性塗料をAmazonで購入して使用しました。
PoLycalmってやつです。1870円と高いですがハンダづけで失敗するより(汗

付属の刷毛では太すぎなのでつまようじの先に着けて塗布しました。
そんなにモリモリ塗らなくてもちゃんと導通するというか今回の改造は抵抗が高くても機能するっぽいです。
余計なところにPoLycalmが付着してしまっても綺麗なつまようじで擦れば取れるのではみ出したのはしっかり取り除きました。
基板の色が黒なので塗ったPoLycalmが見づらい。。。ルーペはあった方がいいかもです。
こんな風になりました。


Home Assistantの設定

韓国語のブログの方は改造したAqara motion sensorをSmart Thingsで使用されていますが、ハードの改造だけでSmart Things上のステータスが5秒毎に更新されるようになったようです。
しかしHome Assistant(ZHA)はAqara motion sensorの更新間隔は1分だと情報を取得して認識している(?)のか、ハードを改造してもそのままでは1分間隔でしか更新されません。
調べているとPythonスクリプトでリセットする方法が見つかりましたが私にはチンプンカンプン(汗
更に調べているとここでHome Assistantのオートメーションを使ってリセットする方法を見つけました。
community.home-assistant.io

zha.set_zigbee_cluster_attributeのサービスを使いモーション検出状態のクラスターを"0"にすればリセットがかけられるようです。
人感検出後10秒でリセットされるオートメーションを組みました。

alias: aqara_motion_sensor_reset
description: ''
trigger:
  - type: motion
    platform: device
    device_id: xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    entity_id: binary_sensor.aqara_motion_sensor_ias_zone
    domain: binary_sensor
condition:
  - condition: state
    entity_id: binary_sensor.aqara_motion_sensor_ias_zone
    state: 'on'
action:
  - delay:
      hours: 0
      minutes: 0
      seconds: 10
      milliseconds: 0
  - service: zha.set_zigbee_cluster_attribute
    data:
      endpoint_id: 1
      cluster_id: 1280
      attribute: 2
      value: '0'
      ieee: xx:xx:xx:xx:xx:xx:xx:xx
mode: single

後日追記:Zigbee2MQTTの場合は、Zigbee2MQTTのUIからこの人感センサーの設定を開いて、Settings(Specific)のoccupancy_timeoutを"10"に設定すれば10秒でリセットされるようになります。オートメーションは不要です。


動作確認

人感検出後10秒後に人感が無ければ「未検出」に変わるようになり、その後すぐにでも人感が検出されれば「検出」に切り替わるようになりました。
これでほぼリアルタイムに人感の状態が更新されるので使い勝手が向上しました(^^
あとはバッテリー持ちがどれくらい悪化するのか様子見ですね。

では。