Subskrypcja danych energetycznych w czasie rzeczywistym przez broker MQTT (edycja 2025)
1. Wprowadzenie
IAMMETER-Cloud to profesjonalna platforma do monitorowania energii i zarządzania instalacjami fotowoltaicznymi. Oprócz zaawansowanych funkcji wizualizacji i raportowania, IAMMETER-Cloud oferuje również elastyczne interfejsy danych. Pozwala to użytkownikom z niestandardowymi wymaganiami na wykorzystanie IAMMETER-Cloud jako pośrednika danych, pobierając dane programowo za pomocą kodu.
Istnieją dwa główne sposoby pozyskiwania danych z IAMMETER-Cloud za pomocą kodu:
- Subskrypcja danych za pośrednictwem brokera MQTT IAMMETER (główny temat tego artykułu)
- Wywoływanie oficjalnych API IAMMETER-Cloud
Ten przewodnik wyjaśnia, jak subskrybować tematy MQTT IAMMETER, interpretować struktury danych (dla liczników jednofazowych i trójfazowych) oraz jak zaimplementować działające przykłady w Pythonie i Node.js.
2. Przegląd brokera MQTT IAMMETER
Uwaga: Broker MQTT IAMMETER został pierwotnie zaprojektowany jako usługa programistyczna i testowa dla wygody i nie jest częścią standardowej oferty IAMMETER-Cloud (choć działa stabilnie od ponad 5 lat). W przypadku wdrożeń produkcyjnych lub na dużą skalę zalecamy skonfigurowanie własnego brokera MQTT.
Konfiguracja brokera MQTT IAMMETER
| Parametr | Opis |
|---|---|
| Adres brokera | mqtt.iammeter.com |
| Port | 1883 (bez SSL) |
| Nazwa użytkownika / Hasło | Należy utworzyć w IAMMETER Cloud → Ustawienia → Ustawienia MQTT ![]() |
| Format tematu | device/{SN}/realtime |
| Format danych | JSON |
⚠️ Ważne: Nie używaj tutaj swoich danych logowania do IAMMETER Cloud. Musisz utworzyć dedykowaną nazwę użytkownika i hasło MQTT w panelu IAMMETER Cloud.
Konfiguracja licznika IAMMETER do trybu MQTT
Ustaw licznik IAMMETER w tryb przesyłania MQTT (zobacz przewodnik konfiguracji oprogramowania układowego) i wprowadź parametry brokera MQTT IAMMETER.

3. Format tematu MQTT
Każde urządzenie IAMMETER publikuje swoje dane w czasie rzeczywistym pod następującym tematem:
device/{SN}/realtime
Gdzie {SN} to numer seryjny licznika.
Na przykład, jeśli SN urządzenia to DA2BED94, temat będzie wyglądał następująco:
device/DA2BED94/realtime
Możesz zasubskrybować ten temat, aby otrzymywać ciągłe dane pomiarowe w czasie rzeczywistym.
4. Format danych
4.1 Format danych licznika jednofazowego
Jednofazowy licznik IAMMETER publikuje dane w czasie rzeczywistym w formacie JSON w następujący sposób:
{
"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]
}
| Indeks | Pole | Opis | Jednostka |
|---|---|---|---|
| 1 | Voltage | Aktualne napięcie fazowe | V |
| 2 | Current | Aktualny prąd fazowy | A |
| 3 | Power | Moc czynna | W |
| 4 | Forward Energy | Energia pobrana (zużycie) | kWh |
| 5 | Reverse Energy | Energia oddana (sprzedaż, PV) | kWh |
| 6 | Frequency | Częstotliwość sieci | Hz |
| 7 | Power Factor | Współczynnik mocy | PF |
🟢 Uwagi:
- Dodatnia moc → pobór energii
- Ujemna moc → oddawanie energii (np. z fotowoltaiki)
4.2 Format danych licznika trójfazowego (WEM3080T / WEM3046T / WEM3050T)
Liczniki trójfazowe IAMMETER publikują dane w podobnym formacie JSON, z trzema tablicami odpowiadającymi każdej fazie.
{
"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 to lista zawierająca trzy tablice, każda odpowiadająca fazie A, B i C.
Każda wewnętrzna tablica ma tę samą strukturę co tablica Data licznika jednofazowego.
| Indeks | Pole | Opis | Jednostka |
|---|---|---|---|
| 1 | Voltage | Napięcie fazowe | V |
| 2 | Current | Prąd fazowy | A |
| 3 | Power | Moc czynna | W |
| 4 | Forward Energy | Energia pobrana | kWh |
| 5 | Reverse Energy | Energia oddana | kWh |
| 6 | Frequency | Częstotliwość sieci | Hz |
| 7 | Power Factor | Współczynnik mocy fazy | PF |
Oprócz danych mocy czynnej, gdy włączony jest pomiar mocy biernej, pojawi się również sekcja EA w następujący sposób:
"EA": {
"Reactive": [
[-111.0, 0.000, 176.750],
[-113.0, 0.000, 179.110],
[-114.0, 36.120, 144.410]
]
}
Ta sekcja pokazuje dane pomiaru mocy biernej, które pojawiają się tylko wtedy, gdy funkcja testu mocy biernej jest włączona (patrz zrzut ekranu poniżej).

Każda tablica reprezentuje jedną z trzech faz (A, B, C), pokazując moc bierną (Q w kVar) i energię bierną (kVARh).
Q (kVar): Moc bierna — dodatnia = indukcyjna, ujemna = pojemnościowa kVARh: Energia bierna — każda faza zawiera dwie wartości kVARh: jedną dla obciążenia indukcyjnego i jedną dla obciążenia pojemnościowego.
5. Przykład w Python: Subskrypcja danych w czasie rzeczywistym
Poniżej znajduje się działający skrypt w Pythonie korzystający z biblioteki paho-mqtt.
import paho.mqtt.client as mqtt
import json
# Konfiguracja brokera MQTT
MQTT_BROKER = "mqtt.iammeter.com"
MQTT_PORT = 1883
MQTT_USER = "your_mqtt_username" # Ustaw w IAMMETER Cloud → Ustawienia MQTT
MQTT_PASS = "your_mqtt_password"
TOPIC = "device/DA2BED94/realtime" # Zastąp własnym SN urządzenia
# Wywołanie zwrotne po połączeniu z brokerem
def on_connect(client, userdata, flags, rc):
if rc == 0:
print("✅ Połączono z brokerem MQTT IAMMETER")
client.subscribe(TOPIC)
print(f"📡 Zasubskrybowano temat: {TOPIC}")
else:
print(f"❌ Połączenie nie powiodło się, kod: {rc}")
# Wywołanie zwrotne po otrzymaniu wiadomości
def on_message(client, userdata, msg):
payload = json.loads(msg.payload.decode())
print("📊 Otrzymano dane w czasie rzeczywistym:")
print(json.dumps(payload, indent=2, ensure_ascii=False))
# Inicjalizacja klienta MQTT
client = mqtt.Client()
client.username_pw_set(MQTT_USER, MQTT_PASS)
client.on_connect = on_connect
client.on_message = on_message
# Połączenie z brokerem i uruchomienie pętli
client.connect(MQTT_BROKER, MQTT_PORT, 60)
client.loop_forever()
6. Przykład w Node.js
Polecamy wypróbowanie tego interesującego projektu open-source: Wykorzystuje on Node.js do subskrypcji danych w czasie rzeczywistym z brokera MQTT IAMMETER i wizualizacji ich w interfejsie webowym, tworząc efektowny pulpit nawigacyjny czasu rzeczywistego.
🔗 https://github.com/lewei50/iammeterJS
7. Praktyczne zastosowania
- Automatyka domowa (Smart Home) Zintegruj dane o mocy w czasie rzeczywistym z Home Assistant lub Node-RED, aby uruchamiać akcje automatyzacji (np. włączanie grzejnika przy wysokiej produkcji słonecznej).
- Lokalna wizualizacja danych Przechowuj przychodzące dane MQTT w InfluxDB i wizualizuj je za pomocą pulpitów Grafana.
- Prywatna chmura lub przetwarzanie brzegowe Pobieraj dane o mocy w czasie rzeczywistym bezpośrednio przez MQTT do niestandardowych analiz lub logiki sterowania, bez polegania na IAMMETER Cloud.
8. Rozwiązywanie problemów
| Problem | Możliwa przyczyna / Rozwiązanie |
|---|---|
| Nie można połączyć się z brokerem | Sprawdź, czy nazwa użytkownika i hasło MQTT są poprawnie ustawione w IAMMETER Cloud. |
| Brak danych | Sprawdź format tematu (device/{SN}/realtime) i upewnij się, że licznik jest online. |
| Opóźnienie danych | Sprawdź stabilność sieci lub siłę sygnału Wi-Fi. |
| Wiele liczników | Możesz subskrybować wiele tematów jednocześnie (jeden na SN). |
9. Podsumowanie
Korzystając z brokera MQTT IAMMETER, możesz łatwo uzyskać dostęp do strumieni danych energetycznych w czasie rzeczywistym ze swoich urządzeń IAMMETER. Jest to potężna i elastyczna metoda do budowy lokalnych pulpitów nawigacyjnych, inteligentnych automatyzacji lub systemów optymalizacji energetycznej opartych na AI.
📘 Referencje
- Funkcje oprogramowania układowego i komunikacji IAMMETER
- Dokumentacja API IAMMETER Cloud i MQTT
- Stwórz własny pulpit monitorowania energii za pomocą Node.js
Czy chcesz, abym przygotował wersję w formacie Markdown (gotową do publikacji na oficjalnym blogu IAMMETER, z podświetlaniem składni i osadzonymi linkami do obrazów)?
