Sympapaのスマートホーム日記

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

Nest Doorbell (10): Nest Doorbell Wired(2nd Gen)を輸入して試す

Sympapaです。

我が家ではGoogle Nest Doorbell(Battery Type)を2年前に購入し使っています。
私もなかなか気に入っていますが、不思議なことにむしろ奥様の方が色々と活用されていて、我が家にはなくてはならない存在になっています。


しかし不満もあって、我が家ではNest Doorbell(Battery Type)に電源ケーブルを接続しているにも関わらず、寒くなると充電が追い付かなくなってバッテリー切れになり動作が停止する問題が過去に何回か発生しています。現在はあまりバッテリーを消費しない設定にしてバッテリー切れをほぼ回避出来ていますが、そのために画質を落としたり録画をするイベントや録画時間を制限したりして、せっかくの機能を最大限活用出来ないのはなんだかなと思ってます。


Googleも寒くなると充電が追い付かなくなる件は認めていて「0℃以下だと充電できなくなる」ことを公表しています。
また、電源を接続している場合もDoorbellの駆動に必要な電源はバッテリーから供給されており、接続した電源はバッテリーをトリクル充電するのに使われるようで、電源を接続していたとしても0℃以下になると充電出来ない問題は解消できないようです。もちろん寒い日でも暖かくなった昼間に充電はされるはずなのでですが、バッテリー消費の多い設定にするとそれでも追いつかない。。。


それともう一つの不満点として、Nest Doorbell(Battery Type)は呼び出しボタンを押してからNest HUBやスマホに通知が来るまでに結構時間がかかる点があります。
初期レビューでは2秒~5秒と書いてましたが、最近は5秒以上かかることも多い気がしています。以前より遅くなったと感じていてサーバー側の問題かと思っていました。
しかし、バッテリーを搭載していない日本で非発売のNest Doorbell(Wired 2nd Gen)ではNest Doorbell(Battery Type)よりも通知が来るのが早いという噂をネット上でいくつか見かけました。これが本当だとすると、Nest Doorbell(Battery Type)の方はバッテリーの節約のためにイベントが無い時は通信を抑制しているのかな?


そんなワケで日本では販売されていないNest Doorbell(Wired 2nd Gen)を試してみたい欲がムクムクと沸いてきました(笑)
バッテリーの寿命を考えるとどのみちNest Doorbell(Battery Type)はあまり長く使えなさそうな気がしますし、建築中の新しい家には新品を取り付けたいというのもあって、Nest Doorbell(Wired 2nd Gen)をアメリカから輸入して購入したので軽く初期レビューを書こうと思います。

■どこで買ったか?いくらするのか?

前述のとおり、バッテリーで動くNest Doorbell(Battery Type)は日本で販売されていますが、電源供給が必須のNest Doorbell(Wired 2nd Gen)は日本で販売されていません。
Nest Doorbell(Battery Type)も電源を供給する場合は同じなんですが、Nest Doorbell(Wired 2nd Gen)の電源の要求はAC 6V~24V 10VAです。交流で低電圧の電源ってのは日本では特殊で、このあたりのAC-ACアダプタを日本国内で調達することは結構難しいと思います。
アメリカのチャイムは一般的にAC16Vが使われているそうで、その電源をそのまま使える仕様にしてあるようです。
日本のチャイムは100Vか電池式のものが多く、インターホンの場合は親機側に100Vの電源が供給されているケースが多いので、特殊な電源の接続が必須であるNest Doorbell(Wired 2nd Gen)は日本で発売されていないんでしょう。


そんなワケで今回、Nest Doorbell(Wired 2nd Gen)を米Amazonで購入しました。日本と同じくAmazon自体はGoogle製品を販売していないのでマーケットプレイスの商品ですが、発送はAmazonだったので日本へ直接発送してくれる商品でした。
Nest Doorbell(Wired 2nd Gen)本体はUSD:156.3でしたが、取り付け角度を変えられる台座USD:13.99も購入したので商品代金が合計でUSD:170.3。円安の今でも日本円で24,890円くらいです。
しかし、輸送費USD:12.45、Import Fees DepositがUSD: 18.27が乗っかって計USD:201.02。日本円で29,008円。
Import Fees Depositが1424円が戻って来たので最終的に27,584円でした。
日本のNest Doorbell(Battery Type)の定価は23,900円なのでベースの代金も含めるとこんなもんっちゃこんなもんですが、ヨドバシやらではNest Doorbell(Battery Type)が19,800円で売られていたりするので、それと比べると3,000円~4,000円高くついた感じでしょうか。。。

■接続する

電源はNest Doorbell(Battery Type)で使用している18V800mAのAC-ACアダプタをそのまま使います。米Amazonで購入しました。


チャイムはあってもなくても良いのですが、Nest Doorbell(Battery Type)で使用しているコレをそのまま接続します。コレも米Amazonで購入しました。


Nest Doorbell(Wired 2nd Gen)の電源接続方法は基本的にNest Doorbell(Battery Type)と同じですが、Nest Doorbell(Wired 2nd Gen)でチャイムも接続する場合は付属しているChime connectorを接続しなくてはいけません。

といってもチャイムの端子に並列でChime connectorを接続するだけです。
こちらのページには「Chime connectorを使用すると、チャイムのワイヤーから Google Nest Doorbell(有線、第 2 世代)とに一定の電力を供給でき、チャイムを損傷から保護できます。さらに、Chime connectorがないと、チャイムがブザー鳴ったり、予期しないチャイムが発生したりする可能性があります。」と書かれています。
中身は何だろう?

■軽く試してみた感想

基本的にNest Doorbell(Wired 2nd Gen)とNest Doorbell(Battery Type)の機能は全く同じなので、当たり前だけどコレといった違いはありません。
素数、画角などの仕様も同じで、違いはバッテリーの有無と寸法だけではないかと思います。
寸法は結構違っていて、Nest Doorbell(Battery Type)が高さ160mmに対しNest Doorbell(Wired 2nd Gen)は131mmですが、Nest Doorbell(Battery Type)の細長いデザインのがむしろ未来的に見えたりします。
大きな差はやっぱりバッテリー消費を気にしなくて良い点でしょう。Nest Doorbell(Battery Type)ではバッテリー消費抑制のために実質的には使えない「最高画質」であるとか、あらゆるイベントの発生時に長時間録画をさせる設定も可能になります。

あと、確かにNest Doorbell(Wired 2nd Gen)はNest Doorbell(Battery Type)と比較して、通知が届くのが早いようです。
ほぼ2秒で確実に届く感じかな。Nest Doorbell(Battery Type)は早い時は早いのですが5秒以上かかることも結構あります。

■まとめ

Nest Doorbell(Wired 2nd Gen)の初期レビューをNest Doorbell(Battery Type)との比較で書いてみました。
Nest Doorbell(Battery Type)との動作的な違いは通知が届くのがNest Doorbell(Wired 2nd Gen)ちょっと早いというくらいでしたが、通知の早さについてはNest Doorbell(Battery Type)はその時でまちまちなので、Nest Doorbell(Wired 2nd Gen)の方も本格運用してみないとわからんとこもありますね。
それ以外にも、寒い時にバッテリー充電が出来なくなる問題がない点、電力消費の大きい設定にも出来て機能を最大限使える点、バッテリーの寿命を考えるとNest Doorbell(Wired 2nd Gen)の方が長く使えるであろう点はメリットかな。
輸入によって、日本でNest Doorbell(Battery Type)を買うよりも少し高くなりますし購入が面倒ではありますが、Nest Doorbell(Battery Type)も電源を調達しようとするとおそらく輸入することになりますし日本では買えないアクセサリーを一緒に買うことも出来るので、Nest Doorbellの購入を検討されている方はNest Doorbell(Wired 2nd Gen)の輸入も選択肢に入れて検討されるのも良いかなと思います。


それでは。

Home Assistant: 新しい家で使うダッシュボードを作る

Sympapaです。


引っ越しは2ケ月後くらいかなという感じなんですが、新しい家で使うHome Assistantのダッシュボードのメイン画面をぼちぼちと作成してました。
10インチのタブレットLDKにあるニッチに設置してダッシュボードにする予定で作成を進めていますが、最初は「現在使っているのが7インチだから十分」と思っていたけど、やりたいことを詰め込んでいくと10インチじゃ足りませんねぇ。まぁこれ以上デカくなるとFull HDより高い解像度が欲しくなりますが。
最初考えていたより照明のシーン切替ボタンが多くなってしまったのと、コンパクトでかつ使いやすいエアコンのカードが見つからずエアコンのカードでスペースが取られたのが敗因です。
他にメインの画面に入れたかったのは、エコキュート関連とか、結露に関わる情報とか、食器洗い機のステータス表示などがありました。
エコキュートはHome Assistantで自動で太陽光パネルの発電予測をチェックして発電量が十分なら昼間に沸かすというのをやりたいだけなので、エコキュートのリモコンも近くにあるしまぁメインの画面でいつも確認できる状態じゃなくてもいいかなと。
結露に関わる情報は、露点温度の表示とか、最終的には結露を防ぐように自動でエアコンを制御するなんてのをやりたいと思ってるわけですが、まぁ後で考えましょう(汗)
食洗機はそもそもネットワークに繋がる機種ではないので、どうやってステータスを取得するのか考えてないし、これも後で考えましょう(笑)
そんなワケで一部詰め込みたかったものを妥協して削ることになりましたが、大体完成しました。


後日「引っ越したらHome Assistantでやることやりたいことリスト」を記事にし、そして実際にやったら更に記事にしていこうと思ってます。
「やることやりたいこと」の7割は上のスクショに描かれていてますけど(笑)


使用するタブレットは1.5ヶ月前にAmazonで買った” Teclast P40HD”で16,878円で購入しました。
あまり比較せずに買ってしまったのですが、現在、同価格帯の他のモデルはSoCに"UNISOC T616”を使用したものが多く、しかしこのP40HDは"UNISOC T606”なのでちょっと劣っています。
しかしHome Assistantのダッシュボード用として使う分には動作面での不満は何もなく十分な速さです。ってか普通にブラウジングしたり動画見たりするのも充分サクサクで、最近の格安中華タブはかなり良いなという印象でした。
唯一にして最大の気になっている点は、Wi-Fi 5GHz帯の接続が安定していない点かな。我が家の環境の問題かとも思いましたが、3台あるWi-Fi AP全てでそうだし他のデバイスだと問題無いのでP40HDの問題ではないかと思います。
しかし、2.4GHz帯でも困るかというと、動画みたりするのもYouTubeの1080pでストリーミングが追い付かんことはないし、ましてHome Assistantのダッシュボード用として使う分には困らんかなと。ただ、Wi-Fi接続のスマートホームバイスはほとんどが2.4GHz帯でしか接続できないので、あんま2.4GHzの帯域を喰い潰したくないってのはありますけどね。


そんなワケでそれでは。

スマートホーム: トイレの照明自動化は奥が深い2023[ミリ波人感センサー"ZY-M100-S"を使ってやり直し]

Sympapaです。


このところ暑さの影響か、赤外線人感センサーの反応が鈍いのを体感するケースが増えました。赤外線の人感センサーは温度の動きで人を捉えるため、体温に近い室温になると反応が鈍くなります。
特に我が家のトイレの照明については複雑なロジックで自動化しており、影響は単純に「点灯するのが遅くなる」といったものではなく、少し前にセンサーの位置を調整したりオートメーションを調整したりしたのですが、抜本的改善には至らず。。。


そこで、ミリ波を使った人感センサーをトイレの照明自動化に組み込むことを検討してみることにしました。ミリ波を使った人感センサーならば室温に影響されない上「じっとしていると検出されない」という赤外線人感センサーの欠点もありません。
しかし、ミリ波を使った人感センサー"ZY-M100-S"を買ってみたら、意外とクセがあったというのが前回のお話。。。
そして、そのクセを踏まえた上でトイレに組み込んでやったというのが今回のお話です。


尚、"ZY-M100-S"にはブランド違いの亜種が存在するようです。
良く出回っているのは給電端子がMicro USB-B端子のものですが、今回使用するのはLoginovoブランドで販売されているもので給電がUSB-C端子、Zigbee2MQTTで"ZY-M100-S_1"として認識されるモデルです。初期レビューは前回の記事をご覧ください。
sympapa.hatenablog.com

■"ZY-M100-S"をトイレで活用する場合の気になるクセ

トイレに設置する場合は人が滞在する場所が便座に限定されていて"ZY-M100-S"をターゲットの1m以内の近距離に設置できるため、検出時の即応性や感度の面はあまり気にする必要がなく良好です。思っていたより"ZY-M100-S"の検出時の即応性は高く近距離であれば1秒以内に検出するので、 "detection_delay"はなるべく短く設定し、それを活かせるようオートメーションを組みたいと思います。
一方、「じっとしている時」の継続検出の信頼性はめちゃくちゃ高いわけではないので、"fading_time"(検出無しにするまでの時間)をある程度長めにしてその信頼性を確保する必要があり、それを考慮してオートメーションを組みたいと思います。とはいえ、トイレの場合はターゲットが近距離なので、"fading_time"をそこまで長く設定しなくても大丈夫かなとは思います。ちょっとテストした感じだと10秒ではじっとしているとたまに未検出になるので15秒くらいがいいのかな。
あと気になるのは「壁の向こう側を検出する」「裏側も検出する」点で、最終的にはこれらを考慮して設置位置、設置の向き、パラメータなどの調整を行う必要があると思います。

■デバイスの構成

バイス構成は以下のとおりになっています。
従来はドア開閉センサー1個と赤外線人感センサー2個を使用していましたが、人感センサーのひとつをミリ波人感センサーに変更した形です。
人感で照明を直接ON/OFFするのではなく、トイレに入ったかどうかを判定しその判定をもとにドアの開閉時に照明をON/OFFするという基本ロジックは変えていません。


[ハードウェア構成]
➀ドア開閉センサー (Aqura Door Window sensor MCCGQ11LM): トイレのドアの開閉をチェックします。
➁赤外線人感センサー (Aqura Motion sensor RTCGQ11LM改): ドアを開けたらすぐに検出してくれそうな位置に設置します。5秒更新3秒でリセットという改造仕様、特殊設定です。
③ミリ波人感センサー(Tuya ZY-M100-S): トイレの中に入るまでは検出されない位置に設置します。
 設定は以下のとおりとしました。
"detection_delay": 0.5 sec
"fading_time": 15.0 sec
"maximum_range": 1.2 m
"minimum_range": 0.15 m
"radar_sensitivity": 9
➃照明: LEDVANCEのZigbee接続スマート電球 Classic E26 Dimmerble

ZY-M100-Sの裏面側は子供の部屋ですが、2日間稼働させて1回だけ子供が部屋にいる時に検出されました。後日、ミリ波人感センサーの背面を金属で覆ってやろうと思います。

■オートメーションのフロー

ミリ波人感センサーを使えば「じっとしていても人感検出される」ので単純にミリ波人感センサーの検出により照明をON/OFFすれば良さそうな気がしますが、「じっとしていても継続的に人感検出される」信頼性を上げるために"fading_time"を長く設定すると人感無しに切り替わるまでの時間が長くなるので、トイレから人が出て次の人がすぐにトイレに入った場合に対応できなくなってしまいます。
それに、我が家のトイレの照明自動化には「人がトイレに入るよりも先に照明を点灯させよ。トイレから出る瞬間に自動で消えることを人に認識させよ。」というワケのわからないポリシーがあり、更にあらゆるイレギュラーな人の動きに対応できるロジックを作ろうとするとそう単純ではありません。
結局、6個のオートメーションで構成されていた超複雑な自動化は、5個のオートメーションで構成されるやや複雑な自動化に生まれ変わりました(笑)
特にイレギュラー発生時に「人がいなくなった」ことを判定するロジックで頭を悩ませる必要がなくなりミリ波人感センサーの"presence"にお任せできるようになったので、オートメーションの個数こそ1つしか減らなかったものの中身は結構シンプルに出来ました。


処理の流れとしては以下のような感じです。


1)オートメーション2によって、「ドアを開けた時」又は「赤外線人感センサーが検出された時」又は「ミリ波人感センサーが検出された時」に「入室判定の仮想スイッチ」がOFFであれば照明を点けます。いつもちゃんとドアが閉まっていれば「ドアを開けた時」だけをトリガーにすれば良いのですがお行儀のわる(略)


2)オートメーション1によって、ミリ波人感センサーの検出が開始された5秒後にドアが閉まっている場合「トイレに入った」と判定し「入室判定の仮想スイッチをONにします。あと、イレギュラー対応として、用を足した後ドアを開けたが「やっぱりもう少し」とドアを閉めて戻った場合、ミリ波人感センサーはずっと検出されたままなのでトリガーして発動してくれないので、5秒更新3秒リセットの設定をしている赤外線人感センサーもトリガーに加えています。ただ、暑い時は発動しづらいかもしれません。


3)オートメーション3は用を足した後の消灯用です。ドアを開けた時に「入室判定の仮想スイッチ」がONであれば照明を暗くし、同時に周囲が暗い場合はトイレの外側の廊下の照明を点けます。その後ドアが閉まるのを待って「入室判定の仮想スイッチ」をOFFにしてトイレの照明を消灯します。


4)オートメーション4はトイレに入ろうとドアを開けたが、やっぱり止めて中に入らずドアを閉めた場合のイレギュラー対応です。ドアを閉めて30秒後に「入室判定の仮想スイッチ」をチェックしてOFFの場合は照明を消します。実際にトイレに入った場合は、ドアを閉めてから30秒以内にオートメーション1による入室判定が完了していないといけないということになり、30秒はその猶予のための時間です。


5)オートメーション5はイレギュラー対応です。ミリ波センサーの"Presence"が検出無しに切り替わった時には、「入室判定の仮想スイッチ」をOFFにしてトイレの照明を消灯します。


2日間ほど稼働させていい感じで動いています。あとは背面側の遮蔽対策ですね。
ちなみに気のせいかもしれませんが、用を足して水が流れタンクに給水されている間は「人感無し」に切り替わらないように思います。このあたりも場合によっては考慮が必要になるかもしれません。

■実際のオートメーション

一応コードものっけておきます。
オートメーション1の人感センサーのトリガーは、今回使用している人感センサーが人感をずっと検出していても「3秒間人感あり」→「2秒間人感無し」を繰り返す特殊な設定になっていて、人感をずっと検出している場合も5秒毎にトリガーが発動することで成り立っているので、普通の人感センサーを使った場合はまず発動しません。まぁイレギュラー対応なので無くてもそこまで困らんかなとは思いますが、Aqura Motion sensor (RTCGQ11LM)に簡単な改造をしてやることで実現可能です。
あと、”照明をONにするスクリプト”の呼び出しが照明ONに相当します。”照明をONにするスクリプト”では時間毎に照度と色温度を変えて点灯させています。


こんなところですがオートメーションが長いので、例によって先にご挨拶しておきます。(笑)
それでは。

alias: オートメーション1_トイレに入ったら入室判定仮想スイッチをonにする
description: ""
trigger:
  - type: present
    platform: device
    device_id: ミリ波人感センサー
    entity_id: ミリ波人感センサー
    domain: binary_sensor
    for:
      hours: 0
      minutes: 0
      seconds: 5
  - type: motion
    platform: device
    device_id: 赤外線人感センサー
    entity_id: 赤外線人感センサー 
    domain: binary_sensor
condition:
  - condition: and
    conditions:
      - type: is_not_open
        condition: device
        device_id: ドア開閉センサー
        entity_id: ドア開閉センサー
        domain: binary_sensor
      - type: is_present
        condition: device
        device_id: ミリ波人感センサー
        entity_id: ミリ波人感センサー
        domain: binary_sensor
action:
  - service: automation.turn_off
    data:
      stop_actions: true
    target:
      entity_id:
        - automation.toilet_2f_door_open_to_light_turn_off
  - service: automation.turn_on
    data: {}
    target:
      entity_id:
        - automation.toilet_2f_door_open_to_light_turn_off
  - choose:
      - conditions:
          - condition: state
            entity_id: input_boolean.toilet_2f_occupied_booleans
            state: "off"
        sequence:
          - service: input_boolean.turn_on
            data: {}
            target:
              entity_id:
                - input_boolean.toilet_2f_occupied_booleans
  - choose:
      - conditions:
          - condition: device
            type: is_off
            device_id: 照明
            entity_id: 照明
            domain: light
        sequence:
          - service: >-
              script.トイレの照明をONにする
            data: {}
mode: single
alias: オートメーション2_ドアを開けたら照明をONにする
description: ""
trigger:
  - type: opened
    platform: device
    device_id: ドア開閉センサー
    entity_id: ドア開閉センサー
    domain: binary_sensor
  - type: motion
    platform: device
    device_id: 赤外線人感センサー
    entity_id: 赤外線人感センサー
    domain: binary_sensor
  - type: present
    platform: device
    device_id: ミリ波人感センサー
    entity_id: ミリ波人感センサー
    domain: binary_sensor
condition:
  - condition: state
    entity_id: input_boolean.toilet_2f_occupied_booleans
    state: "off"
action:
  - service: script.トイレの照明をONにする
    data: {}
mode: single
alias: オートメーション3_ドアを開けたら照明をOFFにする
description: ""
trigger:
  - type: opened
    platform: device
    device_id: ドア開閉センサー
    entity_id: ドア開閉センサー
    domain: binary_sensor
condition:
  - condition: state
    entity_id: input_boolean.toilet_2f_occupied_booleans
    state: "on"
action:
  - choose:
      - conditions:
          - condition: numeric_state
            entity_id: sensor.トイレの外の廊下の照度センサー
            below: "80"
        sequence:
          - service: >-
              script.廊下の照明をONにする
            data: {}
    default: []
  - service: automation.turn_off
    data: {}
    target:
      entity_id:
        - automation.オートメーション2_ドアを開けたら照明をONにする
  - service: light.turn_on
    data:
      transition: 1
      brightness_pct: 15
    target:
      device_id:
        - トイレの照明
  - wait_for_trigger:
      - type: not_opened
        platform: device
        device_id: ドア開閉センサー
        entity_id: ドア開閉センサー
        domain: binary_sensor
    timeout:
      hours: 0
      minutes: 0
      seconds: 20
      milliseconds: 0
  - service: input_boolean.turn_off
    data: {}
    target:
      entity_id:
        - input_boolean.toilet_2f_occupied_booleans
  - service: light.turn_off
    data:
      transition: 1
    target:
      device_id:
        - トイレの照明
  - service: automation.turn_on
    data: {}
    target:
      entity_id:
        - automation.オートメーション2_ドアを開けたら照明をONにする
mode: single
alias: オートメーション4_ドアを閉じて30秒後に入室判定OFFなら照明をOFFにする
description: ""
trigger:
  - type: not_opened
    platform: device
    device_id: ドア開閉センサー
    entity_id: ドア開閉センサー
    domain: binary_sensor
condition: []
action:
  - delay:
      hours: 0
      minutes: 0
      seconds: 30
      milliseconds: 0
  - condition: state
    entity_id: input_boolean.toilet_2f_occupied_booleans
    state: "off"
  - service: light.turn_off
    data:
      transition: 1
    target:
      device_id:
        - トイレの照明
mode: single
alias: オートメーション5_ミリ波人感センサーのprecenceがfalseになったら照明をOFFにする
description: ""
trigger:
  - type: not_present
    platform: device
    device_id: ミリ波人感センサー
    entity_id: ミリ波人感センサー
    domain: binary_sensor
condition: []
action:
  - choose:
      - conditions:
          - condition: state
            entity_id: input_boolean.toilet_2f_occupied_booleans
            attribute: "on"
            state: ""
        sequence:
          - service: input_boolean.turn_off
            data: {}
            target:
              entity_id:
                - input_boolean.toilet_2f_occupied_booleans
  - choose:
      - conditions:
          - condition: device
            type: is_on
            device_id: トイレの照明
            entity_id: トイレの照明
            domain: light
        sequence:
          - service: light.turn_off
            target:
              device_id:
                - トイレの照明
            data:
              transition: 2
mode: single


再びそれでは(笑)

Tuyaのミリ波人感センサー ZY-M100を試す

Sympapaです。

一般的に照明の自動化などで人感を検出するのには赤外線人感センサーが使用されています。
私もHome Assistantで人感をトリガーとした自動化をする時にはZigbee接続の赤外線人感センサーを使用しています。
赤外線人感センサーは安価で多くのメーカーがHome assistantで使いやすいZigbee接続のものも販売しており、その多くはZHAやZigbee2MQTTなどのインテグレーションやアドオンを介してHome assistantと接続できます。
消費電力が少ないためZigbee接続の人感センサーの多くはボタン電池か単4型電池で駆動するので、ケーブル不要で設置の自由度が高いのも利点でしょう。
しかし、赤外線人感センサーには人がじっとしていると検出されないという欠点があります。


この「じっとしていると検出されない」という弱点を克服した人感センサーとして、ミリ波を使用した"Aqara FP1 Presence Sensor"が(たぶん)2022年に登場して以来、ミリ波を使用した人感センサーがスマートホーム界隈で注目されており私も興味しんしんでした。しかし下記の点から赤外線人感センサーの置き換えとしては向かないのではないかと思い導入を躊躇していました。
・赤外線人感センサーと比べて高価(特にAqara FP1)
・ケーブルで電源を供給しなくてはいけない
・壁の向こう側の人感も検出する(場合によっては利点になるが部屋内に検出対象を限定するのが難しそう)
・人感あり及び人感なしへ切り替わるまでに数秒~数十秒かかると言われており即応性が厳しそう


ですがこのところ、私の住むド田舎地方が全国での最高気温を頻繁に記録するという異常気象の影響か、赤外線人感センサーの反応が鈍いのを体感するケースが増えました。赤外線の人感センサーは温度の動きで人を捉えるため、体温に近い室温になると反応が鈍くなります。
特に我が家では、複雑なロジックでウンチ君の最中に照明が消えないようにしているトイレの照明自動化が、クソ暑い日には想定どおり動かないケースが時々発生しており、今回、ミリ波を使った人感センサーをトイレの照明自動化に組み込むことを検討してみることにしました。
ただ、その界隈(?)で鉄板と言われている”Aqara FP1 Presence Sensor"は現在Aliexpressで7,500円くらいします。
そこで2,500円くらいで買えるTuyaの"ZY-M100"を購入して試してみたというのが今回のお話です。


レビュー記事として、こちらこちらを参考にさせていただき購入しました。
diysmarthome.hatenablog.com
smarthomescene.com


尚、”ZY-M100-S”には亜種?派生モデルが存在するようです。
今回試すのは、Loginovoというブランドで販売され、Zigbee2MQTTで"ZY-M100-S_1"として認識されるものになります。

■Tuya"ZY-M100-S"を試す

"ZY-M100"にはダウンライトのように天井に埋め込む「天井取付タイプ」のZY-M100-Lと薄くて6cm角くらいの「壁取付タイプ」のZY-M100-Sがありますが、今回購入したのは取り扱いがお手軽な後者の「壁取付タイプ」です。
接続方式はZigbee版とWi-Fi版が選べるようですが、私はできるだけローカルで処理したいのでZigbee版を購入しました。ってかHome Assistantで使う場合は選択できるのであればZigbeeを選ばない理由はありません。
届いたモノは電源の端子がUSB Type-Cでした。よく見かけるのはMicro USB-B端子だったんですが。。。背面のデザインなども良く見かけるものとは異なってました。


というか箱のデザインがLoginovoというブランドのオリジナルで、良く見かけるZY-M100-Sとは異なるようです。
購入したAliexpressのお店以外ではLoginovoブランドのZY-M100-Sと思われるものを販売しているセラーは見つけられませんでした。
Tuyaのデバイスは似て非なるようでやっぱり同じだったり違ったりするのでややこしや。。。


ちなみにそのお店ではこんなスタンドをセットにしたラインナップがあったのでそちらを購入してみました。

記事を書いている時点で本体のみの価格が2531円、本体+スタンドの価格が2726円となっています。
https://ja.aliexpress.com/item/1005005249827156.htmlja.aliexpress.com


"ZY-M100"はZigbee2MQTTでサポートされているはずです。
Zigbee2MQTTに接続してみたところ"ZY-M100-S_1"として認識されました。
人感検出に関わる部分は2つのセンサーと5つの設定パラメータで構成されていました。

[センサー]
・presence:「人感あり/なし」のステータスでTrue/falseに切り替わります。
・target_distance: 「距離」です。
[設定パラメータ]
・radar_sensitivity: レーダー感度:0-9
・minimum_range: 最小検出距離:0-9.5m
・maximum_range: 最大範囲(距離):0-9.5m
・detection_delay: 検出ありにするまでの時間:0-10sec
・fading_time: 検出無しにするまでの時間:0-1500sec


最小範囲と最大範囲は実際に検出する範囲ではなくて、presence:を”True"とする範囲じゃないかと思うのですが定かではありません。
ちなみに、presence:が"false"になるとtarget_distance:は"0m"になる仕様です。
あとは、購入前にみたレビューにも書かれていたとおり、約1秒毎にMQTTにレポートが流れています。ZigbeeネットワークやMQTTやログ周りへの負荷がちょっと気になります。何台も"ZY-M100"を使うのは止めた方が良いかもしれません。


さて、細かいことよりも先に、気になっていた壁の向こう側も検出するのかをチェックしてみました。
結果、壁が無いのと同じくらい盛大に検出されます(笑)
そしてもうひとつ大事な点のチェック。”ZY-M100-S"の背面側の人感を検出するのかという点ですが、こちらも裏表の区別は無いのかってくらい盛大に検出されます(汗)
こいつは少々困りました。例えば1階の天井に下向きに取り付けたとして、1階の床までの2.5mくらいを検出できるように設定すると、きっと2階に居る人の存在も検出してしまうでしょう。壁に取り付けた場合も、隣の部屋などを意識して設置場所や設定を考えなくてはいけないはずです。


背面側に関してはアルミフォイルで背面を覆ってやれば検出されなくなることを確認できました。下の写真の状態で机の下に手を入れても検出されません。


しかし壁の向こう側も検出する点については設置場所を工夫しないとパラメータ設定の自由度を奪われそうです。
基本的には背面を金属で覆った上で、天井に取り付けるか、下図のように壁の向こうに人がいない家の外周の壁に向かって取り付けるのが良いかなと思います。いや外壁の外側にも人がーーとかは言わないでください(笑)


さて、仕様上の検出範囲は下図のようになっていて高さ3mの天井に取り付けた場合、じっとしていても検出できる範囲は1-3m、ちょっと動けば検出できる範囲は5-7mとなっています。


仕様をみても、じっとしていても検出できる範囲だけを有効と捉えると4.5畳の部屋の天井ど真ん中に取り付けてギリギリという感じになるので、イメージしていたより検出範囲は狭いですね。
実際に設置して試した感じでは、眠っている時に誤ってpresence:が"false"(未検出)にならないようにするには、ベッドの正面で約1.5m以下の距離に設置することが必要だと思いました。この設置位置であれば、radar_sensitivity: 9, minimum_range: 0.3 m, maximum_range: 2.4m, detection_delay:0.8sec fading_time: 15sec に設定した場合、眠っている時もpresence:は"true"(検出)をキープできてました。この設定では部屋に入るとpresence:は数秒かからずに"true"(検出)となり、部屋から出るとだいたい20秒後にはpresence:が"false"(未検出)となるので、即応性という意味でも及第点かなと思います。
でも、ベッドから2.5m以上も離れた場所に設置すると、fading_time:は60sec以上に設定しないと、眠っている時は時々presence:が"false"(未検出)になってしまいます。


あと気になった点として、detection_delayを8秒とか10秒とかに設定しても、せいぜい5~6秒でpresence:が"true"(検出)となる点です。
別のお店で購入したMicro USB-B端子のZY-M100(何故かZigbee2MQTTでは天井取付モデルZY-M100-Lとして検出)も届きましたが、そちらはそちらでdetection_delayを7秒以上に設定するとどう頑張ってもpresence:が"true"(検出)にならなくなるので、detection_delay周りにはバグがありそうです。
まぁ長く設定したいというニーズはほとんど無いと思うので問題ないのかもしれませんが、いずれのモデルの場合も5秒以下に設定するのが無難だと思いました。


ざっくりですが試した感想としては、赤外線センサーと比べると「じっとしていても遥かに未検出になりにくい」のは間違いなく、検出時に限っては即応性も申し分ありませんでした。しかし、壁を通過して検出する点、裏側も検出する点、じっとしている時の検出精度を十分確保できる距離はだいたい1.5m以内である点を考えると、癖をしっかり掴んだ上で目的に応じて設置や設定の工夫が必要となる・・・言い換えると面倒くさいデバイスだなと感じました(笑)
まぁ面倒くさいとか言いましたけど、Home Assistantやらをお使いの方にとってはもはやそれは楽しみかもしれません(汗)
しかし、このあたりがAqara FP1やFP2だともっと優れているのかな。

■実際にトイレに設置する

そもそも今回"ZY-M100"を購入した目的はトイレの人感検出なのでトイレに設置してみました。
が、トイレという1畳くらいの狭い空間に検出範囲を限定しつつ、じっとしていても安定的に人感を検出させるには、設置場所とパラメータ設定の試行錯誤の繰り返しが必要そうです。


そしてちょっと謎なのが、センサーから離れてpresence:が"false"(未検出)に切り替わる直前まで、なぜか maximum_range以内のtarget_distanceを示しているんですよね。(しかも更新されている)
target_distanceがmaximum_rangeから外れた状態でfading_timeに達するとpresence:が"false"(未検出)に切り替わるわけではないの?
ここらへんも挙動が判りにくく、試行錯誤に時間がかかりそうです。


もっと楽勝だと思っていたので一気に書こうと思っていたのですが、次回に回します(笑)


それでは。

スマートホーム: トイレの照明自動化は奥が深い 2023

Sympapaです。


2週間くらい前に私もチャンネル登録している”のりごとー"さんのYouTubeチャンネルでHome Assistantが紹介されていました。
youtu.be


普段、ガジェットからお洒落で便利なアイテムまで紹介されている”のりごとー"さんですが、ディープなHome Assistantの世界をとても楽しそうに熱く語られています。
そして動画のDescriptionにこのブログのリンクを貼っていただいてました\(^o^)/
”のりごとー"さんも動画の中で話されていましたがHome Assistantの日本語の情報は非常に少なく、日本でもっともっと普及して欲しいです。
英語での検索は適切な検索ワードをみつけるのが難しいですし、ソレがなんとかなっても日本で生活している以上どうしても日本特有のデバイスをHome Assistantへ接続したいケースが出てきます。日本特有のデバイスをHome Assistantへ接続するにはそのためのインテグレーションが必要になるので、それを開発するスキルを持っているHome Assistantユーザーさんが一人でも増えると嬉しいですし、もっともっと日本でHome Assistantが普及してくれることを願うばかりです。


さて本題(笑)
暑いせいか最近、トイレの照明を制御する人感センサーの反応がよろしくないので、センサーの位置を調整しました。
合わせて、人感センサーの反応が鈍くても許容できるようにオートメーションも少し見直ししたので、繰り返しネタになりますがトイレの照明の自動化についてブログに書いてみようかなと。


住宅系YouTuberさんは玄関や廊下の照明は自動化するよう勧めていることがほとんどですが、トイレの照明の自動化については意見が分かれています。
理由はそう、ウンチ君をしていると人があまり動かないので人感センサーが反応せずに照明が消えてしまう問題があるからですね。
家のトイレの照明が自動化されていない方も、スーパーや公共施設や会社などでウンチ君の最中に照明が消えてしまいヘッドバンキングして再度照明を点けた経験はきっとあるでしょう(笑)


しかしHome Assistantならそんな悩みも解決できます。
やり方は色々あると思いますが、例えば普通の赤外線を使った人感センサーを使わずミリ波などを使ったセンサーを使うとか、オートメーションのロジック側でなんとかするとか。
我が家ではドア開閉センサーと(普通の)人感センサー2個を使って「トイレに人が入ったか」を判定し「人が入っていない時にドアを開けたら照明ON」「人が入っている時にドアを開けたら照明OFF」というオートメーションを組んでいます。一回「トイレに入った」と判定すればドアを開けるまで照明が消えないようにすることで、人感センサーが検出しなくなっても照明が消えないようにしています。
トイレの照明の自動化はたぶんHome Assistantを使い始めてから一番工夫を重ねたオートメーションでもあるし、自動化以外の拘りも盛り込んだ超自己満仕様なので、何度もネタにしたいと思います(笑)

■トイレの照明関連デバイスの構成

Home Assistantの使い始めの頃に書いた記事がこちらになります。
sympapa.hatenablog.com
sympapa.hatenablog.com


現在のデバイス構成は以下のとおりになっています。
人感で照明を直接ON/OFFするのではなく、トイレに入ったかどうかを判定しその判定をもとにドアの開閉時に照明をON/OFFするという考え方は変わっていないのでハードの構成も基本的には変わってませんが、人感センサーAを追加しましたね。(元のセンサーが人感センサーB)


[構成]
➀ドア開閉センサー (Aqura Door Window sensor MCCGQ11LM): トイレのドアの開閉をチェックします。
➁人感センサーA (Aqura Motion sensor RTCGQ11LM): ドアを開けたらすぐに検出してくれそうな位置に設置。人感検出後60秒毎に更新されます。
③人感センサーB (Aqura Motion sensor RTCGQ11LM): トイレの中に入るまでは検出されない位置に設置。更新間隔が5秒になる改造をした上で、人感検出後3秒後には「人感検出無し」になり、人感検出後5秒毎に更新されるというちょっと特殊な設定をしています。
➃照明: LEDVANCEのZigbee接続スマート電球 Classic E26 Dimmerble

■オートメーションのフロー

トイレの照明の自動化は6個ものオートメーションで構成しています(汗)
まとめれば3個くらいにはなりそうですが、まとめると1個の中で処理を分岐させることになり結局複雑になってGUIでの編集がやりづらくなるのでどっちもどっちかなと思います。
処理の流れとしては以下のような感じです。オートメーション4~6はイレギュラーが起きた場合の対応用です。


1)オートメーション2によって、ドアを開けた時又は人感センサーAが検出された時に「入室判定の仮想スイッチ」がOFFであれば照明を点けます。


2)オートメーション1によって、人感センサーBが検出された時に、人感センサーAが検出状態でかつドアが閉まっている場合「トイレに入った」と判定し「入室判定の仮想スイッチをONにします。人感センサーAの検出を条件に入れているのは人感センサーのゴースト検出対策です。2つの人感センサーが検出されないと「入室判定の仮想スイッチ」がONになりません。


3)オートメーション3は用を足した後の消灯用です。ドアを開けた時に「入室判定の仮想スイッチ」がONであれば照明を暗くし、同時に周囲が暗い場合はトイレの外側の廊下の照明を点けます。その後ドアが閉まるのを待って「入室判定の仮想スイッチ」をOFFにしてトイレの照明を消灯しますが、ドアが閉まらなくても30秒後には「入室判定の仮想スイッチ」をOFFにしてトイレの照明を消灯します。ドアの閉め忘れ対策です。


4)オートメーション4はトイレに入ろうとドアを開けたが、やっぱり止めてドアを閉めた場合のイレギュラー対応です。ドアを閉めて30秒後に「入室判定の仮想スイッチ」をチェックしてOFFの場合は照明を消します。実際にトイレに入った場合は、ドアを閉めてから30秒以内にオートメーション1による入室判定が完了していないといけないということになり、30秒はその猶予のための時間です。今まではここを15秒にしていたのですが、暑くて人感センサーの反応が鈍っているので今回ここを調整しました。


5)オートメーション5ではイレギュラー対応として、2つの人感センサーのいずれも検出が2分間無かった時に「入室判定の仮想スイッチ」がOFFの場合は照明を消します。これはトイレに入ろうとしてドアを開け照明が点いたけど、やっぱり止めて出ていき、且つドアを閉めなかった場合を想定しています。


6)オートメーション6ではイレギュラー対応として、照明が30分間連続点灯した時に、2つの人感センサーの反応が25分間無い状態であった場合は消灯します。イレギュラーで入室していないのに「入室判定の仮想スイッチ」がONになってしまうという想定外を想定しています(笑)


拘りポイントのひとつめは、点灯はなるべく早いタイミングでさせるという点です。ドアを開け始めた時点でトイレの照明が点灯するので人感で点灯させるよりも点灯タイミングが早くなります。用を済ませた後もドアを開けた時点でトレイの外側の廊下の照明が点灯するようにしています。
一方、トイレの使用後は自動で照明が消えるということを人が認識できるよう、ドアを開けた時点で暗くなりドアを閉めると消灯するようにしています。
拘りポイントのふたつめは人のイレギュラーな動きにできるだけ対応できるようにしている点です。ドアの閉め忘れとか、ドアを開けたまま掃除するとか様々な想定される人の動きに対応するオートメーションを組み、最後は想定できない動きを強引にねじ伏せるオートメーションを組んでいます(笑)

■実際のオートメーション

誰かひとりでも参考にして貰えればということで、一応コードものっけておきます。普段はGUIでしか見ていないので、ブログに貼り付けることで違った視点でチェックできるという効果もありますし(笑)
オートメーション1については、トリガーとなっている人感センサーBが人感をずっと検出していても「3秒間人感あり」→「2秒間人感無し」を繰り返す特殊な設定になっていて、人感をずっと検出している場合も5秒毎にトリガーが発動してくれることでこのオートメーションのロジックが成立するので、フツーの人感センサーでは実現できません。
Aqura Motion sensor (RTCGQ11LM)に簡単な改造をしてやることで実現可能です。
フツーの人感センサーを使った場合でも、人感センサーBを「必ずドアを閉めてから検出される位置」に設置すればイケるはずです。
あと、”照明をonにするスクリプト”の呼び出しが照明ONに相当します。”照明をonにするスクリプト”では時間毎に照度と色温度を変えて点灯させています。


こんなところですがオートメーションが長いので、先にご挨拶しておきます。(笑)
それでは。

alias: オートメーション1_トイレ1Fに入ったらinput_booleanをonにする
description: ""
trigger:
  - type: motion
    platform: device
    device_id: 人感センサーB
    entity_id: 人感センサーB
    domain: binary_sensor
condition:
  - condition: and
    conditions:
      - type: is_motion
        condition: device
        device_id: 人感センサーA
        entity_id: binary_sensor.人感センサーA
        domain: binary_sensor
      - type: is_not_open
        condition: device
        device_id: ドア開閉センサーのid
        entity_id: binary_sensor.ドア開閉センサー
        domain: binary_sensor
action:
  - service: automation.turn_off
    data:
      stop_actions: true
    target:
      entity_id: automation.オートメーション3
  - service: automation.turn_on
    data: {}
    target:
      entity_id: automation.オートメーション3
  - service: input_boolean.turn_on
    data: {}
    target:
      entity_id: input_boolean.toilet_1f_occupied_booleans
  - condition: state
    entity_id: light.照明
    state: "off"
  - service: script.照明をonにするスクリプト
    data: {}
mode: single
alias: オートメーション2_トイレ1Fのドアを開けたら照明をONにする
description: ""
trigger:
  - type: opened
    platform: device
    device_id: ドア開閉センサー
    entity_id: ドア開閉センサー
    domain: binary_sensor
  - type: motion
    platform: device
    device_id: 人感センサーA
    entity_id: 人感センサーA
    domain: binary_sensor
condition:
  - condition: state
    entity_id: input_boolean.toilet_1f_occupied_booleans
    state: "off"
action:
  - service: script.照明をonにするスクリプト
    data: {}
  - service: automation.turn_off
    data: {}
    target:
      entity_id: >-
        automation.オートメーション6
  - service: automation.turn_on
    data: {}
    target:
      entity_id: >-
        automation.オートメーション6
mode: single
alias: オートメーション3_トイレ1Fのドアを開けたら照明をOFFにする
description: ""
trigger:
  - type: opened
    platform: device
    device_id: ドア開閉センサー
    entity_id: ドア開閉センサー
    domain: binary_sensor
    for:
      hours: 0
      minutes: 0
      seconds: 1
condition:
  - condition: state
    entity_id: input_boolean.toilet_1f_occupied_booleans
    state: "on"
action:
  - choose:
      - conditions:
          - condition: numeric_state
            entity_id: sensor.廊下の照度センサー
            below: "80"
        sequence:
          - service: script.廊下の照明を点灯するスクリプト
            data: {}
    default: []
  - service: automation.turn_off
    data: {}
    target:
      entity_id:
        - automation.オートメーション2
  - service: light.turn_on
    data:
      transition: 1
      brightness_pct: 15
    target:
      device_id:
        - 照明のid
  - wait_for_trigger:
      - type: not_opened
        platform: device
        device_id: ドア開閉センサーのid
        entity_id: binary_sensor.ドア開閉センサー
        domain: binary_sensor
    timeout:
      hours: 0
      minutes: 0
      seconds: 30
      milliseconds: 0
  - service: input_boolean.turn_off
    data: {}
    target:
      entity_id: input_boolean.toilet_1f_occupied_booleans
  - service: light.turn_off
    data:
      transition: 1
    target:
      device_id:
        - 照明のid
  - service: automation.turn_on
    data: {}
    target:
      entity_id:
        - automation.オートメーション2
mode: single
alias: オートメーション4_トイレ1Fのドアを閉じてトイレに人がいない場合照明をOFFにする
description: ""
trigger:
  - type: not_opened
    platform: device
    device_id: ドア開閉センサー
    entity_id: ドア開閉センサー
    domain: binary_sensor
condition: []
action:
  - delay:
      hours: 0
      minutes: 0
      seconds: 30
      milliseconds: 0
  - condition: state
    entity_id: input_boolean.toilet_1f_occupied_booleans
    state: "off"
  - service: light.turn_off
    data:
      transition: 1
    target:
      device_id:
        - 照明のid
mode: single
alias: オートメーション5_トイレ1Fの人感が2分間無しで人がいない場合は照明をOFFにする
description: ""
trigger:
  - type: no_motion
    platform: device
    device_id: 人感センサーA
    entity_id: 人感センサーA
    domain: binary_sensor
    for:
      hours: 0
      minutes: 2
      seconds: 0
  - type: no_motion
    platform: device
    device_id: 人感センサーB
    entity_id: 人感センサーB
    domain: binary_sensor
    for:
      hours: 0
      minutes: 2
      seconds: 0
condition:
  - condition: state
    entity_id: input_boolean.toilet_1f_occupied_booleans
    state: "off"
action:
  - service: light.turn_off
    target:
      device_id:
        - 照明のid
    data:
      transition: 2
mode: single
alias: オートメーション5_トイレ1Fの人感検出長時間無しで照明をOFFにするNEW
description: ""
trigger:
  - platform: device
    type: turned_on
    device_id: 照明
    entity_id: 照明
    domain: light
    for:
      hours: 0
      minutes: 30
      seconds: 0
condition:
  - type: is_no_motion
    condition: device
    device_id: 人感センサーAのid
    entity_id: binary_sensor.人感センサーA
    domain: binary_sensor
    for:
      hours: 0
      minutes: 25
      seconds: 0
  - type: is_no_motion
    condition: device
    device_id: 人感センサーBのid
    entity_id: binary_sensor.人感センサーB
    domain: binary_sensor
    for:
      hours: 0
      minutes: 25
      seconds: 0
action:
  - service: automation.turn_off
    target:
      entity_id:
        - automation.オートメーション2
    data: {}
  - service: light.turn_off
    target:
      device_id:
        - 照明のid
    data:
      transition: 2
  - service: input_boolean.turn_off
    data: {}
    target:
      entity_id: input_boolean.toilet_1f_occupied_booleans
  - service: automation.turn_on
    target:
      entity_id:
        - automation.オートメーション2
    data: {}
mode: single


再びそれでは(笑)

Zigbee接続温湿度センサー3種とSwitchbot温湿度計 精度比較検証

Sympapaです。


建築中の新しい家では温湿度管理をして、床下や壁内の結露を防止しつつ人間が快適な湿度を保ちたいなんてことを妄想しています。
そんなワケで使用するZigbee接続の温湿度センサーを物色中ですが、床下、室内、小屋裏へ計10個以上設置したいので安価なものを探しています。
しかし、温湿度センサーは温度はともかく湿度はモノによって精度がかなり悪い模様。。。


そんなワケで前回の記事で書いたように手始めに700円くらいと安価なTuyaの"WSD500A"という温湿度センサーを買ってみたのですが、Nature Remo 3の温湿度センサーと比較したところ湿度に10%を超える差がありました。しかし、どっちが真値に近いのかはわかりません。


今回は、700円くらいで買える別のTuyaの温湿度センサーと、ちょっとお高めですが精度が高いという評判のAquraの温湿度センサー、そしてZigbee接続ではありませんがこれまた精度が高いと評判のSwitch Bot温湿度計を追加で購入して比較してみることにしました。
Espec製の校正された温湿度計とも比較して、どのモデルが一番精度が高そうかを検証していきたいと思います。

■今回比較した温湿度センサー

1) Tuya WSD500A

前回の記事で書いた最初に購入したTuyaのZigbee接続温湿度センサーです。1個購入で672円でした。
大きめですが単4電池×2本で動くので電池持ちは期待できそうです。
分解したわけではありませんが、ググって調べたところでは使用されているセンサーはSensylinkのCHT8305だそうです。
温度は±0.5℃、湿度は±3%の精度です。
ja.aliexpress.com



2) Tuya IH-K009(3個)

今回購入したTuyaのZigbee接続温湿度センサーです。1個購入の場合で690円でした。
バッテリーはCR2450です。
ググっても使用されているセンサーが判らなかったので分解してみましたが、センサー上に白いテープみたいのが貼り付けられていて型番がわかりませんでした。

テープみたいのを剥がそうとしましたが結構がっちりくっつているので諦めて蓋を閉じましたが、後でセンサーメーカーであるSensirionのページをみていたら白いテープみたいのが貼り付けされているSHT30-DIS-F, SHT31-DIS-F, SHT35-DIS-Fが似てました。貼り付けられているのはフィルタだそうです。強引に剝がさなくてよかったですが上の写真には剥がそうとした痕跡が写ってます(笑)

IH-K009の仕様上の精度は温度は±0.3℃、湿度は±3%です。
使われているのがSHT30-DIS-Fだとするとその仕様では温度は±0.2℃、湿度は±2%です。
https://ja.aliexpress.com/item/1005003187008387.htmlja.aliexpress.com


3) Aqara WSDCGQ11LM(2個)

2個まとめ買いで2760円でした。1個あたり1380円。1個だけ購入の場合は1900円前後するのでなかなかお高いですが、気圧計も内臓しています。
そして深く考えずに買ってしまいましたが、後継のWSDCGQ12LMというモデルがあるようです。違いはZigbee 3.0に対応したことかな?
バッテリーはCR2032なので電池持ち的にはネックかもしれません。
WSDCGQ11LMの仕様上の精度は温度は±0.3℃、湿度は±3%です。
分解したわけではありませんがググって調べたところでは使用されているセンサーはSensirion SHT30のようで温度は±0.3℃、湿度は±3%の精度です。
またAquraのZigbee接続デバイスZigbee規格に完全に準拠していないと言われており、実際問題、我が家で使用しているAqaraの人感センサーはルーター(ハブ)機能を持つ電球に接続している場合にその電球の元電源をオフにすると、別のルーター又はコーディネーターへ自動的に再接続してくれない場合もあるので(この場合は手動で再接続することになる)、この点を考慮する必要があります。でもAqaraのドア開閉センサーの方はそうなった事がないのでこの温湿度センサーも大丈夫かもしれません。後日検証してみます。
www.aqara.com


4) Switchbot温湿度計 meter TH-S1(参考)

Zigbee接続ではありませんが精度が高いと評判で、ディスプレイ付きのがひとつ欲しかったので購入しました。
Bluetooth接続でHome Assistantに接続することは可能です。
今回は参考として比較します。
Switchbot温湿度計の仕様によると、温度の精度は±0.2°C(0°C~65°Cにおいて)湿度の精度は±2%(25°C、10%~90%RHにおいて)です。
ググって調べたところではセンサーはSensirion SHTC3が使用されているそうで、その仕様では温度は±0.2℃、湿度は±2%です。


5) Nature Remo 3(参考)
日本に住んでいてある程度スマートホーム化を進めている人であれば、知らない人はいないであろうスマート赤外線リモコンです。
温湿度センサーも内臓されていますが使いどころは限られます(汗)
温湿度センサーの仕様は調べても見つけられず。。。
こちらも参考として比較します。


6) Espec RS-12(参考)
定期校正されており基準になりそうなので借りてきた業務用?温湿度計です。センサーは標準のRSH-1010、センサーだけで定価9,680円です。
仕様では温度 平均±0.3℃、湿度 平均±5%RH(25℃、50%RHにおいて)となっています。
センサーの寿命は1年間とされてますが、3年弱使用しているようなので怪しいかも(^^;)
でも9ヶ月前に校正業者による校正をパスしています。まぁ仕様が±5%だから校正時に5%ズレていてもギリ合格しちゃいますけど。


仕様まとめ(※使用センサーは公式情報ではない)

Tuya WSD500A Tuya IH-K009 Aqara WSDCGQ11LM Switchbot温湿度計
温度精度仕様(℃) ±0.5 ±0.3 ±0.3 ±0.2
湿度精度仕様(%) ±3 ±3 ±3 ±2
バッテリー 単4型電池×2本 CR2450 CR2032 単4型電池×2本
使用センサー Sensylink CHT8305(ネット情報) Sensirion SHT30-DIS-Fに似てる Sensirion SHT30(ネット情報) Sensirion SHTC3(ネット情報)

■温度の精度検証

全てオフセット設定による補正は無し(Espec RS-12は借りてきた状態のまま)でテストします。
温度が安定していれば6種9個のRは0.5℃以内に収まっていました。どのセンサーも十分な精度だといえると思います。
本当はもっと低温やもっと高温も検証した方が良いのでしょうが、温湿度センサーは湿度に比べると温度は遥かに正確という噂なので省略して湿度の検証に力を入れます(笑)

■湿度の精度検証の前に。。。どうやって湿度環境を作る??

正確な湿度計を求めている方は意外とたくさんいらっしゃるようで、"湿度計""校正"でググると、飽和塩水を容器に入れて安定した湿度環境を作る方法が出てきます。
塩の種類によって特定の湿度が得られるようで、塩化ナトリウムの場合は相対湿度:75%が作り出せるそうです。
食塩でやっている方も多そうですが、塩化ナトリウムの純度で2~3%くらいは変わってしまうみたいだし、塩の純度だけじゃなくて水の方も純水を用意しないと誤差が出そうですね。
それに借りて来たEspec RS-12を塩水と一緒に容器に入れるって怖い(笑)


そんなワケでググっていたらBovedaなる調湿剤をみつけたのでこれを使ってテストすることにしました。
なんか楽器やら葉巻やらハーブやら草やらの保存用としていくつかの湿度のバリエーションが用意されてます。
今回の検証では楽器用の72%RHと49%RH HA(High Absorption 高吸収 高湿度用)を使います。
Bovedaには湿度計キャリブレーション用もあるけどちょっと高いのでやめときましたが、後で見たBoveda公式ページにはそっちのが高精度な塩を使ってると書いてあってちょっと後悔・・・。75%なのでおそらく使用されているのは塩化ナトリウムだと思いますが、塩化ナトリウムの場合は作られる相対湿度への温度の影響が小さいのでキャリブレーションに使いやすいってことかもしれません。

https://amzn.asia/d/iy5uhAxamzn.asia
https://amzn.asia/d/gR7R6HAamzn.asia


そんなワケでBevodaと温湿度計を一緒にジップロックに入れて24時間以上放置してから検証することにしました。しかし、さすがに電源ケーブルが必要なNeture Remo 3は入れられないので、Neture Remo 3については後で通常室内下での相対比較をやることにします。
Bovedaが何℃の時に所定の相対湿度となるのかがわからなかったのですが、キャリブレーション用のは (65 ~ 75°Fでやれ) って書いてあったので70°F=約21.1℃狙いでいきましょう。

■湿度の精度検証

全てオフセット設定による補正は無し(Espec RS-12は借りてきた状態のまま)でテストします。
最初にBovedaの72%RHの方でテストしました。
それにしても、このBoveda 72%が作り出す相対湿度は温度の影響が結構大きいようです。18℃時と21℃時を比べるとざっくり1%くらい変化していました。Boveda 72%RHは校正向きではないかも(汗)


比較的温度が21.1℃に近く安定していた5Hrの結果を下のグラフと表に示します。それでも温度は平均20.7℃くらいになってしまいましたが。。。
72%RHが真値だとすると±3%に収まっているのは72%に近い順にTuya IH-K009(3号), Aqara WSDCGQ11LM(2号)≒Aqara WSDCGQ11LM(1号), Switchbot温湿度計,Tuya IH-K009(2号)となりました。この5個のそれぞれの平均値は69.9%~71.7%でその平均値は71.0%なので、実際の真値は71%RHくらいなのかもしれません。
Espec RS-12も平均68.9%、Tuya IH-K009(1号)も平均68.7%なので(実際の湿度は71%RHくらいかもという点も踏まえると)これらもギリ±3%に収まっていると言っても問題ないですね。Tuya WSD500Aは8%くらい低い値を示しておりこれは圏外かな。


そして2個しかないので偶然かもしれませんが、Aqara WSDCGQ11LMの2個の差が非常に小さかったのは特筆すべき点かと思います。
尚、Tuya IH-K009とAqara WSDCGQ11LMが小数点第2桁まで表示されるのに対しSwitchbot温湿度とESPEC RS-12は1%単位でしか表示されないので、その点は考慮が必要です。

上のグラフの統計

データ数 平均(%) 最小(%) 最大(%) 72%に対する平均のズレ(%) 71%に対する平均のズレ
Tuya WSD500A 10 63.3 63.1 63.5 -8.3 -7.3
Tuya IH-K009(1号) 11 68.7 68.5 68.8 -3.3 -2.3
Tuya IH-K009(2号) 11 69.9 69.8 70.0 -2.1 -1.1
Tuya IH-K009(3号) 11 71.9 71.7 72.0 -0.1 +0.9
Aqara WSDCGQ11LM(1号) 15 71.2 70.8 71.5 -0.8 +0.2
Aqara WSDCGQ11LM(2号) 16 71.2 70.8 71.6 -0.8 +0.2
Switchbot温湿度計 1 71 71 71 -1 ±0
Espec RS-12 62 68.9 68 69 -3.1 -2.1


次にBovedaの49%RH HAでテストしました。
最初Bovedaの49%RH(ノーマルタイプ)を使ったのですが何故か60%RH前後に調湿されてしまうので、49%RHHA(High Absorption 高吸収 高湿度用)を使用しました。
温度は72%RHでのテスト時と同じく21.1℃を狙いましたが、この季節(ゴールデンウイーク)は外気温が15℃~25℃くらいと21℃の下行ったり上行ったりするので調整難しいですな。。。なんとか5Hr分を拾い平均21.0℃。


49%RHが真値だとすると±3%に収まっているのは49%に近い順にTuya IH-K009(2号), Aqara WSDCGQ11LM(2号), Aqara WSDCGQ11LM(1号), Tuya IH-K009(3号),Tuya IH-K009(1号)となりました。この5個でそれぞれの平均値は46.5%~47.5%と1%以内に収まっておりその平均値は47.3%なので実際の湿度の真値は47%RHくらいなのかもしれません。
Switchbot温湿度計も(真値が47%RHくらいかもという点も踏まえると)±3%に収まっていると言っても問題ないですね。
Tuya WSD500Aが圏外なのは予想どおりとして業者公正されていて72%RHの時はまぁまぁだったEspec RS-12が圏外なのは驚きました(汗)


上のグラフの統計

データ数 平均(%) 最小(%) 最大(%) 49%に対する平均のズレ(%) 47%に対する平均のズレ
Tuya WSD500A 10 41.9 41.5 42.0 -8.1 -6.1
Tuya IH-K009(1号) 12 46.5 46.2 46.8 -2.5 -0.5
Tuya IH-K009(2号) 11 47.9 47.6 48.2 -1.1 +0.9
Tuya IH-K009(3号) 12 47.0 46.7 47.4 -2.0 ±0
Aqara WSDCGQ11LM(1号) 20 47.4 47.2 47.8 -1.6 +0.4
Aqara WSDCGQ11LM(2号) 17 47.5 46.9 48.0 -1.5 +0.5
Switchbot温湿度計 3 45.3 45 46 -3.7 -1.7
Espec RS-12 62 38.7 38 39 -10.3 -8.3


72%RHと49%RHでの両方のテスト結果を総合的にみると、Aqara WSDCGQ11LMが2個の差も少なく一番精度が高いと言えると思います。
Tuya IH-K009も優秀でしたが、72%RHでのテストにおける計測値はTuya IH-K009(3号)>Tuya IH-K009(2号)だったのに対して、49%RHでのテストではTuya IH-K009(3号)<Tuya IH-K009(2号)と逆転したので湿度領域に対する感度に個体差があるとみられ、この点は考慮が必要かもしれません。
Switchbot温湿度計も同様に優秀でしたが、49%RHのテストにおける計測値がAqara WSDCGQ11LMやTuya IH-K009と比べて低い結果となり、こちらも湿度領域に対する感度については考慮が必要かもしれません。


おまけ?ですがNature Remo 3も含めて一般室内環境下でテストした結果はこんな感じです。
Nature Remo 3はTuya IH-K009, Aqara WSDCGQ11LM, Switchbot温湿度計に対して10%近く高い値を示しました。

■レポート頻度をみてみる

ホームオートメーションで使うセンサー類は精度はもちろんですが、レポート頻度も結構重要な要素です。
例えば「温度が30℃以上になったら〇〇をする」というオートメーションを作成したとして、レポート間隔が長いと次のレポートまでトリガーされないのでタイムラグが大きくなります。
しかしレポート間隔が短ければ良いかというとレポートには通信が伴うためバッテリー消費を左右します。
そんなワケで各センサーのレポート頻度をみてみました。


Tuya WSD500A
温度は基本15分間隔でレポートしていますが、温度の変化が大きい時には臨時でレポートされその場合の間隔は5分になっているようです。

湿度は変化が大きい場合でも頑なに30分間隔でレポートされています。
グラフの一番下の青い線、一番湿度の低いグラフがWSD500Aです。


Tuya IH-K009
温度は常に5分間隔でレポートしています。

湿度は定期のレポートは30分間隔で、変化が大きい時は臨時でレポートされ変化が大きい状態が継続した場合の間隔は5分になっているようですが、かなり変化が大きくない限りは30分のようです。(紫色の線)


Aqara WSDCGQ11LM
温度、湿度ともに決まった間隔でレポートしているようにはみえません。(水色の線)
一定以上の変化があった時にレポートされているようにみえ、変化が大きい状態が継続した場合のレポート間隔は確認できた範囲では最短10秒でした。
レポート回数は3モデルの中で最も多くバッテリーは最小なので、バッテリー持ち的には不利かもしれません。
ただ、トリガーの条件を満たした際になるべく早く発動させたいオートメーションに使用するのであれば、今回の3つの中では最適なモデルといえます。


Switchbot温湿度計
あくまでもHome Assistant上でみた時の話ですが、温度、湿度ともに決まった間隔でレポートしているようにはみえませんでした。
変化が大きければ前のレポートから数秒後でもレポートしています。
ただ湿度は1℃単位の小数点無しなので基本的なレポート頻度は低いです。(グラフは省略)

■まとめ

今回比較した範囲では、Aqara WSDCGQ11LMの安定感が半端なく鉄板だと思いました。価格がちと高めですが予算が合えば買いですね。長期間使わないとわからないけどバッテリーが小さく持ちにやや不安がある点と、AqaraのデバイスZigbee規格に厳密に準拠してないらしいという噂なのがネックかなぁ。。。
Aqaraの人感センサーでは接続しているルーター(電球)の元電源をOFFにした時に別のルーターに自動接続してくれない煩わしさを何度も経験しており、温湿度計で同じ問題が起きるとなると床下や小屋裏に置いた場合は手動再接続が面倒すぎてネックになるかも。。。一方でAqaraのドア開閉センサーではその経験をしていないので、この温湿度計WSDCGQ11LMが接続しているルーターの元電源をOFFにした時にどうなるのかは今度検証してみます。


TuyaのIH-K009も精度的には十分使えるレベルでAqara WSDCGQ11LMの半額くらいで買えるのでコスパは高いと思います。


Switchbot温湿度計もTuya IH-K009と同等の精度でした。Bluetooth接続なのがややネックですがHome Assistantを動かしているラズパイ4とのBluetooth接続は1階と2階であっても安定していました。
Swichbotのシステムと連携するも良し、HomeAssistantで使うも良し、液晶ディスプレイで確認するも良しで、日本で買える安価な温湿度センサーとして万人におススメできる商品だと思いました。


あとは経日で変化しないかですよね。また1年後くらいにテストしてみたいと思います。
ってか数増えて来たら面倒すぎるから、1年毎にAqaraの新品に交換しとけってなるかもしれません(笑)
それでは。

Tuya WSD500A Tuya IH-K009 Aqara WSDCGQ11LM Switchbot温湿度計
温度精度仕様(℃) ±0.5 ±0.3 ±0.3 ±0.2
湿度精度仕様(%) ±3 ±3 ±3 ±2
バッテリー 単4型電池×2本 CR2450 CR2032 単4型電池×2本
温度レポート頻度 通常15分/変化大時5分 固定5分 変化に応じて可変最短10秒 変化に応じて可変
湿度レポート頻度 固定30分 通常30分/変化大時5分 変化に応じて可変最短10秒 変化に応じて可変
使用センサー Sensylink CHT8305(ネット情報) Sensirion SHT30-DIS-Fに似てる Sensirion SHT30(ネット情報) Sensirion SHTC3(ネット情報)
温度精度検証結果
湿度精度検証結果 ×
湿度個体差検証結果
購入時価格(円) 672 690 1380 1782

Home Assistant: 赤外線リモコン操作をトリガーにして照明のシーンを切り替える(1)

Sympapaです。


タイトルがなんだかわかりにくくなっておりますが、赤外線リモコンからHome Assistantのスクリプトやサービスを実行したり、Home Assistantと接続した赤外線リモコン「非対応」のデバイスを赤外線リモコンで操作できるようにするというのが今回のお話です。


家を建てる計画の進行中なんですが、新しい家ではHome Assistantを使ってLDKの照明をあらかじめ設定したシーンの中から選択できるようにする予定です。シーンはたくさんありすぎてもややこしいので6個~8個くらいを想定してます。


そこで考えているのがシーン選択をする時のUIです。
今も使っているUIのひとつ目は、壁に設置してあるHome Assistantダッシュボード用のタブレットです。
常時給電していて画面も常時オンなので、これに照明のシーンを呼び出すボタンを表示しておけばワンタッチで操作出来ます。
でもリビングでくつろいでいる時に立ち上がって設置してある場所まで行くのは億劫ですねぇ。


既に使っているUIのふたつ目はGoogle Homeでの音声認識によるシーンの呼び出しです。
しかし音声入力は入力にも時間がかかるし反映されるまでにも時間がかかるので、両手が塞がっている時や手が濡れている時など状況によって使いどころはありますがあまり好きではありません。


既に使っているUIの三つ目はリモートボタンです。壁などにくっつけて使ってます。
しかし6個~8個のシーンを割り当て出来るほど多ボタンでは無いし、壁にくっつけて使うのが前提のデザインなんですよね。


古いスマホをHome Assistantのダッシュボード用にしてリビングに置いておけば解決しそうですが、頻繁に充電しなくちゃいけない問題があります。


そうなると、やっぱりリビングにハンドヘルド型のリモコン(普通のテレビみたいなリモコン)を置いといて、それで照明のシーンを切替できたら便利そうだなという結論に至りました。


それならばと「Zigbee接続」のハンドヘルド型リモコンを探してみたのですが、ソレっぽい形状で多ボタンのものがみつかりません。
シーンが6個~8個となるとONとOFFを加えてボタンが10個くらいのものが欲しいところですが、Aliexpressで探す限りZigbee接続のハンドヘルド型となると6個が最大かなという感じです。こんなのとか。


考えた結果、赤外線リモコンを使うのが種類も豊富だし安価で良さそうという結論に至りました。
でもポン付けとかネットワーク経由で、赤外線リモコンの信号を受信してHome Assistantへ入力できるデバイスなんてものはなさそうです。
調べてみたところ、ESP32+赤外線受信モジュールでESP HOMEを使ってHome Assistantへ入力するのが面倒だけどまだ簡単そうですねぇ。
ESP32を触るのもESP HOMEを触るのも久しぶりだし設定で躓きそうな予感しかしませんが、やりますか。やりましょう。やってみましょう。

■いい感じの赤外線リモコンを探す

なかなか重い腰が上がらないので、まずはちょうど良さそうな赤外線リモコン探しから始めます(笑)
赤外線リモコンは種類は多いけど、TV用のとかゴチャゴチャしたのが多いので選択肢が結構限られるんですよねぇ。


シンプルな汎用タイプだと電子工作関係でこういうのならちょいちょい見かけますが、小さくて薄いのですぐに行方不明になって捜索する家族の姿が想像できます(笑)


Aliexpressで探しまくって、やっとこさちょうど良さそうなのがみつかったのでポチりました。
テレビのリモコンサイズでボタンが多すぎないシンプルなジジババ仕様の学習リモコン(笑)
ボタンの色使いが少々アレですが、"VOL"とかAV機器操作用マークみたいな表記がほとんど無いのはGOODです。
バックライトが付いているのも便利そうです。
でもかなり安っぽい気もする(実際安いけど)ので届いてみないと本当に使うかわかりません(笑)

ja.aliexpress.com


そうこうしている内に理想形と思われるこんなのも見つけました。SONYのHUISという赤外線スマート(?)リモコンです。
e-inkディスプレイに好きなレイアウトでボタンを配置できるIRリモコン。最大30台のリモコンをひとつにまとめることが出来、赤外線信号の学習はもちろんマクロ機能なども搭載しており、PCソフトを使ってリモコンをデザインすることも出来るそうです。
Wi-Fi接続も無くディスプレイもe-inkなのでバッテリーも1ヶ月くらい持つみたい。
2015年にソニーの新規事業創出プログラムでクラウドファンディングからスタートし2016年に一般発売されたもののようですが、2023年現在は生産中止となっていて後継機も販売されていません。「進化し続けるスマートリモコン」って書いてあるのに。。。(笑)
同じような商品が他にあっても良さそうですが、ググっても見つけられませんでした。
レビューを見ると評価がかなり分かれているのと、古いのでバッテリー持ちが心配なのと、サポートが打ち切られていてファームウェアすらダウンロードできないのと、ソニータイマーがインストールされていたという声も多く気に入ってしまったら代替デバイスも無いし路頭に迷いそうなのとで不安だらけですが、ガマン出来ずに中古でポチってしまいました(汗
軽く触った感じ結構良さげなので、今度レビューを書こうかなと思います。

www.sony.jp

■赤外線受信機を作る

◇用意したもの
➀赤外線受信モジュール
ESP32 IR receiverでググって出てきたこちらのページを参考にKY-022という赤外線受信モジュールを購入することにしました。
www.electroniclinic.com


3個で699円は高いなと思いつつ早く弄りたかったので、Amazon Primeで届くこいつを購入しました。Aliexpressだと5分の1くらいで買えそうですがまぁヨシとします。

amzn.asia


➁ESP32
実験用に使っているESP32を使います。前はもうちょい安かったんですが値上がりしてますねぇ。

amzn.asia

■回路

回路というかESP32とKY-022を繋いだだけです。
どのピンがどんな働きとか調べるのも面倒なのでこちらのページのまんま繋ぎました。

■ESP HOMEの設定

ESP HOMEはESP32を簡単にホームオートメーション向けのデバイスにしてくれるツール(?)です。
よーわかりませんが、ホームオートメーション向けの機能が色々用意されていて、設定を.yamlで書いてやればプログラムを生成してESP32に焼いてくれるって感じです。
Home Assistantとの親和性が高いのも、Home Assistant使いとしては高ポイントです。
ちなみに各所で簡単と紹介されていますのでそう書きましたが、私には簡単ではありません(笑)


しかしググっても、赤外線リモコンの信号を赤外線受信モジュールで受信しESP HOMEを介してHome Assistantを動かしている例があまりヒットしません。
良くわからんまま、とりあえず赤外線の受信がちゃんと出来るか確認するためにESP HOMEを以下のように設定しました。

# IR receiver
remote_receiver:
  pin:
    number: GPIO26
    inverted: True
  dump: all

そこに転がっていた照明のリモコン信号をESP HOMEのログを表示しながら読み込ませてみると無事にコードが表示されましたが。。。
同じボタンを繰り返し読み込ませると、毎回全く同じコードにはならず僅かな差が生じるようです。

コードをトリガーにすれば良いのだろうと思っていたのでこれは困りました。
回路周りの問題なのか?赤外線リモコンとは外乱を受けるのでこういうものなのか?果たしてこのバラツキにフィルタをかける方法があるのか???
乗っけから躓きました(汗)


そこで今度はパナのテレビのリモコンの電源ボタンを読み込ませてみました。すると。。。

このように表示されました。パナのリモコンだと認識されているようで"address"と"command"は何度ボタンを押しても安定しているようです。
どうやらライブラリにある信号の場合はこんな風に認識され、さきほどのバラツキもうまく処理されるみたいです。
ならば、ライブラリに登録されていて且つ一生買わないであろうメーカー&デバイスのリモコン信号を使えば、家にある家電の赤外線リモコンと被らずにHome Assistant用のトリガーとして使えるはず。


そんなワケでSONY HUISにプリセットされていた買わないであろう〇芝製のテレビ(※〇芝製の白物家電は好きです)の電源ボタンの信号を読み込ませてみると。。。

[remote.jvc:049]:[remote.lg:054][remote.nec:070][remote.pioneer:149]と4つも表示されてまたワケがわからなくなりました(汗)
まぁしかし再現性は高いようなのでとりあえず"nec"の"address"と"command"をトリガーにして、〇芝製テレビのリモコン信号のチャンネルボタン1~3の信号を受信した時に、Home Assistant側で照明の明るさと色温度を切替するオートメーションを発動するようにしてみました。


ESP Home側では受信した赤外線信号が"nec"で"address"と"command"が指定したもの(チャンネルボタン1~3)と一致した時に"ON"になるbinary_sensorを作ります。
【ESP Home側の.yaml

# IR receiver
remote_receiver:
  pin:
    number: GPIO26
    inverted: True
  dump: all

binary_sensor:
  - platform: remote_receiver
    name: "IR-1_button_1"
    nec:
      address: 0xBF40
      command: 0xFE01
    filters:
      - delayed_off: 200ms
  - platform: remote_receiver
    name: "IR-1_button_2"
    nec:
      address: 0xBF40
      command: 0xFD02
    filters:
      - delayed_off: 200ms
  - platform: remote_receiver
    name: "IR-1_button_3"
    nec:
      address: 0xBF40
      command: 0xFC03
    filters:
      - delayed_off: 200ms


そうするとHome Assistant側ではESP Home側で作った"binary_sensor"が見えるので、この"binary_sensor"の変化に応じて照明の明るさと色温度を変更するオートメーションを作成しました。チャンネル1,2,3ボタンそれぞれに、異なる明るさと色温度を割り当てます。
【Home Assistatのオートメーションの.yaml

alias: ir_remote_from_esphome
description: ""
trigger:
  - platform: state
    entity_id:
      - binary_sensor.IR-1_button-1
      - binary_sensor.IR-1_button-2
      - binary_sensor.IR-1_button-3
condition: []
action:
  - choose:
      - conditions:
          - condition: state
            entity_id: binary_sensor.IR-1_button-1
            state: "on"
        sequence:
          - service: light.turn_on
            data:
              transition: 2
              brightness_pct: 100
              kelvin: 6500
            target:
              entity_id: light.ledvance_classic_tunable_white_l
      - conditions:
          - condition: state
            entity_id: binary_sensor.IR-1_button-2
            state: "on"
        sequence:
          - service: light.turn_on
            data:
              transition: 2
              kelvin: 3500
              brightness_pct: 50
            target:
              entity_id: light.ledvance_classic_tunable_white_l
      - conditions:
          - condition: state
            entity_id: binary_sensor.IR-1_button-3
            state: "on"
        sequence:
          - service: light.turn_on
            data:
              transition: 2
              kelvin: 2700
              brightness_pct: 20
            target:
              entity_id: light.ledvance_classic_tunable_white_l
mode: single

■まとめ

これで、赤外線リモコンを使って、Home Assistatで照明の明るさや色温度を切り替えることが出来るようになりました。
赤外線リモコンを受信してHome Assistantへ入力できるようになったので、例えばHome Assistantから電源状態の取得が出来ない機器を赤外線リモコンで電源オンオフした時にHome Assistantに電源状態を同期したりとか、赤外線リモコンでテレビをオンにした時に他のデバイスもオンにするとか、色々使い道がありそうです。

それでは。たぶんつづく。