Think threshold

中の人のIYHにいたる顛末と購入レビュー。ときどき自宅システム構築備忘録。

自宅のさらなるスマート化を推し進めるために。その3(Home assistantとNature Remoのインテグレーション)

記事の出す順番を考えていたらこんな時期になってしまって書く書く詐欺になってしまった。

 

相変わらず自宅で音声コントロール中心で大活躍しているNature Remo。

今後は自作機器からMQTTを利用した連携、StreamDeckからの手元コントロールのためにHome AssistantとNature Remoを連携させました。

 

●これまでのあらすじ

amazonセールでついうっかり買ってしまった自宅の家電を音声経由でコントロールすべく、自宅に導入したNature Remo mini。

makoro.hatenablog.jp

 

メインマシンで利用しているStream Deckを家電コントロールとして利用するため、Home Assistantをその後自宅で導入しました。

makoro.hatenablog.jp

しかしこのHome Assistant、デフォルトではNature Remoに非対応のため、今回は手動インテグレーションを行いました。

 

GitHubにある有志の方が作成したものをありがたく利用させてもらう

先人には頭が上がりません。GitHubに有志の方が作成したNature Remoのインテグレーションがあります。

github.com

 

このリポジトリをフォークしてライトの制御(Home Assistant的に言うとLightエンティティ)に対応したものが作られています。

github.com

 

また、同じくフォークしてNature Remoの温度センサの読み出しに対応(Sensorエンティティ)に対応したのがこちらです。

github.com

 

Light対応のものはPRがフォーク元に送られているようですが、リポジトリ更新が止まっている状況でした。

 

今回は下記2つを手元で統合し、Light+Sensor対応とした状態で利用します。

 

 

●両対応するためにdiffを取りながら統合する

基本的にはGithubのReadme通りの作業をベースに行います。

・事前作業:アドオンストアより”File Editor”アドオンを導入

アドオンストアよりFile Editorを導入します。基本的にはインストールをクリックするだけです。(上記のスクリーンショットはすでに導入後のため、インストールボタンではなく停止/再起動ボタンに変化しています)

 

・まずはファイルをHAOS上へ展開

GitHubリポジトリよりインテグレーションに必要なファイルをダウンロード、

config/custom_components/

配下に「nature_remo」フォルダを作成、ReadMeどおりのファイルを配置・・・するのですが、

 

・両方のリポジトリの同名ファイルをdiffを取り、両方の変更内容をマージ(_init_.py、manifest.json、sensor.py)

・Lightエンティティをサポートする方にのみ存在する「light.py」「services.yaml」はそのままコピーして配置

・内容が同一のものはどちらかのものを配置(climate.py)

・configuraation.yamlにNature RemoのAPIアクセストークンを記述

nature_remo:
  access_token: <TOKEN>

アクセストークンはここで取得

 

の対応を行います。ここまで対応を行って、HAOSそのものを再起動します。

そのままconfigration.yamlのconfigチェックを行うとエラーが出るのですが、チェックをせず再起動するとちゃんと使えるようになります。

ここでハマりました。

 

・我が家のシーリングライトに対応させる

上記ファイルの配置が終わったあと、同じくFile Editorにてlight.pyを編集します。

そのままでは日立製のシーリングライトをToggleスイッチに出来なかったため、

    async def async_turn_off(self, **kwargs):
        """Turn device off."""
        await self._post({"button": "onoff"})
        self._set_on(False)

上記赤文字部分を

    async def async_turn_off(self, **kwargs):
        """Turn device off."""
        await self._post({"button": "off"})
        self._set_on(False)

のように変更します。(onoff→off)

 

●HAOS上で利用できるかを確認

上記まで行えると、HAOSののエンティティとしてNature Remoが制御している各デバイスが見えるようになってきていると思います。

 

この状態までくれば、後はダッシュボードやStream Deck上で設定するだけ。

ダッシュボード上ではNature Remoの温度センサはエアコンのエンティティの一部として、

照明は個別のカード(Lightエンティティ)として設定可能です。

また、Home Assistantプラグインを導入したStream Deckでもボタンに割り当てることが可能です。

●照明の場合

・Domain:Light

・Entitiy:HAOS上で表示されているエンティティを選択

・Service:Toggle

 

●温度センサの値を表示したい場合

・Domain:sensor

・Entitiy:HAOS上で表示されているエンティティを選択

 

これで手元のメインマシンに接続したStream Deckから、寝室・ダイニング・リビングの照明が全てコントロールできるようになりました。

 

●おまけ:この数ヶ月で進化していた新しいNature Remoインテグレーションを試す

この記事を書いている最中に別の人がForkしたインテグレーションを発見しました。

github.com

テストで使ってみましたが(HAOS8.1)、温度センサー回りがうまく動作しなかったためもとに戻しました。

 

特に困ってないので、現状維持することにしました。。。

 

Home Assistant公式インテグレーションになって欲しいですが、グローバルで販売してるものでもないし難しそうかなぁ。