---
title: "Shelly Plus 2PM"
description: "Kétcsatornás relé teljesítményméréssel vagy motorizált redőnyvezérléssel HTTP RPC API-n. TapHome integráció Shelly Plus 2PM-hez profilváltással."
url: "https://taphome.com/hu/compatibility/shelly-plus-2-pm/"
language: hu
lastmod: 2026-10-08
generator: hugo
ai:
  topics: ["http","electric-meter","wifi","relay","power-metering","cover","shutter","mdns","profile"]
  questions: ["Hogyan integrálható a Shelly Plus 2PM a TapHome-mal?","Mi a különbség a switch és cover profil között a Shelly Plus 2PM-en?","Hogyan vezérelhető redőnymotor Shelly Plus 2PM-mel és TapHome-mal?","Hogyan válthatok relé és redőny üzemmód között a Shelly Plus 2PM-en?","Miért mutat profilhibát a Shelly Plus 2PM sablon a TapHome-ban?","Hogyan kalibrálható a Shelly Plus 2PM redőny pozícióvezérléshez?","Milyen diagnosztika érhető el a Shelly Plus 2PM-hez a TapHome-ban?"]
---

# Shelly Plus 2PM

Kommunikáció: Packet Parser → HTTP

- [Shelly Plus 2PM termékoldal](https://www.shelly.com/en/products/shop/shelly-plus-2pm)
- [Shelly Plus 2PM API dokumentáció](https://shelly-api-docs.shelly.cloud/gen2/Devices/Gen2/ShellyPlus2PM/)

> Hálózati cím
> 
> A TapHome az importáláskor megadott címen éri el az eszközt. Adjon az eszköznek állandó címet — IP-foglalást a routerben, vagy az mDNS-nevét, ha támogatja —, különben az integráció leáll, amikor a router megváltoztatja a címet.
> 
> [A hálózat előkészítése](https://taphome.com/hu/docs/setup/network-preparation/)

## Integrációs útmutató

A Shelly Plus 2PM egy kompakt kétcsatornás Wi-Fi relé beépített teljesítményméréssel mindkét csatornán. Elfér egy szabványos fali kapcsoló mögött, és két független áramkört képes vezérelni, egyenként legfeljebb 10 A-ig (összesen 16 A 230 V AC mellett), vagy egyetlen motorizált redőnyt meghajtani. A TapHome HTTP-n kommunikál az eszközzel a Gen2+ RPC API segítségével a helyi hálózaton — felhőkapcsolat nem szükséges.

Az eszköz két üzemmódprofilt támogat — **switch** és **cover** — a Shelly webes felületén vagy a TapHome szervizakcióval választható. A switch profilban mindkét relékimenet (O1 és O2) függetlenül működik csatornánkénti teljesítményfigyeléssel. A cover profilban a két kimenet egyetlen motort hajt meg redőnyökhöz, zsalukhoz vagy függönyökhöz, pozícióvezérléssel és kalibrációval.

> [!NOTE]
> A Shelly Plus 2PM megszűnt termék. Utódja, a [Shelly 2PM Gen3](https://taphome.com/hu/compatibility/shelly-2pm-gen3/), ugyanazt a kettős profil funkciót kínálja továbbfejlesztett processzorral (8 MB flash), akár 6 egyidejű HTTP-kapcsolattal és Matter-frissíthetőséggel.

## Konfiguráció

A Shelly Plus 2PM Wi-Fi-n csatlakozik. A TapHome sablon importálásakor adja meg az eszköz IP-címét (alapértelmezett helyőrző: `192.168.0.1`).

> [!WARNING]
> A hitelesítésnek **kikapcsoltnak** kell lennie a Shelly eszközön a TapHome integrációhoz. A TapHome nem támogatja a Gen2+ eszközök által használt HTTP Digest Auth-ot. Nyissa meg a Shelly webes felületét (`http://{eszkoz-ip}`) → Settings → Authentication, és győződjön meg róla, hogy ki van kapcsolva.

> [!NOTE]
> Ha az ECO mód engedélyezve van a Shelly eszközön, kommunikációs időtúllépéseket okozhat a sablon gyors lekérdezési intervallumai (2,5–5 másodperc) miatt. Kapcsolja ki az ECO módot a Shelly webes felületén, ha időszakos csatlakozási problémákat tapasztal.

### Profilválasztás

A Shelly Plus 2PM egyszerre az egyik profilban működik. Az aktív profil határozza meg, mely TapHome eszközök működnek:

- **Switch profil** — mindkét relés kapcsolót (Switch 1 és Switch 2) és csatornánkénti energiamérőiket aktiválja. A redőny eszköz és a redőny energiamérő nem reagál.
- **Cover profil** — a redőny eszközt és energiamérőjét aktiválja. A két kapcsoló eszköz és energiamérőik nem reagálnak.

Az aktív profil modulszintű szervizattribútumként („Profile") látható a TapHome-ban. A profil váltásához használja a **Profile** szervizakciót modulszinten, vagy váltsa át a Shelly webes felületén. Profilváltás után az eszköz újraindul, és csak az új profilnak megfelelő eszközök fognak működni.

> [!TIP]
> A sablon mind a hat eszközt tartalmazza (2 kapcsoló + 2 kapcsoló energiamérő + 1 redőny + 1 redőny energiamérő), de csak az aktív profilnak megfelelő eszközök működnek. Ez elvárt viselkedés — a rossz profilon lévő eszközök egyszerűen nem reagálnak.

### Redőny kalibráció

A cover profil használatakor a motor végállásait kalibrálni kell, mielőtt a pozícióvezérlés működne. Amíg a kalibráció nincs befejezve, a `current_pos` null-t ad vissza, és a „Calibrated" szervizattribútum `false` értéket mutat. Kalibráljon a Shelly webes felületén vagy a **Calibrate** szervizakció elindításával a Shutter eszközön a TapHome-ban. A kalibráció során a redőny többlépcsős szekvenciát hajt végre (teljes nyitás → teljes zárás → teljes nyitás → lépcsőzetes zárás → lépcsőzetes nyitás) a mozgástávolságok méréséhez.

## Eszközképességek

### Relévezérlés (switch profil)

A sablon két független relés kapcsolót tesz elérhetővé. Minden kapcsoló a `/rpc/Switch.GetStatus?id={0,1}` végpontról olvassa állapotát (`output` mező, boolean), és a `/rpc/Switch.Set?id={0,1}&on=true|false` végponton vezérli a relét.

Minden kapcsoló hét szervizattribútumot tesz elérhetővé:

- **Source** — az utolsó parancs forrása (http, UI, WS_in stb.)
- **Temperature** — belső eszközhőmérséklet °C-ban
- **Initial State** — kapcsoló viselkedése bekapcsoláskor (off, on, restore_last vagy match_input)
- **Input Mode** — fizikai bemenet bekötési módja (follow vagy detached)
- **Power Limit** — maximális teljesítményküszöb wattban a túlterhelés-védelemhez
- **Voltage Limit** — maximális feszültségküszöb voltban
- **Current Limit** — maximális áramküszöb amperben

Két szervizakció érhető el kapcsolónként:

- **Set Initial State** — a relé viselkedését konfigurálja bekapcsolás után (off, on, restore_last, match_input)
- **Set Mode** — a fizikai bemenet bekötési módját konfigurálja (follow, detached)

### Teljesítménymérés (switch profil)

Minden kapcsolócsatornának saját energiamérője van, amely két értéket olvas a `/rpc/Switch.GetStatus` végpontról:

- **Pillanatnyi teljesítmény** — `apower` wattban, a sablon kW-ra konvertálja
- **Összesített fogyasztás** — `aenergy.total` wattórában, a sablon kWh-ra konvertálja

Minden energiamérő három szervizattribútumot is elérhetővé tesz:

- **Voltage** — tápfeszültség voltban
- **Current** — terhelési áram amperben
- **Power Factor** — a terhelés teljesítménytényezője

A mérők csak olvashatók — automatikusan frissülnek minden lekérdezési ciklussal.

### Redőnyvezérlés (cover profil)

A redőny eszköz motorizált redőnyt, függönyt vagy napellenzőt vezérel. A pozíciót a `/rpc/Cover.GetStatus?id=0` végpontról olvassa (`current_pos` mező, 0–100%), és a `/rpc/Cover.GoToPosition?id=0&pos=N` végponton írja.

A redőny eszköz 21 szervizattribútumot tesz elérhetővé:

- **Állapot** — forrás, állapot (open/closed/opening/closing/stopped/calibrating), aktuális és cél pozíció, mozgási időtúllépés és indítási idő
- **Kalibrált** — pozícióvezérlés engedélyezve-e (`pos_control`)
- **Hőmérséklet** — belső eszközhőmérséklet °C-ban
- **Bekapcsolási viselkedés** — kezdeti állapot konfiguráció (open, closed, stopped)
- **Bemeneti beállítások** — bemeneti mód (single, dual, detached), bemenetek cseréje, irányok invertálása
- **Védelmi korlátok** — teljesítménykorlát (W), feszültségkorlát (V), áramkorlát (A)
- **Motor beállítás** — üresjárati teljesítményküszöb (0–50 W), üresjárati megerősítési időszak (0,25–2 s)
- **Mozgási korlátok** — maximális nyitási idő (0,1–300 s), maximális zárási idő (0,1–300 s)
- **Biztonsági funkciók** — akadályérzékelés állapota, biztonsági kapcsoló állapota

Hat szervizakció érhető el a redőnyhöz:

- **Open** — teljesen kinyitja a redőnyt
- **Close** — teljesen bezárja a redőnyt
- **Stop** — azonnal megállítja a mozgást
- **Calibrate** — elindítja a kalibrációs eljárást a pozícióvezérléshez
- **Go to Position** — a redőnyt meghatározott pozícióba mozgatja (0–100%)
- **Reverse directions** — az `invert_directions` konfigurációt váltja és újraindítja az eszközt

### Teljesítménymérés (cover profil)

A redőny saját energiamérővel rendelkezik, amely a `/rpc/Cover.GetStatus` végpontról olvas:

- **Pillanatnyi teljesítmény** — `apower` wattban, a sablon kW-ra konvertálja
- **Összesített fogyasztás** — `aenergy.total` wattórában, a sablon kWh-ra konvertálja

A redőny energiamérő szervizattribútumként a feszültséget, áramot és teljesítménytényezőt is elérhetővé teszi.

### Szerviz-diagnosztika

A sablon két modulszintű szervizattribútumot tesz elérhetővé:

- **MAC** — az eszköz MAC-címe a rendszerkonfigurációból
- **Profile** — az aktuálisan aktív eszközprofil (switch vagy cover)

A modul olvasó szkript a `restart_required` értéket is ellenőrzi a `/rpc/Sys.GetStatus` végponton, és figyelmeztetést jelenít meg a TapHome-ban, ha újraindítás szükséges.

### Szervizakciók

Két szervizakció érhető el modulszinten:

- **Reboot** — eszközújraindítást indít a `/rpc/Shelly.Reboot` végponton
- **Profile** — váltás a switch és cover üzemmódprofilok között a `/rpc/Shelly.SetProfile` végponton

### További képességek

A Shelly Plus 2PM az RPC válaszaiban a hálózati frekvenciát (`freq`), percenkénti energiaértékeket (`aenergy.by_minute`), fizikai bemeneti állapotokat (`input:0`, `input:1`), Wi-Fi jelerősséget (RSSI) és egy kapcsoló-toggle végpontot is elérhetővé tesz. Az energiaszámlálók visszaállíthatók a `/rpc/Switch.ResetCounters` (switch profil) vagy `/rpc/Cover.ResetCounters` (cover profil) végponton. Cover módban a lamella/döntés pozíció velencei zsalukhoz elérhető, ha a hardver támogatja. Ezek a képességek egy jövőbeli sablonfrissítésben adhatók hozzá.

## Hibaelhárítás

### Az eszköz nem válaszol

1. Ellenőrizze, hogy a Shelly csatlakozik a Wi-Fi-hez és érvényes IP-címmel rendelkezik
2. Próbálja meg az mDNS hosztnevet (`shellyplus2pm-AABBCCDDEE.local`) az IP-cím helyett — az IP megváltozhatott DHCP-megújítás után
3. Nyissa meg a `http://{eszkoz-ip}/rpc/Shelly.GetDeviceInfo` címet böngészőben — ha JSON-nal válaszol, az eszköz elérhető
4. Ellenőrizze, hogy a TapHome Core és a Shelly azonos hálózaton / VLAN-on vannak
5. Győződjön meg róla, hogy a hitelesítés ki van kapcsolva a Shelly eszközön

### Profileltérés — eszközök nem reagálnak

Ha néhány eszköz nem mutat mérési értékeket, miközben mások rendesen működnek:

1. Ellenőrizze, melyik profil aktív jelenleg — a modulszintű „Profile" szervizattribútum mutatja az aktuális módot
2. Váltson a megfelelő profilra a **Profile** szervizakcióval, vagy hagyja figyelmen kívül a nem használt eszközöket
3. Profilváltás után az eszköz automatikusan újraindul — várjon néhány másodpercet az újracsatlakozásra

### A redőny pozíció nem működik

1. Ellenőrizze, hogy az eszköz cover profilban van — a switch profil nem teszi elérhetővé a redőny funkciókat
2. Futtassa a **Calibrate** szervizakciót a Shutter eszközön — a pozícióvezérlés befejezett kalibrációt igényel
3. Ellenőrizze, hogy a motor helyesen van csatlakoztatva az O1 és O2 kapcsokra
4. Kérdezze le manuálisan a `/rpc/Cover.GetStatus?id=0` végpontot, és ellenőrizze, hogy a `pos_control` értéke `true`

### A redőny kalibráció sikertelen

A kalibráció megszakad, ha:

- A redőny nem éri el a végállást a `maxtime_open` vagy `maxtime_close` időn belül
- A kalibráció során biztonsági funkció aktiválódik (akadályérzékelés vagy biztonsági kapcsoló)
- A kalibráció során külső leállítási parancs érkezik
- A motor iránya nem felel meg az elvárt visszajelzésnek
- Az eszköz a kalibráció során újraindul

Ellenőrizze a motor bekötését, növelje a `maxtime_open`/`maxtime_close` értéket, ha a motor lassú, és győződjön meg róla, hogy nincsenek akadályok.

### Teljesítményértékek nullát mutatnak

1. Erősítse meg, hogy a terhelés a Shelly relén keresztül van csatlakoztatva (nem áthidalva)
2. Ellenőrizze, hogy a relé be van kapcsolva — a mérő csak akkor mér, ha áram folyik a relén át
3. Kérdezze le manuálisan a `/rpc/Switch.GetStatus?id=0` (switch profil) vagy `/rpc/Cover.GetStatus?id=0` (cover profil) végpontot, és ellenőrizze, hogy az `apower` nem nullás értéket ad

> [!WARNING]
> A Shelly Gen2+ eszközök legfeljebb **6 egyidejű HTTP-kapcsolatot** támogatnak. Bár ez javulás a Gen1-hez képest (2 kapcsolat), kerülje az egyidejű lekérdezést túl sok rendszerből (TapHome, Home Assistant, egyéni szkriptek) a kapcsolatkimerülés elkerülése érdekében.

## Telepítés a TapHome-ban

### Előfeltételek

- Shelly eszköz telepítve és bekapcsolva
- Helyi Wi-Fi hálózat (2,4 GHz)
- TapHome CCU ugyanazon a hálózaton

### 1. lépés — Shelly csatlakoztatása a Wi-Fi-hez

**A lehetőség — Shelly alkalmazás (ajánlott):**

1. Töltse le a [Shelly alkalmazást](https://www.shelly.com/en/support/shelly-app) (iOS / Android)
2. Érintse meg a **+** → **Add Device** gombot, és kövesse a Bluetooth párosítási varázslót
3. Adja meg Wi-Fi hitelesítő adatait, amikor a rendszer kéri

**B lehetőség — AP mód (alkalmazás nélkül):**

1. Első bekapcsoláskor az eszköz létrehoz egy hotspotot: `ShellyXXX-AABBCCDDEE`
2. Csatlakoztassa telefonját/PC-jét ehhez a hotspothoz
3. Nyissa meg a `http://192.168.33.1` címet → **Internet & Security** → **Wi-Fi Mode - Client**
4. Adja meg az SSID-t és a jelszót → **Save**

> [!NOTE]
> A Shelly csak **2,4 GHz**-es hálózatokat támogat. Az 5 GHz-es hálózatok nem jelennek meg a keresésben.

### 2. lépés — IP-cím megkeresése

A Wi-Fi-hez való csatlakozás után az alábbi módszerek egyikével keresse meg a hozzárendelt IP-címet:

- **Shelly alkalmazás:** Eszköz részletei → **Device info** → IP-cím
- **Shelly webes felület:** Csatlakozzon az eszköz AP-jához a Wi-Fi beállítás előtt — az IP a mentés után jelenik meg
- **Router DHCP tábla:** Keressen egy hasonló hosztnevet: `shelly1pm-AABBCCDDEE`
- **mDNS:** Pingelje a `shelly<model>-<mac>.local` címet (pl. `shelly1pm-AABBCCDDEE.local`) ugyanarról a hálózatról

> [!TIP]
> Rendeljen **statikus IP**-t (DHCP foglalást) a Shelly eszközhöz a routerben, hogy a cím ne változzon a router újraindítása után.

### 3. lépés — Konfigurálás a TapHome-ban

1. A TapHome-ban adjon hozzá egy új **Packet Parser (HTTP)** modult
2. **IP Address:** adja meg a 2. lépésben kapott IP-t (pl. `192.168.1.50`)
3. **Port:** `80` (alapértelmezett, nem kell módosítani)
4. Importálja a sablont — a TapHome rendszeresen lekérdezi a `/status` végpontot az eszköz állapotának olvasásához

> [!NOTE]
> A HTTP hitelesítés a Shelly eszközökön alapértelmezetten ki van kapcsolva. Ha engedélyezte a bejelentkezésvédelmet, a TapHome jelenleg nem támogatja a HTTP Basic Auth-ot — a TapHome integrációhoz hagyja kikapcsolva a hitelesítést.

## Elérhető eszközök 6

Ezek az eszközök az importálás után jelennek meg a TapHome-ban.

Shelly Plus 2PM Modul

Szerviz attribútumok

|        |                                           |
|--------|-------------------------------------------|
| MAC    | Eszköz MAC-címe a rendszerkonfigurációból |
| Profil | Aktív eszközprofil — switch vagy cover    |

Szerviz műveletek

|             |                                                                              |
|-------------|------------------------------------------------------------------------------|
| Újraindítás | Újraindítja az eszközt                                                       |
| Profil      | Váltás a switch és cover üzemmódok között — az eszköz újraindítása szükséges |

Egyéni változók

Olvasás (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
```

Szerviz attribútumok

MAC

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

Profile

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

Szerviz műveletek

Reboot

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

Profile

Paraméterek: 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;
```

Teljesítménymérő (Redőny) Villanyóra Csak olvasható

Energiamérés cover üzemmódban — pillanatnyi teljesítmény (kW) és kumulatív energia (kWh)

numeric Egység: kW / kWh json\_path

Szerviz attribútumok

|                     |                                  |
|---------------------|----------------------------------|
| Feszültség          | Tápfeszültség Voltban            |
| Áram                | Terhelési áram Amperben          |
| Teljesítménytényező | A terhelés teljesítménytényezője |

Összes fogyasztás olvasása

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

Igény olvasása

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

Olvasás (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
```

Szerviz attribútumok

Voltage \[V]

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

Current \[A]

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

Power Factor

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

Teljesítménymérő (Kapcsoló 1) Villanyóra Csak olvasható

Energiamérés az 1. kapcsolócsatornához — pillanatnyi teljesítmény (kW) és kumulatív energia (kWh)

numeric Egység: kW / kWh json\_path

Szerviz attribútumok

|                     |                                  |
|---------------------|----------------------------------|
| Feszültség          | Tápfeszültség Voltban            |
| Áram                | Terhelési áram Amperben          |
| Teljesítménytényező | A terhelés teljesítménytényezője |

Összes fogyasztás olvasása

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

Igény olvasása

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

Olvasás (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
```

Szerviz attribútumok

Voltage \[V]

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

Current \[A]

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

Power Factor

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

Teljesítménymérő (Kapcsoló 2) Villanyóra Csak olvasható

Energiamérés a 2. kapcsolócsatornához — pillanatnyi teljesítmény (kW) és kumulatív energia (kWh)

numeric Egység: kW / kWh json\_path

Szerviz attribútumok

|                     |                                  |
|---------------------|----------------------------------|
| Feszültség          | Tápfeszültség Voltban            |
| Áram                | Terhelési áram Amperben          |
| Teljesítménytényező | A terhelés teljesítménytényezője |

Összes fogyasztás olvasása

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

Igény olvasása

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

Olvasás (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
```

Szerviz attribútumok

Voltage \[V]

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

Current \[A]

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

Power Factor

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

Redőny Csúszka Olvasás és írás

Motoros redőnyvezérlés pozíciókövetéssel — kalibrálás szükséges a pozícióvezérléshez

numeric Egység: % json\_path

Szerviz attribútumok

|                                     |                                                                                                                   |
|-------------------------------------|-------------------------------------------------------------------------------------------------------------------|
| Forrás                              | Az utolsó redőnyparancs forrása                                                                                   |
| Állapot                             | Aktuális redőnyállapot — open, closed, opening, closing, stopped, calibrating                                     |
| Aktuális pozíció                    | Aktuális redőnypozíció százalékban (0–100), null ha nincs kalibrálva                                              |
| Célpozíció                          | Célpozíció a redőny mozgása közben                                                                                |
| Mozgás időkorlát                    | Másodpercek az automatikus leállásig mozgás közben                                                                |
| Mozgás kezdete                      | Az aktuális mozgás kezdetének időbélyege                                                                          |
| Kalibrált                           | Engedélyezve van-e a pozícióvezérlés (true sikeres kalibrálás után)                                               |
| Hőmérséklet                         | Belső eszközhőmérséklet Celsiusban                                                                                |
| Kezdeti állapot                     | Redőny viselkedése bekapcsoláskor — open, closed vagy stopped                                                     |
| Bemeneti mód                        | Fizikai bemenet bekötési módja — single, dual vagy detached                                                       |
| Teljesítményhatár                   | Maximális teljesítményküszöb Wattban túlterhelés elleni védelemhez                                                |
| Feszültséghatár                     | Maximális feszültségküszöb Voltban túlfeszültség elleni védelemhez                                                |
| Áramhatár                           | Maximális áramküszöb Amperben túláram elleni védelemhez                                                           |
| Motor üresjárati teljesítményküszöb | Teljesítményküszöb, amely alatt a motor üresjáratúnak tekintendő (0–50 W)                                         |
| Motor üresjárat megerősítési idő    | Az az időtartam, ameddig a motornak az üresjárati küszöb alatt kell maradnia a leállás megerősítéséhez (0,25–2 s) |
| Maximális nyitási idő               | Maximális nyitási idő automatikus leállás előtt (0,1–300 s)                                                       |
| Maximális zárási idő                | Maximális zárási idő automatikus leállás előtt (0,1–300 s)                                                        |
| Bemenetek cseréje                   | Az S1/S2 bemenet-hozzárendelés fel van-e cserélve                                                                 |
| Irányok invertálása                 | A nyitási/zárási irányok invertálva vannak-e                                                                      |
| Akadályérzékelés                    | Az akadályérzékelés engedélyezve van-e                                                                            |
| Biztonsági kapcsoló                 | A biztonsági kapcsoló funkció engedélyezve van-e                                                                  |

Szerviz műveletek

|                      |                                                                           |
|----------------------|---------------------------------------------------------------------------|
| Nyitás               | Teljesen kinyitja a redőnyt                                               |
| Zárás                | Teljesen bezárja a redőnyt                                                |
| Leállítás            | Azonnal leállítja a redőny mozgását                                       |
| Kalibrálás           | Elindítja a redőny kalibrálását — szükséges a pozícióvezérléshez          |
| Pozícióra mozgatás   | A redőnyt a megadott pozícióba mozgatja (0–100 %)                         |
| Irányok megfordítása | Az invert\_directions konfiguráció átkapcsolása és az eszköz újraindítása |

Olvasás (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
```

Redőnyszint olvasása

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

Redőnyszint írása

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

Szerviz attribútumok

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

Szerviz műveletek

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

Paraméterek: 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;
```

Kapcsoló 1 Kapcsoló Olvasás és írás

Relékimenet 1. csatorna — be/ki vezérlés bekapcsolási viselkedés és bemeneti mód konfigurációval

boolean json\_path

Értékek / Állapotok: ON · OFF

Szerviz műveletek

|                            |                                                      |
|----------------------------|------------------------------------------------------|
| Kezdeti állapot beállítása | A kapcsoló bekapcsolási viselkedésének konfigurálása |
| Üzemmód beállítása         | A fizikai bemenet bekötési módjának konfigurálása    |

Kapcsoló állapot olvasása

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

Kapcsoló állapot írása

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

Olvasás (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
```

Szerviz attribútumok

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

Szerviz műveletek

Set Initial State

Paraméterek: 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

Paraméterek: 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;
```

Kapcsoló 2 Kapcsoló Olvasás és írás

Relékimenet 2. csatorna — be/ki vezérlés bekapcsolási viselkedés és bemeneti mód konfigurációval

boolean json\_path

Értékek / Állapotok: ON · OFF

Szerviz műveletek

|                            |                                                      |
|----------------------------|------------------------------------------------------|
| Kezdeti állapot beállítása | A kapcsoló bekapcsolási viselkedésének konfigurálása |
| Üzemmód beállítása         | A fizikai bemenet bekötési módjának konfigurálása    |

Kapcsoló állapot olvasása

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

Kapcsoló állapot írása

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

Olvasás (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
```

Szerviz attribútumok

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

Szerviz műveletek

Set Initial State

Paraméterek: 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

Paraméterek: 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;
```

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

Lehetséges fejlesztések (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

## Importálási paraméterek

Ezeket az értékeket az XML importálásakor adja meg.

| Az alkalmazás kéri | Alapérték     |
|--------------------|---------------|
| IP-cím             | `192.168.0.1` |

## Források

- 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

## Kapcsolódó dokumentáció

- [Packet Parser integráció](https://taphome.com/hu/compatibility/packet-parser-guide/)
- [Packet Parser (HTTP, TCP, UDP, FTP, MQTT)](https://taphome.com/hu/docs/integration/packet-parser/)
- [Packet parser függvények](https://taphome.com/hu/docs/script/packet-parser/)
- [Elemző függvények](https://taphome.com/hu/docs/script/parsing-functions/)

