記事の出す順番を考えていたらこんな時期になってしまって書く書く詐欺になってしまった。
相変わらず自宅で音声コントロール中心で大活躍しているNature Remo。
今後は自作機器からMQTTを利用した連携、StreamDeckからの手元コントロールのためにHome AssistantとNature Remoを連携させました。
- ●これまでのあらすじ
- ●GitHubにある有志の方が作成したものをありがたく利用させてもらう
- ●両対応するためにdiffを取りながら統合する
- ●HAOS上で利用できるかを確認
- ●おまけ:この数ヶ月で進化していた新しいNature Remoインテグレーションを試す
●これまでのあらすじ
amazonセールでついうっかり買ってしまった自宅の家電を音声経由でコントロールすべく、自宅に導入したNature Remo mini。
メインマシンで利用しているStream Deckを家電コントロールとして利用するため、Home Assistantをその後自宅で導入しました。
しかしこのHome Assistant、デフォルトではNature Remoに非対応のため、今回は手動インテグレーションを行いました。
●GitHubにある有志の方が作成したものをありがたく利用させてもらう
先人には頭が上がりません。GitHubに有志の方が作成したNature Remoのインテグレーションがあります。
このリポジトリをフォークしてライトの制御(Home Assistant的に言うとLightエンティティ)に対応したものが作られています。
また、同じくフォークしてNature Remoの温度センサの読み出しに対応(Sensorエンティティ)に対応したのがこちらです。
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したインテグレーションを発見しました。
テストで使ってみましたが(HAOS8.1)、温度センサー回りがうまく動作しなかったためもとに戻しました。
特に困ってないので、現状維持することにしました。。。
Home Assistant公式インテグレーションになって欲しいですが、グローバルで販売してるものでもないし難しそうかなぁ。