家中のエアコンのWiFi化を進めています。先日は東芝のエントリーモデルのエアコンRAS2558VをWiFi化しました。
いつものように、IRremoteESP8266 ですぐできると思ったのですが、IRremoteESP8266 が東芝エアコンのリモコンのIR信号を認識しません。
調べていくと、kToshibaAcMinGap で指定している値が大きすぎることに気付きました。この値を調整することで、正常に認識できるようになります、
Issue を立てました。
開発者の crankyoldgit はすぐに対応してくれました。素晴らしい!
他にも気になるところがあったので、次の Issue も立てましたが、全て解決してくれました。素晴らしい!
おかげで、いつもの通りHA端子ブリッジを備えた、IRコントローラを作成して、無事に Tasmota 経由で HomeAssistant からコントロールできるようになりました。
Tasmotaの設定は、いつもの通り -> 2021-02-11
先日の Mitsubishi エアコンに引き続き、古めの Panasonic (ナショナル) エアコン CS-X288A2 も WiFi 化して、HomeAssistant でコントロールできるようになった。
あまりに古くて、Panasonic のサイトにも、据付工事説明書がなかったので、メイン基板までアクセスできるか不安だったが、なんとか到達。
フロントパネルを外すと、右側のカバーが外すことができ、すぐにアクセスできた。
こんな感じに制作。ソケットは ESP8266 のモジュール用
そして、インストール。圧電ブザーの上が HA 端子。
赤外線レシーバーとトランスミッターは、こんな感じに配置。
無事に稼働しました。
高校の時に取った電気工事士(現在の第二種電気工事士)の免許。ずっとペーパーだったが、取っててよかった。
Tasmota で HA 端子と連携するには、すこし設定が必要なので、未来の自分のための健忘録。
ESPHome は、YAML で設定していくので、割と直感的に設定できるし設定ファイルを見れば後で再利用も簡単。
しかし、Tasmota はコマンド発行で設定を変えていく。設定一覧が見たいけど現状で、その方法が分からない。
今回は、HA 端子との連携なので、スイッチとバイナリーセンサーの組み合わせ。
ブリッジは自作したもの。フォトカプラー2個と1kΩ抵抗3個、200Ω抵抗1個のだけの簡単回路。200Ω抵抗は、ESP側のLEDをドライブするところ。
Tasumota では、スイッチを Relay、バイナリーセンサーを Switch として構成。
そして、オプション設定。Relay1, Switch2 の前提。
こんなとこかな。
Backlog で一括設定する場合は
Backlog SwitchMode1 13; PulseTime1 3; SwitchMode2 2; SetOption114 1; PowerOnState 0; TelePeriod 60; SetOption56 1; Timezone +9;
三菱エアコンは、esphome-mitsubishiheatpump により CN105 ポートを利用して、シリアル通信によるコントロールが可能で、私も2種類の三菱エアコン MSZ-GV2519 と MSZ-GE2520 に取り付けて、問題無くコントロールしいる。
昨年の11月頃に新たに、MLZ-RX5017 を設置したので、また同じように組み込みましたが、通信規格が違うのか全く動かすことができませんでした。
そこで、SmartIR を利用して、赤外線リモコン RS-WFIREX4 経由でコントロールしていた。しかし、少し問題が・・・。
運転自体の ON/OFF は、HA端子から信号を取って反映できていたが、付属のリモコンで温度を変えたり運転モードを変えたりした時に、HomeAssistant 側でその変更を感知することができない問題があった。
そこで、今度は Tasmota の IRremoteESP8266 を利用して、付属のリモコンで操作したときのIR信号を受け取り、HomeAssistant にフィードバックするすることにした。
HomeAssistant とのブリッジは、Tasmota-IRHVAC を今回のこともあり色々拡張した nao-pon/Tasmota-IRHVAC を使用。
実際に使ってみると、概ねうまく行ったものの、少し不備な点が・・・
ここまで、順調に進んできたがちょっと大きめの問題が・・・。
週間タイマーを利用するには、IR データ送信時に、現在時刻と曜日の情報を送信する必要があるようだ。
現在時刻は Clock として、IRremoteESP8266 側では実装されているが、Tasmota 側では利用していない。これは大きな問題ではないが、曜日の情報は全く定義されていないので、新たに定義する必要があり、他のメーカーのエアコンには必要ないかも知れないので、取り入れるにはハードルが高そうだ。
ということで、独自ビルドでお茶を濁すことにした。一度ファームが固定されれば、そうそう書き換えることもないだろう。
それがこれ。
ついでに、三菱エアコンは Beep が使われていないので、それに WeeklyTimer を割り当てることで、動的にコントロールできるようにした。
これで、付属リモコンと全く同じ IR 信号を送られることを確認したので、多分問題ないなかろう。
また、自作したシステムには CCS811 を使った二酸化炭素濃度センサーもつけてあるので、user_config_override.h でビルドオプションを変更し I2C の CCS811 コンポーネントを有効にして、サイズ削減のために他の I2C コンポーネントは無効にした。
ラトックシステムのスマート家電リモコン RS-WFIREX4 を以前は使っていたけど、最近は HomeAssistant ですべてコントロールするようになり、それに対応していない RS-WFIREX4 は、ほとんど利用していなかった。
そんな折、ネットでとあるブログを見つけた。素晴らしい!
これはいい!ということで、早速カスタムコンポーネントにしてみた。
使い方は簡単。
1 2 3 4 5 6 7 8 |
|
これで、こんな感じ。
リモートコマンドの学習もできるようにした。これは、Broadlink 統合の Remote と同じように、サービスから呼び出して学習すると .storage/rs_wfirex4_codes に JSON で保存される。
保存したコマンドは、オートメーションやスクリプトから登録したコマンド名で呼び出せる。
あとボーナスとして、SmartIR カスタムコンポーネントの元データとしても使える。
"supportedController": "Broadlink", "commandsEncoding": "Hex",
でデータ作ればOK。これでエアコンのコントロールも可能になる。
風量・風向自動のみだけだけど、とりあえず作ったデータがこれ。
除湿は、16〜27℃までが強除湿、27.5〜28.5℃が標準、29℃以上が弱除湿にしてみた。