---
title: "Shelly Plug S"
description: "Monitorowanie zużycia energii, sterowanie przekaźnikiem i odczyt temperatury przez MQTT. Szablon TapHome dla inteligentnej wtyczki Shelly Plug S."
url: "https://taphome.com/pl/compatibility/shelly-plug-s-mqtt/"
language: pl
lastmod: 2026-03-31
generator: hugo
ai:
  topics: ["mqtt","smart-plug","wifi","energy-monitoring","relay-control"]
  questions: ["Jak zintegrować Shelly Plug S z TapHome przez MQTT?","Co mierzy szablon Shelly Plug S w TapHome?","Jak znaleźć MQTT Device ID urządzenia Shelly Plug S?","Dlaczego mój Shelly Plug S nie raportuje danych o mocy?","Jak sterować przekaźnikiem Shelly Plug S z TapHome?","Czy szablon Shelly Plug S raportuje zużycie energii w kWh?"]
---

# Shelly Plug S

Komunikacja: Packet Parser → MQTT

- [Strona produktu Shelly Plug S](https://www.shelly.com/en/products/shop/shelly-plug-s)

> 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 Plug S to kompaktowa inteligentna wtyczka Wi-Fi z wbudowanym pomiarem energii, o obciążalności 12A / 2500W. TapHome komunikuje z urządzeniem przez MQTT — wtyczka łączy się z brokerem i publikuje stan przekaźnika, zużycie energii, licznik energii oraz dane o temperaturze wewnętrznej.

Szablon udostępnia dwa urządzenia: Licznik energii do monitorowania energii i Przełącznik do sterowania przekaźnikiem. Atrybut serwisowy na poziomie modułu raportuje temperaturę wewnętrzną urządzenia.

## Konfiguracja

### Device ID

Każdy Shelly Plug S ma unikalny MQTT Device ID w formacie `shellyplug-s-<MAC6>`, gdzie `<MAC6>` to ostatnie 6 znaków adresu MAC w szesnastkowym formacie małymi literami (np. `shellyplug-s-112233`).

Device ID można znaleźć:

- W interfejsie webowym Shelly: **Settings** → **Device Info** → **Device ID** (użyj pierwszego ciągu znaków, nie tego w nawiasach)
- Przez API: `GET http://<device-ip>/settings` → pole `mqtt.id`

### Włączenie MQTT

Aby włączyć MQTT na Shelly Plug S:

1. Otwórz interfejs webowy urządzenia w przeglądarce (przejdź pod adres IP urządzenia)
2. Przejdź do **Internet and Security** → **Advanced - Developer Settings**
3. Zaznacz **„Enable action execution via MQTT"**
4. W polu **„Server"** wpisz `{IP brokera MQTT}:{port}` (domyślny port `1883`)
5. Naciśnij **SAVE**

### Konfiguracja szablonu

Po zaimportowaniu szablonu w TapHome:

1. Otwórz moduł **Shelly Plug S MQTT**
2. Ustaw **MQTT Broker IP** i **Port** (domyślnie `1883`)
3. Ustaw zmienną **deviceID** na Device ID urządzenia Shelly Plug S (np. `112233` — tylko ostatnie 6 znaków szesnastkowych adresu MAC)

Moduł subskrybuje `shellies/#`, a skrypty listener filtrują wiadomości według skonfigurowanego prefiksu Device ID `shellyplug-s-{deviceID}`.

## Możliwości urządzenia

### Monitorowanie energii

Urządzenie Licznik energii odczytuje dwie wartości z wtyczki:

- **Całkowite zużycie** — kumulatywna energia z topicu `relay/0/energy`. Urządzenie raportuje energię w watominutach; szablon konwertuje na kWh dzieląc przez 60000.
- **Moc chwilowa** — aktualny pobór mocy z topicu `relay/0/power`. Urządzenie raportuje moc w watach; szablon konwertuje na kW dzieląc przez 1000.

Obie wartości aktualizują się zgodnie z interwałem raportowania MQTT (domyślnie 30 sekund, konfigurowalne w interfejsie webowym Shelly przez `mqtt_update_period`).

> [!TIP]
> Licznik energii resetuje się przy ponownym uruchomieniu urządzenia. Dla trwałego śledzenia energii użyj wbudowanego logowania energii w TapHome, które przechowuje wartości kumulatywne niezależnie od licznika urządzenia.

### Sterowanie przekaźnikiem

Urządzenie Przełącznik steruje przekaźnikiem wtyczki:

- **Odczyt stanu** — nasłuchuje topicu `shellies/shellyplug-s-{deviceID}/relay/0` i mapuje `on` → 1, `off` → 0
- **Zapis stanu** — publikuje na topic `shellies/shellyplug-s-{deviceID}/relay/0/command` wartość `on` lub `off`

Przekaźnik obsługuje obciążenie do 2500W / 12A.

### Monitorowanie temperatury

Atrybut serwisowy na poziomie modułu raportuje temperaturę wewnętrzną urządzenia w °C, odczytaną z topicu `shellies/shellyplug-s-{deviceID}/temperature`. Jest to temperatura elektroniki wtyczki, nie temperatura otoczenia.

### Dodatkowe możliwości

Shelly Plug S publikuje również status online/offline przez MQTT LWT topic, alerty o przegrzaniu (gdy urządzenie przekroczy bezpieczną temperaturę roboczą), czytelną klasyfikację stanu temperatury (Normal/High/Very High) oraz zdarzenia przycisku (krótkie naciśnięcie, długie naciśnięcie, podwójne naciśnięcie). Te możliwości mogą zostać dodane w przyszłej aktualizacji szablonu.

## Rozwiązywanie problemów

### Brak danych z wtyczki

1. Sprawdź, czy Shelly Plug S jest połączony z Wi-Fi i MQTT jest włączone w ustawieniach urządzenia (**Internet and Security** → **Advanced - Developer Settings**)
2. Sprawdź, czy zmienna **deviceID** dokładnie odpowiada Device ID (np. `112233`)
3. Użyj klienta MQTT (np. MQTT Explorer) do subskrypcji `shellies/#` i sprawdź, czy wtyczka publikuje wiadomości

### Wartości mocy pokazują zero

1. Upewnij się, że obciążenie jest podłączone i przekaźnik jest włączony
2. Sprawdź topic `relay/0/power` klientem MQTT — wartość powinna być niezerowa, gdy obciążenie pobiera energię
3. Sprawdź, czy urządzenie Licznik energii wyświetla wartości w TapHome — całkowite zużycie w kWh, moc w kW

### Przekaźnik nie reaguje na polecenia

1. Sprawdź, czy MQTT jest włączone i adres brokera jest poprawny w interfejsie webowym Shelly
2. Sprawdź, czy TapHome może połączyć się z brokerem MQTT (poprawny IP i port w ustawieniach modułu)
3. Przetestuj publikując `on` lub `off` na topic `shellies/shellyplug-s-{deviceID}/relay/0/command` przez klienta MQTT

> [!WARNING]
> Urządzenia Shelly Gen1 **nie** obsługują MQTT przez TLS. Komunikacja między wtyczką 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 2

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

Shelly Plug S MQTT Moduł

Atrybuty serwisowe

|             |                                                               |
|-------------|---------------------------------------------------------------|
| Temperatura | Temperatura wewnętrzna urządzenia — nie temperatura otoczenia |

Zmienne niestandardowe

|                     |                                                                                                                                                                                        |
|---------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `deviceID` (string) | MQTT Device ID urządzenia Shelly Plug S — ostatnie 6 znaków adresu MAC w szesnastkowym formacie małymi literami (do znalezienia w interfejsie webowym Shelly → Settings → Device Info) |

Nasłuchiwanie

```taphome
VAR whatT := "shellies/shellyplug-s-"+deviceID+"/temperature";
IF (whatT = RECEIVEDMSG.TOPIC)
 temperatureC := TOSTRING(RECEIVEDMSG.PAYLOAD);
END
```

Atrybuty serwisowe

Temperature \[°C ]

```taphome
temperatureC
```

Licznik energii Licznik energii Tylko do odczytu

Pomiar zużycia energii — moc chwilowa (kW) i energia kumulatywna (kWh)

numeric Jednostka: kWh (total), kW (demand) energy: Watt-minutes /60000 = kWh; demand: Watts /1000 = kW

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 whatTo := "shellies/shellyplug-s-"+deviceID+"/relay/0/energy";
IF (whatTo = RECEIVEDMSG.TOPIC)
 To := TODOUBLE(TOSTRING(RECEIVEDMSG.PAYLOAD))/60000;
END
VAR whatEd := "shellies/shellyplug-s-"+deviceID+"/relay/0/power";
IF (whatEd = RECEIVEDMSG.TOPIC)
 Ed := TODOUBLE(TOSTRING(RECEIVEDMSG.PAYLOAD))/1000;
END
```

Przełącznik Przełącznik Odczyt i zapis

string on→1, off→0 (read); 1→on, 0→off (write)

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
# Simple HTTP Request:
MQTTPUBLISH("shellies/shellyplug-s-"+deviceID+ "/relay/0/command",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






#MQTTPUBLISH(topic + "/relay/0/command",if());
```

Nasłuchiwanie

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

**Połączenie:** Packet Parser → MQTT

Możliwe ulepszenia (6)

- Connection Status — LWT topic — true on connect, false on disconnect. Could detect offline device.
- Overtemperature Alert — 1 = overheated, 0 = normal. Could trigger safety alarm when device exceeds safe operating temperature.
- Temperature Status — String: Normal, High, or Very High. Human-readable temperature classification.
- Button Input State — 0 or 1 — physical button state on the device.
- Button Input Event — JSON payload with event type (S=short, L=long, SS=double, SSS=triple) and event counter.
- Overpower State — Relay topic can report 'overpower' payload when load exceeds rating. Not parsed in listener script.

## 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 Plug S — Device-Specific MQTT API
  
  [shelly-api-docs.shelly.cloud](https://shelly-api-docs.shelly.cloud/gen1/#shelly-plug-plugs-mqtt) 2026-03-31

## 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/)

