---
title: "Shelly 1PM"
description: "Shelly 1PM jednokanałowy przekaźnik Wi-Fi z pomiarem mocy przez MQTT z TapHome. Sterowanie przekaźnikiem, moc w czasie rzeczywistym i energia kumulatywna."
url: "https://taphome.com/pl/compatibility/shelly-1pm-mqtt/"
language: pl
lastmod: 2026-03-31
generator: hugo
ai:
  topics: ["mqtt","smart-plug","wifi","relay","power-metering"]
  questions: ["Jak zintegrować Shelly 1PM z TapHome przez MQTT?","Co mierzy szablon Shelly 1PM MQTT w TapHome?","Jak skonfigurować wiele jednostek Shelly 1PM w jednym szablonie TapHome?","Dlaczego mój Shelly 1PM MQTT nie raportuje danych o mocy?","Jak znaleźć MQTT Device ID urządzenia Shelly 1PM?","Czy Shelly 1PM MQTT zgłasza przegrzanie i przeciążenie w TapHome?"]
---

# Shelly 1PM

Komunikacja: Packet Parser → MQTT

- [Strona produktu Shelly 1PM](https://www.shelly.com/en/products/shop/shelly-1pm)
- [Dokumentacja MQTT API Shelly Gen1](https://shelly-api-docs.shelly.cloud/gen1/)

> 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 1PM to kompaktowy jednokanałowy przekaźnik Wi-Fi z wbudowanym pomiarem mocy. Mieści się za standardowym włącznikiem ściennym i może sterować jednym obwodem do 16 A (3500 W przy 230 V). TapHome komunikuje się z urządzeniem przez MQTT — to jest wariant MQTT szablonu Shelly 1PM, odpowiedni gdy preferujesz lokalną komunikację MQTT zamiast HTTP pollingu.

Szablon obsługuje do 5 jednostek Shelly 1PM na moduł. Każda jednostka jest rozróżniana przez zmienną `pulgNtopic` wskazującą na MQTT Client ID urządzenia. Każda jednostka udostępnia przełącznik przekaźnikowy i licznik energii.

## Konfiguracja

### Device ID

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

Device ID można znaleźć:

- Na etykiecie urządzenia (adres MAC)
- W interfejsie webowym Shelly: **Settings** → **Device Info**
- Przez API: `GET http://<device-ip>/settings` → pole `mqtt.id`

> [!TIP]
> To urządzenie obsługuje **mDNS discovery**. Zamiast adresu IP możesz użyć hostname `shelly1pm-{MAC}.local` podczas konfiguracji TapHome. Zastąp `{MAC}` ostatnimi 6 znakami adresu MAC urządzenia w szesnastkowym formacie małymi literami (np. `shelly1pm-112233.local`). Użycie hostname zapobiega problemom z połączeniem przy zmianie adresu IP urządzenia.

### Konfiguracja szablonu

Po zaimportowaniu szablonu w TapHome:

1. Otwórz moduł **Shelly 1PM MQTT**
2. Ustaw **IP brokera MQTT** i **Port** (domyślnie `1883`)
3. Dla każdej jednostki Shelly 1PM ustaw zmienną `pulgNtopic` na Device ID odpowiedniego Shelly 1PM (np. `shelly1pm-112233`)

Moduł subskrybuje `shellies/#`, a skrypty listener filtrują wiadomości według skonfigurowanego prefiksu topiku.

> [!TIP]
> Skonfiguruj tylko sloty, których faktycznie używasz. Nieskonfigurowane sloty (z domyślną wartością `shelly1pm-deviceidN`) nie będą pasować do żadnego rzeczywistego urządzenia i można je zignorować.

## Funkcje urządzenia

### Sterowanie przekaźnikiem

Każda jednostka udostępnia urządzenie przełączające w TapHome. Stan przekaźnika jest odczytywany z topiku `shellies/<id>/relay/0` i sterowany przez publikowanie `on` lub `off` na `shellies/<id>/relay/0/command`.

### Pomiar mocy

Każda jednostka zawiera licznik energii odczytujący dwie wartości:

- **Moc w czasie rzeczywistym** — `shellies/<id>/relay/0/power` raportowana w watach, konwertowana na kW przez szablon
- **Całkowite zużycie** — `shellies/<id>/relay/0/energy` raportowane w wat-minutach, konwertowane na kWh przez szablon

Licznik jest tylko do odczytu — aktualizuje się automatycznie, gdy urządzenie publikuje nowe dane.

### Monitoring termiczny i przeciążeniowy

Każde urządzenie przełączające udostępnia cztery atrybuty serwisowe:

- **Temperatura wewnętrzna** — temperatura urządzenia w °C z topiku `shellies/<id>/temperature`
- **Status temperatury** — poziom termiczny: Normal, High lub Very High (`shellies/<id>/temperature_status`)
- **Przegrzanie** — flaga alarmu przegrzania (`shellies/<id>/overtemperature`)
- **Przeciążenie** — raportuje moc obciążenia (W) po wykryciu przeciążenia (`shellies/<id>/overpower_value`)

### Dodatkowe funkcje

Shelly 1PM publikuje również status online/offline przez MQTT Last Will and Testament (LWT) topik, kompletną wiadomość statusu JSON (firmware ≥1.8.0), stan fizycznego wejścia i zdarzenia wejściowe (krótkie/podwójne/potrójne/długie naciśnięcie). Te funkcje mogą zostać dodane w przyszłej aktualizacji szablonu.

## Rozwiązywanie problemów

### Urządzenie nie raportuje danych

1. Sprawdź, czy Shelly 1PM jest połączony z Wi-Fi i MQTT jest włączone w ustawieniach urządzenia
2. Sprawdź, czy zmienna `pulgNtopic` dokładnie odpowiada Device ID (np. `shelly1pm-112233`)
3. Potwierdź poprawność adresu IP i portu brokera MQTT w ustawieniach modułu
4. Użyj klienta MQTT (np. MQTT Explorer) do subskrypcji `shellies/#` i sprawdź, czy urządzenie publikuje wiadomości

### Pomiar mocy pokazuje zero

1. Potwierdź, że obciążenie jest podłączone przez przekaźnik Shelly (nie ominięte)
2. Sprawdź, czy przekaźnik jest włączony — licznik mierzy tylko gdy prąd płynie przez przekaźnik
3. Subskrybuj `shellies/<id>/relay/0/power` za pomocą klienta MQTT i sprawdź, czy urządzenie raportuje wartość niezerową

### Ostrzeżenie o przegrzaniu

Shelly 1PM posiada wbudowaną ochronę termiczną. Gdy temperatura urządzenia przekroczy bezpieczne limity, `temperature_status` zmienia się na "High" lub "Very High", a `overtemperature` ustawia się na `true`. Zapewnij odpowiednią wentylację wokół urządzenia, szczególnie przy przełączaniu dużych obciążeń.

> [!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 10

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

Shelly 1PM MQTT Moduł

Zmienne niestandardowe

`pulg1topic` (string) = shelly1pm-deviceid1 MQTT device ID pierwszej jednostki Shelly 1PM — format to 'shelly1pm-DEVICEID' (Device ID do znalezienia w interfejsie webowym Shelly → Settings → Device Info)

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

`pulg2topic` (string) = shelly1pm-deviceid2 MQTT device ID drugiej jednostki Shelly 1PM 

`pulg3topic` (string) = shelly1pm-deviceid3 MQTT device ID trzeciej jednostki Shelly 1PM 

`pulg4topic` (string) = shelly1pm-deviceid4 MQTT device ID czwartej jednostki Shelly 1PM 

`pulg5topic` (string) = shelly1pm-deviceid5 MQTT device ID piątej jednostki Shelly 1PM

Licznik energii 1 Licznik energii Tylko do odczytu

Moc w czasie rzeczywistym (kW) i energia kumulatywna (kWh) dla jednostki Shelly 1PM 1

numeric Jednostka: kW / kWh

Nasłuchiwanie

```taphome
IF(INDEXOF(pulg1topic, "shelly1pm-deviceid") = 0)
    ADDERROR("Set correct 'pulg1topic' value in module variables. Topic format is 'shelly1pm-<deviceid>'. The Device ID can be found by opening url 'http://shellyIpAddress', in Settings -> Device info.");
    RETURN(-1);
END

IF(INDEXOF(RECEIVEDMSG.TOPIC, "shellies/" + pulg1topic + "/relay/0/") != 0)
    RETURN(0);
END

IF(RECEIVEDMSG.TOPIC = "shellies/" + pulg1topic + "/relay/0/power")
    VAR valueP := TOSTRING(RECEIVEDMSG.PAYLOAD);

    Ed := IF(ISNULL(valueP), NaN, TODOUBLE(valueP) / 1000.0);
ELSEIF(RECEIVEDMSG.TOPIC = "shellies/" + pulg1topic + "/relay/0/energy")
    VAR valueE := TOSTRING(RECEIVEDMSG.PAYLOAD);

    To := IF(ISNULL(valueE), NaN, TODOUBLE(valueE) / 60000.0);
END
```

Przełącznik 1 Przełącznik Odczyt i zapis

Sterowanie przekaźnikiem dla jednostki Shelly 1PM 1 — przełączanie on/off z monitoringiem termicznym i przeciążeniowym

boolean

Wartości / Stany: ON · OFF

Zapis stanu przełącznika

```taphome
VAR value := IF(St = 1, "on", "off");
MQTTPUBLISH("shellies/" + pulg1topic + "/relay/0/command", value);
```

Nasłuchiwanie

```taphome
IF(INDEXOF(pulg1topic, "shelly1pm-deviceid") = 0)
    ADDERROR("Set correct 'pulg1topic' value in module variables. Topic format is 'shelly1pm-<deviceid>'. The Device ID can be found by opening url 'http://shellyIpAddress', in Settings -> Device info.");
    RETURN(-1);
END

IF(INDEXOF(RECEIVEDMSG.TOPIC, "shellies/" + pulg1topic) != 0)
    RETURN(0);
END

IF(RECEIVEDMSG.TOPIC = "shellies/" + pulg1topic + "/relay/0")
    VAR value := TOSTRING(RECEIVEDMSG.PAYLOAD);
    
    IF(value = "on")
        St := 1;
    ELSEIF(value = "off")
        St := 0;
    ELSE
        ADDERROR("Unknown switch state");
    END
ELSEIF(RECEIVEDMSG.TOPIC = "shellies/" + pulg1topic + "/temperature")
    internalTemp := TOSTRING(RECEIVEDMSG.PAYLOAD);
ELSEIF(RECEIVEDMSG.TOPIC = "shellies/" + pulg1topic + "/overtemperature")
    overTemp := TOSTRING(RECEIVEDMSG.PAYLOAD);
ELSEIF(RECEIVEDMSG.TOPIC = "shellies/" + pulg1topic + "/temperature_status")
    tempStatus := TOSTRING(RECEIVEDMSG.PAYLOAD);
ELSEIF(RECEIVEDMSG.TOPIC = "shellies/" + pulg1topic + "/overpower_value")
    overPower := TOSTRING(RECEIVEDMSG.PAYLOAD);
END
```

Atrybuty serwisowe

Internal temperature

```taphome
IF(LENGTH(internalTemp) = 0, "Unknown", internalTemp + "°C");
```

Overheated

```taphome
IF(LENGTH(overTemp) = 0, "Unknown", IF(overtemp = 0, "No", "Yes"));
```

Temperature status

```taphome
IF(LENGTH(tempStatus) = 0, "Unknown", tempStatus);
```

Overpower

```taphome
IF(LENGTH(overPower) = 0, "0W", overPower + "W");
```

Licznik energii 2 Licznik energii Tylko do odczytu

Moc w czasie rzeczywistym (kW) i energia kumulatywna (kWh) dla jednostki Shelly 1PM 2

numeric Jednostka: kW / kWh

Nasłuchiwanie

```taphome
IF(INDEXOF(pulg2topic, "shelly1pm-deviceid") = 0)
    ADDERROR("Set correct 'pulg2topic' value in module variables. Topic format is 'shelly1pm-<deviceid>'. The Device ID can be found by opening url 'http://shellyIpAddress', in Settings -> Device info.");
    RETURN(-1);
END

IF(INDEXOF(RECEIVEDMSG.TOPIC, "shellies/" + pulg2topic + "/relay/0/") != 0)
    RETURN(0);
END

IF(RECEIVEDMSG.TOPIC = "shellies/" + pulg2topic + "/relay/0/power")
    VAR valueP := TOSTRING(RECEIVEDMSG.PAYLOAD);

    Ed := IF(ISNULL(valueP), NaN, TODOUBLE(valueP) / 1000.0);
ELSEIF(RECEIVEDMSG.TOPIC = "shellies/" + pulg2topic + "/relay/0/energy")
    VAR valueE := TOSTRING(RECEIVEDMSG.PAYLOAD);

    To := IF(ISNULL(valueE), NaN, TODOUBLE(valueE) / 60000.0);
END
```

Przełącznik 2 Przełącznik Odczyt i zapis

Sterowanie przekaźnikiem dla jednostki Shelly 1PM 2 — przełączanie on/off z monitoringiem termicznym i przeciążeniowym

boolean

Wartości / Stany: ON · OFF

Zapis stanu przełącznika

```taphome
VAR value := IF(St = 1, "on", "off");
MQTTPUBLISH("shellies/" + pulg2topic + "/relay/0/command", value);
```

Nasłuchiwanie

```taphome
IF(INDEXOF(pulg2topic, "shelly1pm-deviceid") = 0)
    ADDERROR("Set correct 'pulg2topic' value in module variables. Topic format is 'shelly1pm-<deviceid>'. The Device ID can be found by opening url 'http://shellyIpAddress', in Settings -> Device info.");
    RETURN(-1);
END

IF(INDEXOF(RECEIVEDMSG.TOPIC, "shellies/" + pulg2topic) != 0)
    RETURN(0);
END

IF(RECEIVEDMSG.TOPIC = "shellies/" + pulg2topic + "/relay/0")
    VAR value := TOSTRING(RECEIVEDMSG.PAYLOAD);
    
    IF(value = "on")
        St := 1;
    ELSEIF(value = "off")
        St := 0;
    ELSE
        ADDERROR("Unknown switch state");
    END
ELSEIF(RECEIVEDMSG.TOPIC = "shellies/" + pulg2topic + "/temperature")
    internalTemp := TOSTRING(RECEIVEDMSG.PAYLOAD);
ELSEIF(RECEIVEDMSG.TOPIC = "shellies/" + pulg2topic + "/overtemperature")
    overTemp := TOSTRING(RECEIVEDMSG.PAYLOAD);
ELSEIF(RECEIVEDMSG.TOPIC = "shellies/" + pulg2topic + "/temperature_status")
    tempStatus := TOSTRING(RECEIVEDMSG.PAYLOAD);
ELSEIF(RECEIVEDMSG.TOPIC = "shellies/" + pulg2topic + "/overpower_value")
    overPower := TOSTRING(RECEIVEDMSG.PAYLOAD);
END
```

Atrybuty serwisowe

Internal temperature

```taphome
IF(LENGTH(internalTemp) = 0, "Unknown", internalTemp + "°C");
```

Overheated

```taphome
IF(LENGTH(overTemp) = 0, "Unknown", IF(overtemp = 0, "No", "Yes"));
```

Temperature status

```taphome
IF(LENGTH(tempStatus) = 0, "Unknown", tempStatus);
```

Overpower

```taphome
IF(LENGTH(overPower) = 0, "0W", overPower + "W");
```

Licznik energii 3 Licznik energii Tylko do odczytu

Moc w czasie rzeczywistym (kW) i energia kumulatywna (kWh) dla jednostki Shelly 1PM 3

numeric Jednostka: kW / kWh

Nasłuchiwanie

```taphome
IF(INDEXOF(pulg3topic, "shelly1pm-deviceid") = 0)
    ADDERROR("Set correct 'pulg3topic' value in module variables. Topic format is 'shelly1pm-<deviceid>'. The Device ID can be found by opening url 'http://shellyIpAddress', in Settings -> Device info.");
    RETURN(-1);
END

IF(INDEXOF(RECEIVEDMSG.TOPIC, "shellies/" + pulg3topic + "/relay/0/") != 0)
    RETURN(0);
END

IF(RECEIVEDMSG.TOPIC = "shellies/" + pulg3topic + "/relay/0/power")
    VAR valueP := TOSTRING(RECEIVEDMSG.PAYLOAD);

    Ed := IF(ISNULL(valueP), NaN, TODOUBLE(valueP) / 1000.0);
ELSEIF(RECEIVEDMSG.TOPIC = "shellies/" + pulg3topic + "/relay/0/energy")
    VAR valueE := TOSTRING(RECEIVEDMSG.PAYLOAD);

    To := IF(ISNULL(valueE), NaN, TODOUBLE(valueE) / 60000.0);
END
```

Przełącznik 3 Przełącznik Odczyt i zapis

Sterowanie przekaźnikiem dla jednostki Shelly 1PM 3 — przełączanie on/off z monitoringiem termicznym i przeciążeniowym

boolean

Wartości / Stany: ON · OFF

Zapis stanu przełącznika

```taphome
VAR value := IF(St = 1, "on", "off");
MQTTPUBLISH("shellies/" + pulg3topic + "/relay/0/command", value);
```

Nasłuchiwanie

```taphome
IF(INDEXOF(pulg3topic, "shelly1pm-deviceid") = 0)
    ADDERROR("Set correct 'pulg3topic' value in module variables. Topic format is 'shelly1pm-<deviceid>'. The Device ID can be found by opening url 'http://shellyIpAddress', in Settings -> Device info.");
    RETURN(-1);
END

IF(INDEXOF(RECEIVEDMSG.TOPIC, "shellies/" + pulg3topic) != 0)
    RETURN(0);
END

IF(RECEIVEDMSG.TOPIC = "shellies/" + pulg3topic + "/relay/0")
    VAR value := TOSTRING(RECEIVEDMSG.PAYLOAD);
    
    IF(value = "on")
        St := 1;
    ELSEIF(value = "off")
        St := 0;
    ELSE
        ADDERROR("Unknown switch state");
    END
ELSEIF(RECEIVEDMSG.TOPIC = "shellies/" + pulg3topic + "/temperature")
    internalTemp := TOSTRING(RECEIVEDMSG.PAYLOAD);
ELSEIF(RECEIVEDMSG.TOPIC = "shellies/" + pulg3topic + "/overtemperature")
    overTemp := TOSTRING(RECEIVEDMSG.PAYLOAD);
ELSEIF(RECEIVEDMSG.TOPIC = "shellies/" + pulg3topic + "/temperature_status")
    tempStatus := TOSTRING(RECEIVEDMSG.PAYLOAD);
ELSEIF(RECEIVEDMSG.TOPIC = "shellies/" + pulg3topic + "/overpower_value")
    overPower := TOSTRING(RECEIVEDMSG.PAYLOAD);
END
```

Atrybuty serwisowe

Internal temperature

```taphome
IF(LENGTH(internalTemp) = 0, "Unknown", internalTemp + "°C");
```

Overheated

```taphome
IF(LENGTH(overTemp) = 0, "Unknown", IF(overtemp = 0, "No", "Yes"));
```

Temperature status

```taphome
IF(LENGTH(tempStatus) = 0, "Unknown", tempStatus);
```

Overpower

```taphome
IF(LENGTH(overPower) = 0, "0W", overPower + "W");
```

Licznik energii 4 Licznik energii Tylko do odczytu

Moc w czasie rzeczywistym (kW) i energia kumulatywna (kWh) dla jednostki Shelly 1PM 4

numeric Jednostka: kW / kWh

Nasłuchiwanie

```taphome
IF(INDEXOF(pulg4topic, "shelly1pm-deviceid") = 0)
    ADDERROR("Set correct 'pulg4topic' value in module variables. Topic format is 'shelly1pm-<deviceid>'. The Device ID can be found by opening url 'http://shellyIpAddress', in Settings -> Device info.");
    RETURN(-1);
END

IF(INDEXOF(RECEIVEDMSG.TOPIC, "shellies/" + pulg4topic + "/relay/0/") != 0)
    RETURN(0);
END

IF(RECEIVEDMSG.TOPIC = "shellies/" + pulg4topic + "/relay/0/power")
    VAR valueP := TOSTRING(RECEIVEDMSG.PAYLOAD);

    Ed := IF(ISNULL(valueP), NaN, TODOUBLE(valueP) / 1000.0);
ELSEIF(RECEIVEDMSG.TOPIC = "shellies/" + pulg4topic + "/relay/0/energy")
    VAR valueE := TOSTRING(RECEIVEDMSG.PAYLOAD);

    To := IF(ISNULL(valueE), NaN, TODOUBLE(valueE) / 60000.0);
END
```

Przełącznik 4 Przełącznik Odczyt i zapis

Sterowanie przekaźnikiem dla jednostki Shelly 1PM 4 — przełączanie on/off z monitoringiem termicznym i przeciążeniowym

boolean

Wartości / Stany: ON · OFF

Zapis stanu przełącznika

```taphome
VAR value := IF(St = 1, "on", "off");
MQTTPUBLISH("shellies/" + pulg4topic + "/relay/0/command", value);
```

Nasłuchiwanie

```taphome
IF(INDEXOF(pulg4topic, "shelly1pm-deviceid") = 0)
    ADDERROR("Set correct 'pulg4topic' value in module variables. Topic format is 'shelly1pm-<deviceid>'. The Device ID can be found by opening url 'http://shellyIpAddress', in Settings -> Device info.");
    RETURN(-1);
END

IF(INDEXOF(RECEIVEDMSG.TOPIC, "shellies/" + pulg4topic) != 0)
    RETURN(0);
END

IF(RECEIVEDMSG.TOPIC = "shellies/" + pulg4topic + "/relay/0")
    VAR value := TOSTRING(RECEIVEDMSG.PAYLOAD);
    
    IF(value = "on")
        St := 1;
    ELSEIF(value = "off")
        St := 0;
    ELSE
        ADDERROR("Unknown switch state");
    END
ELSEIF(RECEIVEDMSG.TOPIC = "shellies/" + pulg4topic + "/temperature")
    internalTemp := TOSTRING(RECEIVEDMSG.PAYLOAD);
ELSEIF(RECEIVEDMSG.TOPIC = "shellies/" + pulg4topic + "/overtemperature")
    overTemp := TOSTRING(RECEIVEDMSG.PAYLOAD);
ELSEIF(RECEIVEDMSG.TOPIC = "shellies/" + pulg4topic + "/temperature_status")
    tempStatus := TOSTRING(RECEIVEDMSG.PAYLOAD);
ELSEIF(RECEIVEDMSG.TOPIC = "shellies/" + pulg4topic + "/overpower_value")
    overPower := TOSTRING(RECEIVEDMSG.PAYLOAD);
END
```

Atrybuty serwisowe

Internal temperature

```taphome
IF(LENGTH(internalTemp) = 0, "Unknown", internalTemp + "°C");
```

Overheated

```taphome
IF(LENGTH(overTemp) = 0, "Unknown", IF(overtemp = 0, "No", "Yes"));
```

Temperature status

```taphome
IF(LENGTH(tempStatus) = 0, "Unknown", tempStatus);
```

Overpower

```taphome
IF(LENGTH(overPower) = 0, "0W", overPower + "W");
```

Licznik energii 5 Licznik energii Tylko do odczytu

Moc w czasie rzeczywistym (kW) i energia kumulatywna (kWh) dla jednostki Shelly 1PM 5

numeric Jednostka: kW / kWh

Nasłuchiwanie

```taphome
IF(INDEXOF(pulg5topic, "shelly1pm-deviceid") = 0)
    ADDERROR("Set correct 'pulg5topic' value in module variables. Topic format is 'shelly1pm-<deviceid>'. The Device ID can be found by opening url 'http://shellyIpAddress', in Settings -> Device info.");
    RETURN(-1);
END

IF(INDEXOF(RECEIVEDMSG.TOPIC, "shellies/" + pulg5topic + "/relay/0/") != 0)
    RETURN(0);
END

IF(RECEIVEDMSG.TOPIC = "shellies/" + pulg5topic + "/relay/0/power")
    VAR valueP := TOSTRING(RECEIVEDMSG.PAYLOAD);

    Ed := IF(ISNULL(valueP), NaN, TODOUBLE(valueP) / 1000.0);
ELSEIF(RECEIVEDMSG.TOPIC = "shellies/" + pulg5topic + "/relay/0/energy")
    VAR valueE := TOSTRING(RECEIVEDMSG.PAYLOAD);

    To := IF(ISNULL(valueE), NaN, TODOUBLE(valueE) / 60000.0);
END
```

Przełącznik 5 Przełącznik Odczyt i zapis

Sterowanie przekaźnikiem dla jednostki Shelly 1PM 5 — przełączanie on/off z monitoringiem termicznym i przeciążeniowym

boolean

Wartości / Stany: ON · OFF

Zapis stanu przełącznika

```taphome
VAR value := IF(St = 1, "on", "off");
MQTTPUBLISH("shellies/" + pulg5topic + "/relay/0/command", value);
```

Nasłuchiwanie

```taphome
IF(INDEXOF(pulg5topic, "shelly1pm-deviceid") = 0)
    ADDERROR("Set correct 'pulg5topic' value in module variables. Topic format is 'shelly1pm-<deviceid>'. The Device ID can be found by opening url 'http://shellyIpAddress', in Settings -> Device info.");
    RETURN(-1);
END

IF(INDEXOF(RECEIVEDMSG.TOPIC, "shellies/" + pulg5topic) != 0)
    RETURN(0);
END

IF(RECEIVEDMSG.TOPIC = "shellies/" + pulg5topic + "/relay/0")
    VAR value := TOSTRING(RECEIVEDMSG.PAYLOAD);
    
    IF(value = "on")
        St := 1;
    ELSEIF(value = "off")
        St := 0;
    ELSE
        ADDERROR("Unknown switch state");
    END
ELSEIF(RECEIVEDMSG.TOPIC = "shellies/" + pulg5topic + "/temperature")
    internalTemp := TOSTRING(RECEIVEDMSG.PAYLOAD);
ELSEIF(RECEIVEDMSG.TOPIC = "shellies/" + pulg5topic + "/overtemperature")
    overTemp := TOSTRING(RECEIVEDMSG.PAYLOAD);
ELSEIF(RECEIVEDMSG.TOPIC = "shellies/" + pulg5topic + "/temperature_status")
    tempStatus := TOSTRING(RECEIVEDMSG.PAYLOAD);
ELSEIF(RECEIVEDMSG.TOPIC = "shellies/" + pulg5topic + "/overpower_value")
    overPower := TOSTRING(RECEIVEDMSG.PAYLOAD);
END
```

Atrybuty serwisowe

Internal temperature

```taphome
IF(LENGTH(internalTemp) = 0, "Unknown", internalTemp + "°C");
```

Overheated

```taphome
IF(LENGTH(overTemp) = 0, "Unknown", IF(overtemp = 0, "No", "Yes"));
```

Temperature status

```taphome
IF(LENGTH(tempStatus) = 0, "Unknown", tempStatus);
```

Overpower

```taphome
IF(LENGTH(overPower) = 0, "0W", overPower + "W");
```

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

Możliwe ulepszenia (5)

- Connection Status — LWT topic — true on connect, false on disconnect. Could detect offline units.
- Full Status JSON — Complete /status as JSON (fw ≥1.8.0). Could parse wifi\_sta.rssi, uptime, has\_update.
- Input State — Physical input state (0/1). Shelly 1PM has one input — could be used for detached switch scenarios.
- Input Event — JSON with event type (S=short, SS=double, SSS=triple, L=long) and event\_cnt. Useful for button automation.
- Internal Temperature (Fahrenheit) — Same as temperature topic but in Fahrenheit. Redundant — Celsius already implemented via service attribute.

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

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

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

