TapHome

Shelly 2PM Gen3

Packet Parser → HTTP
Beküldő
Utoljára frissítve: 03. 2026
Shelly 2PM Gen3

A Shelly 2PM Gen3 egy kompakt kétcsatornás Wi-Fi relé modul beépített teljesítményméréssel. Elfér egy hagyományos fali kapcsoló mögött, és két független áramkört vezérelhet egyenként 10 A-ig (összesen 16 A 230 V AC-nál), vagy egyetlen motoros redőnyt/reluxát. A TapHome HTTP-n kommunikál az eszközzel a Gen2+/Gen3 JSON-RPC 2.0 API-n keresztül a helyi hálózaton — felhőkapcsolat nem szükséges.

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

A Shelly 1PM Gen3-mal ellentétben, amely egyetlen áramkört vezérel, a 2PM Gen3 kétcsatornás vezérlést vagy motoros redőnytámogatást biztosít. Mindkettő ugyanazt a Gen3 platformot használja ESP processzorral (8 MB flash), legfeljebb 6 egyidejű HTTP-kapcsolattal és Matter frissítési lehetőséggel.

Konfiguráció

A Shelly 2PM Gen3 Wi-Fi-n csatlakozik. A TapHome sablonimport során add meg az eszköz IP-címét (alapértelmezett helyőrző: 192.168.0.1).

A hitelesítést ki kell kapcsolni a Shelly eszközön a TapHome integrációhoz. A TapHome nem támogatja a Gen2+/Gen3 eszközök által használt HTTP Digest Auth hitelesítést. Nyisd meg a Shelly webes felületét (http://{device-ip}) → Settings → Authentication, és győződj meg róla, hogy ki van kapcsolva.

Ha az ECO mód be van kapcsolva a Shelly eszközön, kommunikációs időtúllépéseket okozhat a sablon gyors lekérdezési intervallumai (2,5–3 másodperc) miatt. Kapcsold ki az ECO módot a Shelly webes felületén, ha időszakos kapcsolódási problémákat tapasztalsz.

Profilválasztás

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

  • Switch profil — aktiválja mindkét relé kapcsolót (Kapcsoló 1 és Kapcsoló 2) független teljesítményméréssel. A redőny és reluxa eszközök profilhibát mutatnak.
  • Cover profil — aktiválja a redőnyt és reluxát. A kapcsoló eszközök profilhibát mutatnak.

Az aktív profil modulszintű szervizattribútumként („Profil") látható a TapHome-ban. A profil módosításához használd a Profil beállítása szervizakciót modulszinten, vagy válts a Shelly webes felületén. Profilváltás után az eszköz újraindul, és csak az új profilnak megfelelő eszközök működnek hiba nélkül.

A sablon mind a négy eszköztípust tartalmazza (2 kapcsoló + redőny + reluxa), de csak az aktív profilnak megfelelő eszközök működnek. A rossz profilban lévő eszközök hibaüzenetet jelenítenek meg, például „Profile is not set to switch" vagy „Profile is not set to cover" — ez elvárt viselkedés, nem meghibásodás.

Redőny kalibrálása

Cover profil használatakor a motor mozgási határait kalibrálni kell a pozícióvezérlés működéséhez. Amíg a kalibrálás nem fejeződik be, a sablon „Calibration is required" hibát jelenít meg. Kalibrálj a Shelly webes felületén vagy a Automatikus kalibrálás indítása szervizakció elindításával a TapHome-ban. A kalibrálás során a redőny teljesen felnyílik és teljesen lecsukódik a mozgási távolságok méréséhez.

Eszközképességek

Relévezérlés (switch profil)

A sablon két független relé kapcsolót tesz elérhetővé. Minden kapcsoló a /rpc/Switch.GetStatus?id={0,1} végpontról olvassa az á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ó szervizattribútumokat is biztosít csatornánkénti felügyelethez:

  • Hőmérséklet — belső eszközhőmérséklet °C-ban (temperature.tC)
  • Energiafogyasztás — kumulatív energia Wh-ban (aenergy.total)
  • Teljesítményfelvétel — pillanatnyi teljesítmény W-ban (apower)
  • Elektromos feszültség — tápfeszültség V-ban (voltage)
  • Elektromos áram — terhelési áram A-ban (current)
  • Frekvencia — AC hálózati frekvencia Hz-ben (freq)
  • Teljesítménytényező — teljesítménytényező értéke (pf)

A kapcsolók 2,5 másodpercenként frissülnek.

Redőnyvezérlés (cover profil)

A redőny eszköz motoros 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 és target_pos mezők, 0–100), és a /rpc/Cover.GoToPosition?id=0&pos=N végponton írja. A sablon megfordítja a pozícióskálát: 0 = teljesen nyitott és 100 = teljesen zárt a TapHome-ban.

A redőny szervizattribútumai:

  • Hőmérséklet — belső eszközhőmérséklet °C-ban
  • Energiafogyasztás — kumulatív motorenergia Wh-ban
  • Teljesítményfelvétel — pillanatnyi motorteljesítmény W-ban
  • Elektromos feszültség — tápfeszültség V-ban
  • Elektromos áram — motoráram A-ban

Az Automatikus kalibrálás indítása szervizakció a kalibrálás közvetlen elindítására szolgál a TapHome-ból.

Reluxavezérlés (cover profil)

A reluxa eszköz a redőnyt lamella-vezérléssel egészíti ki horizontális reluxákhoz. A pozíción kívül a lamellapozíciót (slat_pos) is olvassa és írja a /rpc/Cover.GoToPosition?id=0&pos=N&slat_pos=M végponton. Mind a pozíció-, mind a dőlésszög-skála meg van fordítva (0 = nyitott, 100 = zárt a TapHome-ban).

A reluxa ugyanazokat a szervizattribútumokat biztosítja, mint a redőny, plusz:

  • Lamella — mutatja, hogy a lamellavezérlés engedélyezve van-e vagy sem (a Cover.GetConfig → $.slat.enable alapján)
  • Lamella nyitási idő — beállított lamellanyitási időtartam másodpercben
  • Lamella zárási idő — beállított lamellazárási időtartam másodpercben

Ismert sablonhiba: A „Slat close time" szervizattribútum $.slat.open_time-ot olvas $.slat.close_time helyett a Cover konfigurációból. Mindkét lamellaidő-attribútum jelenleg ugyanazt az értéket mutatja (a nyitási időt). Ezt egy jövőbeli sablonfrissítés fogja javítani.

Két szervizakció érhető el a reluxa eszközön:

  • Automatikus kalibrálás indítása — elindítja a pozícókalibrálást
  • Lamella beállítása — engedélyezi a lamellavezérlést és beállítja a nyitási/zárási időtartamokat (egyenként 0,1–5 másodperc) a /rpc/Cover.SetConfig végponton

A lamellavezérlést engedélyezni kell, mielőtt a reluxa eszköz vezérelhetné a dőlésszöget. Ha a lamellapozíció nem érhető el az eszközről, a reluxa „Slat position must be enabled for blinds" hibát mutat. Használd a Lamella beállítása szervizakciót az engedélyezéshez és a nyitási/zárási időtartamok beállításához.

Szervizdiagnosztika

A sablon modulszintű szervizattribútumokat biztosít az eszközfelügyelethez:

  • WiFi — a csatlakoztatott SSID neve
  • IP-cím — aktuális állomás IP-cím
  • Jelerősség — WiFi RSSI dB-ben
  • MAC — az eszköz MAC-címe
  • Profil — jelenleg aktív eszközprofil (switch vagy cover)

A modul olvasási szkriptje firmware-frissítések elérhetőségét és függő újraindítási követelményeket is ellenőrzi, amelyeket figyelmeztetésként jelenít meg a TapHome felületén.

Szervizakciók

Három szervizakció érhető el modulszinten:

  • Firmware frissítése — firmware-frissítést indít a legújabb stabil verzióra a /rpc/Shelly.Update végponton
  • Újraindítás — eszköz újraindítást indít a /rpc/Shelly.Reboot végponton
  • Profil beállítása — vált a cover és switch üzemmód között a /rpc/Shelly.SetProfile végponton
További képességek

A Shelly 2PM Gen3 fizikai bemeneti állapotokat (input:0, input:1), visszatáplált/exportált energia számlálókat, üzemidőt, RAM-használatot és eszközidőt is szolgáltat az RPC-válaszaiban. Auto-off időzítő elérhető a toggle_after paraméteren, túlterhelés-védelem konfigurálható a Switch.SetConfig → power_limit beállítással, és az energiaszámlálók visszaállíthatók a /rpc/Switch.ResetCounters végponton. Cover módban közvetlen nyitás/zárás/leállítás parancsok és a redőny mozgási állapota (open/opening/closed/closing/stopped/calibrating) elérhető. Ezek a képességek egy jövőbeli sablonfrissítésben kerülhetnek hozzáadásra.

Hibaelhárítás

Az eszköz nem válaszol
  1. Ellenőrizd, hogy a Shelly csatlakozik a Wi-Fi-hez és érvényes IP-címe van
  2. Próbáld az mDNS hosztnevet (shelly2pmg3-AABBCCDDEE.local) az IP-cím helyett — az IP megváltozhatott DHCP-megújítás után
  3. Nyisd meg a http://{device-ip}/rpc/Shelly.GetDeviceInfo címet a böngészőben — ha JSON-nal válaszol, az eszköz elérhető
  4. Ellenőrizd, hogy a TapHome Core és a Shelly ugyanazon a hálózaton / VLAN-on vannak
  5. Győződj meg róla, hogy a hitelesítés ki van kapcsolva a Shelly eszközön
Profil-eltérési hibák

Ha egy eszköz „Profile is not set to switch" vagy „Profile is not set to cover" üzenetet mutat:

  1. Ellenőrizd, melyik profil aktív jelenleg — a „Profil" szervizattribútum modulszinten mutatja az aktuális módot
  2. Válts a megfelelő profilra a Profil beállítása szervizakcióval, vagy távolítsd el a nem használt eszközöket a TapHome-ból
  3. Profilváltás után az eszköz automatikusan újraindul — várj néhány másodpercet az újracsatlakozásra
A redőny pozícióvezérlése nem működik
  1. Ellenőrizd, hogy az eszköz cover profilban van — a switch profil nem biztosít redőnyfunkcionalitást
  2. Indítsd el az Automatikus kalibrálás indítása szervizakciót — a pozícióvezérlés befejezett kalibrálást igényel
  3. Ellenőrizd, hogy a motor megfelelően csatlakozik az O1 és O2 kapcsokhoz
  4. Kérdezd le a /rpc/Cover.GetStatus?id=0 végpontot manuálisan, és ellenőrizd, hogy a pos_control true
A reluxa dőlése nem reagál
  1. Győződj meg róla, hogy a lamellavezérlés engedélyezve van — ellenőrizd a „Lamella" szervizattribútumot (az „Enabled" értéket kell mutatnia)
  2. Ha le van tiltva, használd a Lamella beállítása szervizakciót az engedélyezéshez és a nyitási/zárási idők beállításához
  3. Ellenőrizd, hogy a reluxa motor támogatja a dőlésszög-műveletet — dőlés nélküli redőnyök figyelmen kívül hagyják a lamellaparancsokat
Túlhőmérsékleti figyelmeztetés

A Shelly 2PM Gen3 belső hővédelemmel rendelkezik. Ha az eszköz hőmérséklete meghaladja a biztonságos határértékeket, a temperature érték emelkedik az eszköz szervizattribútumaiban. Biztosíts megfelelő szellőzést az eszköz körül, különösen nagy terhelések kapcsolásakor. A maximális kapcsolási áram csatornánként 10 A, összesen 16 A (18 A csúcs).

A Shelly Gen2+/Gen3 eszközök legfeljebb 6 egyidejű HTTP-kapcsolatot támogatnak. Bár ez jelentős javulás a Gen1-hez képest (2 kapcsolat), kerüld a túl sok rendszerből történő egyidejű lekérdezést (TapHome, Home Assistant, egyéni szkriptek), hogy elkerüld a kapcsolatkimerülést. A Shelly 2PM Gen3 sablon lekérdezési ciklusonként legfeljebb 4 egyidejű végpontot használ, ami korlátozott mozgásteret hagy további kapcsolatoknak.

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 (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 & SecurityWi-Fi Mode - Client
  4. Adja meg az SSID-t és a jelszót → Save

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

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

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

Shelly 2PM Gen3 Modul
Szerviz attribútumok
WiFi
IP-cím
Jelerősség
MAC
ProfilAktív eszközprofil — switch (kettős kapcsoló) vagy cover (motoros reluxa/redőny)
Szerviz műveletek
Firmware frissítése
Újraindítás
Profil beállításaVáltás a cover és switch üzemmód között — az eszköz profilváltás után újraindul
Egyéni változók

Shelly 2PM Gen3

Olvasás (modul)
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
Szerviz attribútumok
Wifi
PARSEJSON(WiFi.GetStatus, "ssid")
${ipAddress}
PARSEJSON(WiFi.GetStatus, "sta_ip")
${xml_signal_strength} [dB]
PARSEJSON(WiFi.GetStatus, "rssi")
MAC
PARSEJSON(Sys.GetStatus, "mac")
Profile
PARSEJSON(Sys.GetConfig, "$.device.profile");
Szerviz műveletek
${xml_update_fw}
VAR response := SENDHTTPREQUEST("/rpc/Shelly.Update?stage=\"stable\"");
IF response.IsSuccess
    return("OK");
else
    return("Error");
END

${restart}
VAR response := SENDHTTPREQUEST("/rpc/Shelly.Reboot");
IF response.IsSuccess
    return("OK");
else
    return("Error");
END
Set Profile
Paraméterek: Profile
VAR response := SENDHTTPREQUEST("/rpc/Shelly.SetProfile?name=\"" + 
switch(prof,
0, "cover",
1, "switch",
"")
+ "\"");
IF response.IsSuccess
    return("OK");
else
    return("Error");
END
Kapcsoló 1 Kapcsoló

1. relékimenet csatornánkénti teljesítményméréssel — switch profil szükséges

boolean
Értékek / Állapotok: ON · OFF

Kapcsoló 1

Kapcsoló állapot olvasása
VAR response := SENDHTTPREQUEST("/rpc/Switch.GetStatus?id=" + ID);
IF response.IsSuccess
    Switch.GetStatus := response.Content;  
END
return(PARSEJSON(Switch.GetStatus, "$.output", true));
Kapcsoló állapot írása
VAR response := SENDHTTPREQUEST("rpc/Switch.Set?id=" + ID + "&on=" + if(St,"true","false"));
IF response.IsSuccess = false
  ADDERROR(response.StatusCode);
END
Olvasás (modul)
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
Szerviz attribútumok
${device_variable_realtemperature} [°C]
parsejson(Switch.GetStatus, "$.temperature.tC", true)
${device_variable_electricityconsumption} [Wh]
parsejson(Switch.GetStatus, "$.aenergy.total", true)
${device_variable_electricitydemand} [W]
parsejson(Switch.GetStatus, "$.apower", true)
${valueLogType_ElectricVoltage} [V]
parsejson(Switch.GetStatus, "$.voltage", true)
${valueLogType_ElectricCurrent} [A]
parsejson(Switch.GetStatus, "$.current", true)
${frequency} [Hz]
parsejson(Switch.GetStatus, "$.freq", true)
Power Factor
parsejson(Switch.GetStatus, "$.pf", true)
Kapcsoló 2 Kapcsoló

2. relékimenet csatornánkénti teljesítményméréssel — switch profil szükséges

boolean
Értékek / Állapotok: ON · OFF

Kapcsoló 2

Kapcsoló állapot olvasása
VAR response := SENDHTTPREQUEST("/rpc/Switch.GetStatus?id=" + ID);
IF response.IsSuccess
    Switch.GetStatus := response.Content;  
END
return(PARSEJSON(Switch.GetStatus, "$.output", true));
Kapcsoló állapot írása
VAR response := SENDHTTPREQUEST("rpc/Switch.Set?id=" + ID + "&on=" + if(St,"true","false"));
IF response.IsSuccess = false
  ADDERROR(response.StatusCode);
END
Olvasás (modul)
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
Szerviz attribútumok
${device_variable_realtemperature} [°C]
parsejson(Switch.GetStatus, "$.temperature.tC", true)
${device_variable_electricityconsumption} [Wh]
parsejson(Switch.GetStatus, "$.aenergy.total", true)
${device_variable_electricitydemand} [W]
parsejson(Switch.GetStatus, "$.apower", true)
${valueLogType_ElectricVoltage} [V]
parsejson(Switch.GetStatus, "$.voltage", true)
${valueLogType_ElectricCurrent} [A]
parsejson(Switch.GetStatus, "$.current", true)
${frequency} [Hz]
parsejson(Switch.GetStatus, "$.freq", true)
Power Factor
parsejson(Switch.GetStatus, "$.pf", true)
Redőny Csúszka

Motoros redőny vagy függöny pozícióvezérléssel — cover profil és kalibrálás szükséges

numeric Egység: %
Szerviz attribútumok
Hőmérséklet
Energiafogyasztás
Teljesítményfelvétel
Elektromos feszültség
Elektromos áram
Szerviz műveletek
Automatikus kalibrálás indítása

Redőny

Olvasás (modul)
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
Redőnyszint olvasása
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));
Redőnyszint írása
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
Szerviz attribútumok
${device_variable_realtemperature} [°C]
parsejson(Cover.GetStatus, "$.temperature.tC", true)
${device_variable_electricityconsumption} [Wh]
parsejson(Cover.GetStatus, "$.aenergy.total", true)
${device_variable_electricitydemand} [W]
parsejson(Cover.GetStatus, "$.apower", true)
${valueLogType_ElectricVoltage} [V]
parsejson(Cover.GetStatus, "$.voltage", true)
${valueLogType_ElectricCurrent} [A]
parsejson(Cover.GetStatus, "$.current", true)
Szerviz műveletek
${start_automatic_calibration}
VAR response := SENDHTTPREQUEST("/rpc/Cover.Calibrate?id=" + ID);
IF response.IsSuccess
    return("OK");
else
    return("Error");
END
Reluxa Redőny

Reluxa pozíció- és lamellavezérléssel — cover profil, kalibrálás és lamella engedélyezése szükséges

numeric Egység: %
Szerviz attribútumok
Hőmérséklet
Energiafogyasztás
Teljesítményfelvétel
Elektromos feszültség
Elektromos áram
LamellaA lamella dőlésszög-vezérlés engedélyezve van-e a Shelly Cover konfigurációban
Lamella nyitási idő
Lamella zárási idő
Szerviz műveletek
Automatikus kalibrálás indítása
Lamella beállításaLamellavezérlés engedélyezése és nyitási/zárási idő beállítása (0,1–5 másodperc)

Reluxa

Olvasás (modul)
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
Redőnyszint olvasása
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);
Redőnyszint írása
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
Lamella dőlés olvasása
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
Lamella dőlés írása
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
Szerviz attribútumok
${device_variable_realtemperature} [°C]
parsejson(Cover.GetStatus, "$.temperature.tC", true)
${device_variable_electricityconsumption} [Wh]
parsejson(Cover.GetStatus, "$.aenergy.total", true)
${device_variable_electricitydemand} [W]
parsejson(Cover.GetStatus, "$.apower", true)
${valueLogType_ElectricVoltage} [V]
parsejson(Cover.GetStatus, "$.voltage", true)
${valueLogType_ElectricCurrent} [A]
parsejson(Cover.GetStatus, "$.current", true)
Slat
if(parsejson(Cover.GetConfig, "$.slat.enable", true), "Enabled", "Disabled")
Slat open time [s]
parsejson(Cover.GetConfig, "$.slat.open_time ", true)
Slat close time [s]
parsejson(Cover.GetConfig, "$.slat.open_time ", true)
Szerviz műveletek
${start_automatic_calibration}
VAR response := SENDHTTPREQUEST("/rpc/Cover.Calibrate?id=" + ID);
IF response.IsSuccess
    return("OK");
else
    return("Error");
END
Set Slat
Paraméterek: Open time [s] (0.1–5 ot), Close time [s] (0.1–5 ct)
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
Kapcsolat: Packet Parser → HTTP
Lehetséges fejlesztések (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

Források