---
title: "Shelly 1PM"
description: "Shelly 1PM Wi-Fi relé s měřením spotřeby přes MQTT v TapHome. Ovládání relé, okamžitý příkon a kumulativní spotřeba energie."
url: "https://taphome.com/cs/compatibility/shelly-1pm-mqtt/"
language: cs
lastmod: 2026-03-31
generator: hugo
ai:
  topics: ["mqtt","smart-plug","wifi","relay","power-metering"]
  questions: ["Jak integrovat Shelly 1PM s TapHome přes MQTT?","Co měří šablona Shelly 1PM MQTT v TapHome?","Jak nakonfigurovat více jednotek Shelly 1PM v jedné TapHome šabloně?","Proč Shelly 1PM MQTT nehlásí data o spotřebě?","Jak najít MQTT Device ID zařízení Shelly 1PM?","Hlásí Shelly 1PM MQTT přehřátí a přetížení v TapHome?"]
---

# Shelly 1PM

Komunikace: Packet Parser → MQTT

- [Produktová stránka Shelly 1PM](https://www.shelly.com/en/products/shop/shelly-1pm)
- [Reference MQTT API Shelly Gen1](https://shelly-api-docs.shelly.cloud/gen1/)

> Adresa v síti
> 
> U MQTT brokeru vestavěného v TapHome zadejte v TapHome jako adresu brokeru `127.0.0.1`. V zařízení zadejte IP adresu TapHome Core a jednotce Core dejte rezervaci IP v routeru.
> 
> [Příprava sítě](https://taphome.com/cs/docs/setup/network-preparation/)

## Návod na integraci

Shelly 1PM je kompaktní jednokanálový Wi-Fi reléový spínač s vestavěným měřením spotřeby. Vejde se za standardní nástěnný vypínač a dokáže ovládat jeden okruh do 16 A (3500 W při 230 V). TapHome komunikuje se zařízením přes MQTT — toto je MQTT varianta šablony Shelly 1PM, vhodná pokud preferujete lokální MQTT komunikaci před HTTP pollingem.

Šablona podporuje až 5 jednotek Shelly 1PM na jeden modul. Každá jednotka se rozlišuje vlastní proměnnou `pulgNtopic` odkazující na MQTT Client ID zařízení. Každá jednotka poskytuje reléový spínač a elektroměr.

## Konfigurace

### Device ID

Každý Shelly 1PM má unikátní MQTT Device ID ve formátu `shelly1pm-<MAC6>`, kde `<MAC6>` je posledních 6 znaků MAC adresy v hexadecimálním formátu s malými písmeny (např. `shelly1pm-112233`).

Device ID najdete:

- Na štítku zařízení (MAC adresa)
- Ve webovém rozhraní Shelly: **Settings** → **Device Info**
- Přes API: `GET http://<device-ip>/settings` → pole `mqtt.id`

> [!TIP]
> Toto zařízení podporuje **mDNS discovery**. Místo IP adresy můžete při konfiguraci TapHome použít hostname `shelly1pm-{MAC}.local`. Nahraďte `{MAC}` posledními 6 znaky MAC adresy zařízení v hexadecimálním formátu s malými písmeny (např. `shelly1pm-112233.local`). Použití hostname předchází problémům s připojením při změně IP adresy zařízení.

### Nastavení šablony

Po importu šablony v TapHome:

1. Otevřete modul **Shelly 1PM MQTT**
2. Nastavte **IP adresu MQTT brokera** a **Port** (výchozí `1883`)
3. Pro každou jednotku Shelly 1PM nastavte proměnnou `pulgNtopic` na Device ID příslušného Shelly 1PM (např. `shelly1pm-112233`)

Modul se přihlásí k odběru `shellies/#` a listener skripty filtrují zprávy podle nakonfigurovaného prefixu topicu.

> [!TIP]
> Nakonfigurujte pouze sloty, které skutečně používáte. Nenakonfigurované sloty (s výchozí hodnotou `shelly1pm-deviceidN`) nebudou odpovídat žádnému reálnému zařízení a můžete je ignorovat.

## Funkce zařízení

### Ovládání relé

Každá jednotka poskytuje v TapHome spínací zařízení. Stav relé se čte z topicu `shellies/<id>/relay/0` a ovládá se publikováním `on` nebo `off` na `shellies/<id>/relay/0/command`.

### Měření spotřeby

Každá jednotka obsahuje elektroměr, který čte dvě hodnoty:

- **Okamžitý příkon** — `shellies/<id>/relay/0/power` hlášený ve wattech, šablona ho konvertuje na kW
- **Celková spotřeba** — `shellies/<id>/relay/0/energy` hlášená ve watt-minutách, šablona ji konvertuje na kWh

Elektroměr je pouze pro čtení — aktualizuje se automaticky při každém publikování nových dat zařízením.

### Tepelný a výkonový monitoring

Každé spínací zařízení poskytuje čtyři servisní atributy:

- **Vnitřní teplota** — teplota zařízení ve °C z topicu `shellies/<id>/temperature`
- **Stav teploty** — teplotní úroveň: Normal, High nebo Very High (`shellies/<id>/temperature_status`)
- **Přehřátí** — příznak alarmu přehřátí (`shellies/<id>/overtemperature`)
- **Přetížení** — hlásí výkon zátěže (W) při detekci přetížení (`shellies/<id>/overpower_value`)

### Další funkce

Shelly 1PM také publikuje stav online/offline přes MQTT Last Will and Testament (LWT) topic, kompletní JSON status (firmware ≥1.8.0), stav fyzického vstupu a vstupní události (krátké/dvojité/trojité/dlouhé stisknutí). Tyto funkce je možné přidat v budoucí aktualizaci šablony.

## Řešení problémů

### Zařízení nehlásí data

1. Ověřte, že Shelly 1PM je připojený k Wi-Fi a MQTT je povolené v nastavení zařízení
2. Zkontrolujte, že proměnná `pulgNtopic` přesně odpovídá Device ID (např. `shelly1pm-112233`)
3. Potvrďte správnost IP adresy a portu MQTT brokera v nastavení modulu
4. Použijte MQTT klienta (např. MQTT Explorer) k odběru `shellies/#` a ověřte, že zařízení publikuje zprávy

### Měření spotřeby ukazuje nulu

1. Potvrďte, že zátěž je připojená přes relé Shelly (ne obejitá)
2. Zkontrolujte, že relé je zapnuté — elektroměr měří pouze když přes relé protéká proud
3. Přihlaste se k odběru `shellies/<id>/relay/0/power` přes MQTT klienta a ověřte, že zařízení hlásí nenulovou hodnotu

### Varování před přehřátím

Shelly 1PM má vestavěnou tepelnou ochranu. Pokud teplota zařízení překročí bezpečné limity, `temperature_status` se změní na "High" nebo "Very High" a `overtemperature` se nastaví na `true`. Zajistěte dostatečné větrání kolem zařízení, zejména při spínání velkých zátěží.

> [!WARNING]
> Zařízení Shelly Gen1 **nepodporují** MQTT přes TLS. Komunikace mezi zařízením a MQTT brokerem je nešifrovaná (plain MQTT, port 1883). Ujistěte se, že MQTT broker je v důvěryhodné lokální síti.

## Jak nainstalovat v TapHome

### Předpoklady

- Zařízení Shelly připojené k Wi-Fi (2,4 GHz), např. přes aplikaci Shelly nebo vlastní přístupový bod zařízení
- MQTT broker běžící ve vaší lokální síti (např. Mosquitto, Home Assistant nebo vestavěný broker TapHome)
- TapHome CCU ve stejné síti jako broker

> [!WARNING]
> Na zařízeních **Gen1** povolení MQTT **vypne Shelly Cloud**. Obojí nemůže běžet současně. Na zařízeních Gen2/Plus toto omezení neplatí.

### Krok 1 — Povolte MQTT na zařízení Shelly

#### Zařízení Gen1 (Shelly 1, 1PM, 2.5, EM, 3EM, Plug S, RGBW2, Dimmer, TRV…)

1. Otevřete webové rozhraní Shelly: `http://<device-ip>/`
2. Přejděte na **Internet & Security** → **Advanced — MQTT**
3. Povolte **MQTT**
4. Nastavte **MQTT Server**: `<broker-ip>:<port>` (např. `192.168.1.10:1883`)
5. Volitelně nastavte **MQTT User** a **MQTT Password**, pokud váš broker vyžaduje autentifikaci
6. Klikněte na **Save** — zařízení se restartuje a připojí k brokeru

#### Zařízení Gen2 / Plus (Shelly Plus 1, Plus 1PM, Plus 2PM, Plus Plug S, Plus H&T, Pro 3EM…)

1. Otevřete webové rozhraní Shelly: `http://<device-ip>/`
2. Přejděte na **Settings** → **MQTT**
3. Povolte **MQTT**
4. Nastavte **Server**: `<broker-ip>:<port>` (např. `192.168.1.10:1883`)
5. **Client ID** je předvyplněné ID zařízení (např. `shellyplus1pm-AABBCCDDEE`) — ponechte tak, pokud nemáte konkrétní důvod ke změně
6. Klikněte na **Save** a restartujte zařízení

U vestavěného brokeru TapHome je `<broker-ip>` IP adresa TapHome Core. Dejte jednotce Core rezervaci IP v routeru, jinak zařízení ztratí broker, když router adresu změní → [Příprava sítě](https://taphome.com/cs/docs/setup/network-preparation/).

> [!TIP]
> Pro ověření funkčnosti MQTT použijte MQTT klienta (např. MQTT Explorer) a přihlaste se k odběru `shellies/#` (Gen1) nebo `<device-id>/#` (Gen2). Měli byste vidět stavové zprávy ze zařízení.

### Krok 2 — Zjistěte Device ID / MQTT Client ID

Některé šablony vyžadují parametr **Device ID** nebo **MQTT Client ID**. Jde o jedinečný identifikátor používaný v MQTT topicích.

- **Gen1:** nachází se na štítku jako MAC adresa (např. `AABBCCDDEE`). Device ID = `shelly<model>-<mac>`, např. `shelly1pm-AABBCCDDEE`
- **Gen2/Plus:** nachází se ve webovém rozhraní Shelly v části **Settings** → **Device Info** → **Device ID**, nebo na štítku zařízení

### Krok 3 — Konfigurace v TapHome

1. V TapHome přidejte nový modul **Packet Parser (MQTT)**
2. **IP Address:** pro vestavěný broker TapHome `127.0.0.1` (jednotka se připojuje sama k sobě, adresa se nikdy nezmění); pro externí broker jeho IP adresa (např. `192.168.1.10`)
3. **Port:** `1883` (výchozí; pro TLS použijte `8883`)
4. **Device ID / MQTT Client ID:** zadejte hodnotu z kroku 2 (pokud to šablona vyžaduje)
5. Importujte šablonu — TapHome se automaticky přihlásí k odběru topiců zařízení

## Dostupná zařízení 10

Tato zařízení se po importu zobrazí v TapHome.

Shelly 1PM MQTT Modul

Vlastní proměnné

`pulg1topic` (string) = shelly1pm-deviceid1 MQTT device ID první jednotky Shelly 1PM — formát je 'shelly1pm-DEVICEID' (Device ID najdete ve webovém rozhraní Shelly → Settings → Device Info)

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

`pulg2topic` (string) = shelly1pm-deviceid2 MQTT device ID druhé jednotky Shelly 1PM 

`pulg3topic` (string) = shelly1pm-deviceid3 MQTT device ID třetí jednotky Shelly 1PM 

`pulg4topic` (string) = shelly1pm-deviceid4 MQTT device ID čtvrté jednotky Shelly 1PM 

`pulg5topic` (string) = shelly1pm-deviceid5 MQTT device ID páté jednotky Shelly 1PM

Elektroměr 1 Elektroměr Pouze ke čtení

Okamžitý příkon (kW) a kumulativní energie (kWh) pro jednotku Shelly 1PM 1

numeric Jednotka: kW / kWh

Listener

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

Spínač 1 Přepínač Čtení i zápis

Ovládání relé pro jednotku Shelly 1PM 1 — spínání on/off s tepelným a výkonovým monitoringem

boolean

Hodnoty / Stavy: ON · OFF

Zápis stavu přepínače

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

Listener

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

Servisní atributy

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");
```

Elektroměr 2 Elektroměr Pouze ke čtení

Okamžitý příkon (kW) a kumulativní energie (kWh) pro jednotku Shelly 1PM 2

numeric Jednotka: kW / kWh

Listener

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

Spínač 2 Přepínač Čtení i zápis

Ovládání relé pro jednotku Shelly 1PM 2 — spínání on/off s tepelným a výkonovým monitoringem

boolean

Hodnoty / Stavy: ON · OFF

Zápis stavu přepínače

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

Listener

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

Servisní atributy

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");
```

Elektroměr 3 Elektroměr Pouze ke čtení

Okamžitý příkon (kW) a kumulativní energie (kWh) pro jednotku Shelly 1PM 3

numeric Jednotka: kW / kWh

Listener

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

Spínač 3 Přepínač Čtení i zápis

Ovládání relé pro jednotku Shelly 1PM 3 — spínání on/off s tepelným a výkonovým monitoringem

boolean

Hodnoty / Stavy: ON · OFF

Zápis stavu přepínače

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

Listener

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

Servisní atributy

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");
```

Elektroměr 4 Elektroměr Pouze ke čtení

Okamžitý příkon (kW) a kumulativní energie (kWh) pro jednotku Shelly 1PM 4

numeric Jednotka: kW / kWh

Listener

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

Spínač 4 Přepínač Čtení i zápis

Ovládání relé pro jednotku Shelly 1PM 4 — spínání on/off s tepelným a výkonovým monitoringem

boolean

Hodnoty / Stavy: ON · OFF

Zápis stavu přepínače

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

Listener

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

Servisní atributy

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");
```

Elektroměr 5 Elektroměr Pouze ke čtení

Okamžitý příkon (kW) a kumulativní energie (kWh) pro jednotku Shelly 1PM 5

numeric Jednotka: kW / kWh

Listener

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

Spínač 5 Přepínač Čtení i zápis

Ovládání relé pro jednotku Shelly 1PM 5 — spínání on/off s tepelným a výkonovým monitoringem

boolean

Hodnoty / Stavy: ON · OFF

Zápis stavu přepínače

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

Listener

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

Servisní atributy

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");
```

**Připojení:** Packet Parser → MQTT • Hostname: `shelly1pm-{MAC}.local`

Možná vylepšení (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

Tyto hodnoty zadáte při importu XML.

| Ptá se v aplikaci     | Výchozí       |
|-----------------------|---------------|
| Mqtt Broker IP adresa | `192.168.0.1` |
| Mqtt Broker port      | `1883`        |

## Zdroje

- 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

## Související dokumentace

- [MQTT Integration](https://taphome.com/cs/compatibility/mqtt-guide/)
- [Packet Parser (HTTP, TCP, UDP, FTP, MQTT)](https://taphome.com/cs/docs/integration/packet-parser/)
- [Funkce Packet parser](https://taphome.com/cs/docs/script/packet-parser/)
- [Funkce pro parsování](https://taphome.com/cs/docs/script/parsing-functions/)
- [Broker MQTT](https://taphome.com/cs/docs/integration/packet-parser/mqtt-broker/)
- [Listener skripty](https://taphome.com/cs/docs/script/listener-scripts/)

