Subskrypcja danych o zużyciu energii w czasie rzeczywistym za pośrednictwem brokera MQTT (edycja 2025)
1. Wstęp
chmura IAMMETERto profesjonalna platforma do monitorowania energii i zarządzania fotowoltaiką. Oprócz zaawansowanych funkcji wizualizacji i raportowania, IAMMETER-Cloud oferuje również elastyczne interfejsy danych. Dzięki temu użytkownicy o niestandardowych wymaganiach mogą korzystać z IAMMETER-Cloud jakooprogramowanie pośredniczące w przetwarzaniu danych, pobieranie danych programowo za pomocą kodu.
Istnieją dwa główne sposoby uzyskania danych z IAMMETER-Cloud za pomocą kodu:
- Subskrybuj dane za pośrednictwemBroker MQTT firmy IAMMETER(temat tego artykułu)
- Zadzwoń do oficjalnego przedstawiciela IAMMETER-CloudPszczoła
W tym przewodniku wyjaśniono, jak subskrybować tematy MQTT IAMMETER, interpretować struktury danych (dla liczników jednofazowych i trójfazowych) oraz implementować działające przykłady w językach Python i Node.js.
2. Przegląd brokera MQTT IAMMETER
Notatka:Broker MQTT IAMMETER został pierwotnie zaprojektowany jakousługa rozwoju i testowaniadla wygody i nie jest częścią standardowej oferty IAMMETER-Cloud (chociaż działa stabilnie i od ponad 5 lat). W przypadku wdrożeń produkcyjnych lub na dużą skalę zalecamy skonfigurowaniewłasny broker MQTT.
Konfiguracja brokera MQTT IAMMETER
| parametr | Opis |
|---|---|
| Adres brokera | mqtt.iammeter.com |
| Port | 1883(bez SSL) |
| Nazwa użytkownika / Hasło | Musi zostać utworzony wIAMMETER Cloud → Ustawienia → Ustawienia MQTT![]() |
| Format tematu | urządzenie/{SN}/czas rzeczywisty |
| Format ładunku | JSON |
⚠️ Ważny:DonieUżyj tutaj swoich danych logowania do chmury IAMMETER. Musiszutwórz dedykowaną nazwę użytkownika i hasło MQTTw panelu IAMMETER Cloud.
Konfigurowanie miernika IAMMETER do korzystania z trybu MQTT
Ustaw miernik IAMMETER naTryb przesyłania MQTT(Widziećprzewodnik konfiguracji oprogramowania sprzętowego) i wprowadź parametry brokera MQTT IAMMETER.

3. Format tematu MQTT
Każde urządzenie IAMMETER publikuje swoje dane w czasie rzeczywistym w następującym temacie:
urządzenie/{SN}/czas rzeczywisty
Gdzie{SN}to numer seryjny Twojego licznika.
Na przykład, jeśli numer seryjny Twojego urządzenia toDA2BED94, tematem będzie:
urządzenie/DA2BED94/w czasie rzeczywistym
Możesz zapisać się na 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:
{
„metoda”: „1-272”,
„mac”: „B0F8932A295C”,
„wersja”: „i.91.062T6”,
„serwer”: „em”,
„numer seryjny”: „DA2BED94”,
„dane”: [227,02, 1,81, 296,0, 21699,98, 0,00, 50,01, 0,72]
}
| indeks | Pole | Opis | Jednostka |
|---|---|---|---|
| 1 | Woltaż | Aktualne napięcie linii | V |
| 2 | Aktualny | Prąd linii prądu | A |
| 3 | Moc | Moc czynna | W |
| 4 | Energia do przodu | Energia importowana (zużywana) | kWh |
| 5 | Odwrócona energia | Energia eksportowana (z sieci, słoneczna) | kWh |
| 6 | Częstotliwość | Częstotliwość sieci | Hz |
| 7 | współczynnik mocy | Aktualny współczynnik mocy | PF |
🟢 Uwagi:
- Moc dodatnia → zużycie energii
- Moc ujemna → eksport energii (np. zasilanie z energii słonecznej)
4.2 Format danych licznika trójfazowego (WEM3080T / WEM3046T / WEM3050T)
Trójfazowe liczniki IAMMETER publikują dane w podobnym formacie JSON, z trzema tablicami odpowiadającymi każdej fazie.
{
„metoda”: „4-9”,
„mac”: „849DC2CEC625”,
„wersja”: „i.91.062T6”,
„serwer”: „em”,
„SN”: „CB0A0CFB”,
„EA”: {
„Reaktywna”: [
[-111,0, 0,000, 176,750],
[-113,0, 0,000, 179,110],
[-114,0, 36,120, 144,410]
]
},
„Dane”: [
[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]
]
}
Danejest listą zawierającątrzy tablice, każdy odpowiadającyfaza A, B i C.
Każdy wewnętrzny układ ma taką samą strukturę jak układ jednofazowyDaneszyk.
| indeks | Pole | Opis | Jednostka |
|---|---|---|---|
| 1 | Woltaż | napięcie fazowe | V |
| 2 | Aktualny | prąd fazowy | A |
| 3 | Moc | Moc czynna | W |
| 4 | Energia do przodu | Energia importowana | kWh |
| 5 | Odwrócona energia | Eksportowana energia | kWh |
| 6 | Częstotliwość | Częstotliwość sieci | Hz |
| 7 | współczynnik mocy | Współczynnik mocy fazowej | PF |
Oprócz danych o rzeczywistej mocy, kiedyPomiar mocy biernejjest włączony, zobaczysz równieżEAsekcja w następujący sposób:
„EA”: {
„Reaktywne”: [
[-111,0, 0,000, 176,750],
[-113,0, 0,000, 179,110],
[-114,0, 36,120, 144,410]
]
}
Ta sekcja pokazujereaktywne dane pomiarowe, który pojawia się tylko wtedy, gdyreaktywna funkcja testowajest włączony (patrz zrzut ekranu poniżej).

Każda tablica przedstawia trzy fazy (A, B, C), pokazującmoc bierna (Q w kVar)orazEnergia bierna (kVARh).
Q (kVar):Moc bierna — dodatnia = indukcyjna, ujemna = pojemnościowakVARh:Energia bierna — każda faza obejmuje dwie wartości kVARh: jedną dlaobciążenie indukcyjnei jeden dlaobciążenie pojemnościowe.
5. Przykład w Pythonie: subskrypcja danych w czasie rzeczywistym
Poniżej znajduje się działający skrypt Pythona wykorzystującypaho-mqttbiblioteka.
import paho.mqtt.client jako mqtt
import json
# Konfiguracja brokera MQTT
MQTT_BROKER = „mqtt.iammeter.com”
MQTT_PORT = 1883
MQTT_USER = „twoja_nazwa_użytkownika_mqtt” # Ustaw w chmurze IAMMETER → Ustawienia MQTT
MQTT_PASS = „twoje_hasło_mqtt”
TOPIC = „device/DA2BED94/realtime” # Zastąp własnym numerem seryjnym 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 pomyślnie")
client.subscribe(TOPIC)
print(f"📡 Zasubskrybowano temat: {TOPIC}")
else:
print(f"❌ Połączenie nie powiodło się z kodem {rc}")
# Wywołanie zwrotne po odebraniu wiadomości
def on_message(client, userdata, msg):
payload = json.loads(msg.payload.decode())
print("📊 Odebrano dane w czasie rzeczywistym:")
print(json.dumps(payload, indent=2, Ensure_ascii=False))
# Zainicjuj MQTT klient
client = mqtt.Client()
client.username_pw_set(MQTT_USER, MQTT_PASS)
client.on_connect = on_connect
client.on_message = on_message
# Połącz się z brokerem i rozpocznij pętlę
client.connect(MQTT_BROKER, MQTT_PORT, 60)
client.loop_forever()
6. Przykład Node.js
Polecamy wypróbować ten ciekawy projekt open-source: UżywaNode.jssubskrybować dane w czasie rzeczywistym z brokera IAMMETER MQTT i wizualizować je winterfejs użytkownika sieci web, tworząc świetny panel sterowania w czasie rzeczywistym.
🔗 https://github.com/lewei50/iammeterJS
7. Praktyczne przypadki użycia
- Inteligentna automatyka domowaZintegruj dane dotyczące zużycia energii w czasie rzeczywistymAsystent domowylubWęzeł-CZERWONYaby uruchomić działania automatyzacyjne (np. włączenie ogrzewania przy dużym poborze energii słonecznej).
- Wizualizacja danych lokalnychPrzechowuj przychodzące dane MQTT wNapływDBi zwizualizuj to sobiePanele Grafana.
- Prywatna chmura lub przetwarzanie brzegowePobieraj dane dotyczące zużycia energii w czasie rzeczywistym bezpośrednio przez protokół MQTT na potrzeby niestandardowych analiz lub logiki sterowania bez konieczności korzystania z usługi IAMMETER Cloud.
8. Rozwiązywanie problemów
| Wydanie | Możliwa przyczyna / rozwiązanie |
|---|---|
| Nie można połączyć się z brokerem | Sprawdź, czy nazwa użytkownika i hasło MQTT są prawidłowo ustawione w chmurze IAMMETER. |
| Nie otrzymano danych | Sprawdź format swojego tematu (urządzenie/{SN}/czas rzeczywisty) i upewnij się, że licznik jest w trybie online. |
| Opóźnienie danych | Sprawdź stabilność sieci i siłę sygnału Wi-Fi. |
| Wiele metrów | Możesz subskrybować wiele tematów jednocześnie (jeden na numer seryjny). |
9. Wnioski
UżywanieBroker MQTT IAMMETER, możesz łatwo uzyskać dostępstrumienie danych energetycznych w czasie rzeczywistymz urządzeń IAMMETER. To potężna i elastyczna metoda budowanialokalne panele sterowania, inteligentne automatyzacje lub systemy optymalizacji zużycia energii oparte na sztucznej inteligencji.
📘 Bibliografia
- Oprogramowanie układowe i funkcje komunikacyjne IAMMETER
- Dokumentacja IAMMETER Cloud i API MQTT
- Stwórz własny panel monitorowania zużycia energii za pomocą NodeJS
Czy chcesz, żebym zrobiłWersja wpisu blogowego w formacie Markdown(gotowe do opublikowania na oficjalnym blogu IAMMETER, z wyróżnianiem składni i osadzonymi linkami do obrazów)?
