---
title: "Shelly EM MQTT"
description: "Jednofazowy licznik Shelly EM przez MQTT w TapHome. Pomiar energii (kWh) na kanał, napięcie i sterowanie przekaźnikiem stycznikowym."
url: "https://taphome.com/pl/compatibility/shelly-em-mqtt/"
language: pl
lastmod: 2026-10-08
generator: hugo
ai:
  topics: ["mqtt","electric-meter","wifi","energy-metering","contactor-control","ct-clamp"]
  questions: ["Jak zintegrować Shelly EM z TapHome przez MQTT?","Co mierzy szablon Shelly EM MQTT w TapHome?","Jak znaleźć Device ID urządzenia Shelly EM dla MQTT?","Czy mogę sterowa�� przekaźnikiem stycznikowym Shelly EM z TapHome przez MQTT?","Dlaczego mój Shelly EM nie raportuje danych energetycznych przez MQTT?","Czy szablon Shelly EM MQTT obsługuje odczyty mocy chwilowej?"]
---

# Shelly EM MQTT

Komunikacja: Packet Parser → MQTT

- [Strona produktu Shelly EM](https://www.shelly.com/en/products/shop/shelly-em)

> Adres w sieci
> 
> Przy brokerze MQTT wbudowanym w TapHome wpisz w TapHome jako adres brokera `127.0.0.1`. W urządzeniu wpisz adres IP TapHome Core i nadaj jednostce Core rezerwację IP w routerze.
> 
> [Przygotowanie sieci](https://taphome.com/pl/docs/setup/network-preparation/)

## Poradnik integracji

Shelly EM to jednofazowy licznik energii z dwoma niezależnymi kanałami pomiarowymi i wyjściem przekaźnikowym 2A do sterowania stycznikiem. Każdy kanał łączy si�� z zewnętrznym przekładnikiem prądowym (klamrą CT) -- dostępnym w wariantach 50A i 120A -- umożliwiając nieinwazyjny monitoring dwóch oddzielnych obwodów jednocześnie. Ten szablon łączy się z urządzeniem przez broker MQTT w sieci lokalnej. Połączenie z chmurą nie jest wymagane.

Szablon tworzy trzy urządzenia: dwa liczniki energii (po jednym na kanał CT) śledzące kumulatywne zużycie energii oraz przełącznik dla przekaźnika stycznikowego.

## Konfiguracja

### Device ID

Shelly EM używa Device ID w formacie `shellyem-XXXXXX`, gdzie `XXXXXX` to ostatnie 6 znaków adresu MAC w formacie szesnastkowym (np. `shellyem-B929CC`). Podczas importu szablonu wpisz tylko część szesnastkową (np. `B929CC`) w parametrze **Device ID**.

Device ID można znaleźć:

- W interfejsie webowym Shelly: **Settings** > **Device Info**
- Przez API: `GET http://<device-ip>/settings` -- pole `mqtt.id`

> [!TIP]
> To urządzenie obsługuje **odkrywanie mDNS**. Zamiast adresu IP możesz użyć nazwy hosta `shellyem-{MAC}.local` podczas konfiguracji brokera MQTT. Zamień `{MAC}` na tę samą część szesnastkową co w Device ID (np. `shellyem-B929CC.local`). Użycie nazwy hosta zapobiega problemom z łącznością przy zmianie adresu IP urządzenia.

### Konfiguracja MQTT

Przed importem szablonu włącz MQTT na urządzeniu Shelly EM:

1. Otwórz interfejs webowy Shelly pod adresem `http://<device-ip>`
2. Przejdź do **Internet & Security** > **Advanced — Developer Settings**
3. Zaznacz **Enable action execution via MQTT**
4. W polu **Server** wpisz adres brokera MQTT w formacie `broker-ip:1883`
5. Naciśnij **SAVE**

> [!WARNING]
> W urządzeniach Shelly Gen1 włączenie MQTT **wyłącza Shelly Cloud**. Obie funkcje nie mogą działać jednocześnie.

### Konfiguracja szablonu

Po zaimportowaniu szablonu w TapHome:

1. Ustaw **MQTT Broker IP** na adres Twojego brokera MQTT
2. Ustaw **MQTT Broker Port** (domyślnie `1883`)
3. Ustaw **Device ID** na szesnastkową część Device ID urządzenia Shelly EM (np. `B929CC`)

Moduł subskrybuje topic `shellies/#`, a skrypty listener na każdym urządzeniu filtrują wiadomości według skonfigurowanego Device ID.

## Możliwości urządzenia

### Pomiar energii (na kanał)

Każdy kanał jest w TapHome widoczny jako niezależne urządzenie Licznik energii. Skrypt listener subskrybuje dwa topiki MQTT na kanał:

| Topic | Jednostka | Opis |
|-------|-----------|------|
| `emeter/{i}/energy` | watominuty | Kumulatywna energia od ostatniego restartu -- dzielona przez 60 000 do konwersji na kWh |
| `emeter/{i}/total` | Wh | Trwałe całkowite zużycie energii -- przetrwa restarty |

Szablon przechowuje obie wartości: `Ed` (energia z topiku watominut, skonwertowana na kWh) i `To` (całkowite zużycie w Wh z trwałego topiku).

> [!TIP]
> Topic `energy` zeruje się przy restarcie urządzenia. Dla trwałego śledzenia energii szablon odczytuje również topic `total`, który przetrwa restarty.

Każdy kanał udostępnia również atrybut serwisowy **Napięcie**, który odczytuje napięcie sieciowe RMS z topiku MQTT `emeter/{i}/voltage`.

> [!NOTE]
> Skrypty `readtotalconsumption` i `readdemand` to zakomentowany boilerplate szablonu -- wszystkie dane energetyczne przychodzą przez listener MQTT. Oznacza to, że szablon **nie zapewnia** odczytów mocy chwilowej (W). Śledzona jest tylko energia kumulatywna (kWh) i całkowite zużycie (Wh). Chwilowa moc czynna jest dostępna przez topic MQTT `emeter/{i}/power`, ale ten szablon go nie subskrybuje.

### Przekaźnik stycznikowy

Wyjście przekaźnikowe jest widoczne jako przełącznik w TapHome. Przekaźnik jest wymiarowany na **2A / 230 VAC** -- jest przeznaczony wyłącznie do sterowania stycznikiem, nie do bezpośredniego przełączania obciążeń.

- **Odczyt:** subskrybuje topic `shellies/shellyem-{id}/relay/0` -- payload `on` = włączony, `off` = wyłączony
- **Zapis:** publikuje `on` lub `off` do `shellies/shellyem-{id}/relay/0/command`

> [!WARNING]
> Przekaźnik jest wymiarowany tylko na 2A. Dla obciążeń przekraczających ten limit zawsze używaj zewnętrznego stycznika. Bezpośrednie podłączenie obciążeń dużej mocy uszkodzi przekaźnik.

## Rozwiązywanie problemów

### Brak danych energetycznych

1. Sprawdź, czy MQTT jest włączone w interfejsie webowym Shelly (Internet & Security > Advanced — Developer Settings)
2. Sprawdź, czy adres i port brokera MQTT są poprawne zarówno w ustawieniach urządzenia Shelly, jak i modułu TapHome
3. Sprawdź, czy zmienna niestandardowa **Device ID** dokładnie odpowiada Device ID urządzenia Shelly (np. `B929CC`)
4. Za pomocą klienta MQTT (np. MQTT Explorer) zasubskrybuj topic `shellies/#` i sprawdź, czy urządzenie publikuje topiki `emeter/0/energy` i `emeter/1/energy`

### Dane tylko z jednego kanału

1. Sprawdź, czy klamra CT jest podłączona do właściwego gniazda 3,5 mm (kanał 0 lub kanał 1)
2. Sprawdź, czy przez monitorowany przewód płynie prąd -- klamra CT musi obejmować pojedynczy przewód, nie cały kabel
3. Osobno zasubskrybuj topiki `shellies/shellyem-{id}/emeter/0/#` i `shellies/shellyem-{id}/emeter/1/#` i sprawdź, czy oba kanały publikują dane

### Przekaźnik nie reaguje

1. Sprawdź, czy Shelly EM jest zasilane i połączone z brokerem MQTT
2. Ręcznie opublikuj `on` lub `off` do `shellies/shellyem-{id}/relay/0/command` przez klienta MQTT, aby przetestować działanie przekaźnika niezależnie od TapHome
3. Sprawdź prawidłowe okablowanie wyjścia przekaźnikowego (sprawd�� oznaczenia zacisków na urządzeniu)

> [!WARNING]
> Urządzenia Shelly Gen1 **nie obsługują** MQTT przez TLS. Komunikacja między urządzeniem a brokerem MQTT jest nieszyfrowana (plain MQTT, port 1883). Upewnij się, że broker MQTT znajduje się w zaufanej sieci lokalnej.

## Jak zainstalować w TapHome

### Wymagania wstępne

- Urządzenie Shelly połączone z Wi-Fi (2,4 GHz), np. przez aplikację Shelly lub własny punkt dostępowy urządzenia
- Broker MQTT działający w sieci lokalnej (np. Mosquitto, Home Assistant lub wbudowany broker TapHome)
- TapHome CCU w tej samej sieci co broker

> [!WARNING]
> Na urządzeniach **Gen1** włączenie MQTT **wyłącza Shelly Cloud**. Oba nie mogą działać jednocześnie. Na urządzeniach Gen2/Plus to ograniczenie nie obowiązuje.

### Krok 1 — Włącz MQTT na urządzeniu Shelly

#### Urządzenia Gen1 (Shelly 1, 1PM, 2.5, EM, 3EM, Plug S, RGBW2, Dimmer, TRV…)

1. Otwórz interfejs webowy Shelly: `http://<device-ip>/`
2. Przejdź do **Internet & Security** → **Advanced — MQTT**
3. Włącz **MQTT**
4. Ustaw **MQTT Server**: `<broker-ip>:<port>` (np. `192.168.1.10:1883`)
5. Opcjonalnie ustaw **MQTT User** i **MQTT Password**, jeśli broker wymaga uwierzytelniania
6. Kliknij **Save** — urządzenie zrestartuje się i połączy z brokerem

#### Urządzenia Gen2 / Plus (Shelly Plus 1, Plus 1PM, Plus 2PM, Plus Plug S, Plus H&T, Pro 3EM…)

1. Otwórz interfejs webowy Shelly: `http://<device-ip>/`
2. Przejdź do **Settings** → **MQTT**
3. Włącz **MQTT**
4. Ustaw **Server**: `<broker-ip>:<port>` (np. `192.168.1.10:1883`)
5. **Client ID** jest wstępnie wypełnione identyfikatorem urządzenia (np. `shellyplus1pm-AABBCCDDEE`) — pozostaw bez zmian, chyba że masz konkretny powód do zmiany
6. Kliknij **Save** i zrestartuj urządzenie

Przy wbudowanym brokerze TapHome `<broker-ip>` to adres IP TapHome Core. Nadaj jednostce Core rezerwację IP w routerze, w przeciwnym razie urządzenie straci brokera, gdy router zmieni adres → [Przygotowanie sieci](https://taphome.com/pl/docs/setup/network-preparation/).

> [!TIP]
> Aby sprawdzić, czy MQTT działa, użyj klienta MQTT (np. MQTT Explorer) i zasubskrybuj `shellies/#` (Gen1) lub `<device-id>/#` (Gen2). Powinieneś zobaczyć komunikaty o stanie z urządzenia.

### Krok 2 — Znajdź Device ID / MQTT Client ID

Niektóre szablony wymagają parametru **Device ID** lub **MQTT Client ID**. Jest to unikalny identyfikator używany w topikach MQTT.

- **Gen1:** znajduje się na etykiecie jako adres MAC (np. `AABBCCDDEE`). Device ID = `shelly<model>-<mac>`, np. `shelly1pm-AABBCCDDEE`
- **Gen2/Plus:** znajduje się w interfejsie webowym Shelly w sekcji **Settings** → **Device Info** → **Device ID** lub na etykiecie urządzenia

### Krok 3 — Konfiguracja w TapHome

1. W TapHome dodaj nowy moduł **Packet Parser (MQTT)**
2. **IP Address:** dla wbudowanego brokera TapHome `127.0.0.1` (jednostka łączy się sama ze sobą, adres nigdy się nie zmienia); dla zewnętrznego brokera jego adres IP (np. `192.168.1.10`)
3. **Port:** `1883` (domyślny; użyj `8883` dla TLS)
4. **Device ID / MQTT Client ID:** wprowadź wartość z kroku 2 (jeśli wymagane przez szablon)
5. Zaimportuj szablon — TapHome automatycznie zasubskrybuje topiki urządzenia

## Dostępne urządzenia 3

Te urządzenia pojawią się w TapHome po imporcie.

Shelly EM MQTT Moduł

Zmienne niestandardowe

`deviceID` (string) MQTT Device ID urządzenia Shelly EM — format to 'shellyem-DEVICEID', gdzie DEVICEID to ostatnie 6 znaków szesnastkowych adresu MAC (np. B929CC)

Open http://shellyIpAddress → Settings → Device Info → copy Device ID

Licznik energii - Kanał 1 Licznik energii Tylko do odczytu

Zużycie energii na klamrze CT kanału 1 -- energia kumulatywna (kWh) i całkowite zużycie (Wh)

numeric Jednostka: kWh

Atrybuty serwisowe

|          |                                                                     |
|----------|---------------------------------------------------------------------|
| Napięcie | Napięcie RMS na kanale 1 odczytywane z topiku MQTT emeter/0/voltage |

Odczyt całkowitego zużycia

```taphome
# Simple HTTP Request:
# VAR response := SENDHTTPREQUEST("/example/getValue");
# IF response.IsSuccess
#  VAR content := response.Content;
#  VAR responseHeaders := response.Headers;
#  RETURN(PARSEXML(content, "//element1/value1"));
# ELSE
#  ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
#  RETURN(NaN);
# END
#
# Set Http request method, body and headers
# VAR response := SENDHTTPREQUEST("/example/getValue", "GET", "some data", "header1:value1", "header2:value2", ...);
# OR
# VAR request := HTTPREQUEST("/example/getValue", "POST", "some data");
# request.headers := { "header1:value1", "header2:value2", ...};
# request.method := "GET";
# request.data := null;
# VAR response := SENDHTTPREQUEST(request);
#
#
# Send TCP, UDP data:
# VAR data1 := BYTECOLLECTION("0a bb ea df 01");
# SENDDATA(data1);
# VAR data2 := "{\"name\":\"John\", \"age\":32}";
# SENDDATA(data2);
# VAR data3 := TOBYTES("{\"name\":\"John\", \"age\":32}", "iso-8859-1");
# SENDDATA(data3);
# Process received TCP or UDP data and set device values in the Listener script
#
#
# Download data from FTP:
# FTPDOWNLOAD("filePath");
```

Odczyt zapotrzebowania

```taphome
# Simple HTTP Request:
# VAR response := SENDHTTPREQUEST("/example/getValue");
# IF response.IsSuccess
#  VAR content := response.Content;
#  VAR responseHeaders := response.Headers;
#  RETURN(PARSEXML(content, "//element1/value1"));
# ELSE
#  ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
#  RETURN(NaN);
# END
#
# Set Http request method, body and headers
# VAR response := SENDHTTPREQUEST("/example/getValue", "GET", "some data", "header1:value1", "header2:value2", ...);
# OR
# VAR request := HTTPREQUEST("/example/getValue", "POST", "some data");
# request.headers := { "header1:value1", "header2:value2", ...};
# request.method := "GET";
# request.data := null;
# VAR response := SENDHTTPREQUEST(request);
#
#
# Send TCP, UDP data:
# VAR data1 := BYTECOLLECTION("0a bb ea df 01");
# SENDDATA(data1);
# VAR data2 := "{\"name\":\"John\", \"age\":32}";
# SENDDATA(data2);
# VAR data3 := TOBYTES("{\"name\":\"John\", \"age\":32}", "iso-8859-1");
# SENDDATA(data3);
# Process received TCP or UDP data and set device values in the Listener script
#
#
# Download data from FTP:
# FTPDOWNLOAD("filePath");
```

Nasłuchiwanie

```taphome
VAR whatEd := "shellies/shellyem-"+deviceID+"/emeter/0/energy";
VAR whatTo := "shellies/shellyem-"+deviceID+"/emeter/0/total";

IF (whatEd = RECEIVEDMSG.TOPIC)
 Ed := todouble(TOSTRING(RECEIVEDMSG.PAYLOAD))/60000;
END
IF (whatTo = RECEIVEDMSG.TOPIC)
 To := todouble(TOSTRING(RECEIVEDMSG.PAYLOAD));
END
```

Atrybuty serwisowe

Voltage \[V]

```taphome
if parsejson(response, "Topic") = "shellies/shellyem-"+deviceID+"/emeter/0/voltage"
 return(todouble(parsejson(response, "Payload")));
end
```

Licznik energii - Kanał 2 Licznik energii Tylko do odczytu

Zużycie energii na klamrze CT kanału 2 -- energia kumulatywna (kWh) i całkowite zużycie (Wh)

numeric Jednostka: kWh

Atrybuty serwisowe

|          |                                                                     |
|----------|---------------------------------------------------------------------|
| Napięcie | Napięcie RMS na kanale 2 odczytywane z topiku MQTT emeter/1/voltage |

Odczyt całkowitego zużycia

```taphome
# Simple HTTP Request:
# VAR response := SENDHTTPREQUEST("/example/getValue");
# IF response.IsSuccess
#  VAR content := response.Content;
#  VAR responseHeaders := response.Headers;
#  RETURN(PARSEXML(content, "//element1/value1"));
# ELSE
#  ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
#  RETURN(NaN);
# END
#
# Set Http request method, body and headers
# VAR response := SENDHTTPREQUEST("/example/getValue", "GET", "some data", "header1:value1", "header2:value2", ...);
# OR
# VAR request := HTTPREQUEST("/example/getValue", "POST", "some data");
# request.headers := { "header1:value1", "header2:value2", ...};
# request.method := "GET";
# request.data := null;
# VAR response := SENDHTTPREQUEST(request);
#
#
# Send TCP, UDP data:
# VAR data1 := BYTECOLLECTION("0a bb ea df 01");
# SENDDATA(data1);
# VAR data2 := "{\"name\":\"John\", \"age\":32}";
# SENDDATA(data2);
# VAR data3 := TOBYTES("{\"name\":\"John\", \"age\":32}", "iso-8859-1");
# SENDDATA(data3);
# Process received TCP or UDP data and set device values in the Listener script
#
#
# Download data from FTP:
# FTPDOWNLOAD("filePath");
```

Odczyt zapotrzebowania

```taphome
# Simple HTTP Request:
# VAR response := SENDHTTPREQUEST("/example/getValue");
# IF response.IsSuccess
#  VAR content := response.Content;
#  VAR responseHeaders := response.Headers;
#  RETURN(PARSEXML(content, "//element1/value1"));
# ELSE
#  ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
#  RETURN(NaN);
# END
#
# Set Http request method, body and headers
# VAR response := SENDHTTPREQUEST("/example/getValue", "GET", "some data", "header1:value1", "header2:value2", ...);
# OR
# VAR request := HTTPREQUEST("/example/getValue", "POST", "some data");
# request.headers := { "header1:value1", "header2:value2", ...};
# request.method := "GET";
# request.data := null;
# VAR response := SENDHTTPREQUEST(request);
#
#
# Send TCP, UDP data:
# VAR data1 := BYTECOLLECTION("0a bb ea df 01");
# SENDDATA(data1);
# VAR data2 := "{\"name\":\"John\", \"age\":32}";
# SENDDATA(data2);
# VAR data3 := TOBYTES("{\"name\":\"John\", \"age\":32}", "iso-8859-1");
# SENDDATA(data3);
# Process received TCP or UDP data and set device values in the Listener script
#
#
# Download data from FTP:
# FTPDOWNLOAD("filePath");
```

Nasłuchiwanie

```taphome
VAR whatEd := "shellies/shellyem-"+deviceID+"/emeter/1/energy";
VAR whatTo := "shellies/shellyem-"+deviceID+"/emeter/1/total";

IF (whatEd = RECEIVEDMSG.TOPIC)
 Ed := todouble(TOSTRING(RECEIVEDMSG.PAYLOAD))/60000;
END
IF (whatTo = RECEIVEDMSG.TOPIC)
 To := todouble(TOSTRING(RECEIVEDMSG.PAYLOAD));
END
```

Atrybuty serwisowe

voltage \[V]

```taphome
if parsejson(response, "Topic") = "shellies/shellyem-"+deviceID+"/emeter/1/voltage"
 return(parsejson(response, "Payload"));
end
```

Przekaźnik stycznikowy Przełącznik Odczyt i zapis

Wyjście przekaźnikowe 2A do sterowania stycznikiem -- odczytuje stan relay/0 i publikuje polecenia on/off

boolean

Wartości / Stany: ON · OFF

Odczyt stanu przełącznika

```taphome
# Simple HTTP Request:
# VAR response := SENDHTTPREQUEST("/example/getValue");
# IF response.IsSuccess
#  VAR content := response.Content;
#  VAR responseHeaders := response.Headers;
#  RETURN(PARSEXML(content, "//element1/value1"));
# ELSE
#  ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
#  RETURN(NaN);
# END
#
# Set Http request method, body and headers
# VAR response := SENDHTTPREQUEST("/example/getValue", "GET", "some data", "header1:value1", "header2:value2", ...);
# OR
# VAR request := HTTPREQUEST("/example/getValue", "POST", "some data");
# request.headers := { "header1:value1", "header2:value2", ...};
# request.method := "GET";
# request.data := null;
# VAR response := SENDHTTPREQUEST(request);
#
#
# Send TCP, UDP data:
# VAR data1 := BYTECOLLECTION("0a bb ea df 01");
# SENDDATA(data1);
# VAR data2 := "{\"name\":\"John\", \"age\":32}";
# SENDDATA(data2);
# VAR data3 := TOBYTES("{\"name\":\"John\", \"age\":32}", "iso-8859-1");
# SENDDATA(data3);
# Process received TCP or UDP data and set device values in the Listener script
#
#
# Download data from FTP:
# FTPDOWNLOAD("filePath");
```

Zapis stanu przełącznika

```taphome
MQTTPUBLISH("shellies/shellyem-" + deviceID + "/relay/0/command",if(St = 1, "on","off"));

# Simple HTTP Request:
# VAR response := SENDHTTPREQUEST("/example/set/value=" + St);
# IF response.IsSuccess = false
#  ADDERROR(response.StatusCode);
# END
#
# Set Http request method, body and headers
# VAR response := SENDHTTPREQUEST("/example/setValue", "GET", "value=" + St, "header1:value1", "header2:value2", ...);\r
# Or VAR request := HTTPREQUEST("/example/setValue");
# request.Method := "PUT";
# VAR response := SENDHTTPREQUEST(request);
#r
#
# Send TCP, UDP data:
# VAR data1 := "{\"name\":\"John\", \"age\":" + St + "}";
# SENDDATA(data1);
# VAR data2 := TOBYTES("{\"name\":\"John\", \"age\":" + St + "}", "iso-8859-1");
# SENDDATA(data2);
# You can process received TCP or UDP data in the Listener script
#
#
# Upload data to FTP:
# FTPUPLOAD("filePath", "somedata=" + St, "write"); # use "append" mode to append data to existing file
```

Nasłuchiwanie

```taphome
VAR whatSt := "shellies/shellyem-"+deviceID+"/relay/0";
IF (whatSt = RECEIVEDMSG.TOPIC)
 IF (TOSTRING(RECEIVEDMSG.PAYLOAD) = "on")
  St := 1;
 ELSE
  St := 0;
 END
END
```

**Połączenie:** Packet Parser → MQTT • Hostname: `shellyem-{MAC}.local`

Możliwe ulepszenia (5)

- Active Power — Instantaneous active power in W per channel. Available via MQTT but template listener scripts do not subscribe to it — readdemand is commented-out boilerplate.
- Reactive Power — Instantaneous reactive power in VAR per channel. Available via MQTT topic.
- Total Energy Returned — Total energy returned to grid in Wh per channel. Useful for solar/bidirectional setups.
- Connection Status — LWT topic — true on connect, false on disconnect. Could detect device offline state.
- Reset Energy Data — Payload 'reset\_data' resets all accumulated energy counters on both channels.

## Parametry importu

Te wartości podajesz podczas importu pliku XML.

| Pytanie w aplikacji  | Domyślnie           |
|----------------------|---------------------|
| Mqtt Broker Adres IP | `192.168.0.1`       |
| Mqtt Broker port     | `1883`              |
| Device ID            | Podaj przy imporcie |

## Źródła

- Shelly Gen1 API Reference
  
  [shelly-api-docs.shelly.cloud](https://shelly-api-docs.shelly.cloud/gen1/) 2026-03-12
- Home Assistant Shelly Integration
  
  [www.home-assistant.io](https://www.home-assistant.io/integrations/shelly/) 2026-03-12
- Shelly EM — API Endpoints & MQTT Topics
  
  [shelly-api-docs.shelly.cloud](https://shelly-api-docs.shelly.cloud/gen1/#shelly-em) 2026-03-29
- Shelly EM — Product Specifications
  
  [robomaterial.com](https://robomaterial.com/product/shelly-em-single-phase-energy-meter-with-contactor-control/) 2026-03-29

## Powiązana dokumentacja

- [MQTT Integration](https://taphome.com/pl/compatibility/mqtt-guide/)
- [Packet Parser (HTTP, TCP, UDP, FTP, MQTT)](https://taphome.com/pl/docs/integration/packet-parser/)
- [Funkcje Packet parser](https://taphome.com/pl/docs/script/packet-parser/)
- [Funkcje parsowania](https://taphome.com/pl/docs/script/parsing-functions/)
- [Broker MQTT](https://taphome.com/pl/docs/integration/packet-parser/mqtt-broker/)
- [Skrypty listener](https://taphome.com/pl/docs/script/listener-scripts/)

