Sympapaのスマートホーム日記

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

初心者がHome AssistantからNature RemoのIRリモコンを動かす

f:id:sympapa:20210812104541p:plain
こんにちは。
Home Assistant初心者のSympapaです。
Home Assistantは初期設定さえ済ませてしまえばかなり多くのデバイスやサービスに対応しているので、大半のデバイスではコードを書かずに使えてコード素人の私はホッとしています。
下のリンクで対応しているデバイスやサービスが確認できます。
www.home-assistant.io

f:id:sympapa:20210814065958j:plain
しかし日本のガラパゴススマートIRリモコン"Nature Remo"には対応していません。
ただNature RemoはクラウドAPIにもローカルAPIにも対応しているのでコードが書ける人にとってはHome Assistantとの連携は難しくないはず。
コードなんてさっぱりわからない私ですが我が家ではNature Remo(第2世代)、Nature Remo mini(初代)、Nature Remo 3のが3台活躍しているのでこれを連携させないわけにはいきません。

そんなわけで某掲示板で教えていただいたりしてなんとなくちょっとだけわかって来たので、備忘録ともし同じような人が居た時の参考になればということで書いていきたいと思います。

ローカルAPIの方がアクションの発動が速くなるので基本的にHome AssistantからNature Remoを操作するならローカルAPIを使うことになると思いますが、リモコンのボタン全部をひとつひとつをローカルAPIで使えるようにするのは死ねるのでクラウドAPIの使い方も覚えておいた方が良さそうです。

今回はローカルAPIを使ってHome Assistantから赤外線コードを送る方法を書いていこうと思います。

1.赤外線コードの取得
取得できるのはそのNature Remoが最後に受信した赤外線信号のコードですので、受信から取得するまでの間に余計な信号を受信しないよう注意が必要です。
1)リモコンをNature Remoに向けて赤外線コードを取得したいボタンを押す。
2)PCを使ってコードを取得する。
下のコマンドを叩きます。IPアドレスはNature Remoのものです。
私はWindows 10のPCでコマンドラインから取得しています。

curl  "http://192.168.x.x/messages" -H "X-Requested-With: curl  " -v

すると下のような結果が出てきますので、そいつがさっきNature Remoへ向けて発射した赤外線のコードです。

{"format":"us","freq":38,"data":[3117,...,336]}

本題からは逸れますが、Remo mini(初代)は「赤外線が届く距離が短い!」という低評価を良くみかけます。
我が家では最初半年間くらいキッチンでRemo mini(初代)を使っていて「すげー飛ぶのに個体差かな?」と思っていましたが、Remo mini(初代)をリビングへ移したところ"リビングの照明をOFFにする信号だけ"が極端にRemo mini(初代)を照明に近づけないと届かない現象が起きました。しかもRemo mini(初代)で赤外線信号を学習させるよりもRemo(第2世代)で学習してRemo mini(初代)で使えるように移した方がマシになるという謎。
コードを取得すると同じリモコンの同じボタンでもRemo mini(初代)とRemo(第2世代)で結構異なっていたりしました。
というわけでもう”赤外線が届く距離が2倍であることをウリにした"後継機が発売されていて基本的に新品は買えませんが、フリマ的なところなどでRemo mini(初代)の購入を検討されている方や既に使用されている方は気をつけた方が良いと思います。

2.赤外線信号をHome Assistantから送る
configuration.yamlに下の例のような記述をすることでNature remoから照明をオンオフできるようになります。"rest_command"の"payload:"のところにさっき取得したコードを入れます。
なんだか面倒ですが、グローバルに販売されているデバイスだと大半はいちいちこんなことをしなくてもHome Assistantの"インテグレーション"(統合)を使って一発登録できます。
IPアドレスは赤外線信号を発信するNature Remoのアドレスです。

input_boolean:
  light_kitchen:
    name: light_kitchen

light:
  - platform: template
    lights:
      light_kitchen:
        value_template: "{{ states('input_boolean.light_kitchen') }}"
        turn_on:
          - service: input_boolean.turn_on
            entity_id: input_boolean.light_kitchen
          - service: rest_command.light_kitchen_on
        turn_off:
          - service: input_boolean.turn_off
            entity_id: input_boolean.light_kitchen
          - service: rest_command.light_kitchen_off

rest_command:
  light_kitchen_on:
    url: 'http://192.168.x.x/messages'
    method: POST
    headers:
      Accept: 'application/json'
      Content-Type: 'application/json'
      X-Requested-With: 'curl'
      Expect: ''
    payload: '{"format":"us","freq":38,"data":[3117,...,336]}'

一番下の”rest_command:”を使ってコマンドを送信でき、これだけでも自動化などから呼び出して使うことが出来ます。
真ん中の"light:"はデバイスクラスが照明である(照明にしたい)デバイスの構成を追記すると照明として取り扱われます。
ここにオンオフする”rest_command.light_kitchen_on(off)”を書いてやることでちゃんと照明であることを認識された状態でオンオフできるようになるようです。
例えば自動化する時に"照明オン"のサービスの対象として、ここで登録した照明が選択できるようになります。
そして驚いたのはGoogle HomeやAlexaからもちゃんと"照明"デバイスとして認識されることです。
Google Homeの場合は複数部屋にGoogle Home(Nest)があっても「OK Google! 電気を点けて!」だけで部屋を区別してONにしてくれる機能も使えます。
一番上の"input_boolean:"は公式ページの説明(Google先生訳)によると「ユーザーインターフェイスを介して制御でき自動化の条件下で使用できるブール値を定義できます。 これは、例えば特定の自動化を条件で使用することにより、それらを無効または有効にするために使用できます。」とのことです。
今回のケースだと単純に信号を送るのではなく状態を記憶させたい場合は必要みたいです。

といった感じで初心者的観点でぼちぼちとHome Assistantで出来ることとか苦労した点の解決手順、買ってみるまで判らない各デバイスのレビューや挙動、これは便利だ!という自動化の紹介などを時系列は無視で書いていきたいと思いますので、スマートホームバイスに興味のある方はまたお立ち寄りください。
次回は初心者がHome AssistantでZigbeeバイスを接続するネタにしようかなと思います。わからんけど(汗
ではまた。

スマートホームにハマってます:ド素人のHome Assistant導入

はじめまして、sympapaです。

ガジェット好きなのですが最近スマートホーム化にハマり"Home Assistant”を導入してどっぷり浸かっています。

大人の自由研究です(笑)

 

私の中のスマートホームブーム第一期は1年ほど前、2020年の夏に訪れました。

しかしその時とその後に以下のものを導入したくらいで本格的な自動化までは考えてませんでした。廊下や階段の照明は人感センサー付の電球に替えてましたが...

-スマートスピーカー: Google Home mini (Google Nest mini) 3台

-スマートIRリモコン: Nature Remo 2, Nature Remo mini(初代), Nature Remo 3

-スマートプラグ: TP-Link HS105

-スマートロック: Qrio lock

 

しかし今年2021年6月のamazonプライムデーでSwitchbotのミニハブ、指ボット、人感センサー、カメラのセットが安くなっていたのでついつい買ってしまい、これがきっかけで私の中の第二期スマートホームブームがやって来ることになりました。

Swichbotの人感センサーで色々自動化してみたところ楽しかったんです。

しかしSwitchbotのシステムは反応がもっさり。人感センサーで照明を点けるのも2~3秒かかるので自動化しても快適とは言えません。

 

もっと快適にできるシステムを構築したいと思って色々調べたのですが、日本で普通に買えるスマートホームバイスのメーカーでトリガー側のセンサー類を豊富に取り揃えていて出力側のデバイスも幅広く統合できるメーカーは現状ありません。

Swichbotが一番センサー類が揃っているかな?

 

そんなわけで、これからセンサーを使ったスマートホーム化を導入しようという方は、下記の2つの選択肢を検討してみることをおススメします。

-Xiaomi, Aqara, Tuyaあたりの有名(?)な中国のスマートホームバイスメーカーのシステムを導入する

-Rasberry PIなどにHome AssistantまたはHome Kit+Home Bridgeを導入しセンサー類はZigbee規格のもので揃える

 

どっちも基本的にAliexpressあたりで買うことになるので送料無料のstandard shippingだと届くのに2週間くらいかかります。でも昔と違って現在はほぼ2週間で到着しますね。忘れた頃にやって来るという感じではありません(笑)

価格は日本で買える似たようなデバイスの半額から1/3くらいで、例えば人感センサーだと日本で普通に買えるスマートホームバイスメーカーのものは4000~5000円しますが中華通販で中国メーカーのものを買うと1500円前後で買えます。

 

前者のXiaomi, Aqara, Tuyaといった中国メーカーのシステムを導入するのは簡単でしかも安価で済みます。しかし(たぶん)海外にあるサーバー経由なのでレスポンスや安定性がどうかなと思ったのと、自動化にAND/OR/NOTといった条件を何ステップも組み込むような細かい設定が出来ないので後者を選択することにしました。

 

後者はGoogle HomeやAlexaとの連携以外ならシステムのほとんどをローカルネットワーク内で構築できるのでレスポンスが早いしサーバーの調子に左右されません。もちろんシステム自体の調子には左右されますが。

ということでiOS使いならHome Kit+Home Bridgeということらしいですが、Android派なのでHome Assistantを導入することに...

f:id:sympapa:20210812104541p:plain

イメージを直球で表現したHome Assistantのロゴ(笑)

Home Assistantはちょっとしたコードを書かないと使えません。

ラズベリーパイも使ったことが無いしコードなんてチンプンカンプンな私ですが勢いでラズベリーパイを購入(^^;

センサーなどのZigbeeバイスとHome Assistantを接続するためのUSB Zigbeeドングル"NORTEK HUSBZB-1"をUSのAmazonから購入しました。

現在、下記のような構成でスマートホームシステムが稼働しています。

 

-統合システム: Home Assistant(Raspberry Pi 4 モデル B 4GB)

-Zigbeeドングル: NORTEK HUSBZB-1 (ZHAで運用)

-人感センサー: Hue motion sensor(PLH06MS) 2個, Aqura motion sensor(RTCGQ11LM) 4個

-ドアセンサー: Aqura door sensor(MCCGQ11LM) 2個

-物理ボタンスイッチ: Hue Dimmer switch(PLH05DM) 2個, Aqara OPPLE switch 6button(WXCJKG13LM) 2個

-スマートスピーカー: Google Home mini (Google Nest mini) 3台 + Amazon Echo dot

-スマートIRリモコン: Nature Remo 2, Nature Remo mini(初代), Nature Remo 3

 →Nature Remoからシーリング照明、エアコン、テレビ、扇風機などを操作

-スマートプラグ: TP-Link HS105

-HueのLED電球 3個

-YeelightカラーLED電球(YLDP13YL) 2個

-スマートロック: Qrio lock

 

Home Assistantの導入自体は面倒ながらブログなどで手順を紹介されている日本人の方がいらっしゃったのでそこはその通りにやるだけでうまくいきました。

しかしどうしても外部との通信構築のためにDuck DNSの設定をすると再起動をかけた時に起動しなくなりつまづきました。ググるとネットワークの問題のようで現在は5USドルのサブスク"Home Assistant cloud"を使っています。

タダで使いたいですけどねぇ(^^;

そのうち落ち着いたら再トライしたいと思います。

 

他で苦労したのは下記の点でしょうか...

-Home Assistantでは多くのメーカーのデバイスと簡単に接続できるようになっているが、日本でしか売っていないNature Remoは対応しておらず初めてAPIなるものを使ったり初めてコードを書いたりしたが調べても情報が僅か

-Qrio lockはAPIが無いためAlexa経由で動かすことにしたが、Home AssistantからAlexaへトリガーを送る方法が標準では用意されていなかった

 

そんなわけでこれからぼちぼちとHome Assistantで出来ることとか苦労した点の解決手順、買ってみるまで判らない各デバイスのレビューや挙動、これは便利だ!という自動化の紹介などを備忘録も兼ねて時系列は無視で書いていきたいと思います。

あ、スマートホーム以外も書きますが、当面はスマートホームネタになると思います(^^;