ESPHomeとは
ESPHomeは、ESP8266/ESP32向け(最近RP2040にも対応したみたい)のHomeAssistantから使うととっても便利なフレームワークです。基本はHome AssistantにESPHomeのアドオン入れてそこからゴニョゴニョになると思われます。
個人的に便利だと思ったのは
- Home Assistantから設定→ビルド→書き込みまでできる
(一応スタンドアロン環境もあるっぽいけどスルー) - 初回はシリアルで書く必要があるけど、以降はOTA可能
(デバイス名は慎重に決めないと、変更するとなったらシリアルで書き直しだよ) - 対応する周辺デバイスの多さ
I2CやSPI、UART等の外部I/Fやそれにぶら下げられるデバイスがかなり充実してる。
挙げ句の果てには赤外リモコンの送受信までできる。
こういうのっていろいろと妄想夢膨らむよね(笑) - 対応するマイコンボードの多さ
こっちは周辺ではなく、マイコンボード方面。
ESP8266系やESP32系の開発ボードは当然として、同マイコンを使用しているSONOFFのスマートスイッチなどまで対象(当然ファームは書き換えなので元には戻せないと思った方がいい)
注意点は以下の通り
- 設定は基本YAMLで記述なので文法くらいは理解してないと辛い(ヲレ?まだまだです
- かゆいところに手が届かなかった場合、C++の知識が必要(カスタムコンポーネント作るとなるとね・・・
さぁ、ESPHomeと格闘するよ
まずは開発機として使っていたユニバで組んだやつがあるのでまずそれをセットアップする。これなら赤外の送受信(現在実運用している基板は受信オミットしたので)が載ってるし、I2C引き出すのも何とでもなるからね。
その結果で新しい基板の設計変わるし(時系列的には開発機で格闘→基板設計なので)
セットアップについてはHome Assistantからするとして詳細はとりあえず割愛。
探せば記事が見つかると思うので。
設定&受信のテスト
セットアップ後にYAMLに次の記述をすれば、赤外の送受信機能の下地は完成
remote_transmitter:
pin: 12
carrier_duty_percent: 50%
remote_receiver:
id: ircv_test
pin:
number: 14
inverted: True
dump:
- raw
- aeha
- nec
- sonyいずれもpinは実際に接続してるpinの番号(Dxxのxx部)を指定すること
ウチで使ってる受信モジュールは負論理なのでinvertedも必須
ちなみにAEHA(家電協)フォーマットは最近追加されたようです(感謝!)
ログを出しっぱなしにしてから受光部に向かってリモコンから信号飛ばせばこんな感じでログが出力されます。(ONKYOのリモコンで電源ボタンを押した場合)
[16:56:30][D][remote.nec:070]: Received NEC: address=0x04D2, command=0x34CB受信のテストはこれでOK
送信のテスト
送信については、まずは書斎(作業部屋)のエアコンで試す事にする。
このエアコン、東芝のなんだけどフォーマットがよくわかんない(少なくとも家電協ではない)
なので、RAWでぶん投げる事にする。
YAMLへの記述はこんな感じ
button:
- platform: template
name: "Test AC On"
on_press:
remote_transmitter.transmit_raw:
carrier_frequency: 38000
code: [ 9047, -4419, 658, ... ]
- platform: template
name: "Test AC Off"
on_press:
remote_transmitter.transmit_raw:
carrier_frequency: 38000
code: [ 9051, -4411, 633, ... ]それぞれcode:の部分はリモコンから実際に読み込んだONとOFF時のデータを記述する。
(IRKit/minIRumのRAWデータとはフォーマット違うので注意)
carrier_frequencyはキャリアの周波数で、基本は38000(38kHz)を設定する。
RAWの場合は必須(デフォルト0Hzはあんまりだろ)、てかRAWでしか使えないパラメータ。
NECフォーマットでも使えればそれこそ古いオーデリックの照明(なぜかキャリア33kHz)に対応するのラクなのに・・・まぁ、ON/OFF/常夜灯しか使わないいので全部RAW吸ったところで大した事ないけど
これでビルドするとHome Assistantにエンティティが追加されるので実行してエアコンが反応するかを確認する。動けばIRの送受信ハードはとりあえずOK
その4に続く