---
title: "Shelly 2PM Gen3"
description: "Shelly 2PM Gen3 přes lokální HTTP RPC API: dva spínače s měřením výkonu, nebo v profilu cover roleta a žaluzie s náklonem lamel. Bez cloudu."
url: "https://taphome.com/cs/compatibility/shelly-2pm-gen3/"
language: cs
lastmod: 2026-03-29
generator: hugo
ai:
  topics: ["http","electric-meter","wifi","relay","power-metering","cover","blind","mdns","profile"]
  questions: ["Jak integrovat Shelly 2PM Gen3 s TapHome?","Jaký je rozdíl mezi profilem switch a cover na Shelly 2PM Gen3?","Jak ovládat motorizovanou žaluzii pomocí Shelly 2PM Gen3 a TapHome?","Jak přepnout mezi režimem relé a rolety na Shelly 2PM Gen3?","Proč šablona Shelly 2PM Gen3 ukazuje chybu profilu v TapHome?","Jak kalibrovat Shelly 2PM Gen3 roletu pro ovládání polohy?"]
---

# Shelly 2PM Gen3

Komunikace: Packet Parser → HTTP

- [Produktová stránka Shelly 2PM Gen3](https://www.shelly.com/en/products/shop/shelly-2-pm-gen3)

> Adresa v síti
> 
> TapHome komunikuje se zařízením na adrese zadané při importu. Dejte zařízení stálou adresu — rezervaci IP v routeru, nebo jeho mDNS jméno, pokud ho podporuje —, jinak integrace přestane fungovat, když router adresu změní.
> 
> [Příprava sítě](https://taphome.com/cs/docs/setup/network-preparation/)

## Návod na integraci

Shelly 2PM Gen3 je kompaktní dvoukanálový Wi-Fi reléový modul s vestavěným měřením výkonu. Vejde se za standardní nástěnný vypínač a dokáže ovládat dva nezávislé obvody do 10 A každý (16 A celkově při 230 V AC) nebo jednu motorizovanou roletu/žaluzii. TapHome komunikuje se zařízením přes HTTP pomocí Gen2+/Gen3 JSON-RPC 2.0 API v lokální síti — cloudové připojení není potřeba.

Zařízení podporuje dva provozní profily — **switch** a **cover** — volitelné přes webové rozhraní Shelly nebo servisní akci v TapHome. V profilu switch oba reléové výstupy (O1 a O2) fungují nezávisle s měřením výkonu na kanál. V profilu cover dva výstupy pohánějí jeden motor pro rolety, žaluzie nebo závěsy, s ovládáním polohy, podporou náklonu lamel a kalibrací.

Na rozdíl od Shelly 1PM Gen3, který ovládá jeden obvod, 2PM Gen3 poskytuje dvoukanálové ovládání nebo podporu motorizované rolety. Oba sdílejí stejnou platformu Gen3 s ESP procesorem (8 MB flash), až 6 souběžných HTTP připojení a možností aktualizace na Matter.

## Konfigurace

Shelly 2PM Gen3 se připojuje přes Wi-Fi. Během importu šablony do TapHome zadejte IP adresu zařízení (výchozí placeholder `192.168.0.1`).

> [!WARNING]
> Autentifikace musí být na zařízení Shelly **vypnutá** pro integraci s TapHome. TapHome nepodporuje HTTP Digest Auth používanou zařízeními Gen2+/Gen3. Otevřete webové rozhraní Shelly (`http://{device-ip}`) → Settings → Authentication a ujistěte se, že je vypnutá.

> [!NOTE]
> Pokud je na zařízení Shelly zapnutý ECO režim, může způsobit timeouty komunikace kvůli rychlým intervalům dotazování šablony (2,5–3 sekundy). Vypněte ECO režim ve webovém rozhraní Shelly, pokud zaznamenáte přerušovanou konektivitu.

### Výběr profilu

Shelly 2PM Gen3 pracuje v jednom ze dvou profilů najednou. Aktivní profil určuje, která zařízení TapHome jsou funkční:

- **Profil switch** — aktivuje oba reléové spínače (Spínač 1 a Spínač 2) s nezávislým měřením výkonu. Zařízení rolety a žaluzie budou zobrazovat chybu profilu.
- **Profil cover** — aktivuje roletu a žaluzii. Zařízení spínačů budou zobrazovat chybu profilu.

Aktivní profil je viditelný jako servisní atribut na úrovni modulu („Profil") v TapHome. Pro změnu profilu použijte servisní akci **Nastavit profil** na úrovni modulu, nebo jej přepněte ve webovém rozhraní Shelly. Po změně profilu se zařízení restartuje a bez chyb budou fungovat pouze zařízení odpovídající novému profilu.

> [!TIP]
> Šablona obsahuje všechny čtyři typy zařízení (2 spínače + roleta + žaluzie), ale fungovat budou pouze zařízení odpovídající aktivnímu profilu. Zařízení na nesprávném profilu zobrazují chybovou zprávu jako „Profile is not set to switch" nebo „Profile is not set to cover" — jde o očekávané chování, nikoli o poruchu.

### Kalibrace rolety

Při použití profilu cover musí být limity pohybu motoru kalibrovány předtím, než bude fungovat ovládání polohy. Dokud není kalibrace dokončena, šablona zobrazí chybu „Calibration is required". Kalibrujte buď přes webové rozhraní Shelly, nebo spuštěním servisní akce **Spustit automatickou kalibraci** v TapHome. Během kalibrace roleta projede úplně nahoru a úplně dolů pro změření vzdáleností.

## Schopnosti zařízení

### Ovládání relé (profil switch)

Šablona exponuje dva nezávislé reléové spínače. Každý spínač čte svůj stav z `/rpc/Switch.GetStatus?id={0,1}` (pole `output`, boolean) a ovládá relé přes `/rpc/Switch.Set?id={0,1}&on=true|false`.

Každý spínač také exponuje servisní atributy pro monitorování na kanál:

- **Teplota** — vnitřní teplota zařízení v °C (`temperature.tC`)
- **Spotřeba energie** — kumulativní energie v Wh (`aenergy.total`)
- **Příkon** — okamžitý výkon v W (`apower`)
- **Elektrické napětí** — napájecí napětí v V (`voltage`)
- **Elektrický proud** — zátěžový proud v A (`current`)
- **Frekvence** — frekvence AC sítě v Hz (`freq`)
- **Účiník** — hodnota účiníku (`pf`)

Spínače se aktualizují každých 2,5 sekundy.

### Ovládání rolety (profil cover)

Zařízení rolety ovládá motorizovanou roletu, závěs nebo markýzu. Čte polohu z `/rpc/Cover.GetStatus?id=0` (pole `current_pos` a `target_pos`, 0–100) a zapisuje přes `/rpc/Cover.GoToPosition?id=0&pos=N`. Šablona invertuje stupnici polohy tak, že 0 = úplně otevřeno a 100 = úplně zavřeno v TapHome.

Roleta exponuje servisní atributy:

- **Teplota** — vnitřní teplota zařízení v °C
- **Spotřeba energie** — kumulativní energie motoru v Wh
- **Příkon** — okamžitý výkon motoru v W
- **Elektrické napětí** — napájecí napětí v V
- **Elektrický proud** — proud motoru v A

Servisní akce **Spustit automatickou kalibraci** je k dispozici pro spuštění kalibrace přímo z TapHome.

### Ovládání žaluzie (profil cover)

Zařízení žaluzie rozšiřuje roletu o ovládání náklonu lamel pro horizontální žaluzie. Kromě polohy čte a zapisuje polohu lamel (`slat_pos`) přes `/rpc/Cover.GoToPosition?id=0&pos=N&slat_pos=M`. Obě stupnice polohy a náklonu jsou invertovány (0 = otevřeno, 100 = zavřeno v TapHome).

Žaluzie exponuje stejné servisní atributy jako roleta, plus:

- **Lamela** — zobrazuje, zda je ovládání lamel povoleno nebo zakázáno (z `Cover.GetConfig → $.slat.enable`)
- **Čas otevření lamely** — nastavená doba otevírání lamel v sekundách
- **Čas zavření lamely** — nastavená doba zavírání lamel v sekundách

> [!NOTE]
> **Známý problém šablony:** Servisní atribut „Slat close time" čte `$.slat.open_time` místo `$.slat.close_time` z konfigurace Cover. Oba atributy času lamel aktuálně zobrazují stejnou hodnotu (čas otevření). Toto bude opraveno v budoucí revizi šablony.

Dvě servisní akce jsou k dispozici na zařízení žaluzie:

- **Spustit automatickou kalibraci** — spustí kalibraci polohy rolety
- **Nastavit lamelu** — povolí ovládání lamel a nastaví časy otevření/zavření (0,1–5 sekund každý) přes `/rpc/Cover.SetConfig`

> [!WARNING]
> Ovládání lamel musí být povoleno předtím, než zařízení žaluzie může ovládat náklon. Pokud poloha lamel není dostupná ze zařízení, žaluzie zobrazí chybu „Slat position must be enabled for blinds". Použijte servisní akci **Nastavit lamelu** pro její povolení a nastavení dob otevření/zavření.

### Servisní diagnostika

Šablona exponuje servisní atributy na úrovni modulu pro monitorování zařízení:

- **WiFi** — název připojené SSID sítě
- **IP adresa** — aktuální IP adresa stanice
- **Síla signálu** — WiFi RSSI v dB
- **MAC** — MAC adresa zařízení
- **Profil** — aktuálně aktivní profil zařízení (switch nebo cover)

Čtecí skript modulu také kontroluje dostupnost aktualizací firmwaru a požadavky na čekající restart, a tyto zobrazuje jako varování v rozhraní TapHome.

### Servisní akce

Tři servisní akce jsou k dispozici na úrovni modulu:

- **Aktualizace firmwaru** — spustí aktualizaci firmwaru na nejnovější stabilní verzi přes `/rpc/Shelly.Update`
- **Restart** — spustí restart zařízení přes `/rpc/Shelly.Reboot`
- **Nastavit profil** — přepne mezi provozními režimy cover a switch přes `/rpc/Shelly.SetProfile`

### Další schopnosti

Shelly 2PM Gen3 také exponuje stavy fyzických vstupů (`input:0`, `input:1`), počítadla vrácené/exportované energie, dobu provozu, využití RAM a čas zařízení ve svých RPC odpovědích. Auto-off časovač je dostupný přes parametr `toggle_after`, ochrana proti přetížení se dá nastavit přes `Switch.SetConfig → power_limit` a počítadla energie se dají resetovat přes `/rpc/Switch.ResetCounters`. V režimu cover jsou dostupné přímé příkazy open/close/stop a stav pohybu rolety (open/opening/closed/closing/stopped/calibrating). Tyto schopnosti mohou být přidány v budoucí aktualizaci šablony.

## Řešení problémů

### Zařízení neodpovídá

1. Ověřte, že Shelly je připojen k Wi-Fi a má platnou IP adresu
2. Zkuste použít mDNS hostname (`shelly2pmg3-AABBCCDDEE.local`) místo IP adresy — IP se mohla změnit po obnovení DHCP
3. Otevřete `http://{device-ip}/rpc/Shelly.GetDeviceInfo` v prohlížeči — pokud odpoví JSON-em, zařízení je dostupné
4. Zkontrolujte, že TapHome Core a Shelly jsou ve stejné síti / VLAN
5. Potvrďte, že autentifikace je na zařízení Shelly vypnutá

### Chyby nesouladu profilu

Pokud zařízení zobrazuje „Profile is not set to switch" nebo „Profile is not set to cover":

1. Zkontrolujte, který profil je aktuálně aktivní — servisní atribut „Profil" na úrovni modulu zobrazuje aktuální režim
2. Přepněte na správný profil pomocí servisní akce **Nastavit profil**, nebo odeberte nepoužívaná zařízení z TapHome
3. Po přepnutí profilů se zařízení automaticky restartuje — počkejte několik sekund na opětovné připojení

### Ovládání polohy rolety nefunguje

1. Ověřte, že zařízení je v profilu cover — profil switch neexponuje funkcionalitu rolety
2. Spusťte servisní akci **Spustit automatickou kalibraci** — ovládání polohy vyžaduje dokončenou kalibraci
3. Zkontrolujte, že motor je správně připojen na svorky O1 a O2
4. Dotažte `/rpc/Cover.GetStatus?id=0` manuálně a ověřte, že `pos_control` je `true`

### Náklon žaluzie nereaguje

1. Potvrďte, že ovládání lamel je povoleno — zkontrolujte servisní atribut „Lamela" (měl by zobrazovat „Enabled")
2. Pokud je zakázáno, použijte servisní akci **Nastavit lamelu** pro povolení a nastavení časů otevření/zavření
3. Ověřte, že motor žaluzie podporuje operaci náklonu — rolety bez náklonu ignorují příkazy lamel

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

Shelly 2PM Gen3 má vnitřní tepelnou ochranu. Pokud teplota zařízení překročí bezpečné limity, hodnota `temperature` v servisních atributech zařízení se zvýší. Zajistěte dostatečnou ventilaci kolem zařízení, zejména při spínání vysokých zátěží. Maximální spínací proud je 10 A na kanál s celkovým limitem 16 A (18 A špička).

> [!WARNING]
> Zařízení Shelly Gen2+/Gen3 podporují až **6 souběžných HTTP připojení**. I když je to výrazné zlepšení oproti Gen1 (2 připojení), vyhněte se dotazování z příliš mnoha systémů současně (TapHome, Home Assistant, vlastní skripty), abyste předešli vyčerpání připojení. Šablona Shelly 2PM Gen3 používá až 4 souběžné endpointy na dotazovací cyklus, což ponechává omezený prostor pro další připojení.

## Jak nainstalovat v TapHome

### Předpoklady

- Zařízení Shelly nainstalované a zapnuté
- Lokální Wi-Fi síť (2,4 GHz)
- TapHome CCU ve stejné síti

### Krok 1 — Připojte Shelly k Wi-Fi

**Možnost A — Aplikace Shelly (doporučeno):**

1. Stáhněte si [aplikaci Shelly](https://www.shelly.com/en/support/shelly-app) (iOS / Android)
2. Klepněte na **+** → **Add Device** a postupujte podle průvodce Bluetooth párováním
3. Po výzvě zadejte své Wi-Fi přihlašovací údaje

**Možnost B — AP režim (bez aplikace):**

1. Při prvním zapnutí zařízení vytvoří hotspot: `ShellyXXX-AABBCCDDEE`
2. Připojte telefon/PC k tomuto hotspotu
3. Otevřete `http://192.168.33.1` → **Internet & Security** → **Wi-Fi Mode - Client**
4. Zadejte SSID a heslo → **Save**

> [!NOTE]
> Shelly podporuje pouze **2,4 GHz** sítě. 5 GHz sítě se při skenování nezobrazí.

### Krok 2 — Zjistěte IP adresu

Po připojení k Wi-Fi zjistěte přiřazenou IP adresu jedním z následujících způsobů:

- **Aplikace Shelly:** Detail zařízení → **Device info** → IP adresa
- **Webové rozhraní Shelly:** Připojte se k AP zařízení před nastavením Wi-Fi — IP se zobrazí po uložení
- **DHCP tabulka routeru:** Hledejte hostname jako `shelly1pm-AABBCCDDEE`
- **mDNS:** Pingněte `shelly<model>-<mac>.local` (např. `shelly1pm-AABBCCDDEE.local`) ze stejné sítě

> [!TIP]
> Přiřaďte zařízení Shelly **statickou IP** (DHCP rezervaci) ve vašem routeru, aby se adresa nezměnila po restartu routeru.

### Krok 3 — Konfigurace v TapHome

1. V TapHome přidejte nový modul **Packet Parser (HTTP)**
2. **IP Address:** zadejte IP z kroku 2 (např. `192.168.1.50`)
3. **Port:** `80` (výchozí, není potřeba měnit)
4. Importujte šablonu — TapHome bude pravidelně číst `/status` pro zjištění stavu zařízení

> [!NOTE]
> HTTP autentifikace je na zařízeních Shelly standardně vypnutá. Pokud jste povolili ochranu přihlášením, TapHome momentálně nepodporuje HTTP Basic Auth — pro integraci s TapHome ponechte autentifikaci vypnutou.

## Dostupná zařízení 4

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

Shelly 2PM Gen3 Modul

Servisní atributy

|              |                                                                                            |
|--------------|--------------------------------------------------------------------------------------------|
| WiFi         |                                                                                            |
| IP adresa    |                                                                                            |
| Síla signálu |                                                                                            |
| MAC          |                                                                                            |
| Profil       | Aktivní profil zařízení — switch (dvojitý spínač) nebo cover (motorizovaná žaluzie/roleta) |

Servisní akce

|                      |                                                                               |
|----------------------|-------------------------------------------------------------------------------|
| Aktualizace firmwaru |                                                                               |
| Restart              |                                                                               |
| Nastavit profil      | Přepnutí mezi režimy cover a switch — zařízení se po změně profilu restartuje |

Vlastní proměnné

Čtení (modul)

```taphome
VAR response := SENDHTTPREQUEST("/rpc/Sys.GetStatus");
IF response.IsSuccess
    Sys.GetStatus := response.Content;
END

response := SENDHTTPREQUEST("/rpc/Sys.GetConfig");
IF response.IsSuccess
    Sys.GetConfig := response.Content;
END

response := SENDHTTPREQUEST("/rpc/WiFi.GetStatus");
IF response.IsSuccess
    WiFi.GetStatus := response.Content;
END

if ! ISNULL(parsejson(Sys.GetStatus, "available_updates.stable", true))
    addwarning("New firmware update is available");
end

if parsejson(Sys.GetStatus, "restart_required", true)
    addwarning("Restart required");
end
```

Servisní atributy

Wifi

```taphome
PARSEJSON(WiFi.GetStatus, "ssid")
```

${ipAddress}

```taphome
PARSEJSON(WiFi.GetStatus, "sta_ip")
```

${xml\_signal\_strength} \[dB]

```taphome
PARSEJSON(WiFi.GetStatus, "rssi")
```

MAC

```taphome
PARSEJSON(Sys.GetStatus, "mac")
```

Profile

```taphome
PARSEJSON(Sys.GetConfig, "$.device.profile");
```

Servisní akce

${xml\_update\_fw}

```taphome
VAR response := SENDHTTPREQUEST("/rpc/Shelly.Update?stage=\"stable\"");
IF response.IsSuccess
    return("OK");
else
    return("Error");
END

```

${restart}

```taphome
VAR response := SENDHTTPREQUEST("/rpc/Shelly.Reboot");
IF response.IsSuccess
    return("OK");
else
    return("Error");
END
```

Set Profile

Parametry: Profile

```taphome
VAR response := SENDHTTPREQUEST("/rpc/Shelly.SetProfile?name=\"" + 
switch(prof,
0, "cover",
1, "switch",
"")
+ "\"");
IF response.IsSuccess
    return("OK");
else
    return("Error");
END
```

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

Reléový výstup 1 s měřením výkonu na kanál — vyžaduje profil switch

boolean

Hodnoty / Stavy: ON · OFF

Čtení stavu přepínače

```taphome
VAR response := SENDHTTPREQUEST("/rpc/Switch.GetStatus?id=" + ID);
IF response.IsSuccess
    Switch.GetStatus := response.Content;  
END
return(PARSEJSON(Switch.GetStatus, "$.output", true));
```

Zápis stavu přepínače

```taphome
VAR response := SENDHTTPREQUEST("rpc/Switch.Set?id=" + ID + "&on=" + if(St,"true","false"));
IF response.IsSuccess = false
  ADDERROR(response.StatusCode);
END
```

Čtení (modul)

```taphome
if PARSEJSON(Sys.GetConfig, "$.device.profile") != "switch"
	adderror("Profile is not set to switch (" + PARSEJSON(Sys.GetConfig, "$.device.profile") + ")");
end

VAR response := SENDHTTPREQUEST("/rpc/Switch.GetStatus?id=" + ID);
IF response.IsSuccess
    Switch.GetStatus := response.Content;  
END

response := SENDHTTPREQUEST("/rpc/Switch.GetConfig?id=" + ID);
IF response.IsSuccess
    Switch.GetConfig := response.Content;
END

if ! ISNULL(parsejson(Switch.GetStatus, "errors", true))
    adderror("Error: " + parsejson(Switch.GetStatus, "errors"));
end
```

Servisní atributy

${device\_variable\_realtemperature} \[°C]

```taphome
parsejson(Switch.GetStatus, "$.temperature.tC", true)
```

${device\_variable\_electricityconsumption} \[Wh]

```taphome
parsejson(Switch.GetStatus, "$.aenergy.total", true)
```

${device\_variable\_electricitydemand} \[W]

```taphome
parsejson(Switch.GetStatus, "$.apower", true)
```

${valueLogType\_ElectricVoltage} \[V]

```taphome
parsejson(Switch.GetStatus, "$.voltage", true)
```

${valueLogType\_ElectricCurrent} \[A]

```taphome
parsejson(Switch.GetStatus, "$.current", true)
```

${frequency} \[Hz]

```taphome
parsejson(Switch.GetStatus, "$.freq", true)
```

Power Factor

```taphome
parsejson(Switch.GetStatus, "$.pf", true)
```

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

Reléový výstup 2 s měřením výkonu na kanál — vyžaduje profil switch

boolean

Hodnoty / Stavy: ON · OFF

Čtení stavu přepínače

```taphome
VAR response := SENDHTTPREQUEST("/rpc/Switch.GetStatus?id=" + ID);
IF response.IsSuccess
    Switch.GetStatus := response.Content;  
END
return(PARSEJSON(Switch.GetStatus, "$.output", true));
```

Zápis stavu přepínače

```taphome
VAR response := SENDHTTPREQUEST("rpc/Switch.Set?id=" + ID + "&on=" + if(St,"true","false"));
IF response.IsSuccess = false
  ADDERROR(response.StatusCode);
END
```

Čtení (modul)

```taphome
if PARSEJSON(Sys.GetConfig, "$.device.profile") != "switch"
	adderror("Profile is not set to switch (" + PARSEJSON(Sys.GetConfig, "$.device.profile") + ")");
end

VAR response := SENDHTTPREQUEST("/rpc/Switch.GetStatus?id=" + ID);
IF response.IsSuccess
    Switch.GetStatus := response.Content;  
END

response := SENDHTTPREQUEST("/rpc/Switch.GetConfig?id=" + ID);
IF response.IsSuccess
    Switch.GetConfig := response.Content;
END

if ! ISNULL(parsejson(Switch.GetStatus, "errors", true))
    adderror("Error: " + parsejson(Switch.GetStatus, "errors"));
end
```

Servisní atributy

${device\_variable\_realtemperature} \[°C]

```taphome
parsejson(Switch.GetStatus, "$.temperature.tC", true)
```

${device\_variable\_electricityconsumption} \[Wh]

```taphome
parsejson(Switch.GetStatus, "$.aenergy.total", true)
```

${device\_variable\_electricitydemand} \[W]

```taphome
parsejson(Switch.GetStatus, "$.apower", true)
```

${valueLogType\_ElectricVoltage} \[V]

```taphome
parsejson(Switch.GetStatus, "$.voltage", true)
```

${valueLogType\_ElectricCurrent} \[A]

```taphome
parsejson(Switch.GetStatus, "$.current", true)
```

${frequency} \[Hz]

```taphome
parsejson(Switch.GetStatus, "$.freq", true)
```

Power Factor

```taphome
parsejson(Switch.GetStatus, "$.pf", true)
```

Roleta Posuvný Čtení i zápis

Motorizovaná roleta nebo závěs s ovládáním polohy — vyžaduje profil cover a kalibraci

numeric Jednotka: %

Servisní atributy

|                   |
|-------------------|
| Teplota           |
| Spotřeba energie  |
| Příkon            |
| Elektrické napětí |
| Elektrický proud  |

Servisní akce

|                                |
|--------------------------------|
| Spustit automatickou kalibraci |

Čtení (modul)

```taphome
if PARSEJSON(Sys.GetConfig, "$.device.profile") != "cover"
	adderror("Profile is not set to cover (" + PARSEJSON(Sys.GetConfig, "$.device.profile") + ")");
end

VAR response := SENDHTTPREQUEST("/rpc/Cover.GetStatus?id=" + ID);
IF response.IsSuccess
    Cover.GetStatus := response.Content;  
END

response := SENDHTTPREQUEST("/rpc/Cover.GetConfig?id=" + ID);
IF response.IsSuccess
    Cover.GetConfig := response.Content;
END

if ! parsejson(Cover.GetStatus, "$.pos_control", true)
    #adderror("${presence_calibration_required}");
    adderror("Calibration is required");
end

if ! ISNULL(parsejson(Cover.GetStatus, "errors", true))
    adderror("Error: " + parsejson(Cover.GetStatus, "errors"));
end
```

Čtení úrovně žaluzie

```taphome
var pos := PARSEJSON(Cover.GetStatus, "$.current_pos", true);
if ! isnull(PARSEJSON(Cover.GetStatus, "$.target_pos", true))
	pos := PARSEJSON(Cover.GetStatus, "$.target_pos", true);
end

return(linear(pos,0,1,100,0));
```

Zápis úrovně žaluzie

```taphome
VAR response := SENDHTTPREQUEST("rpc/Cover.GoToPosition?id=" + ID + "&pos=" + round(linear(Bl,0,100,1,0)));
IF response.IsSuccess = false
  ADDERROR(response.StatusCode);
END

response := SENDHTTPREQUEST("/rpc/Cover.GetStatus?id=" + ID);
IF response.IsSuccess
    Cover.GetStatus := response.Content;  
END
```

Servisní atributy

${device\_variable\_realtemperature} \[°C]

```taphome
parsejson(Cover.GetStatus, "$.temperature.tC", true)
```

${device\_variable\_electricityconsumption} \[Wh]

```taphome
parsejson(Cover.GetStatus, "$.aenergy.total", true)
```

${device\_variable\_electricitydemand} \[W]

```taphome
parsejson(Cover.GetStatus, "$.apower", true)
```

${valueLogType\_ElectricVoltage} \[V]

```taphome
parsejson(Cover.GetStatus, "$.voltage", true)
```

${valueLogType\_ElectricCurrent} \[A]

```taphome
parsejson(Cover.GetStatus, "$.current", true)
```

Servisní akce

${start\_automatic\_calibration}

```taphome
VAR response := SENDHTTPREQUEST("/rpc/Cover.Calibrate?id=" + ID);
IF response.IsSuccess
    return("OK");
else
    return("Error");
END
```

Žaluzie Žaluzie Čtení i zápis

Žaluzie s ovládáním polohy a náklonu lamel — vyžaduje profil cover, kalibraci a povolené lamely

numeric Jednotka: %

Servisní atributy

|                     |                                                                   |
|---------------------|-------------------------------------------------------------------|
| Teplota             |                                                                   |
| Spotřeba energie    |                                                                   |
| Příkon              |                                                                   |
| Elektrické napětí   |                                                                   |
| Elektrický proud    |                                                                   |
| Lamela              | Zda je ovládání náklonu lamel povoleno v konfiguraci Shelly Cover |
| Čas otevření lamely |                                                                   |
| Čas zavření lamely  |                                                                   |

Servisní akce

|                                |                                                                          |
|--------------------------------|--------------------------------------------------------------------------|
| Spustit automatickou kalibraci |                                                                          |
| Nastavit lamelu                | Povolení ovládání lamel a nastavení doby otevření/zavření (0,1–5 sekund) |

Čtení (modul)

```taphome
if PARSEJSON(Sys.GetConfig, "$.device.profile") != "cover"
	adderror("Profile is not set to cover (" + PARSEJSON(Sys.GetConfig, "$.device.profile") + ")");
end

VAR response := SENDHTTPREQUEST("/rpc/Cover.GetStatus?id=" + ID);
IF response.IsSuccess
    Cover.GetStatus := response.Content;  
END

response := SENDHTTPREQUEST("/rpc/Cover.GetConfig?id=" + ID);
IF response.IsSuccess
    Cover.GetConfig := response.Content;
END

if ! parsejson(Cover.GetStatus, "$.pos_control", true)
    #adderror("${presence_calibration_required}");
    adderror("Calibration is required");
end

if ! ISNULL(parsejson(Cover.GetStatus, "errors", true))
    adderror("Error: " + parsejson(Cover.GetStatus, "errors"));
end
```

Čtení úrovně žaluzie

```taphome
var pos := PARSEJSON(Cover.GetStatus, "$.current_pos", true);
var target := PARSEJSON(Cover.GetStatus, "$.target_pos", true);
var slatPos := PARSEJSON(Cover.GetStatus, "$.slat_pos", true);

BlSend := 0;
if BsSend = 0 and (Bs = 0 or Bs = 1) 
	if (!isnull(target))
		DeltaPos := 0;
		return(linear(target,0,1,100,0));
	else
		return(linear(pos - DeltaPos,0,1,100,0));	
	end
end

return(Bl);
```

Zápis úrovně žaluzie

```taphome
var pos := PARSEJSON(Cover.GetStatus, "$.current_pos", true);
var target := PARSEJSON(Cover.GetStatus, "$.target_pos", true);
var slatPos := PARSEJSON(Cover.GetStatus, "$.slat_pos", true);

VAR response := SENDHTTPREQUEST("rpc/Cover.GoToPosition?id=0&pos=" + round(linear(Bl,0,100,1,0)));
BlSend := 1;
IF response.IsSuccess = false
  ADDERROR(response.StatusCode);
END

#response := SENDHTTPREQUEST("/rpc/Cover.GetStatus?id=0");
#IF response.IsSuccess
#    Cover.GetStatus := response.Content;  
#END
```

Čtení sklonu žaluzie

```taphome
var pos := PARSEJSON(Cover.GetStatus, "$.current_pos", true);
var slatPos := PARSEJSON(Cover.GetStatus, "$.slat_pos", true);
var state := PARSEJSON(Cover.GetStatus, "$.state", true);
var date := NOW();

if ISNULL(slatPos)
    adderror("Slat position must be enabled for blinds");
    return(NaN);
end

if state = "closing" or state = "opening"
	BsSend := 1;
	return(Bs);
end

if BsSend > 1
	BsSend := 1;
	return(Bs);
else
	if BsSend = 1
		BsSend := 0;
		DeltaPos := pos - round(linear(Bl,0,100,1,0));	
	end
	return(linear(slatPos,0,1,100,0));
end
```

Zápis sklonu žaluzie

```taphome
var date := NOW();
var pos := PARSEJSON(Cover.GetStatus, "$.current_pos", true);

if BlSend = 0
	VAR response := SENDHTTPREQUEST("rpc/Cover.GoToPosition?id=0&pos=" + pos + "&slat_pos=" + round(linear(Bs,0,100,1,0)));
	BsSend := date.UNIXTIME;
	IF response.IsSuccess = false
	  ADDERROR(response.StatusCode);
	END
end

#response := SENDHTTPREQUEST("/rpc/Cover.GetStatus?id=0");
#IF response.IsSuccess
#    Cover.GetStatus := response.Content;  
#END
```

Servisní atributy

${device\_variable\_realtemperature} \[°C]

```taphome
parsejson(Cover.GetStatus, "$.temperature.tC", true)
```

${device\_variable\_electricityconsumption} \[Wh]

```taphome
parsejson(Cover.GetStatus, "$.aenergy.total", true)
```

${device\_variable\_electricitydemand} \[W]

```taphome
parsejson(Cover.GetStatus, "$.apower", true)
```

${valueLogType\_ElectricVoltage} \[V]

```taphome
parsejson(Cover.GetStatus, "$.voltage", true)
```

${valueLogType\_ElectricCurrent} \[A]

```taphome
parsejson(Cover.GetStatus, "$.current", true)
```

Slat

```taphome
if(parsejson(Cover.GetConfig, "$.slat.enable", true), "Enabled", "Disabled")
```

Slat open time \[s]

```taphome
parsejson(Cover.GetConfig, "$.slat.open_time ", true)
```

Slat close time \[s]

```taphome
parsejson(Cover.GetConfig, "$.slat.open_time ", true)
```

Servisní akce

${start\_automatic\_calibration}

```taphome
VAR response := SENDHTTPREQUEST("/rpc/Cover.Calibrate?id=" + ID);
IF response.IsSuccess
    return("OK");
else
    return("Error");
END
```

Set Slat

Parametry: Open time \[s] (0.1–5 ot), Close time \[s] (0.1–5 ct)

```taphome
VAR response := SENDHTTPREQUEST("/rpc/Cover.SetConfig?id=" + ID + 
	"&config={\"slat\":{\"enable\":true, \"open_time\": " + ot +", \"close_time\": " + ct +"}}");
IF response.IsSuccess
    return("OK");
else
    return("Error");
END
```

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

Možná vylepšení (11)

- Input 1 State — Physical switch/button input 1 state, available via /rpc/Input.GetStatus?id=0
- Input 2 State — Physical switch/button input 2 state, available via /rpc/Input.GetStatus?id=1
- Returned Energy — Returned/exported energy in Wh, for bi-directional metering scenarios
- Uptime — Seconds since last reboot, available in Sys.GetStatus response
- RAM Usage — Total and free RAM in bytes, available in Sys.GetStatus response
- Device Time — Current device time in HH:MM format, available in Sys.GetStatus response
- Auto-off Timer — Auto-reset timer in seconds via toggle\_after parameter, could be added as switch parameter
- Reset Energy Counters — Resets energy measurement counters (aenergy, ret\_aenergy) for both channels
- Overpower Protection — Configurable power limit threshold in Watts, relay turns off when exceeded
- Cover State — Cover movement state (open/opening/closed/closing/stopped/calibrating), available in Cover.GetStatus
- Cover Open/Close/Stop Commands — Direct open/close/stop commands without position parameter; template uses GoToPosition instead

## Parametry importu

Tyto hodnoty zadáte při importu XML.

| Ptá se v aplikaci | Výchozí       |
|-------------------|---------------|
| IP adresa         | `192.168.0.1` |

## Zdroje

- Shelly Gen2+/Gen3 RPC API Reference
  
  [shelly-api-docs.shelly.cloud](https://shelly-api-docs.shelly.cloud/gen2/) 2026-03-27
- Shelly Gen2+ Switch Component API
  
  [shelly-api-docs.shelly.cloud](https://shelly-api-docs.shelly.cloud/gen2/ComponentsAndServices/Switch/) 2026-03-27
- Shelly Gen2+ System (Sys) Component API
  
  [shelly-api-docs.shelly.cloud](https://shelly-api-docs.shelly.cloud/gen2/ComponentsAndServices/Sys/) 2026-03-27
- Shelly Gen2+ WiFi Component API
  
  [shelly-api-docs.shelly.cloud](https://shelly-api-docs.shelly.cloud/gen2/ComponentsAndServices/WiFi/) 2026-03-27
- Home Assistant Shelly Integration
  
  [www.home-assistant.io](https://www.home-assistant.io/integrations/shelly/) 2026-03-27
- Shelly 2PM Gen3 Knowledge Base
  
  [kb.shelly.cloud](https://kb.shelly.cloud/knowledge-base/shelly-2pm-gen3) 2026-03-29

## Související dokumentace

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

