TapHome

Shelly 2PM Gen3

Packet Parser → HTTP
Autor
Posljednje ažuriranje: 03. 2026

Ovaj uređaj podržava mDNS

Umjesto IP adrese uređaju možete pristupiti na adresi:

shelly2pmg3-{MAC}.local

Zamijenite {MAC} MAC adresom svog uređaja (velika slova, bez dvotočaka).

TapHome podržava mDNS. Naziv računala (hostname) pouzdaniji je od statične IP adrese.

Shelly 2PM Gen3

Shelly 2PM Gen3 kompaktan je dvokanalni Wi-Fi relejni modul s ugrađenim mjerenjem snage. Stane iza standardnog zidnog prekidača i može upravljati dvama neovisnim strujnim krugovima do 10 A svaki (ukupno 16 A pri 230 V AC) ili jednom motoriziranom roletom ili žaluzinom. TapHome s uređajem komunicira preko HTTP-a pomoću API-ja Gen2+/Gen3 JSON-RPC 2.0 u lokalnoj mreži, veza s oblakom nije potrebna.

Uređaj podržava dva profila rada, switch i cover, koji se biraju u web-sučelju Shelly ili servisnom radnjom u sustavu TapHome. U profilu switch oba relejna izlaza (O1 i O2) rade neovisno, uz mjerenje snage na svakom kanalu. U profilu cover oba izlaza pogone jedan motor za rolete, žaluzine ili zavjese, s upravljanjem položajem, podrškom za nagib lamela i kalibracijom.

Za razliku od uređaja Shelly 1PM Gen3, koji upravlja jednim strujnim krugom, 2PM Gen3 nudi dvokanalno upravljanje ili podršku za motorizirane rolete. Oba uređaja dijele istu platformu Gen3 s procesorom ESP (8 MB flash memorije), do 6 istodobnih HTTP veza i mogućnošću nadogradnje na Matter.

Konfiguracija

Shelly 2PM Gen3 spaja se preko Wi-Fi mreže. Pri uvozu predloška TapHome unesite IP adresu uređaja (u predlošku je unaprijed upisan primjer 192.168.0.1).

Za integraciju sa sustavom TapHome autentifikacija na uređaju Shelly mora biti isključena. TapHome ne podržava HTTP Digest Auth koju koriste uređaji Gen2+/Gen3. Otvorite web-sučelje Shelly (http://{device-ip}) → Settings → Authentication i provjerite je li isključena.

Ako je na uređaju Shelly uključen način rada ECO, zbog kratkih intervala očitavanja u predlošku (2,5–3 sekunde) mogu nastati prekoračenja vremena komunikacije. Ako se veza povremeno prekida, isključite način rada ECO u web-sučelju Shelly.

Odabir profila

Shelly 2PM Gen3 u jednom trenutku radi u jednom od dva profila. Aktivni profil određuje koji uređaji u sustavu TapHome rade:

  • Profil switch — uključuje obje relejne sklopke (Sklopka 1 i Sklopka 2) s neovisnim mjerenjem snage. Roleta i žaluzina prikazat će grešku profila.
  • Profil cover — uključuje roletu i žaluzinu (s nagibom lamela). Sklopke će prikazati grešku profila.

Aktivni profil vidljiv je u sustavu TapHome kao servisni atribut modula („Profil”). Profil promijenite servisnom radnjom Postavi profil na razini modula ili u web-sučelju Shelly. Nakon promjene profila uređaj se ponovno pokreće i bez grešaka rade samo uređaji koji odgovaraju novom profilu.

Predložak sadrži sve četiri vrste uređaja (2 sklopke + roleta + žaluzina), ali rade samo uređaji koji odgovaraju aktivnom profilu. Uređaji u pogrešnom profilu prikazuju poruku o grešci kao što je „Profile is not set to switch” ili „Profile is not set to cover”. To je očekivano ponašanje, a ne kvar.

Kalibracija rolete

Kod profila cover krajnji položaji motora moraju se kalibrirati prije nego što upravljanje položajem počne raditi. Dok kalibracija nije završena, predložak prikazuje grešku „Calibration is required”. Kalibrirajte u web-sučelju Shelly ili servisnom radnjom Pokreni automatsku kalibraciju u sustavu TapHome. Tijekom kalibracije roleta se potpuno otvori i potpuno zatvori kako bi se izmjerile duljine hoda.

Mogućnosti uređaja

Upravljanje relejem (profil switch)

Predložak daje dvije neovisne relejne sklopke. Svaka sklopka čita stanje iz /rpc/Switch.GetStatus?id={0,1} (polje output, logička vrijednost) i upravlja relejem preko /rpc/Switch.Set?id={0,1}&on=true|false.

Svaka sklopka ima i servisne atribute za praćenje po kanalu:

  • Temperatura — unutarnja temperatura uređaja u °C (temperature.tC)
  • Potrošnja energije — ukupna energija u Wh (aenergy.total)
  • Trenutačna snaga — snaga u stvarnom vremenu u W (apower)
  • Električni napon — napon napajanja u V (voltage)
  • Električna struja — struja trošila u A (current)
  • Frekvencija — frekvencija izmjenične mreže u Hz (freq)
  • Faktor snage — vrijednost faktora snage (pf)

Sklopke se ažuriraju svakih 2,5 sekunde.

Upravljanje roletom (profil cover)

Uređaj Roleta upravlja motoriziranom roletom, zavjesom ili tendom. Položaj čita iz /rpc/Cover.GetStatus?id=0 (polja current_pos i target_pos, 0–100), a upisuje ga preko /rpc/Cover.GoToPosition?id=0&pos=N. Predložak obrće ljestvicu položaja tako da u sustavu TapHome 0 znači potpuno otvoreno, a 100 potpuno zatvoreno.

Roleta ima servisne atribute:

  • Temperatura — unutarnja temperatura uređaja u °C
  • Potrošnja energije — ukupna energija motora u Wh
  • Trenutačna snaga — snaga motora u stvarnom vremenu u W
  • Električni napon — napon napajanja u V
  • Električna struja — struja motora u A

Servisna radnja Pokreni automatsku kalibraciju omogućuje pokretanje kalibracije rolete izravno iz sustava TapHome.

Upravljanje žaluzinom (profil cover)

Uređaj Žaluzina proširuje mogućnosti uređaja Roleta upravljanjem nagibom lamela za vanjske žaluzine. Osim položaja čita i upisuje i položaj lamela (slat_pos) preko /rpc/Cover.GoToPosition?id=0&pos=N&slat_pos=M. Obrnute su obje ljestvice, i za položaj i za nagib (u sustavu TapHome 0 = otvoreno, 100 = zatvoreno).

Žaluzina ima iste servisne atribute kao roleta te dodatno:

  • Lamele — prikazuje je li upravljanje lamelama uključeno ili isključeno (iz Cover.GetConfig → $.slat.enable)
  • Vrijeme otvaranja lamela — postavljeno trajanje otvaranja lamela u sekundama
  • Vrijeme zatvaranja lamela — postavljeno trajanje zatvaranja lamela u sekundama

Poznati problem predloška: servisni atribut „Vrijeme zatvaranja lamela” čita $.slat.open_time umjesto $.slat.close_time iz konfiguracije Cover. Oba atributa vremena lamela trenutačno prikazuju istu vrijednost (vrijeme otvaranja). To će se ispraviti u nekoj budućoj reviziji predloška.

Na uređaju žaluzina dostupne su dvije servisne radnje:

  • Pokreni automatsku kalibraciju — pokreće kalibraciju položaja rolete
  • Postavi lamele — uključuje upravljanje lamelama i postavlja vremena otvaranja i zatvaranja (svako 0,1–5 sekundi) preko /rpc/Cover.SetConfig

Upravljanje lamelama (nagibom) mora biti uključeno prije nego što uređaj žaluzina može upravljati nagibom. Ako uređaj ne daje položaj lamela, žaluzina prikazuje grešku „Slat position must be enabled for blinds”. Servisnom radnjom Postavi lamele uključite ga i postavite trajanje otvaranja i zatvaranja.

Servisna dijagnostika

Predložak na razini modula daje servisne atribute za praćenje uređaja:

  • Wi-Fi — naziv spojene mreže (SSID)
  • IP adresa — trenutačna IP adresa uređaja u mreži
  • Jačina signala — Wi-Fi RSSI u dB
  • MAC — MAC adresa uređaja
  • Profil — trenutačno aktivan profil uređaja (switch ili cover)

Skripta za čitanje modula provjerava i dostupna ažuriranja firmvera i potrebu za ponovnim pokretanjem te ih prikazuje kao upozorenja u sučelju TapHome.

Servisne radnje

Na razini modula dostupne su tri servisne radnje:

  • Ažuriraj firmver — pokreće ažuriranje firmvera na najnovije stabilno izdanje preko /rpc/Shelly.Update
  • Ponovno pokretanje — ponovno pokreće uređaj preko /rpc/Shelly.Reboot
  • Postavi profil — prebacuje između načina rada cover i switch preko /rpc/Shelly.SetProfile
Dodatne mogućnosti

Shelly 2PM Gen3 u svojim RPC odgovorima daje i stanja fizičkih ulaza (input:0, input:1), brojače vraćene/predane energije, vrijeme rada uređaja, zauzeće RAM-a i vrijeme uređaja. Timer za automatsko isključivanje dostupan je preko parametra toggle_after, zaštita od prekoračenja snage može se postaviti preko Switch.SetConfig → power_limit, a brojači energije mogu se poništiti preko /rpc/Switch.ResetCounters. U načinu rada cover dostupne su izravne naredbe za otvaranje, zatvaranje i zaustavljanje te stanje kretanja rolete (open/opening/closed/closing/stopped/calibrating). Te se mogućnosti mogu dodati u nekom budućem ažuriranju predloška.

Rješavanje problema

Uređaj ne odgovara
  1. Provjerite je li Shelly spojen na Wi-Fi i ima li valjanu IP adresu
  2. Umjesto IP adrese pokušajte koristiti mDNS naziv hosta (shelly2pmg3-AABBCCDDEE.local), jer se IP adresa možda promijenila nakon obnove DHCP zakupa
  3. U pregledniku otvorite http://{device-ip}/rpc/Shelly.GetDeviceInfo. Ako odgovori u formatu JSON, uređaj je dostupan
  4. Provjerite jesu li TapHome Core i Shelly u istoj mreži / VLAN-u
  5. Provjerite je li autentifikacija na uređaju Shelly isključena
Greške neusklađenog profila

Ako uređaj prikazuje „Profile is not set to switch” ili „Profile is not set to cover”:

  1. Provjerite koji je profil trenutačno aktivan: servisni atribut „Profil” na razini modula prikazuje trenutačni način rada
  2. Prebacite na ispravan profil servisnom radnjom Postavi profil ili uklonite nekorištene uređaje iz sustava TapHome
  3. Nakon promjene profila uređaj se automatski ponovno pokreće, pa pričekajte nekoliko sekundi da se veza ponovno uspostavi
Upravljanje položajem rolete ne radi
  1. Provjerite je li uređaj u profilu cover, jer profil switch ne nudi funkcije rolete
  2. Pokrenite servisnu radnju Pokreni automatsku kalibraciju, jer upravljanje položajem zahtijeva završenu kalibraciju
  3. Provjerite je li motor ispravno spojen na stezaljke O1 i O2
  4. Ručno očitajte /rpc/Cover.GetStatus?id=0 i provjerite je li pos_control true
Nagib žaluzine ne reagira
  1. Provjerite je li upravljanje lamelama uključeno: servisni atribut „Lamele” treba prikazivati „Enabled”
  2. Ako je isključeno, servisnom radnjom Postavi lamele uključite ga i postavite vremena otvaranja i zatvaranja
  3. Provjerite podržava li motor žaluzine nagib, jer rolete bez nagiba zanemaruju naredbe za lamele
Upozorenje o pregrijavanju

Shelly 2PM Gen3 ima unutarnju toplinsku zaštitu. Ako temperatura uređaja prijeđe sigurnosne granice, očitanje temperature u servisnim atributima uređaja raste. Osigurajte dovoljno prozračivanja oko uređaja, osobito pri dugotrajnom sklapanju velikih opterećenja. Najveća sklopna struja je 10 A po kanalu, ukupno 16 A (vršno 18 A).

Uređaji Shelly Gen2+/Gen3 podržavaju do 6 istodobnih HTTP veza. Iako je to znatno poboljšanje u odnosu na Gen1 (2 veze), izbjegavajte istodobno očitavanje iz previše sustava (TapHome, Home Assistant, vlastite skripte) kako se ne bi potrošile sve dostupne veze. Predložak Shelly 2PM Gen3 u jednom ciklusu očitavanja koristi do 4 istodobne krajnje točke, pa ostaje malo prostora za dodatne veze.

Kako ga instalirati u TapHome

Preduvjeti

  • Uređaj Shelly ugrađen i uključen
  • Lokalna Wi-Fi mreža (2,4 GHz)
  • TapHome CCU u istoj mreži

Korak 1 — Spojite Shelly na Wi-Fi

Opcija A — aplikacija Shelly (preporučeno):

  1. Preuzmite aplikaciju Shelly (iOS / Android)
  2. Dodirnite + → Add Device i slijedite čarobnjak za uparivanje preko Bluetootha
  3. Kada se to zatraži, unesite podatke za prijavu na Wi-Fi

Opcija B — način rada AP (bez aplikacije):

  1. Pri prvom uključivanju uređaj stvara pristupnu točku: ShellyXXX-AABBCCDDEE
  2. Spojite telefon ili računalo na tu pristupnu točku
  3. Otvorite http://192.168.33.1 → Internet & Security → Wi-Fi Mode - Client
  4. Unesite SSID i lozinku → Save

Shelly podržava samo mreže od 2,4 GHz. Mreže od 5 GHz neće se prikazati pri skeniranju.

Korak 2 — Pronađite adresu uređaja

Uređaji Shelly Gen1 podržavaju mDNS (Zeroconf). Uređaju možete pristupiti preko naziva hosta umjesto IP adrese:

1
shelly<model>-<MAC>.local

Na primjer: shelly1pm-AABBCCDDEE.local (MAC adresa velikim slovima u heksadecimalnom zapisu, bez dvotočaka).

Preporučeno: koristite IP skener TapHome. Otvorite aplikaciju TapHome i pokrenite IP skener (Postavke → Mreža → Skeniranje). Skener pronalazi uređaje u vašoj mreži i prikazuje IP adresu i mDNS naziv hosta. Za pouzdaniju vezu koristite naziv hosta umjesto IP adrese, jer ostaje isti i kada se IP adresa uređaja promijeni nakon ponovnog pokretanja usmjerivača.

Drugi načini za pronalaženje IP adrese:

  • Aplikacija Shelly: detalji uređaja → Device info → IP adresa
  • Web-sučelje Shelly: spojite se na AP uređaja prije postavljanja Wi-Fi mreže — IP adresa prikazuje se nakon spremanja
  • DHCP tablica usmjerivača: potražite naziv hosta poput shelly1pm-AABBCCDDEE

Korak 3 — Konfiguracija u sustavu TapHome

  1. U sustavu TapHome dodajte novi modul Packet Parser (HTTP)
  2. Adresa: unesite mDNS naziv hosta (npr. shelly1pm-AABBCCDDEE.local) ili IP adresu iz koraka 2
  3. Port: 80 (zadano, nije potrebno mijenjati)
  4. Uvezite predložak — TapHome će čitati /status kako bi očitao stanje uređaja

HTTP autentifikacija na uređajima Shelly zadano je isključena. Ako ste uključili zaštitu prijavom, TapHome trenutačno ne podržava HTTP Basic Auth — za integraciju sa sustavom TapHome ostavite autentifikaciju isključenom.

Dostupni uređaji

Shelly 2PM Gen3 Modul
Servisni atributi
Wi-Fi
IP adresa
Jačina signala
MAC
ProfilAktivni profil uređaja — switch (dvokanalni relej) ili cover (motorizirana žaluzina/roleta)
Servisne radnje
Ažuriraj firmver
Ponovno pokretanje
Postavi profilPrebacuje između načina rada cover i switch — uređaj se nakon promjene profila ponovno pokreće
Prilagođene varijable

Shelly 2PM Gen3

Čitanje (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
Servisni atributi
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");
Servisne radnje
${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
Parametri: Profile
VAR response := SENDHTTPREQUEST("/rpc/Shelly.SetProfile?name=\"" + 
switch(prof,
0, "cover",
1, "switch",
"")
+ "\"");
IF response.IsSuccess
    return("OK");
else
    return("Error");
END
Sklopka 1 Sklopka

Relejni izlaz 1 s mjerenjem snage po kanalu — zahtijeva profil switch

boolean
Vrijednosti / stanja: ON · OFF

Sklopka 1

Čitanje stanja sklopke
VAR response := SENDHTTPREQUEST("/rpc/Switch.GetStatus?id=" + ID);
IF response.IsSuccess
    Switch.GetStatus := response.Content;  
END
return(PARSEJSON(Switch.GetStatus, "$.output", true));
Zapis stanja sklopke
VAR response := SENDHTTPREQUEST("rpc/Switch.Set?id=" + ID + "&on=" + if(St,"true","false"));
IF response.IsSuccess = false
  ADDERROR(response.StatusCode);
END
Čitanje (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
Servisni atributi
${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)
Sklopka 2 Sklopka

Relejni izlaz 2 s mjerenjem snage po kanalu — zahtijeva profil switch

boolean
Vrijednosti / stanja: ON · OFF

Sklopka 2

Čitanje stanja sklopke
VAR response := SENDHTTPREQUEST("/rpc/Switch.GetStatus?id=" + ID);
IF response.IsSuccess
    Switch.GetStatus := response.Content;  
END
return(PARSEJSON(Switch.GetStatus, "$.output", true));
Zapis stanja sklopke
VAR response := SENDHTTPREQUEST("rpc/Switch.Set?id=" + ID + "&on=" + if(St,"true","false"));
IF response.IsSuccess = false
  ADDERROR(response.StatusCode);
END
Čitanje (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
Servisni atributi
${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)
Roleta Roleta

Motorizirana roleta ili zavjesa s upravljanjem položajem — zahtijeva profil cover i kalibraciju

numeric Jedinica: %
Servisni atributi
Temperatura
Potrošnja energije
Trenutačna snaga
Električni napon
Električna struja
Servisne radnje
Pokreni automatsku kalibraciju

Roleta

Čitanje (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
Čitanje položaja žaluzine
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));
Zapis položaja žaluzine
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
Servisni atributi
${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)
Servisne radnje
${start_automatic_calibration}
VAR response := SENDHTTPREQUEST("/rpc/Cover.Calibrate?id=" + ID);
IF response.IsSuccess
    return("OK");
else
    return("Error");
END
Žaluzina Žaluzina

Vanjska žaluzina s upravljanjem položajem i nagibom lamela — zahtijeva profil cover, kalibraciju i uključeno upravljanje lamelama

numeric Jedinica: %
Servisni atributi
Temperatura
Potrošnja energije
Trenutačna snaga
Električni napon
Električna struja
LameleJe li upravljanje nagibom lamela uključeno u konfiguraciji Shelly Cover
Vrijeme otvaranja lamela
Vrijeme zatvaranja lamela
Servisne radnje
Pokreni automatsku kalibraciju
Postavi lameleUključuje upravljanje lamelama i postavlja trajanje otvaranja i zatvaranja lamela (0,1–5 sekundi)

Žaluzina

Čitanje (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
Čitanje položaja žaluzine
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);
Zapis položaja žaluzine
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
Čitanje kuta lamela
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
Zapis kuta lamela
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
Servisni atributi
${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)
Servisne radnje
${start_automatic_calibration}
VAR response := SENDHTTPREQUEST("/rpc/Cover.Calibrate?id=" + ID);
IF response.IsSuccess
    return("OK");
else
    return("Error");
END
Set Slat
Parametri: 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
Povezivanje: Packet Parser → HTTP • Naziv računala (hostname): shelly2pmg3-{MAC}.local
Moguća poboljšanja (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

Izvori

Pronašli ste problem s ovim predloškom uređaja?

Recite nam što ne radi, što nedostaje ili kako bi se predložak trebao ponašati. Vaše povratne informacije pomažu nam da katalog bude točan.

Provjerio TapHome

Želite ovo koristiti u svojoj centralnoj jedinici TapHome Core?

Otvorite ovaj predložak na portalu Customer Portal kako biste ga primijenili na jedan od svojih domova ili predložili poboljšanje i poslali ga natrag u katalog.

Otvorite na portalu