MQTTブローカーによるリアルタイムエネルギー・データ購読(2025年版)
1. はじめに
IAMMETER-Cloud は、プロフェッショナルなエネルギー監視・太陽光発電管理プラットフォームです。 IAMMETER-Cloud は、強力な可視化・レポート機能に加えて、柔軟なデータインターフェースも提供しています。 これにより、カスタマイズされた要件を持つユーザーは、IAMMETER-Cloud をデータミドルウェアとして利用し、コードを通じてプログラム的にデータを取得できます。
IAMMETER-Cloud からコードを使ってデータを取得する方法は、主に次の 2 つです。
- IAMMETER の MQTTブローカー を介してデータを購読する(本記事の主題)
- IAMMETER-Cloud の公式 APIs を呼び出す
このガイドでは、IAMMETER MQTT トピックの購読方法、データ構造の解釈(単相・三相メーターの両方)、そして動作する Python と Node.js の実装例について説明します。
2. IAMMETER MQTTブローカーの概要
注記: IAMMETER MQTTブローカーは、もともと利便性を目的とした開発・テスト用サービスとして設計されており、標準の IAMMETER-Cloud サービスには含まれていません(5 年以上安定して稼働していますが)。 本番環境や大規模な展開では、ご自身の MQTTブローカー を構築することをお勧めします。
IAMMETER MQTTブローカーの設定
| パラメータ | 説明 |
|---|---|
| ブローカーアドレス | mqtt.iammeter.com |
| ポート | 1883(非SSL) |
| ユーザー名 / パスワード | IAMMETER Cloud → 設定 → MQTT設定 で作成する必要があります![]() |
| トピック形式 | device/{SN}/realtime |
| ペイロード形式 | JSON |
⚠️ 重要: ここでは IAMMETER Cloud のログイン認証情報を使用しないでください。 IAMMETER Cloud ダッシュボードで専用の MQTT ユーザー名とパスワードを作成する必要があります。
IAMMETER メーターを MQTT モードに設定する
IAMMETER メーターをMQTT アップロードモードに設定し(ファームウェア設定ガイド を参照)、IAMMETER MQTTブローカーのパラメータを入力します。

3. MQTTトピック形式
各 IAMMETER デバイスは、リアルタイムデータを次のトピックで公開します:
device/{SN}/realtime
ここで {SN} はメーターのシリアル番号です。
例えば、デバイスの SN が DA2BED94 の場合、トピックは次のようになります:
device/DA2BED94/realtime
このトピックを購読すると、継続的なリアルタイム計測データを受信できます。
4. データ形式
4.1 単相メーターのデータ形式
単相 IAMMETER メーターは、リアルタイムデータを次のような JSON 形式で公開します:
{
"method": "1-272",
"mac": "B0F8932A295C",
"version": "i.91.062T6",
"server": "em",
"SN": "DA2BED94",
"Data": [227.02, 1.81, 296.0, 21699.98, 0.00, 50.01, 0.72]
}
| インデックス | フィールド | 説明 | 単位 |
|---|---|---|---|
| 1 | Voltage | 現在の線間電圧 | V |
| 2 | Current | 現在の線電流 | A |
| 3 | Power | 有効電力 | W |
| 4 | Forward Energy | 買電量(消費した電力量) | kWh |
| 5 | Reverse Energy | 売電量(逆潮流・太陽光) | kWh |
| 6 | Frequency | 系統周波数 | Hz |
| 7 | Power Factor | 現在の力率 | PF |
🟢 注記:
- 正の電力 → 電力の消費
- 負の電力 → 電力の逆潮流(例:太陽光の売電)
4.2 三相メーターのデータ形式(WEM3080T / WEM3046T / WEM3050T)
三相 IAMMETER メーターは、各相に対応する 3 つの配列を持つ、同様の JSON 形式でデータを公開します。
{
"method": "4-9",
"mac": "849DC2CEC625",
"version": "i.91.062T6",
"server": "em",
"SN": "CB0A0CFB",
"EA": {
"Reactive": [
[-111.0, 0.000, 176.750],
[-113.0, 0.000, 179.110],
[-114.0, 36.120, 144.410]
]
},
"Datas": [
[225.9, 1.260, 194.0, 305.110, 0.000, 49.99, 0.87],
[225.8, 1.260, 193.0, 302.690, 0.000, 49.99, 0.86],
[225.9, 1.260, 192.0, 300.890, 0.000, 49.99, 0.86]
]
}
Datas は3 つの配列を含むリストで、それぞれがA 相、B 相、C 相に対応します。
各内部配列は、単相の Data 配列と同じ構造です。
| インデックス | フィールド | 説明 | 単位 |
|---|---|---|---|
| 1 | Voltage | 相電圧 | V |
| 2 | Current | 相電流 | A |
| 3 | Power | 有効電力 | W |
| 4 | Forward Energy | 買電量 | kWh |
| 5 | Reverse Energy | 売電量 | kWh |
| 6 | Frequency | 系統周波数 | Hz |
| 7 | Power Factor | 相力率 | PF |
有効電力データに加えて、無効電力測定が有効な場合、次のように EA セクションも表示されます:
"EA": {
"Reactive": [
[-111.0, 0.000, 176.750],
[-113.0, 0.000, 179.110],
[-114.0, 36.120, 144.410]
]
}
このセクションには無効測定データが表示され、無効テスト機能が有効な場合にのみ表示されます(下のスクリーンショットを参照)。

各配列は 3 つの相(A、B、C)を表し、**無効電力(Q、単位 kVar)と無効電力量(kVARh)**を示します。
Q(kVar): 無効電力 — 正 = 誘導性、負 = 容量性 kVARh: 無効電力量 — 各相には 誘導性負荷 用と 容量性負荷 用の 2 つの kVARh 値が含まれます。
5. Python の例:リアルタイムデータの購読
以下は、paho-mqtt ライブラリを使用した動作する Python スクリプトです。
import paho.mqtt.client as mqtt
import json
# MQTT Broker configuration
MQTT_BROKER = "mqtt.iammeter.com"
MQTT_PORT = 1883
MQTT_USER = "your_mqtt_username" # Set in IAMMETER Cloud → MQTT Settings
MQTT_PASS = "your_mqtt_password"
TOPIC = "device/DA2BED94/realtime" # Replace with your own device SN
# Callback when connected to the broker
def on_connect(client, userdata, flags, rc):
if rc == 0:
print("✅ Connected to IAMMETER MQTT Broker successfully")
client.subscribe(TOPIC)
print(f"📡 Subscribed to topic: {TOPIC}")
else:
print(f"❌ Connection failed with code {rc}")
# Callback when a message is received
def on_message(client, userdata, msg):
payload = json.loads(msg.payload.decode())
print("📊 Received real-time data:")
print(json.dumps(payload, indent=2, ensure_ascii=False))
# Initialize MQTT client
client = mqtt.Client()
client.username_pw_set(MQTT_USER, MQTT_PASS)
client.on_connect = on_connect
client.on_message = on_message
# Connect to the broker and start the loop
client.connect(MQTT_BROKER, MQTT_PORT, 60)
client.loop_forever()
6. Node.js の例
この興味深いオープンソースプロジェクトを試すことをお勧めします: Node.js を使用して IAMMETER MQTTブローカーからリアルタイムデータを購読し、Web UI で可視化して、クールなリアルタイムダッシュボードを作成します。
🔗 https://github.com/lewei50/iammeterJS
7. 実用的な使用例
- スマートホームの自動化 リアルタイムの電力データを Home Assistant や Node-RED に統合して、自動化アクションをトリガーします(例:太陽光発電量が多いときにヒーターを起動する)。
- ローカルでのデータ可視化 受信した MQTT データを InfluxDB に保存し、Grafana ダッシュボードで可視化します。
- プライベートクラウドまたはエッジコンピューティング IAMMETER Cloud に依存せず、MQTT を介してリアルタイムの電力データを直接取得し、カスタム分析や制御ロジックに使用します。
8. トラブルシューティング
| 問題 | 考えられる原因 / 解決策 |
|---|---|
| ブローカーに接続できない | IAMMETER Cloud で MQTT のユーザー名/パスワードが正しく設定されているか確認してください。 |
| データが受信されない | トピック形式(device/{SN}/realtime)を確認し、メーターがオンラインであることを確認してください。 |
| データの遅延 | ネットワークの安定性または Wi-Fi の電波強度を確認してください。 |
| 複数のメーター | 複数のトピックを同時に購読できます(SN ごとに 1 つ)。 |
9. まとめ
IAMMETER MQTTブローカー を使用すると、IAMMETER デバイスからリアルタイムのエネルギー・データストリームに簡単にアクセスできます。 これは、ローカルダッシュボード、スマート自動化、AI ベースのエネルギー最適化システムを構築するための、強力で柔軟な方法です。
📘 参考資料
Markdown 形式のブログ記事版(IAMMETER 公式ブログに公開可能な、構文ハイライトと埋め込み画像リンク付き)を作成しましょうか?
