Przepraszamy, Twoja przeglądarka nie obsługuje JavaScript!
Zaloguj się

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 Zrzut ekranu ustawień 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.

Ustaw licznik w tryb przesyłania MQTT i skonfiguruj 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).

Włącz pomiar mocy biernej w liczniku

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

  1. 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).
  2. Lokalna wizualizacja danych Przechowuj przychodzące dane MQTT w InfluxDB i wizualizuj je za pomocą pulpitów Grafana.
  3. 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


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)?

Góra