---
title: "Shelly Plus 2PM"
description: "Shelly Plus 2PM v TapHome lokálne cez HTTP RPC: dve relé s meraním výkonu, alebo roleta s polohou a kalibráciou. Bez cloudu, autentifikácia vypnutá."
url: "https://taphome.com/sk/compatibility/shelly-plus-2-pm/"
language: sk
lastmod: 2026-10-08
generator: hugo
ai:
  topics: ["http","electric-meter","wifi","relay","power-metering","cover","shutter","mdns","profile"]
  questions: ["Ako integrovať Shelly Plus 2PM s TapHome?","Aký je rozdiel medzi profilom switch a cover na Shelly Plus 2PM?","Ako ovládať roletový motor so Shelly Plus 2PM a TapHome?","Ako prepnúť medzi režimom relé a režimom rolety na Shelly Plus 2PM?","Prečo šablóna Shelly Plus 2PM zobrazuje chybu profilu v TapHome?","Ako kalibrovať kryt Shelly Plus 2PM pre ovládanie pozície?","Aké diagnostiky sú dostupné pre Shelly Plus 2PM v TapHome?"]
---

# Shelly Plus 2PM

Komunikácia: Packet Parser → HTTP

- [Shelly Plus 2PM produktová stránka](https://www.shelly.com/en/products/shop/shelly-plus-2pm)
- [Shelly Plus 2PM API dokumentácia](https://shelly-api-docs.shelly.cloud/gen2/Devices/Gen2/ShellyPlus2PM/)

> Adresa v sieti
> 
> TapHome komunikuje so zariadením na adrese zadanej pri importe. Dajte zariadeniu stálu adresu — rezerváciu IP v routeri, alebo jeho mDNS meno, ak ho podporuje —, inak integrácia prestane fungovať, keď router adresu zmení.
> 
> [Príprava siete](https://taphome.com/sk/docs/setup/network-preparation/)

## Návod na integráciu

Shelly Plus 2PM je kompaktné dvojkanálové Wi-Fi relé so vstavaným meraním výkonu na oboch kanáloch. Zmestí sa za štandardný nástenný vypínač a dokáže ovládať dva nezávislé okruhy, každý do 10 A (celkovo 16 A pri 230 V AC), alebo pohon jednej motorizovanej rolety. TapHome komunikuje so zariadením cez HTTP pomocou Gen2+ RPC API v lokálnej sieti — cloudové pripojenie nie je potrebné.

Zariadenie podporuje dva prevádzkové profily — **switch** a **cover** — voliteľné cez webové rozhranie Shelly alebo servisnú akciu v TapHome. V profile switch oba reléové výstupy (O1 a O2) pracujú nezávisle s meraním výkonu na každom kanáli. V profile cover oba výstupy pohybujú jedným motorom pre rolety, žalúzie alebo závesy s ovládaním pozície a kalibráciou.

> [!NOTE]
> Shelly Plus 2PM bol ukončený. Jeho nástupca, [Shelly 2PM Gen3](https://taphome.com/sk/compatibility/shelly-2pm-gen3/), ponúka rovnakú funkciu dvojitého profilu s vylepšeným procesorom (8 MB flash), až 6 súčasnými HTTP pripojeniami a možnosťou aktualizácie na Matter.

## Konfigurácia

Shelly Plus 2PM sa pripája cez Wi-Fi. Počas importu šablóny TapHome zadajte IP adresu zariadenia (predvolená hodnota `192.168.0.1`).

> [!WARNING]
> Autentifikácia musí byť na zariadení Shelly **vypnutá** pre integráciu s TapHome. TapHome nepodporuje HTTP Digest Auth používanú zariadeniami Gen2+. Otvorte webové rozhranie Shelly (`http://{ip-zariadenia}`) → Settings → Authentication a uistite sa, že je vypnutá.

> [!NOTE]
> Ak je na zariadení Shelly zapnutý režim ECO, môže spôsobovať výpadky komunikácie kvôli rýchlym intervalom dotazovania šablóny (2,5–5 sekúnd). Vypnite režim ECO vo webovom rozhraní Shelly, ak zaznamenáte občasné problémy s pripojením.

### Výber profilu

Shelly Plus 2PM pracuje v jednom z dvoch profilov. Aktívny profil určuje, ktoré zariadenia TapHome budú funkčné:

- **Profil switch** — aktivuje oba reléové spínače (Switch 1 a Switch 2) a ich merače energie pre každý kanál. Zariadenie rolety a merač energie rolety nebudú reagovať.
- **Profil cover** — aktivuje zariadenie rolety a jeho merač energie. Obe spínacie zariadenia a ich merače energie nebudú reagovať.

Aktívny profil je viditeľný ako servisný atribút na úrovni modulu („Profile") v TapHome. Pre zmenu profilu použite servisnú akciu **Profile** na úrovni modulu alebo ho prepnite vo webovom rozhraní Shelly. Po zmene profilu sa zariadenie reštartuje a fungovať budú len zariadenia zodpovedajúce novému profilu.

> [!TIP]
> Šablóna obsahuje všetkých šesť zariadení (2 spínače + 2 merače energie spínačov + 1 roleta + 1 merač energie rolety), ale fungovať budú len zariadenia zodpovedajúce aktívnemu profilu. Toto je očakávané správanie — zariadenia na nesprávnom profile jednoducho nereagujú.

### Kalibrácia krytu

Pri použití profilu cover musia byť pred fungovaním ovládania pozície nakalibrované koncové polohy motora. Kým nie je kalibrácia dokončená, `current_pos` vracia null a servisný atribút „Calibrated" zobrazuje `false`. Kalibrujte buď cez webové rozhranie Shelly, alebo spustením servisnej akcie **Calibrate** na zariadení Shutter v TapHome. Počas kalibrácie kryt vykoná viacstupňovú sekvenciu (plné otvorenie → plné zatvorenie → plné otvorenie → zatvorenie po krokoch → otvorenie po krokoch) na zmeranie vzdialeností pohybu.

## Možnosti zariadenia

### Ovládanie relé (profil switch)

Šablóna sprístupňuje dva nezávislé reléové spínače. Každý spínač číta svoj stav z `/rpc/Switch.GetStatus?id={0,1}` (pole `output`, boolean) a ovláda relé cez `/rpc/Switch.Set?id={0,1}&on=true|false`.

Každý spínač sprístupňuje sedem servisných atribútov:

- **Source** — zdroj posledného príkazu (http, UI, WS_in, atď.)
- **Temperature** — vnútorná teplota zariadenia v °C
- **Initial State** — správanie spínača pri zapnutí napájania (off, on, restore_last alebo match_input)
- **Input Mode** — režim zapojenia fyzického vstupu (follow alebo detached)
- **Power Limit** — maximálny prah výkonu vo wattoch pre ochranu pred preťažením
- **Voltage Limit** — maximálny prah napätia vo voltoch
- **Current Limit** — maximálny prah prúdu v ampéroch

Pre každý spínač sú dostupné dve servisné akcie:

- **Set Initial State** — konfiguruje správanie relé po zapnutí napájania (off, on, restore_last, match_input)
- **Set Mode** — konfiguruje režim zapojenia fyzického vstupu (follow, detached)

### Meranie výkonu (profil switch)

Každý kanál spínača má vlastný merač energie, ktorý číta dve hodnoty z `/rpc/Switch.GetStatus`:

- **Okamžitý výkon** — `apower` vo wattoch, šablóna konvertuje na kW
- **Celková spotreba** — `aenergy.total` vo watthodinách, šablóna konvertuje na kWh

Každý merač energie sprístupňuje aj tri servisné atribúty:

- **Voltage** — napájacie napätie vo voltoch
- **Current** — prúd záťaže v ampéroch
- **Power Factor** — účinník záťaže

Merače sú len na čítanie — aktualizujú sa automaticky s každým cyklom dotazovania.

### Ovládanie rolety (profil cover)

Zariadenie rolety ovláda motorizovanú roletu, záves alebo markízu. Pozíciu číta z `/rpc/Cover.GetStatus?id=0` (pole `current_pos`, 0–100 %) a zapisuje cez `/rpc/Cover.GoToPosition?id=0&pos=N`.

Zariadenie rolety sprístupňuje 21 servisných atribútov:

- **Stav** — zdroj, stav (open/closed/opening/closing/stopped/calibrating), aktuálna a cieľová pozícia, časový limit pohybu a čas spustenia
- **Kalibrovaný** — či je ovládanie pozície zapnuté (`pos_control`)
- **Teplota** — vnútorná teplota zariadenia v °C
- **Správanie pri zapnutí** — konfigurácia počiatočného stavu (open, closed, stopped)
- **Nastavenia vstupu** — režim vstupu (single, dual, detached), výmena vstupov, invertovanie smerov
- **Ochranné limity** — limit výkonu (W), limit napätia (V), limit prúdu (A)
- **Nastavenie motora** — prah výkonu v pokoji (0–50 W), potvrdzovacie obdobie pokoja (0,25–2 s)
- **Limity pohybu** — maximálny čas otvorenia (0,1–300 s), maximálny čas zatvorenia (0,1–300 s)
- **Bezpečnostné funkcie** — stav detekcie prekážky, stav bezpečnostného spínača

Pre roletu je dostupných šesť servisných akcií:

- **Open** — úplne otvorí kryt
- **Close** — úplne zatvorí kryt
- **Stop** — okamžite zastaví pohyb
- **Calibrate** — spustí kalibračný postup pre ovládanie pozície
- **Go to Position** — presunie kryt na konkrétnu pozíciu (0–100 %)
- **Reverse directions** — prepne konfiguráciu `invert_directions` a reštartuje zariadenie

### Meranie výkonu (profil cover)

Roleta má vlastný merač energie, ktorý číta z `/rpc/Cover.GetStatus`:

- **Okamžitý výkon** — `apower` vo wattoch, šablóna konvertuje na kW
- **Celková spotreba** — `aenergy.total` vo watthodinách, šablóna konvertuje na kWh

Merač energie rolety sprístupňuje aj napätie, prúd a účinník ako servisné atribúty.

### Servisná diagnostika

Šablóna sprístupňuje dva servisné atribúty na úrovni modulu:

- **MAC** — MAC adresa zariadenia zo systémovej konfigurácie
- **Profile** — aktuálne aktívny profil zariadenia (switch alebo cover)

Čítací skript modulu kontroluje aj `restart_required` z `/rpc/Sys.GetStatus` a zobrazí upozornenie v TapHome, ak je potrebný reštart.

### Servisné akcie

Na úrovni modulu sú dostupné dve servisné akcie:

- **Reboot** — spustí reštart zariadenia cez `/rpc/Shelly.Reboot`
- **Profile** — prepne medzi prevádzkovými profilmi switch a cover cez `/rpc/Shelly.SetProfile`

### Ďalšie možnosti

Shelly Plus 2PM tiež sprístupňuje sieťovú frekvenciu (`freq`), minútové hodnoty energie (`aenergy.by_minute`), stavy fyzických vstupov (`input:0`, `input:1`), silu Wi-Fi signálu (RSSI) a koncový bod prepínania spínača vo svojich RPC odpovediach. Počítadlá energie je možné resetovať cez `/rpc/Switch.ResetCounters` (profil switch) alebo `/rpc/Cover.ResetCounters` (profil cover). V režime cover je pozícia lamiel/natočenia pre benátske žalúzie dostupná, ak to hardvér podporuje. Tieto možnosti môžu byť doplnené v budúcej aktualizácii šablóny.

## Riešenie problémov

### Zariadenie neodpovedá

1. Overte, že Shelly je pripojený k Wi-Fi a má platnú IP adresu
2. Skúste použiť mDNS hostname (`shellyplus2pm-AABBCCDDEE.local`) namiesto IP adresy — IP sa mohla zmeniť po obnovení DHCP
3. Otvorte `http://{ip-zariadenia}/rpc/Shelly.GetDeviceInfo` v prehliadači — ak odpovie JSON, zariadenie je dostupné
4. Skontrolujte, že TapHome Core a Shelly sú v rovnakej sieti / VLAN
5. Uistite sa, že autentifikácia je na zariadení Shelly vypnutá

### Nesúlad profilu — zariadenia nereagujú

Ak niektoré zariadenia neukazujú žiadne údaje, zatiaľ čo iné fungujú správne:

1. Skontrolujte, ktorý profil je aktuálne aktívny — servisný atribút „Profile" na úrovni modulu zobrazuje aktuálny režim
2. Prepnite na správny profil pomocou servisnej akcie **Profile** alebo ignorujte nepoužívané zariadenia
3. Po prepnutí profilu sa zariadenie automaticky reštartuje — počkajte niekoľko sekúnd na opätovné pripojenie

### Pozícia krytu nefunguje

1. Overte, že zariadenie je v profile cover — profil switch nesprístupňuje funkcie krytu
2. Spustite servisnú akciu **Calibrate** na zariadení Shutter — ovládanie pozície vyžaduje dokončenú kalibráciu
3. Skontrolujte, že motor je správne pripojený na svorky O1 a O2
4. Manuálne zavolajte `/rpc/Cover.GetStatus?id=0` a overte, že `pos_control` je `true`

### Kalibrácia krytu zlyhá

Kalibrácia sa preruší, ak:

- Kryt nedosiahne koncovú polohu v rámci `maxtime_open` alebo `maxtime_close`
- Počas kalibrácie sa aktivuje bezpečnostná funkcia (detekcia prekážky alebo bezpečnostný spínač)
- Počas kalibrácie sa vydá externý príkaz na zastavenie
- Smer motora nezodpovedá očakávanej spätnej väzbe
- Zariadenie sa počas kalibrácie reštartuje

Skontrolujte zapojenie motora, zvýšte `maxtime_open`/`maxtime_close` ak je motor pomalý a uistite sa, že nie sú prítomné žiadne prekážky.

### Hodnoty výkonu ukazujú nulu

1. Potvrďte, že záťaž je pripojená cez relé Shelly (nie obísená)
2. Skontrolujte, že relé je zapnuté — merač meria len keď cez relé preteká prúd
3. Manuálne zavolajte `/rpc/Switch.GetStatus?id=0` (profil switch) alebo `/rpc/Cover.GetStatus?id=0` (profil cover) a overte, že `apower` vracia nenulovú hodnotu

> [!WARNING]
> Zariadenia Shelly Gen2+ podporujú až **6 súčasných HTTP pripojení**. Hoci je to zlepšenie oproti Gen1 (2 pripojenia), vyhnite sa súčasnému dotazovaniu z príliš mnohých systémov (TapHome, Home Assistant, vlastné skripty), aby nedošlo k vyčerpaniu pripojení.

## Ako nainštalovať v TapHome

### Predpoklady

- Zariadenie Shelly nainštalované a zapnuté
- Lokálna Wi-Fi sieť (2,4 GHz)
- TapHome CCU v rovnakej sieti

### Krok 1 — Pripojte Shelly k Wi-Fi

**Možnosť A — Aplikácia Shelly (odporúčané):**

1. Stiahnite si [aplikáciu Shelly](https://www.shelly.com/en/support/shelly-app) (iOS / Android)
2. Klepnite na **+** → **Add Device** a postupujte podľa sprievodcu Bluetooth párovaním
3. Po výzve zadajte svoje Wi-Fi prihlasovacie údaje

**Možnosť B — AP režim (bez aplikácie):**

1. Pri prvom zapnutí zariadenie vytvorí hotspot: `ShellyXXX-AABBCCDDEE`
2. Pripojte telefón/PC k tomuto hotspotu
3. Otvorte `http://192.168.33.1` → **Internet & Security** → **Wi-Fi Mode - Client**
4. Zadajte SSID a heslo → **Save**

> [!NOTE]
> Shelly podporuje iba **2,4 GHz** siete. 5 GHz siete sa pri skenovaní nezobrazia.

### Krok 2 — Zistite IP adresu

Po pripojení k Wi-Fi zistite priradenú IP adresu jedným z nasledujúcich spôsobov:

- **Aplikácia Shelly:** Detail zariadenia → **Device info** → IP adresa
- **Webové rozhranie Shelly:** Pripojte sa k AP zariadenia pred nastavením Wi-Fi — IP sa zobrazí po uložení
- **DHCP tabuľka routera:** Hľadajte hostname ako `shelly1pm-AABBCCDDEE`
- **mDNS:** Pingnite `shelly<model>-<mac>.local` (napr. `shelly1pm-AABBCCDDEE.local`) z rovnakej siete

> [!TIP]
> Priraďte zariadeniu Shelly **statickú IP** (DHCP rezerváciu) vo vašom routeri, aby sa adresa nezmenila po reštarte routera.

### Krok 3 — Konfigurácia v TapHome

1. V TapHome pridajte nový modul **Packet Parser (HTTP)**
2. **IP Address:** zadajte IP z kroku 2 (napr. `192.168.1.50`)
3. **Port:** `80` (predvolený, nie je potrebné meniť)
4. Importujte šablónu — TapHome bude pravidelne čítať `/status` pre zistenie stavu zariadenia

> [!NOTE]
> HTTP autentifikácia je na zariadeniach Shelly štandardne vypnutá. Ak ste povolili ochranu prihlásením, TapHome momentálne nepodporuje HTTP Basic Auth — pre integráciu s TapHome ponechajte autentifikáciu vypnutú.

## Dostupné zariadenia 6

Tieto zariadenia sa po importe zobrazia v TapHome.

Shelly Plus 2PM Modul

Servisné atribúty

|        |                                                  |
|--------|--------------------------------------------------|
| MAC    | MAC adresa zariadenia zo systémovej konfigurácie |
| Profil | Aktívny profil zariadenia — switch alebo cover   |

Servisné akcie

|         |                                                                       |
|---------|-----------------------------------------------------------------------|
| Reštart | Reštartuje zariadenie                                                 |
| Profil  | Prepnutie medzi profilmi switch a cover — vyžaduje reštart zariadenia |

Vlastné premenné

Čítanie (modul)

```taphome
VAR response := SENDHTTPREQUEST("/rpc/Sys.GetConfig");
IF response.IsSuccess
  VAR content := response.Content;
  VAR responseHeaders := response.Headers;
  SysConfig := response.Content;
END;
 
response := SENDHTTPREQUEST("/rpc/Sys.GetStatus");
IF response.IsSuccess
  content := response.Content;
  responseHeaders := response.Headers;
  if(PARSEJSON(response.Content, "$.restart_required") = true, ADDERROR("Restart required"));
END
```

Servisné atribúty

MAC

```taphome
PARSEJSON(SysConfig, "$.device.mac");
```

Profile

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

Servisné akcie

Reboot

```taphome
VAR response := SENDHTTPREQUEST("/rpc/Shelly.Reboot");
IF response.IsSuccess
  VAR content := response.Content;
  VAR responseHeaders := response.Headers;
  Return("OK");
END;
```

Profile

Parametre: Profile

```taphome
var profile := SWITCH(pr, 1, "cover", "switch");
VAR response := SENDHTTPREQUEST("/rpc/Shelly.SetProfile?name=\""+profile+"\"");
IF response.IsSuccess
  VAR content := response.Content;
  VAR responseHeaders := response.Headers;
  Return("OK");
END;
```

Merač výkonu (Roleta) Elektromer Len na čítanie

Meranie energie v režime cover — okamžitý výkon (kW) a kumulatívna energia (kWh)

numeric Jednotka: kW / kWh json\_path

Servisné atribúty

|         |                              |
|---------|------------------------------|
| Napätie | Napájacie napätie vo Voltoch |
| Prúd    | Prúd záťaže v Ampéroch       |
| Účinník | Účinník záťaže               |

Čítanie celkovej spotreby

```taphome
if PARSEJSON(SysConfig, "$.device.profile") = "switch"
    adderror("Device profile is set to switch");
else
    return(PARSEJSON(CoverStatus, "$.aenergy.total") / 1000);
end
```

Čítanie odberu

```taphome
if PARSEJSON(SysConfig, "$.device.profile") = "cover"
    return(PARSEJSON(CoverStatus, "$.apower", true) / 1000);
end
```

Čítanie (modul)

```taphome
if PARSEJSON(SysConfig, "$.device.profile") = "cover"
    var response := SENDHTTPREQUEST("/rpc/Cover.GetStatus?id=" + Id);
    IF response.IsSuccess
        VAR content := response.Content;
        VAR responseHeaders := response.Headers;
        CoverStatus := response.Content;
    END
end
```

Servisné atribúty

Voltage \[V]

```taphome
PARSEJSON(CoverStatus, "$.voltage", true);
```

Current \[A]

```taphome
PARSEJSON(CoverStatus, "$.current", true);
```

Power Factor

```taphome
PARSEJSON(CoverStatus, "$.pf", true);
```

Merač výkonu (Spínač 1) Elektromer Len na čítanie

Meranie energie pre kanál spínača 1 — okamžitý výkon (kW) a kumulatívna energia (kWh)

numeric Jednotka: kW / kWh json\_path

Servisné atribúty

|         |                              |
|---------|------------------------------|
| Napätie | Napájacie napätie vo Voltoch |
| Prúd    | Prúd záťaže v Ampéroch       |
| Účinník | Účinník záťaže               |

Čítanie celkovej spotreby

```taphome
if PARSEJSON(SysConfig, "$.device.profile") = "cover"
    adderror("Device profile is set to cover");
else
    return(PARSEJSON(SwitchStatus, "$.aenergy.total", true) / 1000);
end
```

Čítanie odberu

```taphome
if PARSEJSON(SysConfig, "$.device.profile") = "switch"
    return(PARSEJSON(SwitchStatus, "$.apower", true) / 1000);
end
```

Čítanie (modul)

```taphome
if PARSEJSON(SysConfig, "$.device.profile") = "switch"
    var response := SENDHTTPREQUEST("/rpc/Switch.GetStatus?id=" + Id);
    IF response.IsSuccess
        VAR content := response.Content;
        VAR responseHeaders := response.Headers;
        SwitchStatus := response.Content;
    END
end
```

Servisné atribúty

Voltage \[V]

```taphome
PARSEJSON(SwitchStatus, "$.voltage", true);
```

Current \[A]

```taphome
PARSEJSON(SwitchStatus, "$.current", true);
```

Power Factor

```taphome
PARSEJSON(SwitchStatus, "$.pf", true);
```

Merač výkonu (Spínač 2) Elektromer Len na čítanie

Meranie energie pre kanál spínača 2 — okamžitý výkon (kW) a kumulatívna energia (kWh)

numeric Jednotka: kW / kWh json\_path

Servisné atribúty

|         |                              |
|---------|------------------------------|
| Napätie | Napájacie napätie vo Voltoch |
| Prúd    | Prúd záťaže v Ampéroch       |
| Účinník | Účinník záťaže               |

Čítanie celkovej spotreby

```taphome
if PARSEJSON(SysConfig, "$.device.profile") = "cover"
    adderror("Device profile is set to cover");
else
    return(PARSEJSON(SwitchStatus, "$.aenergy.total", true) / 1000);
end
```

Čítanie odberu

```taphome
if PARSEJSON(SysConfig, "$.device.profile") = "switch"
    return(PARSEJSON(SwitchStatus, "$.apower", true) / 1000);
end
```

Čítanie (modul)

```taphome
if PARSEJSON(SysConfig, "$.device.profile") = "switch"
    var response := SENDHTTPREQUEST("/rpc/Switch.GetStatus?id=" + Id);
    IF response.IsSuccess
        VAR content := response.Content;
        VAR responseHeaders := response.Headers;
        SwitchStatus := response.Content;
    END
end
```

Servisné atribúty

Voltage \[V]

```taphome
PARSEJSON(SwitchStatus, "$.voltage", true);
```

Current \[A]

```taphome
PARSEJSON(SwitchStatus, "$.current", true);
```

Power Factor

```taphome
PARSEJSON(SwitchStatus, "$.pf", true);
```

Roleta Posuvný Čítanie aj zápis

Motorizované ovládanie rolety so sledovaním polohy — vyžaduje kalibráciu pre ovládanie polohy

numeric Jednotka: % json\_path

Servisné atribúty

|                              |                                                                                                |
|------------------------------|------------------------------------------------------------------------------------------------|
| Zdroj                        | Zdroj posledného príkazu rolety                                                                |
| Stav                         | Aktuálny stav rolety — open, closed, opening, closing, stopped, calibrating                    |
| Aktuálna poloha              | Aktuálna poloha rolety v percentách (0–100), null ak nie je kalibrovaná                        |
| Cieľová poloha               | Cieľová poloha počas pohybu rolety                                                             |
| Časový limit pohybu          | Sekundy do automatického zastavenia počas pohybu                                               |
| Pohyb začal o                | Časová značka začiatku aktuálneho pohybu                                                       |
| Kalibrovaný                  | Či je ovládanie polohy povolené (true po úspešnej kalibrácii)                                  |
| Teplota                      | Vnútorná teplota zariadenia v stupňoch Celzia                                                  |
| Počiatočný stav              | Správanie rolety po zapnutí — open, closed alebo stopped                                       |
| Režim vstupu                 | Režim zapojenia fyzického vstupu — single, dual alebo detached                                 |
| Limit výkonu                 | Maximálny prah výkonu vo Wattoch pre ochranu proti preťaženiu                                  |
| Limit napätia                | Maximálny prah napätia vo Voltoch pre ochranu proti prepätiu                                   |
| Limit prúdu                  | Maximálny prah prúdu v Ampéroch pre ochranu proti nadprúdu                                     |
| Prah nečinnosti motora       | Prah výkonu, pod ktorým sa motor považuje za nečinný (0–50 W)                                  |
| Potvrdenie nečinnosti motora | Doba, počas ktorej musí motor zostať pod prahom nečinnosti na potvrdenie zastavenia (0,25–2 s) |
| Maximálny čas otvorenia      | Maximálny čas otvorenia pred automatickým zastavením (0,1–300 s)                               |
| Maximálny čas zatvorenia     | Maximálny čas zatvorenia pred automatickým zastavením (0,1–300 s)                              |
| Prehodiť vstupy              | Či je priradenie vstupov S1/S2 prehodené                                                       |
| Invertovať smery             | Či sú smery otvorenia/zatvorenia invertované                                                   |
| Detekcia prekážky            | Či je detekcia prekážky povolená                                                               |
| Bezpečnostný spínač          | Či je funkcia bezpečnostného spínača povolená                                                  |

Servisné akcie

|                   |                                                                |
|-------------------|----------------------------------------------------------------|
| Otvoriť           | Úplne otvorí roletu                                            |
| Zatvoriť          | Úplne zatvorí roletu                                           |
| Zastaviť          | Okamžite zastaví pohyb rolety                                  |
| Kalibrovať        | Spustí kalibráciu rolety — vyžadovaná pre ovládanie polohy     |
| Prejsť na pozíciu | Presunie roletu na určenú polohu (0–100 %)                     |
| Obrátiť smery     | Prepne konfiguráciu invert\_directions a reštartuje zariadenie |

Čítanie (modul)

```taphome
if PARSEJSON(SysConfig, "$.device.profile") = "switch"
    adderror("Device profile is set to switch");
else
    var response := SENDHTTPREQUEST("/rpc/Cover.GetStatus?id=" + Id);
    IF response.IsSuccess
        VAR content := response.Content;
        VAR responseHeaders := response.Headers;
        CoverStatus := response.Content;
    END
    
    response := SENDHTTPREQUEST("/rpc/Cover.GetConfig?id=" + Id);
    IF response.IsSuccess
        content := response.Content;
        responseHeaders := response.Headers;
        CoverConfig := response.Content;
    END
end
```

Čítanie úrovne žalúzie

```taphome
if PARSEJSON(SysConfig, "$.device.profile") = "switch"
    adderror("Device profile is set to switch");
else
    var response := SENDHTTPREQUEST("/rpc/Cover.GetStatus?id=" + Id);
    IF response.IsSuccess
        CoverStatus := response.Content;
    END
    if PARSEJSON(CoverStatus, "$.pos_control", true) = true
        var pos := -1;
        var curpos := PARSEJSON(CoverStatus, "$.current_pos", true);
        if ISNULL(curpos)
            adderror("Device lost its position. Open or close the cover completely to enable back position control.");
            return(0);
        end
        var target := PARSEJSON(CoverStatus, "$.target_pos", true);
        if(ISNULL(target), pos := curpos, pos := target);
        if PARSEJSON(CoverConfig, "$.invert_directions", true)
            return(linear(pos, 0, 0, 100, 1));
        else
            return(linear(pos, 0, 1, 100, 0));
        end
    else
        adderror("Device is not calibrated");
    end
end
```

Zápis úrovne žalúzie

```taphome
if PARSEJSON(SysConfig, "$.device.profile") = "switch"
    adderror("Device profile is set to switch");
else
    var pos := 0;
    if PARSEJSON(CoverConfig, "$.invert_directions", true)
        pos := linear(Bl, 0, 0, 1, 100);
    else
        pos := linear(Bl, 0, 100, 1, 0);
    end
    VAR response := SENDHTTPREQUEST("rpc/Cover.GoToPosition?id=" + Id + "&pos=" + pos);
    IF response.IsSuccess
      VAR content := response.Content;
      Return("OK");
    else
      return(parsejson(response.Content,"$.message"));
    END
end
```

Servisné atribúty

Source

```taphome
PARSEJSON(CoverStatus, "$.source", true);
```

State

```taphome
PARSEJSON(CoverStatus, "$.state", true);
```

Current Position

```taphome
PARSEJSON(CoverStatus, "$.current_pos", true);
```

Target Position

```taphome
PARSEJSON(CoverStatus, "$.target_pos", true);
```

Move Timeout

```taphome
PARSEJSON(CoverStatus, "$.move_timeout", true);
```

Move Started at

```taphome
PARSEJSON(CoverStatus, "$.move_started_at", true);
```

Calibrated

```taphome
PARSEJSON(CoverStatus, "$.pos_control", true);
```

Temperature \[°C]

```taphome
PARSEJSON(CoverStatus, "$.temperature.tC", true);
```

Initial State

```taphome
PARSEJSON(CoverConfig, "$.initial_state", true);
```

Input Mode

```taphome
PARSEJSON(CoverConfig, "$.in_mode", true);
```

Power Limit \[W]

```taphome
PARSEJSON(CoverConfig, "$.power_limit", true);
```

Voltage Limit \[V]

```taphome
PARSEJSON(CoverConfig, "$.voltage_limit", true);
```

Current Limit \[A]

```taphome
PARSEJSON(CoverConfig, "$.current_limit", true);
```

Motor Idle Power Threshold \[W]

```taphome
PARSEJSON(CoverConfig, "$.motor.idle_power_thr", true);
```

Motor Idle Confirm Period \[s]

```taphome
PARSEJSON(CoverConfig, "$.motor.idle_confirm_period", true);
```

Max Time Open \[s]

```taphome
PARSEJSON(CoverConfig, "$.maxtime_open", true);
```

Max Time Close \[s]

```taphome
PARSEJSON(CoverConfig, "$.maxtime_close", true);
```

Swap Inputs

```taphome
PARSEJSON(CoverConfig, "$.swap_inputs", true);
```

Invert Directions

```taphome
PARSEJSON(CoverConfig, "$.invert_directions", true);
```

Obstruction Detection

```taphome
PARSEJSON(CoverConfig, "$.obstruction_detection", true);
```

Safety Switch

```taphome
PARSEJSON(CoverConfig, "$.safety_switch", true);
```

Servisné akcie

Open

```taphome
VAR response := SENDHTTPREQUEST("rpc/Cover.Open?id=" + Id );
IF response.IsSuccess
  VAR content := response.Content;
  Return("OK");
else
  return(parsejson(response.Content,"$.message"));
END;
```

Close

```taphome
VAR response := SENDHTTPREQUEST("rpc/Cover.Close?id=" + Id );
IF response.IsSuccess
  VAR content := response.Content;
  Return("OK");
else
  return(parsejson(response.Content,"$.message"));
END;
```

Stop

```taphome
VAR response := SENDHTTPREQUEST("rpc/Cover.Stop?id=" + Id );
IF response.IsSuccess
  VAR content := response.Content;
  Return("OK");
else
  return(parsejson(response.Content,"$.message"));
END;
```

Calibrate

```taphome
VAR response := SENDHTTPREQUEST("rpc/Cover.Calibrate?id=" + Id );
IF response.IsSuccess
  VAR content := response.Content;
  Return("OK");
else
  return(parsejson(response.Content,"$.message"));
END;
```

Go to Position

Parametre: Position (0–100 pos)

```taphome
VAR response := SENDHTTPREQUEST("rpc/Cover.GoToPosition?id=" + Id + "&pos=" + pos);
IF response.IsSuccess
  VAR content := response.Content;
  Return("OK");
else
  return(parsejson(response.Content,"$.message"));
END;
```

Reverse directions

```taphome
var reverse := "false";
if(PARSEJSON(CoverConfig, "$.invert_directions"), reverse := "false", reverse := "true");
VAR response := SENDHTTPREQUEST("rpc/Cover.SetConfig?id=0&config={\"invert_directions\":" + reverse + "}");
IF response.IsSuccess
  SENDHTTPREQUEST("rpc/Shelly.Reboot");
  Return("OK");
else
  return(parsejson(response.Content,"$.message"));
END;
```

Spínač 1 Prepínač Čítanie aj zápis

Reléový výstup kanál 1 — ovládanie zapnutia/vypnutia s konfiguráciou správania po zapnutí a režimu vstupu

boolean json\_path

Hodnoty / Stavy: ON · OFF

Servisné akcie

|                          |                                              |
|--------------------------|----------------------------------------------|
| Nastaviť počiatočný stav | Konfiguruje správanie spínača po zapnutí     |
| Nastaviť režim           | Konfiguruje režim zapojenia fyzického vstupu |

Čítanie stavu prepínača

```taphome
if PARSEJSON(SysConfig, "$.device.profile") = "cover"
    adderror("Device profile is set to cover");
else
    RETURN(PARSEJSON(SwitchStatus, "$.output", true));
end
```

Zápis stavu prepínača

```taphome
if PARSEJSON(SysConfig, "$.device.profile") = "switch"
    VAR response := SENDHTTPREQUEST("rpc/Switch.Set?id=" + Id + "&on=" + if(St,"true","false"));
    IF response.IsSuccess = false
      ADDERROR(response.StatusCode);
    END
end
```

Čítanie (modul)

```taphome
if PARSEJSON(SysConfig, "$.device.profile") = "switch"
    var response := SENDHTTPREQUEST("/rpc/Switch.GetStatus?id=" + Id);
    IF response.IsSuccess
        VAR content := response.Content;
        VAR responseHeaders := response.Headers;
        SwitchStatus := response.Content;
    END
    
    response := SENDHTTPREQUEST("/rpc/Switch.GetConfig?id=" + Id);
    IF response.IsSuccess
        content := response.Content;
        responseHeaders := response.Headers;
        SwitchConfig := response.Content;
    END
end
```

Servisné atribúty

Source

```taphome
PARSEJSON(SwitchStatus, "$.source", true);
```

Temprature \[°C]

```taphome
PARSEJSON(SwitchStatus, "$.temperature.tC", true);
```

Initial State

```taphome
PARSEJSON(SwitchConfig, "$.initial_state", true);
```

Input Mode

```taphome
PARSEJSON(SwitchConfig, "$.in_mode", true);
```

Power Limit \[W]

```taphome
PARSEJSON(SwitchConfig, "$.power_limit", true);
```

Voltage Limit \[V]

```taphome
PARSEJSON(SwitchConfig, "$.voltage_limit", true);
```

Current Limit \[A]

```taphome
PARSEJSON(SwitchConfig, "$.current_limit", true);
```

Servisné akcie

Set Initial State

Parametre: Mode

```taphome
var mode := SWITCH(md, 1, "on", 2, "restore_last", 3, "match_input", "off");
VAR response := SENDHTTPREQUEST("rpc/Switch.SetConfig?id=" + Id +"&config={\"initial_state\":\""+mode+"\"}");
IF response.IsSuccess
  VAR content := response.Content;
  Return("OK");
else
  return(parsejson(response.Content,"$.message"));
END;
```

Set Mode

Parametre: Mode

```taphome
var mode := SWITCH(md, 1, "detached", "follow");
VAR response := SENDHTTPREQUEST("rpc/Switch.SetConfig?id=" + Id +"&config={\"in_mode\":\""+mode+"\"}");
IF response.IsSuccess
  VAR content := response.Content;
  Return("OK");
else
  return(parsejson(response.Content,"$.message"));
END;
```

Spínač 2 Prepínač Čítanie aj zápis

Reléový výstup kanál 2 — ovládanie zapnutia/vypnutia s konfiguráciou správania po zapnutí a režimu vstupu

boolean json\_path

Hodnoty / Stavy: ON · OFF

Servisné akcie

|                          |                                              |
|--------------------------|----------------------------------------------|
| Nastaviť počiatočný stav | Konfiguruje správanie spínača po zapnutí     |
| Nastaviť režim           | Konfiguruje režim zapojenia fyzického vstupu |

Čítanie stavu prepínača

```taphome
if PARSEJSON(SysConfig, "$.device.profile") = "cover"
    adderror("Device profile is set to cover");
else
    RETURN(PARSEJSON(SwitchStatus, "$.output", true));
end
```

Zápis stavu prepínača

```taphome
if PARSEJSON(SysConfig, "$.device.profile") = "switch"
    VAR response := SENDHTTPREQUEST("rpc/Switch.Set?id=" + Id + "&on=" + if(St,"true","false"));
    IF response.IsSuccess = false
      ADDERROR(response.StatusCode);
    END
end
```

Čítanie (modul)

```taphome
if PARSEJSON(SysConfig, "$.device.profile") = "switch"
    var response := SENDHTTPREQUEST("/rpc/Switch.GetStatus?id=" + Id);
    IF response.IsSuccess
        VAR content := response.Content;
        VAR responseHeaders := response.Headers;
        SwitchStatus := response.Content;
    END
    
    response := SENDHTTPREQUEST("/rpc/Switch.GetConfig?id=" + Id);
    IF response.IsSuccess
        content := response.Content;
        responseHeaders := response.Headers;
        SwitchConfig := response.Content;
    END
end
```

Servisné atribúty

Source

```taphome
PARSEJSON(SwitchStatus, "$.source", true);
```

Temprature \[°C]

```taphome
PARSEJSON(SwitchStatus, "$.temperature.tC", true);
```

Initial State

```taphome
PARSEJSON(SwitchConfig, "$.initial_state", true);
```

Input Mode

```taphome
PARSEJSON(SwitchConfig, "$.in_mode", true);
```

Power Limit \[W]

```taphome
PARSEJSON(SwitchConfig, "$.power_limit", true);
```

Voltage Limit \[V]

```taphome
PARSEJSON(SwitchConfig, "$.voltage_limit", true);
```

Current Limit \[A]

```taphome
PARSEJSON(SwitchConfig, "$.current_limit", true);
```

Servisné akcie

Set Initial State

Parametre: Mode

```taphome
var mode := SWITCH(md, 1, "on", 2, "restore_last", 3, "match_input", "off");
VAR response := SENDHTTPREQUEST("rpc/Switch.SetConfig?id=" + Id +"&config={\"initial_state\":\""+mode+"\"}");
IF response.IsSuccess
  VAR content := response.Content;
  Return("OK");
else
  return(parsejson(response.Content,"$.message"));
END;
```

Set Mode

Parametre: Mode

```taphome
var mode := SWITCH(md, 1, "detached", "follow");
VAR response := SENDHTTPREQUEST("rpc/Switch.SetConfig?id=" + Id +"&config={\"in_mode\":\""+mode+"\"}");
IF response.IsSuccess
  VAR content := response.Content;
  Return("OK");
else
  return(parsejson(response.Content,"$.message"));
END;
```

**Pripojenie:** Packet Parser → HTTP • Hostname: `shellyplus2pm-{MAC}.local`

Možné vylepšenia (8)

- Frequency — Network frequency in Hz, available in both Switch and Cover status responses
- Energy per Minute — Last 3 minute energy values in Wh, available but not exposed as separate device
- Input 1 State — Physical input state (input:0), available in both profiles
- Input 2 State — Physical input state (input:1), available in both profiles
- Switch Toggle — Toggle switch without knowing current state — could be added as service action
- Reset Energy Counters — Resets energy measurement counters — could be added as service action
- Slat Position — Slat/tilt position for venetian blinds, if hardware supports it
- WiFi Signal Strength — RSSI in dBm, available via WiFi component

## Parametre importu

Tieto hodnoty zadáte pri importe XML.

| Pýta sa v aplikácii | Predvolené    |
|---------------------|---------------|
| IP adresa           | `192.168.0.1` |

## Zdroje

- Shelly Gen2+ RPC API Reference
  
  [shelly-api-docs.shelly.cloud](https://shelly-api-docs.shelly.cloud/gen2/) 2026-03-27
- Switch Component API
  
  [shelly-api-docs.shelly.cloud](https://shelly-api-docs.shelly.cloud/gen2/ComponentsAndServices/Switch/) 2026-03-27
- System (Sys) Component API
  
  [shelly-api-docs.shelly.cloud](https://shelly-api-docs.shelly.cloud/gen2/ComponentsAndServices/Sys/) 2026-03-27
- WiFi Component API
  
  [shelly-api-docs.shelly.cloud](https://shelly-api-docs.shelly.cloud/gen2/ComponentsAndServices/Wifi/) 2026-03-27
- MQTT Component API
  
  [shelly-api-docs.shelly.cloud](https://shelly-api-docs.shelly.cloud/gen2/ComponentsAndServices/MQTT/) 2026-03-27
- HA Shelly Integration (Gen2+)
  
  [www.home-assistant.io](https://www.home-assistant.io/integrations/shelly/) 2026-03-27
- Shelly Plus 2PM Knowledge Base
  
  [kb.shelly.cloud](https://kb.shelly.cloud/knowledge-base/shelly-plus-2pm) 2026-03-29
- Cover Component API (Gen2+)
  
  [shelly-api-docs.shelly.cloud](https://shelly-api-docs.shelly.cloud/gen2/ComponentsAndServices/Cover/) 2026-03-29
- Shelly Plus 2PM Device API Reference
  
  [shelly-api-docs.shelly.cloud](https://shelly-api-docs.shelly.cloud/gen2/Devices/Gen2/ShellyPlus2PM/) 2026-03-29

## Súvisiaca dokumentácia

- [Integrácia Packet Parser](https://taphome.com/sk/compatibility/packet-parser-guide/)
- [Packet Parser (HTTP, TCP, UDP, FTP, MQTT)](https://taphome.com/sk/docs/integration/packet-parser/)
- [Funkcie Packet parsera](https://taphome.com/sk/docs/script/packet-parser/)
- [Parsovacie funkcie](https://taphome.com/sk/docs/script/parsing-functions/)

