ESP Easy)MQTTコントローラ設定
MQTTを導入するESP Easyは以前、INA219電圧電流センサとリレーで製作したスマートUSBスイッチです。
設定済みのINA219センサの計測値をPublish、リレーに繋がるGPIOをSubscribeで制御できるようにします。
ブラウザでESP EasyのWebUIの Controller タブを開き、新しいコントローラを追加します。
Protocol で Home Assistant (openHAB) MQTT を選ぶと、設定フォームが現れるので、先ずはHome AssistantのIPアドレスを Controller IP 欄に入力。
続く Credentials 項では、先ほどHome Assistantに作成したMQTTクライアントユーザ情報をそのまま入力。
Controller Client ID 欄は、ユニット番号まで含んでいたのを見直して、少し短めに。
|
1 2 |
変更前) %sysname%_%unit% 変更後) %sysname% |
設定で一番大切なPublish/Subscribeそれぞれのトピック定義は、Home Assistant公式ページに次のようなアドバイスがありました。
|
1 2 3 4 5 6 |
変更前) Controller Subscribe: %sysname%/# Controller Publish: %sysname%/%tskname%/%valname% アドバイス) Controller Subscribe: home/%sysname%/# Controller Publish: home/%sysname%/%tskname%/%valname% |
実際に試してみると、Publishはこの通りにすることで、Home Assistant側でデータを受け取れるものの、Subscribeはダメでこちらはデフォルトのままで制御できました。
|
1 2 3 4 |
変更前) Controller Publish: %sysname%/%tskname%/%valname% 変更後) Controller Publish: home/%sysname%/%tskname%/%valname% |
最後に Enabled にチェックを入れ、 Submit 押下して適用し、コントローラ一覧にて割り振られた Nr 番号を、心に留めておきます。
MQTT Brokerとの接続状況は、 Main ページで確認することができます。
ESP Easy)デバイスにMQTTコントローラを紐付け
続いて Devices ページに移り、MQTTと連携させたいデバイス(INA219とリレーGPIO)の各設定ページ下方にある、 Data Aquisition 項にMQTTのコントローラにチェックを入れて紐付け、 Interval を0より大きな数字にしておきます。
MQTTのトピックに使うパラメータは、このデバイス一覧ページで次のように確認することができます。
Home Assistant)MQTT統合エントリ設定ページで疎通確認
ESP Easy側の設定を終えたらHome Assistantに戻り、MQTT統合エントリの設定ページで、Publish受信、Subscribe制御コマンド送信を試します。
先ずはESP EasyからPublishされたINA219センサの計測電圧値をリッスン。
次に、ESP EasyがSubscribeしているリレー制御のGPIO3の状態を、パブリッシュで制御。
ここでトリッキーなのは、GPIOの状態がそのままでは取得できないということ。そこで上述の図17のように当該GPIOピンをSwitchデバイスとして登録し、その状態をStateで参照できるようにしています。
そしてもう一つ、疎通確認時に地味にハマったのが、トピックは大文字小文字を区別しているということでした。
Home Assistant)configuration.yamlへエンティティを追加
疎通が確認されても他のデバイスと異なり、ESP Easyはディスカバリで自動登録されたりしないので、設定ファイル configuration.yaml へ手作業で記述する必要があります。
Home Assistant構築時に導入したアドオンでconfiguration.yamlを開き、先ほど疎通確認したESP Easyに加えもう1機、BME280環境センサで温度湿度気圧を計測している個体も併せて記述しています。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
mqtt: sensor: # ESP01EasyA2 USB SWITCH W/ INA219 - name: "INA219_Voltage" state_topic: 'home/ESP01EasyA2/INA219/Voltage' unit_of_measurement: "V" - name: "INA219_Current" state_topic: 'home/ESP01EasyA2/INA219/Current' unit_of_measurement: "A" - name: "INA219_Power" state_topic: 'home/ESP01EasyA2/INA219/Power' unit_of_measurement: "W" # ESPEasy06 BME280 Barometric Sensor - name: "ESPeasy06_Temp" state_topic: 'home/ESPeasy06/BME280/Temp' unit_of_measurement: "C" - name: "ESPeasy06_Humid" state_topic: 'home/ESPeasy06/BME280/Humid' unit_of_measurement: "%" - name: "ESPeasy06_Press" state_topic: 'home/ESPeasy06/BME280/Press' unit_of_measurement: "hPa" switch: # ESP01EasyA2 USB SWITCH W/ INA219 - name: "INA219_Relay" command_topic: 'ESP01EasyA2/cmd' state_topic: "home/ESP01EasyA2/RelayNC/State" payload_on: GPIO,3,0 payload_off: GPIO,3,1 |
編集を保存後、右上の歯車アイコンからHome Assistantを再起動、もしくは 開発ツール より YAML設定の再読込 して適用。
再起動後にエンティティを検索すると、登録した項目を見つけることができます。
Home Assistant)ダッシュボードへの表示
登録されたエンティティをダッシュボードへいくつか登録してみます。
カードはクリックすると履歴がグラフ表示されます。
別拠点にあるデバイスとのVPN越しMQTT
WireGuardによる拠点間VPNを張っている別拠点にあるESP Easyも、同じ要領でHome Assistantへ登録することができました。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
mqtt: sensor: # ESPeasyC8 BME280/BH1750 - name: "ESPeasyC8_Temp" state_topic: 'ysuka/ESPeasyC8/BME280/Temp' unit_of_measurement: "C" - name: "ESPeasyC8_Humid" state_topic: 'ysuka/ESPeasyC8/BME280/Humid' unit_of_measurement: "%" - name: "ESPeasyC8_Press" state_topic: 'ysuka/ESPeasyC8/BME280/Press' unit_of_measurement: "hPa" - name: "ESPeasyC8_Lux" state_topic: 'ysuka/ESPeasyC8/BH1750/Lux' unit_of_measurement: "Lux" |
今回、Home AssistantにMQTTと言う汎用チャンネルが備わったので、今後はネットワークに繋がるRaspberry PiやOpenWRT、スマートコンセントなど様々なデバイスを全て繋ぎ、スマートホームの象徴である壁掛けダッシュボードに一元化してみたい、と妄想は尽きません。


















