---
title: "Shelly EM"
description: "Moc (kW), energia (kWh), napięcie, moc bierna i sterowanie stycznikiem na kanał przez HTTP lub MQTT. Szablon TapHome dla Shelly EM Gen1."
url: "https://taphome.com/pl/compatibility/shelly-em/"
language: pl
lastmod: 2026-03-29
generator: hugo
ai:
  topics: ["http","mqtt","electric-meter","wifi","energy-metering","contactor-control","ct-clamp"]
  questions: ["Jak zintegrować Shelly EM z TapHome?","Co mierzy szablon Shelly EM w TapHome?","Jak podłączyć Shelly EM przez HTTP do TapHome?","Jak podłączyć Shelly EM przez MQTT do TapHome?","Czy Shelly EM może monitorować eksport energii solarnej?","Jak sterować stycznikiem za pomocą Shelly EM w TapHome?"]
---

# Shelly EM

Komunikacja: Packet Parser → HTTP

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

> Adres w sieci
> 
> TapHome łączy się z urządzeniem pod adresem podanym przy imporcie. Nadaj urządzeniu stały adres — rezerwację IP w routerze albo jego nazwę mDNS, jeśli ją obsługuje — inaczej integracja przestanie działać, gdy router zmieni adres.
> 
> [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 zaciskiem CT (przekładnikiem prądowym) — dostępnym w wariantach 50A i 120A — umożliwiając nieinwazyjne monitorowanie dwóch oddzielnych obwodów jednocześnie. TapHome integruje się z urządzeniem lokalnie przez Wi-Fi za pomocą HTTP REST API lub MQTT. Połączenie z chmurą nie jest wymagane.

Dostępne są dwa szablony TapHome: **szablon HTTP** odpytujący endpointy REST urządzenia oraz **szablon MQTT** odbierający dane przez brokera MQTT. Oba udostępniają te same trzy urządzenia — dwa liczniki energii (po jednym na kanał) i przełącznik stycznikowy.

## Konfiguracja

### Szablon HTTP

Szablon HTTP wymaga tylko adresu IP urządzenia (lub nazwy hosta mDNS). TapHome odpytuje trzy endpointy co 15 sekund:

- `/emeter/0/` — dane energetyczne kanału 1
- `/emeter/1/` — dane energetyczne kanału 2
- `settings/relay/0` — stan przekaźnika i sprawdzenie harmonogramu

Skrypt odczytu na poziomie modułu buforuje każdą odpowiedź w osobnej zmiennej (`emeterZero`, `emeterOne`, `status`), dzięki czemu skrypty poszczególnych urządzeń mogą przetwarzać dane bez nadmiarowych wywołań HTTP.

> [!NOTE]
> Szablon sprawdza również stan harmonogramu przekaźnika z `settings/relay/0`. Jeśli wewnętrzny harmonogram jest włączony na urządzeniu Shelly, szablon zgłasza błąd — wyłącz harmonogram w interfejsie webowym Shelly, aby uniknąć konfliktów z automatyzacjami TapHome.

### Szablon MQTT

Szablon MQTT wymaga IP brokera, portu i Shelly **Device ID** (format: `shellyem-XXXXXXXXXXXX`, gdzie X = szesnastkowe cyfry MAC). Device ID znajdziesz w interfejsie webowym Shelly pod **Settings** > **Device Info**.

Po włączeniu MQTT na Shelly EM (Internet & Security > Advanced — MQTT), TapHome subskrybuje topici `shellies/shellyem-{deviceID}/` i odbiera dane przez skrypty nasłuchujące.

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

## Możliwości urządzenia

### Pomiar energii (na kanał)

Każdy kanał jest widoczny w TapHome jako niezależny licznik energii:

- **Moc chwilowa** — moc czynna w kW (przeliczona z W przez podzielenie przez 1000)
- **Energia skumulowana** — całkowita zużyta energia w kWh (HTTP: przeliczona z Wh; MQTT: używa trwałego topica `total` w Wh)

Szablon HTTP odczytuje pola `power` i `total` z odpowiedzi JSON `/emeter/{i}/`. Szablon MQTT nasłuchuje topica `emeter/{i}/energy` (watominuty, dzielone przez 60 000 na kWh) i topica `emeter/{i}/total` (watogodziny, trwałe między restartami).

> [!TIP]
> Topic MQTT `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ż trzy atrybuty serwisowe:

| Atrybut | Jednostka | Opis |
|---------|-----------|------|
| Napięcie | V | Skuteczne napięcie sieciowe |
| Energia zwrócona | Wh | Całkowita energia oddana do sieci — do pomiarów solarnych/dwukierunkowych |
| Moc bierna | VAR | Chwilowa moc bierna |

> [!NOTE]
> Szablon MQTT udostępnia tylko napięcie jako atrybut serwisowy na kanał. Moc bierna i energia zwrócona są dostępne tylko w szablonie HTTP.

### Przełącznik stycznikowy

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

- **HTTP:** odczytuje `ison` z `settings/relay/0` i steruje przez `/relay/0?turn=on` lub `/relay/0?turn=off`
- **MQTT:** odczytuje z topica `shellies/shellyem-{id}/relay/0` i publikuje `on`/`off` na `shellies/shellyem-{id}/relay/0/command`

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

### Dodatkowe możliwości

Shelly EM dostarcza również współczynnik mocy (0,00–1,00) i flagę ważności pomiaru na kanał, konfigurację kanałów (stosunek CT, limit maksymalnej mocy), reset licznika energii, timer automatycznego wyłączenia na przekaźniku oraz siłę sygnału Wi-Fi. Przez MQTT dostępne są również dodatkowe topici dla mocy w czasie rzeczywistym, mocy biernej i energii zwróconej na kanał. Te funkcje mogą zostać dodane w przyszłej aktualizacji szablonu.

## Rozwiązywanie problemów

### Urządzenie nie odpowiada (HTTP)

1. Sprawdź, czy Shelly EM jest podłączony do Wi-Fi i ma prawidłowy adres IP
2. Otwórz `http://{device-ip}/shelly` w przeglądarce — jeśli odpowiada JSON zawierający `"type":"SHEM"`, urządzenie jest osiągalne
3. Upewnij się, że TapHome CCU i Shelly EM są w tej samej sieci / VLAN

### Brak danych na jednym kanale

1. Sprawdź, czy zacisk CT jest podłączony do prawidłowego gniazda 3,5 mm (kanał 0 lub kanał 1)
2. Upewnij się, że prąd płynie przez monitorowany przewód — zacisk CT musi otaczać pojedynczy przewód, nie cały kabel
3. Ręcznie odpytaj `/emeter/0/` i `/emeter/1/` i potwierdź niezerowe wartości `power`

### Wiadomości MQTT nie docierają

1. Potwierdź, że MQTT jest włączone w interfejsie webowym Shelly (Internet & Security > Advanced — MQTT)
2. Sprawdź, czy adres i port brokera są poprawne zarówno w urządzeniu Shelly, jak i w ustawieniach modułu TapHome
3. Zweryfikuj, że zmienna `deviceID` dokładnie odpowiada Shelly Device ID (np. `B929CC`)
4. Użyj klienta MQTT (np. MQTT Explorer) do subskrypcji `shellies/#` i weryfikacji, czy urządzenie publikuje wiadomości

### Błąd konfliktu harmonogramu

Szablon HTTP sprawdza pole `schedule` w `settings/relay/0`. Jeśli urządzenie Shelly ma włączony wewnętrzny harmonogram, szablon zgłasza błąd. Wyłącz harmonogram w interfejsie webowym Shelly (Settings > Relay > Schedule) — zamiast tego użyj automatyzacji TapHome.

> [!WARNING]
> Urządzenia Shelly Gen1 obsługują tylko **2 równoczesne połączenia HTTP**. Jeśli TapHome i inny system (np. Home Assistant) jednocześnie odpytują to samo urządzenie, komunikacja może stać się zawodna. Rozważ przejście na szablon MQTT w środowiskach z wieloma systemami.

## Jak zainstalować w TapHome

### Wymagania wstępne

- Urządzenie Shelly zainstalowane i włączone
- Lokalna sieć Wi-Fi (2,4 GHz)
- TapHome CCU w tej samej sieci

### Krok 1 — Podłącz Shelly do Wi-Fi

**Opcja A — Aplikacja Shelly (zalecana):**

1. Pobierz [aplikację Shelly](https://www.shelly.com/en/support/shelly-app) (iOS / Android)
2. Dotknij **+** → **Add Device** i postępuj zgodnie z kreatorem parowania Bluetooth
3. Wprowadź dane logowania Wi-Fi, gdy zostaniesz o to poproszony

**Opcja B — Tryb AP (bez aplikacji):**

1. Przy pierwszym uruchomieniu urządzenie tworzy hotspot: `ShellyXXX-AABBCCDDEE`
2. Połącz telefon/PC z tym hotspotem
3. Otwórz `http://192.168.33.1` → **Internet & Security** → **Wi-Fi Mode - Client**
4. Wprowadź SSID i hasło → **Save**

> [!NOTE]
> Shelly obsługuje tylko sieci **2,4 GHz**. Sieci 5 GHz nie pojawią się podczas skanowania.

### Krok 2 — Znajdź adres IP

Po połączeniu z Wi-Fi znajdź przypisany adres IP za pomocą jednej z poniższych metod:

- **Aplikacja Shelly:** Szczegóły urządzenia → **Device info** → Adres IP
- **Interfejs webowy Shelly:** Połącz się z AP urządzenia przed konfiguracją Wi-Fi — IP zostanie wyświetlone po zapisaniu
- **Tabela DHCP routera:** Szukaj nazwy hosta takiej jak `shelly1pm-AABBCCDDEE`
- **mDNS:** Pinguj `shelly<model>-<mac>.local` (np. `shelly1pm-AABBCCDDEE.local`) z tej samej sieci

> [!TIP]
> Przypisz urządzeniu Shelly **statyczny IP** (rezerwację DHCP) w routerze, aby adres nie zmieniał się po ponownym uruchomieniu routera.

### Krok 3 — Konfiguracja w TapHome

1. W TapHome dodaj nowy moduł **Packet Parser (HTTP)**
2. **IP Address:** wprowadź IP z kroku 2 (np. `192.168.1.50`)
3. **Port:** `80` (domyślny, nie wymaga zmiany)
4. Zaimportuj szablon — TapHome będzie okresowo odpytywać `/status` w celu odczytu stanu urządzenia

> [!NOTE]
> Uwierzytelnianie HTTP jest domyślnie wyłączone na urządzeniach Shelly. Jeśli włączyłeś ochronę logowaniem, TapHome obecnie nie obsługuje HTTP Basic Auth — pozostaw uwierzytelnianie wyłączone dla integracji z TapHome.

## Dostępne urządzenia 3

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

Shelly EM Moduł

Zmienne niestandardowe

Odczyt (moduł)

```taphome
VAR response := SENDHTTPREQUEST("settings/relay/0");
IF response.IsSuccess
 status := response.Content;
 IF PARSEJSON(status, "schedule")
  ADDERROR("Internal scheduling on");
 END
ELSE
 ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
 RETURN(NaN);
END
response := SENDHTTPREQUEST("/emeter/0/");
IF response.IsSuccess
 emeterZero := response.Content;
ELSE
 ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
 RETURN(NaN);
END
response := SENDHTTPREQUEST("/emeter/1/");
IF response.IsSuccess
 emeterOne := response.Content;
ELSE
 ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
 RETURN(NaN);
END
```

Licznik energii — Kanał 1 Licznik energii Tylko do odczytu

Moc chwilowa (kW) i energia skumulowana (kWh) z zacisku CT na kanale 1

numeric Jednostka: kW / kWh json\_path

Atrybuty serwisowe

|                  |                                                                                                  |
|------------------|--------------------------------------------------------------------------------------------------|
| Napięcie         |                                                                                                  |
| Energia zwrócona | Całkowita energia oddana do sieci na kanale 1 — do zestawów solarnych i pomiarów dwukierunkowych |
| Moc bierna       |                                                                                                  |

Odczyt całkowitego zużycia

```taphome
RETURN(PARSEJSON(emeterZero, "total")/1000);
```

Odczyt zapotrzebowania

```taphome
RETURN(PARSEJSON(emeterZero, "power")/1000);
```

Atrybuty serwisowe

Voltage \[V]

```taphome
RETURN(PARSEJSON(emeterZero, "voltage"));
```

backward \[Wh]

```taphome
RETURN(PARSEJSON(emeterZero, "total_returned"));
```

reactive \[W]

```taphome
RETURN(PARSEJSON(emeterZero, "reactive"));
```

Licznik energii — Kanał 2 Licznik energii Tylko do odczytu

Moc chwilowa (kW) i energia skumulowana (kWh) z zacisku CT na kanale 2

numeric Jednostka: kW / kWh json\_path

Atrybuty serwisowe

|                  |                                                                                                  |
|------------------|--------------------------------------------------------------------------------------------------|
| Napięcie         |                                                                                                  |
| Energia zwrócona | Całkowita energia oddana do sieci na kanale 2 — do zestawów solarnych i pomiarów dwukierunkowych |
| Moc bierna       |                                                                                                  |

Odczyt całkowitego zużycia

```taphome
RETURN(PARSEJSON(emeterOne, "total")/1000);
```

Odczyt zapotrzebowania

```taphome
RETURN(PARSEJSON(emeterOne, "power")/1000);
```

Atrybuty serwisowe

Voltage \[V]

```taphome
RETURN(PARSEJSON(emeterOne, "voltage"));
```

backward \[Wh]

```taphome
RETURN(PARSEJSON(emeterOne, "total_returned"));
```

reactive \[W]

```taphome
RETURN(PARSEJSON(emeterOne, "reactive"));
```

Przełącznik stycznikowy Przełącznik Odczyt i zapis

Wyjście przekaźnikowe 2A do sterowania stycznikiem — nie przeznaczone do bezpośredniego przełączania obciążeń

boolean

Wartości / Stany: ON · OFF

Odczyt stanu przełącznika

```taphome
RETURN(PARSEJSON(status, "ison"));
```

Zapis stanu przełącznika

```taphome
# Simple HTTP Request:
# VAR response := SENDHTTPREQUEST("/example/set/value=" + St);
VAR response := SENDHTTPREQUEST("/relay/0?turn="+ if(St = 1, "on","off"));
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
```

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

Możliwe ulepszenia (9)

- Power Factor — Power factor (0.00–1.00) per channel, available in /emeter/{i} and /status response. Not available via MQTT.
- Measurement Validity — Boolean flag indicating if the measurement is valid. Available per channel in /emeter/{i}.
- Per-Channel Configuration — CT ratio (ctrafos: 50/120), max\_power limit, appliance\_type. Could be exposed as service actions.
- Reset Energy Counters — Resets accumulated energy data for both channels. Available via HTTP GET and MQTT command topic.
- Auto-off Timer — Auto-off timer in seconds on relay endpoint. Could be added as service action parameter.
- WiFi Signal Strength — WiFi RSSI in dBm, available in /status response
- MQTT Real-time Power — Instantaneous power via MQTT (W). MQTT template uses energy+total topics instead.
- MQTT Reactive Power — Reactive power via MQTT (VAR). HTTP template has it as service attribute, MQTT template does not.
- MQTT Energy Returned — Energy returned to grid via MQTT (Wh). HTTP template has it as service attribute (backward), MQTT template does not.

## Parametry importu

Te wartości podajesz podczas importu pliku XML.

| Pytanie w aplikacji | Domyślnie     |
|---------------------|---------------|
| Adres IP            | `192.168.0.1` |

## Ź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

- [Integracja Packet Parser](https://taphome.com/pl/compatibility/packet-parser-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/)

