죄송합니다. 브라우저가 JavaScript를 지원하지 않습니다!
로그인

실시간 에너지 데이터 구독: MQTT 브로커 가이드 (2025 에디션)

1. 소개

IAMMETER-Cloud는 전문적인 에너지 모니터링 및 태양광 관리 플랫폼입니다. 강력한 시각화 및 보고 기능 외에도 IAMMETER-Cloud는 유연한 데이터 인터페이스를 제공합니다. 이를 통해 맞춤형 요구 사항이 있는 사용자는 IAMMETER-Cloud를 데이터 미들웨어로 사용하여 코드를 통해 프로그래밍 방식으로 데이터를 검색할 수 있습니다.

IAMMETER-Cloud에서 데이터를 가져오는 두 가지 주요 방법이 있습니다.

  • IAMMETER의 MQTT 브로커를 통해 데이터 구독하기 (이 문서의 주요 내용)
  • IAMMETER-Cloud의 공식 API 호출하기

이 가이드에서는 IAMMETER MQTT 토픽을 구독하고, 데이터 구조(단상 및 삼상 계량기 모두)를 해석하며, Python 및 Node.js 예제를 구현하는 방법을 설명합니다.


2. IAMMETER MQTT 브로커 개요

참고: IAMMETER MQTT 브로커는 원래 편의를 위한 개발 및 테스트 서비스로 설계되었으며 표준 IAMMETER-Cloud 제공의 일부가 아닙니다(5년 넘게 안정적으로 운영되어 왔지만). 프로덕션 또는 대규모 배포의 경우 자체 MQTT 브로커를 설정하는 것을 권장합니다.

IAMMETER MQTT 브로커 구성

매개변수 설명
브로커 주소 mqtt.iammeter.com
포트 1883 (비 SSL)
사용자 이름 / 비밀번호 IAMMETER Cloud → 설정 → MQTT 설정에서 생성해야 합니다.MQTT 설정 스크린샷
토픽 형식 device/{SN}/realtime
페이로드 형식 JSON

⚠️ 중요: 여기에 IAMMETER Cloud 로그인 자격 증명을 사용하지 마십시오. IAMMETER Cloud 대시보드에서 전용 MQTT 사용자 이름과 비밀번호를 생성해야 합니다.

IAMMETER 계량기가 MQTT 모드를 사용하도록 설정

IAMMETER 계량기를 MQTT 업로드 모드로 설정하고(펌웨어 구성 가이드 참조) IAMMETER MQTT 브로커 매개변수를 입력하십시오.

계량기를 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 계량기는 각 상에 해당하는 세 개의 배열이 포함된 유사한 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세 개의 배열을 포함하는 리스트로, 각각 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]
  ]
}

이 섹션은 무효 측정 데이터를 보여주며, 무효 테스트 기능이 활성화된 경우에만 나타납니다(아래 스크린샷 참조).

계량기에서 무효 측정 활성화

각 배열은 세 개의 상(A, B, C)을 나타내며, 무효 전력(Q, kVar) 및 **무효 에너지(kVARh)**를 표시합니다.

Q (kVar): 무효 전력 — 양수 = 유도성, 음수 = 용량성 kVARh: 무효 에너지 — 각 상에는 두 개의 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 브로커의 실시간 데이터를 구독하고 웹 UI로 시각화하여 멋진 실시간 대시보드를 만듭니다.

🔗 https://github.com/lewei50/iammeterJS


7. 실용적인 사용 사례

  1. 스마트 홈 자동화 실시간 전력 데이터를 Home Assistant 또는 Node-RED에 통합하여 자동화 작업을 트리거합니다(예: 태양광 발전량이 많을 때 히터 작동).
  2. 로컬 데이터 시각화 수신된 MQTT 데이터를 InfluxDB에 저장하고 Grafana 대시보드로 시각화합니다.
  3. 프라이빗 클라우드 또는 엣지 컴퓨팅 IAMMETER Cloud에 의존하지 않고 MQTT를 통해 실시간 전력 데이터를 직접 검색하여 맞춤형 분석 또는 제어 로직에 사용합니다.

8. 문제 해결

문제 가능한 원인 / 해결 방법
브로커에 연결할 수 없음 MQTT 사용자 이름/비밀번호가 IAMMETER Cloud에서 올바르게 설정되었는지 확인하십시오.
데이터를 수신하지 못함 토픽 형식(device/{SN}/realtime)을 확인하고 계량기가 온라인 상태인지 확인하십시오.
데이터 지연 네트워크 안정성 또는 Wi-Fi 신호 강도를 확인하십시오.
여러 계량기 여러 토픽을 동시에 구독할 수 있습니다(SN당 하나씩).

9. 결론

IAMMETER MQTT 브로커를 사용하면 IAMMETER 장치의 실시간 에너지 데이터 스트림에 쉽게 액세스할 수 있습니다. 이는 로컬 대시보드, 스마트 자동화 또는 AI 기반 에너지 최적화 시스템을 구축하는 강력하고 유연한 방법입니다.


📘 참고 자료


Would you like me to make a Markdown-formatted blog post version (ready to publish on the IAMMETER official blog, with syntax highlighting and embedded image links intact)?

맨 위