TapHome

Shelly Plus 2PM

Packet Parser → HTTP
Pridal
Posledná aktualizácia: 03. 2026
Shelly Plus 2PM

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.

Shelly Plus 2PM bol ukončený. Jeho nástupca, 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).

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á.

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.

Šablóna obsahuje všetkých šesť zariadení (2 spínače + 2 merače výkonu spínačov + 1 roleta + 1 merač výkonu 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ýkonapower vo wattoch, šablóna konvertuje na kW
  • Celková spotrebaaenergy.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
  • Kalibrácia — č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ýkonapower vo wattoch, šablóna konvertuje na kW
  • Celková spotrebaaenergy.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

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 (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.1Internet & SecurityWi-Fi Mode - Client
  4. Zadajte SSID a heslo → Save

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

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

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

Shelly Plus 2PM Modul
Servisné atribúty
MACMAC adresa zariadenia zo systémovej konfigurácie
ProfilAktívny profil zariadenia — switch alebo cover
Servisné akcie
ReštartReštartuje zariadenie
ProfilPrepnutie medzi profilmi switch a cover — vyžaduje reštart zariadenia
Vlastné premenné

Shelly Plus 2 PM

Čítanie (modul)
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
PARSEJSON(SysConfig, "$.device.mac");
Profile
PARSEJSON(SysConfig, "$.device.profile");
Servisné akcie
Reboot
VAR response := SENDHTTPREQUEST("/rpc/Shelly.Reboot");
IF response.IsSuccess
  VAR content := response.Content;
  VAR responseHeaders := response.Headers;
  Return("OK");
END;
Profile
Parametre: Profile
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ätieNapájacie napätie vo Voltoch
PrúdPrúd záťaže v Ampéroch
ÚčinníkÚčinník záťaže

Merač výkonu (Roleta)

Čítanie celkovej spotreby
if PARSEJSON(SysConfig, "$.device.profile") = "switch"
    adderror("Device profile is set to switch");
else
    return(PARSEJSON(CoverStatus, "$.aenergy.total") / 1000);
end
Čítanie odberu
if PARSEJSON(SysConfig, "$.device.profile") = "cover"
    return(PARSEJSON(CoverStatus, "$.apower", true) / 1000);
end
Čítanie (modul)
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]
PARSEJSON(CoverStatus, "$.voltage", true);
Current [A]
PARSEJSON(CoverStatus, "$.current", true);
Power Factor
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ätieNapájacie napätie vo Voltoch
PrúdPrúd záťaže v Ampéroch
ÚčinníkÚčinník záťaže

Merač výkonu (Spínač 1)

Čítanie celkovej spotreby
if PARSEJSON(SysConfig, "$.device.profile") = "cover"
    adderror("Device profile is set to cover");
else
    return(PARSEJSON(SwitchStatus, "$.aenergy.total", true) / 1000);
end
Čítanie odberu
if PARSEJSON(SysConfig, "$.device.profile") = "switch"
    return(PARSEJSON(SwitchStatus, "$.apower", true) / 1000);
end
Čítanie (modul)
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]
PARSEJSON(SwitchStatus, "$.voltage", true);
Current [A]
PARSEJSON(SwitchStatus, "$.current", true);
Power Factor
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ätieNapájacie napätie vo Voltoch
PrúdPrúd záťaže v Ampéroch
ÚčinníkÚčinník záťaže

Merač výkonu (Spínač 2)

Čítanie celkovej spotreby
if PARSEJSON(SysConfig, "$.device.profile") = "cover"
    adderror("Device profile is set to cover");
else
    return(PARSEJSON(SwitchStatus, "$.aenergy.total", true) / 1000);
end
Čítanie odberu
if PARSEJSON(SysConfig, "$.device.profile") = "switch"
    return(PARSEJSON(SwitchStatus, "$.apower", true) / 1000);
end
Čítanie (modul)
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]
PARSEJSON(SwitchStatus, "$.voltage", true);
Current [A]
PARSEJSON(SwitchStatus, "$.current", true);
Power Factor
PARSEJSON(SwitchStatus, "$.pf", true);
Roleta Posuvný

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

numeric Jednotka: % json_path
Servisné atribúty
ZdrojZdroj posledného príkazu rolety
StavAktuálny stav rolety — open, closed, opening, closing, stopped, calibrating
Aktuálna polohaAktuálna poloha rolety v percentách (0–100), null ak nie je kalibrovaná
Cieľová polohaCieľová poloha počas pohybu rolety
Časový limit pohybuSekundy 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)
TeplotaVnútorná teplota zariadenia v stupňoch Celzia
Počiatočný stavSprávanie rolety po zapnutí — open, closed alebo stopped
Režim vstupuRežim zapojenia fyzického vstupu — single, dual alebo detached
Limit výkonuMaximálny prah výkonu vo Wattoch pre ochranu proti preťaženiu
Limit napätiaMaximálny prah napätia vo Voltoch pre ochranu proti prepätiu
Limit prúduMaximálny prah prúdu v Ampéroch pre ochranu proti nadprúdu
Prah nečinnosti motoraPrah výkonu, pod ktorým sa motor považuje za nečinný (0–50 W)
Potvrdenie nečinnosti motoraDoba, počas ktorej musí motor zostať pod prahom nečinnosti na potvrdenie zastavenia (0,25–2 s)
Maximálny čas otvoreniaMaximálny čas otvorenia pred automatickým zastavením (0,1–300 s)
Maximálny čas zatvoreniaMaximá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íciuPresunie roletu na určenú polohu (0–100 %)
Obrátiť smeryPrepne konfiguráciu invert_directions a reštartuje zariadenie

Roleta

Čítanie (modul)
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
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
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
PARSEJSON(CoverStatus, "$.source", true);
State
PARSEJSON(CoverStatus, "$.state", true);
Current Position
PARSEJSON(CoverStatus, "$.current_pos", true);
Target Position
PARSEJSON(CoverStatus, "$.target_pos", true);
Move Timeout
PARSEJSON(CoverStatus, "$.move_timeout", true);
Move Started at
PARSEJSON(CoverStatus, "$.move_started_at", true);
Calibrated
PARSEJSON(CoverStatus, "$.pos_control", true);
Temperature [°C]
PARSEJSON(CoverStatus, "$.temperature.tC", true);
Initial State
PARSEJSON(CoverConfig, "$.initial_state", true);
Input Mode
PARSEJSON(CoverConfig, "$.in_mode", true);
Power Limit [W]
PARSEJSON(CoverConfig, "$.power_limit", true);
Voltage Limit [V]
PARSEJSON(CoverConfig, "$.voltage_limit", true);
Current Limit [A]
PARSEJSON(CoverConfig, "$.current_limit", true);
Motor Idle Power Threshold [W]
PARSEJSON(CoverConfig, "$.motor.idle_power_thr", true);
Motor Idle Confirm Period [s]
PARSEJSON(CoverConfig, "$.motor.idle_confirm_period", true);
Max Time Open [s]
PARSEJSON(CoverConfig, "$.maxtime_open", true);
Max Time Close [s]
PARSEJSON(CoverConfig, "$.maxtime_close", true);
Swap Inputs
PARSEJSON(CoverConfig, "$.swap_inputs", true);
Invert Directions
PARSEJSON(CoverConfig, "$.invert_directions", true);
Obstruction Detection
PARSEJSON(CoverConfig, "$.obstruction_detection", true);
Safety Switch
PARSEJSON(CoverConfig, "$.safety_switch", true);
Servisné akcie
Open
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
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
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
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)
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
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č

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ý stavKonfiguruje správanie spínača po zapnutí
Nastaviť režimKonfiguruje režim zapojenia fyzického vstupu

Spínač 1

Čítanie stavu prepínača
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
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)
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
PARSEJSON(SwitchStatus, "$.source", true);
Temprature [°C]
PARSEJSON(SwitchStatus, "$.temperature.tC", true);
Initial State
PARSEJSON(SwitchConfig, "$.initial_state", true);
Input Mode
PARSEJSON(SwitchConfig, "$.in_mode", true);
Power Limit [W]
PARSEJSON(SwitchConfig, "$.power_limit", true);
Voltage Limit [V]
PARSEJSON(SwitchConfig, "$.voltage_limit", true);
Current Limit [A]
PARSEJSON(SwitchConfig, "$.current_limit", true);
Servisné akcie
Set Initial State
Parametre: Mode
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
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č

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ý stavKonfiguruje správanie spínača po zapnutí
Nastaviť režimKonfiguruje režim zapojenia fyzického vstupu

Spínač 2

Čítanie stavu prepínača
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
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)
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
PARSEJSON(SwitchStatus, "$.source", true);
Temprature [°C]
PARSEJSON(SwitchStatus, "$.temperature.tC", true);
Initial State
PARSEJSON(SwitchConfig, "$.initial_state", true);
Input Mode
PARSEJSON(SwitchConfig, "$.in_mode", true);
Power Limit [W]
PARSEJSON(SwitchConfig, "$.power_limit", true);
Voltage Limit [V]
PARSEJSON(SwitchConfig, "$.voltage_limit", true);
Current Limit [A]
PARSEJSON(SwitchConfig, "$.current_limit", true);
Servisné akcie
Set Initial State
Parametre: Mode
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
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
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

Zdroje