Home Assistant 向け MQTT エネルギーメーター:手動 YAML セットアップ
Home Assistant で MQTT エネルギーメーターを手動設定する
MQTT エネルギーメーターは、電圧、電流、有効電力、買電・売電エネルギーをローカルネットワーク上のブローカーに公開できます。Home Assistant はそのデータを購読し、JSON 値をダッシュボード、自動化、Energy Dashboard で使用できるセンサーエンティティに変換します。
このガイドでは、IAMMETER エネルギーメーターの Manual MQTT(手動 MQTT)方式について説明します。
- メーターの WebUI で MQTT ブローカーを設定する。
- Home Assistant を同じブローカーに接続する。
- 必要な MQTT センサーを YAML で定義する。
- 買電・売電エネルギーを Energy Dashboard に追加する。
Manual MQTT では、エンティティ名、トピック、テンプレート、メタデータを完全に制御できます。Home Assistant にデバイスとエンティティを自動的に作成させたい場合は、代わりに MQTT Discovery を使用してください。
Manual MQTT と MQTT Discovery は異なる方式です
どちらの方式も MQTT ブローカーを使用しますが、Home Assistant での設定方法は異なります。
| 機能 | Manual MQTT | MQTT Discovery |
|---|---|---|
| メーター側のブローカー設定 | 必要 | 必要 |
| HA MQTT 統合 | 必要 | 必要 |
| YAML センサー定義 | 必要 | 不要 |
| エンティティ名とテンプレート | ユーザーが完全に制御 | メーターが作成 |
| デバイス/エンティティの自動作成 | なし | あり |
| 最適な用途 | カスタム MQTT システムとエンティティ定義 | Home Assistant の最速セットアップ |
このガイドでは、メーターの WebUI で HA MQTT Discovery は無効のまま にしてください。このスイッチは、Home Assistant の自動検出を使用する場合にのみ必要です。
必要なもの
- 最新ファームウェアの IAMMETER エネルギーメーター。
- メーターと Home Assistant の両方から到達可能な MQTT ブローカー。
- ブローカーのアドレス、ポート、ユーザー名、パスワード。
- メーターのシリアル番号。
- Home Assistant の YAML 設定へのアクセス。
ブローカーは、Home Assistant と同じマシン、Mosquitto ブローカーアドオン、別の LAN サーバー、またはリモートホスト上で実行できます。データ経路全体を LAN 内に留めたい場合は、ローカルブローカーを使用してください。
現在の IAMMETER メーターはすべて Manual MQTT に対応しています。単相、2 チャンネル、三相モデルはそれぞれ異なる JSON 配列構造を公開するため、値テンプレートは実際のペイロードに合わせる必要があります。
ステップ 1:メーターの WebUI で MQTT ブローカーを設定する
メーターのローカル WebUI を開き、Settings に移動します。次のように設定します。
| 設定項目 | 値 |
|---|---|
| 実行モード | MQTT |
| アドレス | MQTT ブローカーのホスト名/IP とポート |
| ユーザー名 | 必要な場合のブローカーユーザー名 |
| パスワード | 必要な場合のブローカーパスワード |
| HA MQTT Discovery | この Manual MQTT ガイドでは無効 |
設定を保存し、メーターを再接続させます。

現在のファームウェアの WebUI は、これらのブローカー設定を直接サポートしています。従来のローカル API 手順でユーザー名とパスワードを設定する必要はありません。
メーター側の完全な設定方法と旧ファームウェアの手順については、IAMMETER データを MQTT ブローカーに公開する を参照してください。
MQTT モードと IAMMETER Cloud
メーターの実行モードを MQTT に変更すると、測定値は IAMMETER Cloud にアップロードされる代わりに、お使いのブローカーに公開されます。したがって、Manual MQTT と IAMMETER Cloud は同じメーターから同時に実行することはできません。
Home Assistant と IAMMETER Cloud を同時に使用する必要がある場合は、代わりにローカル HTTP または Modbus TCP 統合を使用してください。利用可能な方法の比較は Home Assistant エネルギーメーター統合ガイド を参照してください。
ステップ 2:MQTT トピックとペイロードを確認する
IAMMETER はリアルタイム測定値を次のトピックに公開します。
device/{SN}/realtime
{SN} をメーターのシリアル番号に置き換えます。例:
device/80123456/realtime
Home Assistant のセンサーを設定する前に、MQTT クライアントでトピックを購読し、メッセージが届いていることを確認してください。これにより、YAML のトラブルシューティングと、ブローカー、認証情報、ファイアウォール、トピックの問題を切り分けることができます。
単相 JSON
単相メーターは Data 配列を使用します。最初の 5 つの値は次のとおりです。
| 配列位置 | 測定値 |
|---|---|
Data[0] |
電圧 |
Data[1] |
電流 |
Data[2] |
有効電力 |
Data[3] |
買電エネルギー |
Data[4] |
売電エネルギー |
例:
{
"method": "uploadsn",
"SN": "12345678",
"Data": [228.91, 1.61, 225, 15066.47, 0]
}
マルチチャンネル・三相 JSON
マルチチャンネル・三相メーターは Datas 配列を使用します。各ネスト配列は相または測定チャンネルを表します。
Datas[0] → phase/channel A
Datas[1] → phase/channel B
Datas[2] → phase/channel C, when present
各相/チャンネル配列内の一般的な位置は次のとおりです。
| 配列位置 | 測定値 |
|---|---|
[0] |
電圧 |
[1] |
電流 |
[2] |
有効電力 |
[3] |
買電エネルギー |
[4] |
売電エネルギー |
[5] |
周波数(提供される場合) |
[6] |
力率(提供される場合) |
テンプレートをコピーする前に、ご利用のモデルとファームウェアの実際の MQTT メッセージを必ず確認してください。IAMMETER JSON データ定義の完全版 を参照してください。
ステップ 3:Home Assistant をブローカーに接続する
Home Assistant で:
- Settings → Devices & services に移動します。
- Add integration を選択します。
- MQTT を検索します。
- メーターで使用したものと同じブローカーのアドレス、ポート、ユーザー名、パスワードを入力します。
- MQTT 統合が正常に接続されることを確認します。
Home Assistant がすでにこのブローカーを使用している場合は、MQTT 統合を重複して追加しないでください。手動で定義したセンサーは既存のブローカー接続を使用します。
ステップ 4:YAML で Manual MQTT センサーを追加する
以下の例では、Home Assistant の現在の mqtt: sensor: 設定構造を使用しています。すべての state_topic のシリアル番号を置き換えてください。
単相エネルギーメーターの YAML
mqtt:
sensor:
- name: "IAMMETER Voltage"
unique_id: "iammeter_12345678_voltage"
state_topic: "device/12345678/realtime"
value_template: "{{ value_json.Data[0] | float(0) }}"
unit_of_measurement: "V"
device_class: voltage
state_class: measurement
- name: "IAMMETER Current"
unique_id: "iammeter_12345678_current"
state_topic: "device/12345678/realtime"
value_template: "{{ value_json.Data[1] | float(0) }}"
unit_of_measurement: "A"
device_class: current
state_class: measurement
- name: "IAMMETER Active Power"
unique_id: "iammeter_12345678_active_power"
state_topic: "device/12345678/realtime"
value_template: "{{ value_json.Data[2] | float(0) }}"
unit_of_measurement: "W"
device_class: power
state_class: measurement
- name: "IAMMETER Imported Energy"
unique_id: "iammeter_12345678_import_energy"
state_topic: "device/12345678/realtime"
value_template: "{{ value_json.Data[3] | float(0) }}"
unit_of_measurement: "kWh"
device_class: energy
state_class: total_increasing
- name: "IAMMETER Exported Energy"
unique_id: "iammeter_12345678_export_energy"
state_topic: "device/12345678/realtime"
value_template: "{{ value_json.Data[4] | float(0) }}"
unit_of_measurement: "kWh"
device_class: energy
state_class: total_increasing
unique_id により、Home Assistant は UI でエンティティ設定を管理できます。すべての ID を一意かつ安定したものに保ってください。表示名を変更するためだけに ID を変更しないでください。
三相エネルギーメーターの YAML
次の例では、A 相のエンティティを作成します。B 相と C 相については、Datas[0] を Datas[1]、Datas[2] に変更してブロックを複製し、それぞれ異なる名前と一意の ID を使用してください。
mqtt:
sensor:
- name: "IAMMETER Voltage A"
unique_id: "iammeter_80123456_voltage_a"
state_topic: "device/80123456/realtime"
value_template: "{{ value_json.Datas[0][0] | float(0) }}"
unit_of_measurement: "V"
device_class: voltage
state_class: measurement
- name: "IAMMETER Current A"
unique_id: "iammeter_80123456_current_a"
state_topic: "device/80123456/realtime"
value_template: "{{ value_json.Datas[0][1] | float(0) }}"
unit_of_measurement: "A"
device_class: current
state_class: measurement
- name: "IAMMETER Active Power A"
unique_id: "iammeter_80123456_active_power_a"
state_topic: "device/80123456/realtime"
value_template: "{{ value_json.Datas[0][2] | float(0) }}"
unit_of_measurement: "W"
device_class: power
state_class: measurement
- name: "IAMMETER Imported Energy A"
unique_id: "iammeter_80123456_import_energy_a"
state_topic: "device/80123456/realtime"
value_template: "{{ value_json.Datas[0][3] | float(0) }}"
unit_of_measurement: "kWh"
device_class: energy
state_class: total_increasing
- name: "IAMMETER Exported Energy A"
unique_id: "iammeter_80123456_export_energy_a"
state_topic: "device/80123456/realtime"
value_template: "{{ value_json.Datas[0][4] | float(0) }}"
unit_of_measurement: "kWh"
device_class: energy
state_class: total_increasing
WEM2067 などのマルチチャンネルモデルでは、実際の Datas ペイロードに存在するチャンネル数だけブロックを作成してください。
トップレベルの mqtt: ブロックを 2 つ作らない
configuration.yaml にすでに mqtt: セクションがある場合は、既存のセクションの下にセンサーを追加してください。YAML では、同じ名前の独立したトップレベルキーを 2 つ安全に含めることはできません。
大規模な設定の場合は、MQTT センサーをインクルードファイルに保存できますが、Home Assistant のインクルード構造とインデント規則に従ってください。
ステップ 5:設定を確認してセンサーを読み込む
YAML を保存した後:
- Home Assistant の設定チェックを実行します。
- YAML、インデント、テンプレートのエラーを修正します。
- 必要に応じて Home Assistant を再起動します。
- Developer tools → States を開きます。
- 各 MQTT エンティティに妥当な値、単位、デバイスクラス、ステートクラスがあることを確認します。
device/{SN}/realtime に新しいメッセージが届くと、エンティティの値が変化するはずです。
ステップ 6:買電・売電エネルギーを Energy Dashboard に追加する
Home Assistant の Energy Dashboard には累積エネルギーエンティティが必要です。YAML の例では次のものを使用しています。
unit_of_measurement: "kWh"
device_class: energy
state_class: total_increasing
Settings → Dashboards → Energy に移動して、次を選択します。
- 系統からの消費電力には IAMMETER Imported Energy。
- 系統への返電には IAMMETER Exported Energy。
三相メーターの場合は、設置状況と Home Assistant のダッシュボード設計に合ったエンティティ構造を選択してください。各相のエネルギーを個別に公開するか、適切な合計エンティティを作成できますが、選択した配線モードでメーターが相エネルギーと正味エネルギーをどのように報告するかを確認せずに値を合算しないでください。
Energy Dashboard のエネルギー項目に、ワット単位で測定された有効電力エンティティを選択しないでください。電力は瞬間的なレートであり、ダッシュボードには累積 kWh が必要です。
MQTT 公開間隔を選択する
現在の IAMMETER ファームウェアは、最短 2 秒 までの MQTT 公開間隔に対応しています。最短の間隔が常に最適な設定とは限りません。
推奨される初期値:
| ユースケース | 推奨間隔 |
|---|---|
| 高速なローカル自動化 | 2〜5 秒 |
| リアルタイムのエネルギーダッシュボード | 5〜12 秒 |
| 一般的な監視 | 10〜60 秒 |
ブローカーの容量、Home Assistant のレコーダーの増加、ネットワークの信頼性、エンティティ数を考慮してください。多くの相の値を含むメッセージは、複数の Home Assistant センサーを同時に更新できます。
対応 IAMMETER モデル
現在の IAMMETER エネルギーメーターはすべて Manual MQTT に対応しています。Home Assistant での主な違いは、ペイロード構造と測定チャンネル数です。
| モデル | 一般的な構造 | 製品情報 |
|---|---|---|
| WEM3080 | 単一の Data 配列 |
単相エネルギーメーター |
| WEM2067 | マルチチャンネル Datas 配列 |
家庭用ソーラーの 2 チャンネルメーター |
| WEM3080T | 3 チャンネル Datas 配列 |
三相エネルギーメーター |
| WEM3050T | 3 チャンネル Datas 配列 |
家庭用三相/スプリットフェーズメーター |
| WEM3080TD | モデル/配線固有のマルチチャンネルデータ | WEM3080TD |
| WEM3046T / WEM3046TE | 外部 5 A CT 測定による 3 チャンネルデータ | 5 A CT 三相メーター |
WEM3046T と WEM3046TE は、外部 CT の 5 A 二次出力を測定します。一次側の値を得るには、正しい CT 比を適用してください。これは計測システムの特性であり、MQTT や Home Assistant の制限ではありません。
トラブルシューティング
MQTT メッセージが届かない
- メーターの WebUI でブローカーのアドレスとポートを確認します。
- ユーザー名とパスワードを確認します。
- ブローカーのログで認証エラーや接続エラーを確認します。
- ファイアウォールや VLAN のルールを介してメーターがブローカーに到達できることを確認します。
- 独立した MQTT クライアントで
device/{SN}/realtimeを購読します。
メッセージは届くが、Home Assistant エンティティが利用できない
- Home Assistant が同じブローカーに接続されていることを確認します。
- トピックとシリアル番号が正確であることを確認します。
DataとDatasを実際のペイロードと比較します。- YAML のインデントとテンプレートを検証します。
- 再読み込みまたは再起動後に Home Assistant のログを確認します。
一部のエンティティがゼロまたは誤った測定値を表示する
Datasペイロードに単相のDataテンプレートをコピーしないでください。- 配列位置を JSON 定義と照合します。
- 相/チャンネルのインデックスを確認します。
- WEM3046T/WEM3046TE の場合は、外部 CT 比を確認します。
Energy Dashboard にエネルギーエンティティが表示されない
次の 3 つのフィールドをすべて確認します。
unit_of_measurement: "kWh"
device_class: energy
state_class: total_increasing
また、エンティティが有効な数値データを受信し、Developer tools → States に表示されていることを確認します。
重複したデバイスやセンサーが表示される
Manual MQTT と MQTT Discovery は、同じメーターから別々のエンティティを作成できます。YAML 方式を使用している場合は、両方のセットを意図的に使用し、一意のエンティティ名を計画している場合を除き、HA MQTT Discovery は無効のまま にしてください。
関連ガイド
- IAMMETER データを MQTT ブローカーに公開する
- YAML の代わりに MQTT Discovery を使用する
- すべての IAMMETER–Home Assistant 統合方法の比較
- IAMMETER JSON データ定義
- IAMMETER ファームウェアをアップグレードする
更新日:2026年7月19日。