TapHome

Shelly Plus RGBW PM

Packet Parser → HTTP
Trimis de
Ultima actualizare: 10. 2026

Acest dispozitiv acceptă mDNS

În loc să folosiți o adresă IP, puteți accesa dispozitivul la:

shellyplusrgbwpm-{MAC}.local

Înlocuiți {MAC} cu adresa MAC a dispozitivului dvs. (majuscule, fără două puncte).

TapHome acceptă mDNS — folosirea unui nume de gazdă este mai fiabilă decât un IP static.

Shelly Plus RGBW PM

Shelly Plus RGBW PM este un controler LED RGBW Wi-Fi Gen2+ cu măsurarea puterii integrată pe fiecare canal de ieșire. Comandă benzi LED sau canale LED individuale la 12/24 V DC, cu până la 4 A pe canal (10 A în total). Dispozitivul acceptă trei profiluri comutabile — light (4 dimmere independente), rgb (culoare pe 3 canale) și rgbw (culoare pe 3 canale + alb) — fiecare oferind alte dispozitive în TapHome. TapHome comunică local cu dispozitivul prin Wi-Fi, folosind Gen2+ RPC API — nu este necesară conexiunea la cloud.

Șablonul TapHome este un șablon HTTP care interoghează endpointurile RPC ale dispozitivului. Un singur șablon acoperă toate cele trei profiluri; TapHome detectează profilul activ în timpul funcționării și activează dispozitivele corespunzătoare.

Configurare

Parametri de import

Șablonul necesită doar adresa IP a dispozitivului (valoarea implicită: 192.168.0.1). TapHome se conectează la portul 80 și interoghează mai multe endpointuri RPC pentru starea sistemului și datele dispozitivului.

La nivelul modulului, TapHome interoghează /rpc/Sys.GetStatus, /rpc/Sys.GetConfig, /rpc/WiFi.GetStatus și /rpc/PlusRGBWPM.GetConfig la un interval de 3 secunde. Răspunsul Sys.GetConfig furnizează profilul curent (device.profile), care determină ce endpointuri sunt active la nivelul dispozitivelor.

Selectarea profilului

Shelly Plus RGBW PM funcționează la un moment dat într-unul dintre cele trei profiluri. Puteți schimba profilul direct din TapHome cu acțiunea de service Setare profil de pe modul sau din interfața web Shelly.

ProfilDispozitive în TapHomeUtilizare
light4 dimmere independente (O1–O4)Benzi LED monocolore, 4 zone de iluminat separate
rgb1 lumină RGBBenzi LED RGB (amestec de culori pe 3 canale)
rgbw1 lumină RGBWBenzi LED RGBW (RGB + canal alb dedicat)

După schimbarea profilului, dispozitivul repornește, iar TapHome detectează automat noul profil. Dispozitivele care aparțin profilului inactiv vor raporta o eroare („Profile is not set to …”) — acest lucru este normal și poate fi ignorat.

Funcțiile dispozitivului

Lumină RGB (profil = rgb)

Când dispozitivul este setat pe profilul rgb, TapHome oferă un singur dispozitiv de lumină HSB. Șablonul citește din /rpc/RGB.GetStatus?id=0 starea pornit/oprit, luminozitatea (0–100 %) și valorile culorii RGB și scrie prin /rpc/RGB.Set?id=0 pentru a comanda lumina.

Comanda culorii folosește modelul HSB (nuanță-saturație-luminozitate):

  • Nuanța (0–360 de grade) și saturația (0,0–1,0) sunt convertite intern între HSB și RGB
  • Luminozitatea (0,0–1,0) corespunde intervalului 0–100 % al dispozitivului Shelly
  • Setarea luminozității la 0 stinge lumina; orice luminozitate diferită de zero o aprinde

Lumina RGB oferă cinci atribute de service:

AtributUnitateDescriere
TemperaturăCTemperatura internă a dispozitivului
Consum de energieWhEnergia cumulată pentru ieșirea RGB
PutereWPuterea instantanee consumată
TensiuneVTensiunea RMS
CurentACurentul consumat
Lumină RGBW (profil = rgbw)

Când este setat profilul rgbw, TapHome oferă o singură lumină HSB cu un canal alb suplimentar. Șablonul citește din /rpc/RGBW.GetStatus?id=0 și scrie prin /rpc/RGBW.Set?id=0.

Profilul RGBW adaugă un canal alb (0–255) comandat prin CCT (temperatură de culoare corelată) la o valoare fixă de 4500 K:

  • Când canalul alb este activ (white != 0), luminozitatea este derivată din nivelul de alb (0–255 convertit liniar în 0,0–1,0)
  • Când canalul alb este inactiv, luminozitatea provine din câmpul standard de luminozitate (0–100 %)
  • Trecerea în TapHome la modul temperatură de culoare activează canalul alb; trecerea la modul RGB îl dezactivează

Lumina RGBW oferă aceleași cinci atribute de service ca lumina RGB (temperatură, energie, putere, tensiune, curent), citite din răspunsul RGBW.GetStatus.

Ieșiri LED dimabile (profil = light)

Când este setat profilul light, TapHome oferă 4 canale de dimmer independente (O1–O4), fiecare comandând o ieșire LED. Fiecare canal citește din /rpc/Light.GetStatus?id={0-3} și scrie prin /rpc/Light.Set?id={0-3}.

Luminozitatea este convertită din intervalul 0,0–1,0 al TapHome în intervalul 0–100 % al dispozitivului Shelly. Setarea nivelului la 0 oprește ieșirea; orice nivel diferit de zero o pornește și setează luminozitatea.

Fiecare canal de dimmer oferă șase atribute de service:

AtributUnitateDescriere
TemperaturăCTemperatura internă a dispozitivului
Consum de energieWhEnergia cumulată pentru acest canal
PutereWPuterea instantanee consumată
TensiuneVTensiunea RMS
CurentACurentul consumat
Indicatori—Indicatori interni de stare

Fiecare canal de dimmer oferă și acțiunea de service Calibrare, care trimite /rpc/Light.Calibrate?id={N} pentru a calibra ieșirea pentru sarcina LED conectată.

Diagnosticarea și acțiunile modulului

Modulul oferă cinci atribute de service pentru diagnosticarea dispozitivului:

AtributDescriere
WiFiNumele rețelei wireless conectate
Adresă IPAdresa IP a dispozitivului
Puterea semnalului (dB)RSSI Wi-Fi
MACAdresa hardware a dispozitivului
ProfilProfilul activ în prezent (light, rgb sau rgbw)

La nivelul modulului sunt disponibile trei acțiuni de service:

AcțiuneDescriere
Actualizare firmwarePornește actualizarea OTA de pe canalul de firmware stabil
RepornireRepornește dispozitivul
Setare profilComută între profilurile light, rgb și rgbw (dispozitivul repornește)

Scriptul modulului verifică și dacă sunt disponibile actualizări de firmware și dacă este necesară o repornire, afișând avertismente în TapHome când detectează oricare dintre aceste situații.

Funcții suplimentare

Prin RPC API, Shelly Plus RGBW PM oferă și starea intrărilor fizice, configurarea modului de noapte cu limite de luminozitate și program, durata tranziției la schimbarea culorii/luminozității și luminozitatea minimă la comutare. Aceste funcții pot fi adăugate într-o actualizare viitoare a șablonului.

Rezolvarea problemelor

Dispozitivul nu răspunde
  1. Verificați dacă dispozitivul Shelly este conectat la Wi-Fi și are o adresă IP validă
  2. Încercați numele de gazdă mDNS (shellyplusrgbwpm-AABBCCDDEE.local) în locul adresei IP — adresa IP s-ar fi putut schimba după reînnoirea DHCP
  3. Deschideți http://{device-ip}/rpc/Shelly.GetDeviceInfo într-un browser — dacă răspunde cu JSON, dispozitivul este accesibil
  4. Verificați dacă unitatea de control TapHome (CCU) și dispozitivul Shelly se află în aceeași rețea / VLAN
  5. Asigurați-vă că autentificarea HTTP Digest este dezactivată în interfața web Shelly — TapHome nu acceptă cereri autentificate
Eroare de profil pe dispozitive

Dacă un dispozitiv afișează „Profile is not set to rgb/rgbw/light” — acest lucru este normal. Șablonul conține dispozitive pentru toate cele trei profiluri, dar vor funcționa doar dispozitivele care corespund profilului activ. Celelalte dispozitive vor raporta această eroare și pot fi ignorate.

Pentru a schimba profilul activ, folosiți acțiunea de service Setare profil de pe modul sau schimbați-l în interfața web Shelly. Dispozitivul va reporni, iar TapHome va detecta noul profil într-un singur ciclu de interogare.

Culorile par incorecte în modul RGB/RGBW
  1. Verificați dacă cablajul benzii LED corespunde ordinii bornelor de ieșire (R, G, B, W) — firele inversate produc culori greșite
  2. Șablonul face intern conversia între spațiile de culoare HSB și RGB. Dacă culorile par șterse, verificați valoarea saturației — o saturație scăzută produce nuanțe pastelate
  3. În modul RGBW, canalul alb și canalele RGB sunt comandate independent. La trecerea de la alb la culoare sau invers, TapHome trimite comanda potrivită pentru a seta la zero canalele celuilalt mod
Ieșirile de dimmer nu răspund în modul light
  1. Verificați dacă profilul este setat pe light — dispozitivele dimmer funcționează doar în modul light
  2. Verificați dacă la fiecare canal este conectată o sarcină LED — canalele fără sarcină pot raporta o stare incorectă
  3. Încercați să rulați acțiunea Calibrare pe canal — aceasta optimizează curba de reglare a intensității pentru sarcina LED conectată
  4. Dispozitivele Gen2+ acceptă până la 6 conexiuni HTTP simultane — evitați interogarea din mai multe sisteme în același timp
Valorile puterii sunt zero
  1. Verificați dacă sarcina LED este conectată și canalul este pornit
  2. Interogați manual endpointul corespunzător (/rpc/Light.GetStatus?id=0, /rpc/RGB.GetStatus?id=0 sau /rpc/RGBW.GetStatus?id=0) și verificați dacă apower returnează o valoare diferită de zero
  3. Sarcinile LED cu putere foarte mică pot raporta 0 W din cauza rezoluției de măsurare — acest lucru este normal pentru LED-urile indicatoare mici

Cum se instalează în TapHome

Cerințe preliminare

  • Dispozitiv Shelly instalat și pornit
  • Rețea Wi-Fi locală (2,4 GHz)
  • TapHome CCU în aceeași rețea

Pasul 1 — Conectați dispozitivul Shelly la Wi-Fi

Varianta A — aplicația Shelly (recomandat):

  1. Descărcați aplicația Shelly (iOS / Android)
  2. Atingeți + → Add Device și urmați asistentul de împerechere prin Bluetooth
  3. Introduceți datele de conectare la Wi-Fi când vi se solicită

Varianta B — modul AP (fără aplicație):

  1. La prima pornire, dispozitivul creează un hotspot: ShellyXXX-AABBCCDDEE
  2. Conectați telefonul/PC-ul la acest hotspot
  3. Deschideți http://192.168.33.1 → Internet & Security → Wi-Fi Mode - Client
  4. Introduceți SSID-ul și parola → Save

Shelly acceptă doar rețele de 2,4 GHz. Rețelele de 5 GHz nu vor apărea la scanare.

Pasul 2 — Găsiți adresa dispozitivului

Dispozitivele Shelly Gen1 acceptă mDNS (Zeroconf). Puteți accesa dispozitivul folosind un nume de gazdă în locul adresei IP:

1
shelly<model>-<MAC>.local

De exemplu: shelly1pm-AABBCCDDEE.local (adresa MAC în hexazecimal cu majuscule, fără două puncte).

Recomandat: folosiți Scanner IP din TapHome. Deschideți aplicația TapHome și folosiți Scanner IP (Setări → Rețea → Scanare). Scannerul descoperă dispozitivele din rețea și afișează atât adresa IP, cât și numele de gazdă mDNS. Pentru o conexiune mai fiabilă folosiți numele de gazdă în locul adresei IP — acesta rămâne același chiar dacă adresa IP a dispozitivului se schimbă după o repornire a routerului.

Metode alternative pentru aflarea adresei IP:

  • Aplicația Shelly: detaliile dispozitivului → Device info → adresa IP
  • Interfața web Shelly: conectați-vă la AP-ul dispozitivului înainte de configurarea Wi-Fi — adresa IP se afișează după salvare
  • Tabelul DHCP al routerului: căutați un nume de gazdă de forma shelly1pm-AABBCCDDEE

Pasul 3 — Configurați dispozitivul în TapHome

  1. În TapHome adăugați un nou modul Packet Parser (HTTP)
  2. Address: introduceți numele de gazdă mDNS (de ex. shelly1pm-AABBCCDDEE.local) sau adresa IP de la pasul 2
  3. Port: 80 (implicit, nu este necesară nicio modificare)
  4. Importați șablonul — TapHome va interoga periodic /status pentru a citi starea dispozitivului

Autentificarea HTTP este dezactivată implicit pe dispozitivele Shelly. Dacă ați activat protecția prin autentificare, rețineți că TapHome nu acceptă momentan HTTP Basic Auth — pentru integrarea cu TapHome lăsați autentificarea dezactivată.

Dispozitive disponibile

Shelly Plus RGBW PM Modul
Atribute de service
Wi-Fi
Adresă IP
Puterea semnalului
MAC
Profil
Acțiuni de service
Actualizare firmware
Repornire
Setare profil
Variabile personalizate

Shelly Plus RGBW PM

Citire (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

response := SENDHTTPREQUEST("/rpc/PlusRGBWPM.GetConfig");
IF response.IsSuccess
    PlusRGBWPM.GetConfig := 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
Atribute de service
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");
Acțiuni de service
${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, "light",
1, "rgb",
2, "rgbw",
"")
+ "\"");
IF response.IsSuccess
    return("OK");
else
    return("Error");
END
Lumină RGB Lumină HSB

Lumină color HSB (profil rgb) cu comanda luminozității, nuanței și saturației și măsurarea puterii pe fiecare canal

HSB
Atribute de service
Temperatură
Consum de energie
Putere
Tensiune
Curent

Lumină RGB

Citire (modul)
if PARSEJSON(Sys.GetConfig, "$.device.profile") != "rgb"
	adderror("Profile is not set to rgb (" + PARSEJSON(Sys.GetConfig, "$.device.profile") + ")");
end

VAR response := SENDHTTPREQUEST("/rpc/RGB.GetStatus?id=" + ID);
IF response.IsSuccess
    RGB.GetStatus := response.Content;
	R := PARSEJSON(RGB.GetStatus, "$.rgb[0]", true);
	G := PARSEJSON(RGB.GetStatus, "$.rgb[1]", true);
	B := PARSEJSON(RGB.GetStatus, "$.rgb[2]", true);    
END

response := SENDHTTPREQUEST("/rpc/RGB.GetConfig?id=" + ID);
IF response.IsSuccess
    RGB.GetConfig := response.Content;
END

if ! ISNULL(parsejson(RGB.GetStatus, "errors", true))
    adderror("Error: " + parsejson(RGB.GetStatus, "errors"));
end
Citirea luminozității
bool output := PARSEJSON(RGB.GetStatus, "$.output", true);
var brightness := PARSEJSON(RGB.GetStatus, "$.brightness", true);

if output
    return(brightness / 100);
else
    return(0);
end
Scrierea luminozității
SENDHTTPREQUEST("/rpc/RGB.Set?id=" + ID + "&on=" + if(St, "true", "false") + "&brightness=" + round(Hb*100.0));
Citirea nuanței
VAR HSVColor := RGBTOHSV(R, G, B);
ROUND(HSVColor.Hue);
Scrierea nuanței
VAR color := HSVTORGB(Hd, Sa, 1);
SENDHTTPREQUEST("/rpc/RGB.Set?id=" + ID + "&rgb=[" + color.RED + "," + color.GREEN + "," + color.BLUE + "]");
Citirea saturației
VAR HSVColor := RGBTOHSV(R, G, B);
ROUND(HSVColor.Saturation * 100.0) / 100.0;
Scrierea saturației
VAR color := HSVTORGB(Hd, Sa, 1);
SENDHTTPREQUEST("/rpc/RGB.Set?id=" + ID + "&rgb=[" + color.RED + "," + color.GREEN + "," + color.BLUE + "]");
Atribute de service
${device_variable_realtemperature} [°C]
parsejson(RGB.GetStatus, "$.temperature.tC", true)
${device_variable_electricityconsumption} [Wh]
parsejson(RGB.GetStatus, "$.aenergy.total", true)
${device_variable_electricitydemand} [W]
parsejson(RGB.GetStatus, "$.apower", true)
${valueLogType_ElectricVoltage} [V]
parsejson(RGB.GetStatus, "$.voltage", true)
${valueLogType_ElectricCurrent} [A]
parsejson(RGB.GetStatus, "$.current", true)
Lumină RGBW Lumină HSB

Lumină HSB color și albă (profil rgbw) cu RGB, canal alb (CCT la 4500 K) și măsurarea puterii pe fiecare canal

HSB
Atribute de service
Temperatură
Consum de energie
Putere
Tensiune
Curent

Lumină RGBW

Citire (modul)
if PARSEJSON(Sys.GetConfig, "$.device.profile") != "rgbw"
	adderror("Profile is not set to rgbw (" + PARSEJSON(Sys.GetConfig, "$.device.profile") + ")");
end

VAR response := SENDHTTPREQUEST("/rpc/RGBW.GetStatus?id=" + ID);
IF response.IsSuccess
    RGBW.GetStatus := response.Content;
	R := PARSEJSON(RGBW.GetStatus, "$.rgb[0]", true);
	G := PARSEJSON(RGBW.GetStatus, "$.rgb[1]", true);
	B := PARSEJSON(RGBW.GetStatus, "$.rgb[2]", true);    
END

response := SENDHTTPREQUEST("/rpc/RGBW.GetConfig?id=" + ID);
IF response.IsSuccess
    RGBW.GetConfig := response.Content;
END

if ! ISNULL(parsejson(RGBW.GetStatus, "errors", true))
    adderror("Error: " + parsejson(RGBW.GetStatus, "errors"));
end
Citirea luminozității
bool output := PARSEJSON(RGBW.GetStatus, "$.output", true);
var brightness := PARSEJSON(RGBW.GetStatus, "$.brightness", true);
var white := PARSEJSON(RGBW.GetStatus, "$.white", true);

if output
	if white != 0
		return(linear(white, 0, 0, 255, 1));
	else
    	return(brightness / 100);
    end
else
    return(0);
end
Scrierea luminozității
if isnan(Ct)
	SENDHTTPREQUEST("/rpc/RGBW.Set?id=" + ID + "&on=" + if(St, "true", "false") + "&white=0&brightness=" + round(Hb*100.0));
else
	SENDHTTPREQUEST("/rpc/RGBW.Set?id=" + ID + "&on=" + if(St, "true", "false") + "&brightness=0&white=" + round(linear(Hb, 0, 0, 1, 255)));
end
Citirea nuanței
VAR HSVColor := RGBTOHSV(R, G, B);
ROUND(HSVColor.Hue);
Scrierea nuanței
VAR color := HSVTORGB(Hd, Sa, 1);
SENDHTTPREQUEST("/rpc/RGBW.Set?id=" + ID + "&rgb=[" + color.RED + "," + color.GREEN + "," + color.BLUE + "]");
Citirea saturației
VAR HSVColor := RGBTOHSV(R, G, B);
ROUND(HSVColor.Saturation * 100.0) / 100.0;
Scrierea saturației
VAR color := HSVTORGB(Hd, Sa, 1);
SENDHTTPREQUEST("/rpc/RGBW.Set?id=" + ID + "&rgb=[" + color.RED + "," + color.GREEN + "," + color.BLUE + "]");
Citirea temperaturii de culoare
var white := PARSEJSON(RGBW.GetStatus, "$.white", true);
if white != 0 or !isnan(Ct)
	return(4500);
else
	return(NaN);
end
Scrierea temperaturii de culoare
IF !isnan(Ct)
	SENDHTTPREQUEST("/rpc/RGBW.Set?id=" + ID + "&on=" + if(St, "true", "false") + "&brightness=0&white=" + round(linear(Hb, 0, 0, 1, 255)));
end
Atribute de service
${device_variable_realtemperature} [°C]
parsejson(RGBW.GetStatus, "$.temperature.tC", true)
${device_variable_electricityconsumption} [Wh]
parsejson(RGBW.GetStatus, "$.aenergy.total", true)
${device_variable_electricitydemand} [W]
parsejson(RGBW.GetStatus, "$.apower", true)
${valueLogType_ElectricVoltage} [V]
parsejson(RGBW.GetStatus, "$.voltage", true)
${valueLogType_ElectricCurrent} [A]
parsejson(RGBW.GetStatus, "$.current", true)
Ieșire LED dimabilă 2 Dimmer

Canal de dimmer independent 2 (profil light, id=1) cu comanda luminozității, calibrare și măsurarea puterii pe fiecare canal

numeric
Atribute de service
Temperatură
Consum de energie
Putere
Tensiune
Curent
Indicatori
Acțiuni de service
Calibrare

Ieșire LED dimabilă 2

Citire (modul)
if PARSEJSON(Sys.GetConfig, "$.device.profile") != "light"
	adderror("Profile is not set to light (" + PARSEJSON(Sys.GetConfig, "$.device.profile") + ")");
end

VAR response := SENDHTTPREQUEST("/rpc/Light.GetStatus?id=" + ID);
IF response.IsSuccess
    Light.GetStatus := response.Content;
END

response := SENDHTTPREQUEST("/rpc/Light.GetConfig?id=" + ID);
IF response.IsSuccess
    Light.GetConfig := response.Content;
END

if ! ISNULL(parsejson(Light.GetStatus, "errors", true))
    adderror("Error: " + parsejson(Light.GetStatus, "errors"));
end
Citirea nivelului
bool output := PARSEJSON(Light.GetStatus, "$.output");
var brightness := PARSEJSON(Light.GetStatus, "$.brightness");

if output
    return(brightness / 100);
else
    return(0);
end
Scrierea nivelului
SENDHTTPREQUEST("/rpc/Light.Set?id=" + ID + "&on=" + if(St, "true", "false") + "&brightness=" + round(Le*100.0));
Atribute de service
${device_variable_realtemperature} [°C]
parsejson(Light.GetStatus, "$.temperature.tC", true)
${device_variable_electricityconsumption} [Wh]
parsejson(Light.GetStatus, "$.aenergy.total", true)
${device_variable_electricitydemand} [W]
parsejson(Light.GetStatus, "$.apower", true)
${valueLogType_ElectricVoltage} [V]
parsejson(Light.GetStatus, "$.voltage", true)
${valueLogType_ElectricCurrent} [A]
parsejson(Light.GetStatus, "$.current", true)
Flags
parsejson(Light.GetStatus, "$.flags", true)
Acțiuni de service
${detail_deviceSettings_TemperatureSensor_categoryCalibration}
VAR response := SENDHTTPREQUEST("/rpc/Light.Calibrate?id=" + ID);
IF response.IsSuccess
    return("OK");
else
    return("Error");
END
Ieșire LED dimabilă 1 Dimmer

Canal de dimmer independent 1 (profil light, id=0) cu comanda luminozității, calibrare și măsurarea puterii pe fiecare canal

numeric
Atribute de service
Temperatură
Consum de energie
Putere
Tensiune
Curent
Indicatori
Acțiuni de service
Calibrare

Ieșire LED dimabilă 1

Citire (modul)
if PARSEJSON(Sys.GetConfig, "$.device.profile") != "light"
	adderror("Profile is not set to light (" + PARSEJSON(Sys.GetConfig, "$.device.profile") + ")");
end

VAR response := SENDHTTPREQUEST("/rpc/Light.GetStatus?id=" + ID);
IF response.IsSuccess
    Light.GetStatus := response.Content;
END

response := SENDHTTPREQUEST("/rpc/Light.GetConfig?id=" + ID);
IF response.IsSuccess
    Light.GetConfig := response.Content;
END

if ! ISNULL(parsejson(Light.GetStatus, "errors", true))
    adderror("Error: " + parsejson(Light.GetStatus, "errors"));
end
Citirea nivelului
bool output := PARSEJSON(Light.GetStatus, "$.output");
var brightness := PARSEJSON(Light.GetStatus, "$.brightness");

if output
    return(brightness / 100);
else
    return(0);
end
Scrierea nivelului
SENDHTTPREQUEST("/rpc/Light.Set?id=" + ID + "&on=" + if(St, "true", "false") + "&brightness=" + round(Le*100.0));
Atribute de service
${device_variable_realtemperature} [°C]
parsejson(Light.GetStatus, "$.temperature.tC", true)
${device_variable_electricityconsumption} [Wh]
parsejson(Light.GetStatus, "$.aenergy.total", true)
${device_variable_electricitydemand} [W]
parsejson(Light.GetStatus, "$.apower", true)
${valueLogType_ElectricVoltage} [V]
parsejson(Light.GetStatus, "$.voltage", true)
${valueLogType_ElectricCurrent} [A]
parsejson(Light.GetStatus, "$.current", true)
Flags
parsejson(Light.GetStatus, "$.flags", true)
Acțiuni de service
${detail_deviceSettings_TemperatureSensor_categoryCalibration}
VAR response := SENDHTTPREQUEST("/rpc/Light.Calibrate?id=" + ID);
IF response.IsSuccess
    return("OK");
else
    return("Error");
END
Ieșire LED dimabilă 3 Dimmer

Canal de dimmer independent 3 (profil light, id=2) cu comanda luminozității, calibrare și măsurarea puterii pe fiecare canal

numeric
Atribute de service
Temperatură
Consum de energie
Putere
Tensiune
Curent
Indicatori
Acțiuni de service
Calibrare

Ieșire LED dimabilă 3

Citire (modul)
if PARSEJSON(Sys.GetConfig, "$.device.profile") != "light"
	adderror("Profile is not set to light (" + PARSEJSON(Sys.GetConfig, "$.device.profile") + ")");
end

VAR response := SENDHTTPREQUEST("/rpc/Light.GetStatus?id=" + ID);
IF response.IsSuccess
    Light.GetStatus := response.Content;
END

response := SENDHTTPREQUEST("/rpc/Light.GetConfig?id=" + ID);
IF response.IsSuccess
    Light.GetConfig := response.Content;
END

if ! ISNULL(parsejson(Light.GetStatus, "errors", true))
    adderror("Error: " + parsejson(Light.GetStatus, "errors"));
end
Citirea nivelului
bool output := PARSEJSON(Light.GetStatus, "$.output");
var brightness := PARSEJSON(Light.GetStatus, "$.brightness");

if output
    return(brightness / 100);
else
    return(0);
end
Scrierea nivelului
SENDHTTPREQUEST("/rpc/Light.Set?id=" + ID + "&on=" + if(St, "true", "false") + "&brightness=" + round(Le*100.0));
Atribute de service
${device_variable_realtemperature} [°C]
parsejson(Light.GetStatus, "$.temperature.tC", true)
${device_variable_electricityconsumption} [Wh]
parsejson(Light.GetStatus, "$.aenergy.total", true)
${device_variable_electricitydemand} [W]
parsejson(Light.GetStatus, "$.apower", true)
${valueLogType_ElectricVoltage} [V]
parsejson(Light.GetStatus, "$.voltage", true)
${valueLogType_ElectricCurrent} [A]
parsejson(Light.GetStatus, "$.current", true)
Flags
parsejson(Light.GetStatus, "$.flags", true)
Acțiuni de service
${detail_deviceSettings_TemperatureSensor_categoryCalibration}
VAR response := SENDHTTPREQUEST("/rpc/Light.Calibrate?id=" + ID);
IF response.IsSuccess
    return("OK");
else
    return("Error");
END
Ieșire LED dimabilă 4 Dimmer

Canal de dimmer independent 4 (profil light, id=3) cu comanda luminozității, calibrare și măsurarea puterii pe fiecare canal

numeric
Atribute de service
Temperatură
Consum de energie
Putere
Tensiune
Curent
Indicatori
Acțiuni de service
Calibrare

Ieșire LED dimabilă 4

Citire (modul)
if PARSEJSON(Sys.GetConfig, "$.device.profile") != "light"
	adderror("Profile is not set to light (" + PARSEJSON(Sys.GetConfig, "$.device.profile") + ")");
end

VAR response := SENDHTTPREQUEST("/rpc/Light.GetStatus?id=" + ID);
IF response.IsSuccess
    Light.GetStatus := response.Content;
END

response := SENDHTTPREQUEST("/rpc/Light.GetConfig?id=" + ID);
IF response.IsSuccess
    Light.GetConfig := response.Content;
END

if ! ISNULL(parsejson(Light.GetStatus, "errors", true))
    adderror("Error: " + parsejson(Light.GetStatus, "errors"));
end
Citirea nivelului
bool output := PARSEJSON(Light.GetStatus, "$.output");
var brightness := PARSEJSON(Light.GetStatus, "$.brightness");

if output
    return(brightness / 100);
else
    return(0);
end
Scrierea nivelului
SENDHTTPREQUEST("/rpc/Light.Set?id=" + ID + "&on=" + if(St, "true", "false") + "&brightness=" + round(Le*100.0));
Atribute de service
${device_variable_realtemperature} [°C]
parsejson(Light.GetStatus, "$.temperature.tC", true)
${device_variable_electricityconsumption} [Wh]
parsejson(Light.GetStatus, "$.aenergy.total", true)
${device_variable_electricitydemand} [W]
parsejson(Light.GetStatus, "$.apower", true)
${valueLogType_ElectricVoltage} [V]
parsejson(Light.GetStatus, "$.voltage", true)
${valueLogType_ElectricCurrent} [A]
parsejson(Light.GetStatus, "$.current", true)
Flags
parsejson(Light.GetStatus, "$.flags", true)
Acțiuni de service
${detail_deviceSettings_TemperatureSensor_categoryCalibration}
VAR response := SENDHTTPREQUEST("/rpc/Light.Calibrate?id=" + ID);
IF response.IsSuccess
    return("OK");
else
    return("Error");
END
Conexiune: Packet Parser → HTTP • Nume gazdă: shellyplusrgbwpm-{MAC}.local
Îmbunătățiri posibile (13)
  • Input State — Physical switch/button input state, available via /rpc/Input.GetStatus?id=0
  • WiFi SSID — Already exposed as module-level service attribute, not as standalone device
  • WiFi Signal Strength — Already exposed as module-level service attribute, not as standalone device
  • IP Address — Already exposed as module-level service attribute, not as standalone device
  • MAC Address — Already exposed as module-level service attribute, not as standalone device
  • 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
  • Firmware Update — Already implemented as module-level service action
  • Reboot — Already implemented as module-level service action
  • Night Mode — Night mode configuration with brightness limits and schedule, available in component GetConfig
  • Transition Duration — Color/brightness transition time in ms, available as parameter in RGB.Set and RGBW.Set
  • Minimum Brightness on Toggle — Minimum brightness percentage when toggling on, available in Light component config

Surse

Ați găsit o problemă la acest șablon de dispozitiv?

Spuneți-ne ce nu funcționează, ce lipsește sau cum ar trebui să se comporte șablonul. Feedbackul dvs. ne ajută să păstrăm catalogul corect.

Verificat de TapHome

Doriți să folosiți acest șablon în TapHome Core?

Deschideți acest șablon în Customer Portal pentru a-l aplica într-una dintre locuințele dvs. sau pentru a propune o îmbunătățire și a o trimite înapoi în catalog.

Deschideți în portal