TapHome

Shelly Plus RGBW PM

Packet Parser → HTTP
Eingereicht von
Zuletzt aktualisiert: 03. 2026
Shelly Plus RGBW PM

Der Shelly Plus RGBW PM ist ein Gen2+ WLAN-RGBW-LED-Controller mit eingebauter Leistungsmessung an jedem Ausgangskanal. Er treibt LED-Streifen oder einzelne LED-Kanäle bei 12/24 VDC mit bis zu 4 x 4,5 A pro Kanal (18 A gesamt). Das Gerät unterstützt drei umschaltbare Profile — light (4 unabhängige Dimmer), rgb (3-Kanal-Farbe) und rgbw (3-Kanal-Farbe + Weiß) — wobei jedes Profil unterschiedliche Geräte in TapHome bereitstellt. TapHome kommuniziert lokal über WLAN mit dem Gerät über die Gen2+ RPC API — keine Cloud-Verbindung erforderlich.

Die TapHome-Vorlage ist eine HTTP-Vorlage, die die RPC-Endpunkte des Geräts abfragt. Eine einzelne Vorlage bedient alle drei Profile; TapHome erkennt das aktive Profil zur Laufzeit und aktiviert die entsprechenden Geräte.

Konfiguration

Importparameter

Die Vorlage benötigt nur die IP-Adresse des Geräts (Standard-Platzhalter 192.168.0.1). TapHome verbindet sich auf Port 80 und fragt mehrere RPC-Endpunkte für Systemstatus und Gerätedaten ab.

Auf Modulebene fragt TapHome /rpc/Sys.GetStatus, /rpc/Sys.GetConfig, /rpc/WiFi.GetStatus und /rpc/PlusRGBWPM.GetConfig im 3-Sekunden-Intervall ab. Die Sys.GetConfig-Antwort liefert das aktuelle Profil (device.profile), das bestimmt, welche Endpunkte auf Geräteebene aktiv sind.

Profilauswahl

Der Shelly Plus RGBW PM arbeitet jeweils in einem von drei Profilen. Sie können das Profil direkt aus TapHome über die Set Profile Service-Aktion am Modul oder über die Shelly-Weboberfläche wechseln.

ProfilGeräte in TapHomeVerwendung
light4 unabhängige Dimmer (O1–O4)Einfarbige LED-Streifen, 4 separate Beleuchtungszonen
rgb1 RGB-LichtRGB-LED-Streifen (3-Kanal-Farbmischung)
rgbw1 RGBW-LichtRGBW-LED-Streifen (RGB + dedizierter Weißkanal)

Nach dem Profilwechsel startet das Gerät neu und TapHome erkennt das neue Profil automatisch. Geräte des inaktiven Profils melden einen Fehler (“Profile is not set to …”) — dies ist erwartet und kann ignoriert werden.

Gerätefunktionen

RGB-Licht (Profil = rgb)

Wenn das Gerät auf das rgb-Profil eingestellt ist, stellt TapHome ein einzelnes HSB-Lichtgerät bereit. Die Vorlage liest /rpc/RGB.GetStatus?id=0 für den Ein-/Aus-Status, Helligkeit (0–100 %) und RGB-Farbwerte und schreibt über /rpc/RGB.Set?id=0 zur Lichtsteuerung.

Die Farbsteuerung verwendet HSB (Hue-Saturation-Brightness):

  • Hue (0–360 Grad) und Saturation (0,0–1,0) werden intern zwischen HSB und RGB konvertiert
  • Brightness (0,0–1,0) wird auf den Shelly-Bereich 0–100 % abgebildet
  • Das Setzen der Helligkeit auf 0 schaltet das Licht aus; jede Helligkeit ungleich null schaltet es ein

Das RGB-Licht stellt fünf Service-Attribute bereit:

AttributEinheitBeschreibung
TemperaturCInterne Gerätetemperatur
EnergieverbrauchWhKumulierte Energie für den RGB-Ausgang
LeistungWMomentane Leistungsaufnahme
SpannungVEffektivspannung
StromAStromaufnahme
RGBW-Licht (Profil = rgbw)

Wenn das rgbw-Profil eingestellt ist, stellt TapHome ein einzelnes HSB-Licht mit zusätzlichem Weißkanal bereit. Die Vorlage liest /rpc/RGBW.GetStatus?id=0 und schreibt über /rpc/RGBW.Set?id=0.

Das RGBW-Profil fügt einen Weißkanal (0–255) hinzu, gesteuert über CCT (korrelierte Farbtemperatur) bei festen 4500 K:

  • Wenn der Weißkanal aktiv ist (white != 0), wird die Helligkeit vom Weißlevel abgeleitet (linear 0–255 auf 0,0–1,0 abgebildet)
  • Wenn der Weißkanal inaktiv ist, stammt die Helligkeit aus dem Standard-Brightness-Feld (0–100 %)
  • Das Umschalten in den Farbtemperaturmodus in TapHome aktiviert den Weißkanal; das Umschalten in den RGB-Modus deaktiviert ihn

Das RGBW-Licht stellt die gleichen fünf Service-Attribute wie das RGB-Licht bereit (Temperatur, Energie, Leistung, Spannung, Strom), gelesen aus der RGBW.GetStatus-Antwort.

Dimmbare LED-Ausgänge (Profil = light)

Wenn das light-Profil eingestellt ist, stellt TapHome 4 unabhängige Dimmerkanäle (O1–O4) bereit, von denen jeder einen LED-Ausgang steuert. Jeder Kanal liest von /rpc/Light.GetStatus?id={0-3} und schreibt über /rpc/Light.Set?id={0-3}.

Die Helligkeit wird vom TapHome-Bereich 0,0–1,0 auf den Shelly-Bereich 0–100 % abgebildet. Das Setzen des Levels auf 0 schaltet den Ausgang aus; jedes Level ungleich null schaltet ihn ein und setzt die Helligkeit.

Jeder Dimmerkanal stellt sechs Service-Attribute bereit:

AttributEinheitBeschreibung
TemperaturCInterne Gerätetemperatur
EnergieverbrauchWhKumulierte Energie für diesen Kanal
LeistungWMomentane Leistungsaufnahme
SpannungVEffektivspannung
StromAStromaufnahme
FlagsInterne Status-Flags

Jeder Dimmerkanal stellt auch eine Calibrate Service-Aktion bereit, die /rpc/Light.Calibrate?id={N} sendet, um den Ausgang für die angeschlossene LED-Last zu kalibrieren.

Moduldiagnose und Aktionen

Das Modul stellt fünf Service-Attribute für die Gerätediagnose bereit:

AttributBeschreibung
WiFi SSIDName des verbundenen drahtlosen Netzwerks
IP-AdresseGeräte-IP-Adresse
Signalstärke (dB)WiFi RSSI
MAC-AdresseHardware-Adresse des Geräts
ProfilAktuell aktives Profil (light, rgb oder rgbw)

Auf Modulebene sind drei Service-Aktionen verfügbar:

AktionBeschreibung
Firmware-UpdateLöst ein OTA-Update auf den stabilen Firmware-Kanal aus
NeustartStartet das Gerät neu
Profil setzenWechselt zwischen den Profilen light, rgb und rgbw (Gerät startet neu)

Das Modulskript prüft auch auf verfügbare Firmware-Updates und ausstehende Neustartanforderungen und zeigt in TapHome Warnungen an, wenn eine dieser Bedingungen erkannt wird.

Weitere Funktionen

Der Shelly Plus RGBW PM stellt über seine RPC API auch den physischen Eingangsstatus, die Nachtmodus-Konfiguration mit Helligkeitsgrenzen und Zeitplan, die Übergangsdauer für Farb-/Helligkeitsänderungen und die Mindesthelligkeit beim Einschalten bereit. Diese Funktionen können in einem zukünftigen Vorlagen-Update hinzugefügt werden.

Fehlerbehebung

Gerät antwortet nicht
  1. Überprüfen Sie, ob der Shelly mit dem WLAN verbunden ist und eine gültige IP-Adresse hat
  2. Versuchen Sie den mDNS-Hostnamen (shellyplusrgbwpm-AABBCCDDEE.local) statt der IP-Adresse — die IP kann sich nach einer DHCP-Erneuerung geändert haben
  3. Öffnen Sie http://{device-ip}/rpc/Shelly.GetDeviceInfo im Browser — wenn ein JSON zurückkommt, ist das Gerät erreichbar
  4. Prüfen Sie, dass TapHome CCU und Shelly im selben Netzwerk / VLAN sind
  5. Stellen Sie sicher, dass HTTP Digest Authentication in der Shelly-Weboberfläche deaktiviert ist — TapHome unterstützt keine authentifizierten Anfragen
Profilfehler auf Geräten

Wenn ein Gerät “Profile is not set to rgb/rgbw/light” anzeigt — dies ist erwartet. Die Vorlage enthält Geräte für alle drei Profile, aber nur die Geräte des aktuell aktiven Profils funktionieren. Die anderen Geräte melden diesen Fehler und können ignoriert werden.

Um das aktive Profil zu wechseln, verwenden Sie die Set Profile Service-Aktion am Modul oder ändern Sie es in der Shelly-Weboberfläche. Das Gerät startet neu und TapHome erkennt das neue Profil innerhalb eines Abfragezyklus.

Farben erscheinen falsch im RGB/RGBW-Modus
  1. Überprüfen Sie, ob die LED-Streifen-Verdrahtung der Ausgangsklemmenreihenfolge entspricht (R, G, B, W) — vertauschte Drähte erzeugen falsche Farben
  2. Die Vorlage konvertiert intern zwischen den Farbräumen HSB und RGB. Wenn Farben verwaschen wirken, prüfen Sie den Sättigungswert — niedrige Sättigung erzeugt Pastelltöne
  3. Im RGBW-Modus werden der Weißkanal und die RGB-Kanäle unabhängig gesteuert. Beim Wechsel von Weiß zu Farbe oder umgekehrt sendet TapHome den entsprechenden Befehl, um den anderen Modus auf null zu setzen
Dimmerausgänge reagieren nicht im Light-Modus
  1. Bestätigen Sie, dass das Profil auf light eingestellt ist — Dimmergeräte funktionieren nur im Light-Modus
  2. Prüfen Sie, ob jeder Kanal eine LED-Last angeschlossen hat — unbelastete Kanäle melden möglicherweise keinen korrekten Status
  3. Versuchen Sie, die Calibrate-Aktion auf dem Kanal auszuführen — dies optimiert die Dimmkurve für die angeschlossene LED-Last
  4. Gen2+-Geräte unterstützen bis zu 6 gleichzeitige HTTP-Verbindungen — vermeiden Sie gleichzeitiges Abfragen von mehreren Systemen
Leistungsmessung zeigt null an
  1. Bestätigen Sie, dass die LED-Last angeschlossen und der Kanal eingeschaltet ist
  2. Fragen Sie den entsprechenden Endpunkt manuell ab (/rpc/Light.GetStatus?id=0, /rpc/RGB.GetStatus?id=0 oder /rpc/RGBW.GetStatus?id=0) und prüfen Sie, ob apower einen Wert ungleich null zurückgibt
  3. LED-Lasten mit sehr niedriger Leistung können aufgrund der Messauflösung 0 W melden — dies ist normal für kleine Indikator-LEDs

Installation in TapHome

Voraussetzungen

  • Shelly-Gerät installiert und eingeschaltet
  • Lokales Wi-Fi-Netzwerk (2,4 GHz)
  • TapHome CCU im selben Netzwerk

Schritt 1 — Shelly mit Wi-Fi verbinden

Option A — Shelly-App (empfohlen):

  1. Laden Sie die Shelly-App herunter (iOS / Android)
  2. Tippen Sie auf +Add Device und folgen Sie dem Bluetooth-Kopplungsassistenten
  3. Geben Sie Ihre Wi-Fi-Zugangsdaten ein, wenn Sie dazu aufgefordert werden

Option B — AP-Modus (ohne App):

  1. Beim ersten Einschalten erstellt das Gerät einen Hotspot: ShellyXXX-AABBCCDDEE
  2. Verbinden Sie Ihr Telefon/PC mit diesem Hotspot
  3. Öffnen Sie http://192.168.33.1Internet & SecurityWi-Fi Mode - Client
  4. Geben Sie SSID und Passwort ein → Save

Shelly unterstützt nur 2,4 GHz-Netzwerke. 5 GHz-Netzwerke werden beim Scannen nicht angezeigt.

Schritt 2 — IP-Adresse ermitteln

Nach der Verbindung mit Wi-Fi ermitteln Sie die zugewiesene IP-Adresse auf eine der folgenden Arten:

  • Shelly-App: Gerätedetail → Device info → IP-Adresse
  • Shelly-Weboberfläche: Verbinden Sie sich mit dem Geräte-AP vor der Wi-Fi-Einrichtung — die IP wird nach dem Speichern angezeigt
  • Router-DHCP-Tabelle: Suchen Sie nach einem Hostnamen wie shelly1pm-AABBCCDDEE
  • mDNS: Pingen Sie shelly<model>-<mac>.local (z. B. shelly1pm-AABBCCDDEE.local) aus dem selben Netzwerk

Weisen Sie dem Shelly-Gerät eine statische IP (DHCP-Reservierung) in Ihrem Router zu, damit sich die Adresse nach einem Router-Neustart nicht ändert.

Schritt 3 — Konfiguration in TapHome

  1. Fügen Sie in TapHome ein neues Modul Packet Parser (HTTP) hinzu
  2. IP Address: Geben Sie die IP aus Schritt 2 ein (z. B. 192.168.1.50)
  3. Port: 80 (Standard, keine Änderung erforderlich)
  4. Importieren Sie die Vorlage — TapHome fragt regelmäßig /status ab, um den Gerätestatus zu lesen

Die HTTP-Authentifizierung ist auf Shelly-Geräten standardmäßig deaktiviert. Wenn Sie den Anmeldeschutz aktiviert haben, unterstützt TapHome derzeit kein HTTP Basic Auth — lassen Sie die Authentifizierung für die TapHome-Integration deaktiviert.

Verfügbare Geräte

Shelly Plus RGBW PM Modul
Serviceattribute
WiFi
IP-Adresse
Signalstärke
MAC
Profil
Serviceaktionen
Firmware aktualisieren
Neustart
Profil setzen
Benutzerdefinierte Variablen

Shelly Plus RGBW PM

Lesen (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
Serviceattribute
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");
Serviceaktionen
${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
Parameter: 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
RGB-Licht HSB-Licht

HSB-Farblicht (rgb-Profil) mit Helligkeits-, Farbton-, Sättigungssteuerung und kanalweiser Leistungsmessung

HSB
Serviceattribute
Temperatur
Energieverbrauch
Leistung
Spannung
Strom

RGB-Licht

Lesen (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
Helligkeit lesen
bool output := PARSEJSON(RGB.GetStatus, "$.output", true);
var brightness := PARSEJSON(RGB.GetStatus, "$.brightness", true);

if output
    return(brightness / 100);
else
    return(0);
end
Helligkeit schreiben
SENDHTTPREQUEST("/rpc/RGB.Set?id=" + ID + "&on=" + if(St, "true", "false") + "&brightness=" + round(Hb*100.0));
Farbton lesen
VAR HSVColor := RGBTOHSV(R, G, B);
ROUND(HSVColor.Hue);
Farbton schreiben
VAR color := HSVTORGB(Hd, Sa, 1);
SENDHTTPREQUEST("/rpc/RGB.Set?id=" + ID + "&rgb=[" + color.RED + "," + color.GREEN + "," + color.BLUE + "]");
Sättigung lesen
VAR HSVColor := RGBTOHSV(R, G, B);
ROUND(HSVColor.Saturation * 100.0) / 100.0;
Sättigung schreiben
VAR color := HSVTORGB(Hd, Sa, 1);
SENDHTTPREQUEST("/rpc/RGB.Set?id=" + ID + "&rgb=[" + color.RED + "," + color.GREEN + "," + color.BLUE + "]");
Serviceattribute
${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)
RGBW-Licht HSB-Licht

HSB-Farb+Weißlicht (rgbw-Profil) mit RGB, Weißkanal (CCT bei 4500K) und kanalweiser Leistungsmessung

HSB
Serviceattribute
Temperatur
Energieverbrauch
Leistung
Spannung
Strom

RGBW-Licht

Lesen (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
Helligkeit lesen
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
Helligkeit schreiben
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
Farbton lesen
VAR HSVColor := RGBTOHSV(R, G, B);
ROUND(HSVColor.Hue);
Farbton schreiben
VAR color := HSVTORGB(Hd, Sa, 1);
SENDHTTPREQUEST("/rpc/RGBW.Set?id=" + ID + "&rgb=[" + color.RED + "," + color.GREEN + "," + color.BLUE + "]");
Sättigung lesen
VAR HSVColor := RGBTOHSV(R, G, B);
ROUND(HSVColor.Saturation * 100.0) / 100.0;
Sättigung schreiben
VAR color := HSVTORGB(Hd, Sa, 1);
SENDHTTPREQUEST("/rpc/RGBW.Set?id=" + ID + "&rgb=[" + color.RED + "," + color.GREEN + "," + color.BLUE + "]");
Farbtemperatur lesen
var white := PARSEJSON(RGBW.GetStatus, "$.white", true);
if white != 0 or !isnan(Ct)
	return(4500);
else
	return(NaN);
end
Farbtemperatur schreiben
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
Serviceattribute
${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)
Dimmbarer LED-Ausgang 2 Dimmer

Unabhängiger Dimmerkanal 2 (light-Profil, id=1) mit Helligkeitssteuerung, Kalibrierung und kanalweiser Leistungsmessung

numeric
Serviceattribute
Temperatur
Energieverbrauch
Leistung
Spannung
Strom
Flags
Serviceaktionen
Kalibrierung

Dimmbarer LED-Ausgang 2

Lesen (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
Level lesen
bool output := PARSEJSON(Light.GetStatus, "$.output");
var brightness := PARSEJSON(Light.GetStatus, "$.brightness");

if output
    return(brightness / 100);
else
    return(0);
end
Level schreiben
SENDHTTPREQUEST("/rpc/Light.Set?id=" + ID + "&on=" + if(St, "true", "false") + "&brightness=" + round(Le*100.0));
Serviceattribute
${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)
Serviceaktionen
${detail_deviceSettings_TemperatureSensor_categoryCalibration}
VAR response := SENDHTTPREQUEST("/rpc/Light.Calibrate?id=" + ID);
IF response.IsSuccess
    return("OK");
else
    return("Error");
END
Dimmbarer LED-Ausgang 1 Dimmer

Unabhängiger Dimmerkanal 1 (light-Profil, id=0) mit Helligkeitssteuerung, Kalibrierung und kanalweiser Leistungsmessung

numeric
Serviceattribute
Temperatur
Energieverbrauch
Leistung
Spannung
Strom
Flags
Serviceaktionen
Kalibrierung

Dimmbarer LED-Ausgang 1

Lesen (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
Level lesen
bool output := PARSEJSON(Light.GetStatus, "$.output");
var brightness := PARSEJSON(Light.GetStatus, "$.brightness");

if output
    return(brightness / 100);
else
    return(0);
end
Level schreiben
SENDHTTPREQUEST("/rpc/Light.Set?id=" + ID + "&on=" + if(St, "true", "false") + "&brightness=" + round(Le*100.0));
Serviceattribute
${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)
Serviceaktionen
${detail_deviceSettings_TemperatureSensor_categoryCalibration}
VAR response := SENDHTTPREQUEST("/rpc/Light.Calibrate?id=" + ID);
IF response.IsSuccess
    return("OK");
else
    return("Error");
END
Dimmbarer LED-Ausgang 3 Dimmer

Unabhängiger Dimmerkanal 3 (light-Profil, id=2) mit Helligkeitssteuerung, Kalibrierung und kanalweiser Leistungsmessung

numeric
Serviceattribute
Temperatur
Energieverbrauch
Leistung
Spannung
Strom
Flags
Serviceaktionen
Kalibrierung

Dimmbarer LED-Ausgang 3

Lesen (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
Level lesen
bool output := PARSEJSON(Light.GetStatus, "$.output");
var brightness := PARSEJSON(Light.GetStatus, "$.brightness");

if output
    return(brightness / 100);
else
    return(0);
end
Level schreiben
SENDHTTPREQUEST("/rpc/Light.Set?id=" + ID + "&on=" + if(St, "true", "false") + "&brightness=" + round(Le*100.0));
Serviceattribute
${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)
Serviceaktionen
${detail_deviceSettings_TemperatureSensor_categoryCalibration}
VAR response := SENDHTTPREQUEST("/rpc/Light.Calibrate?id=" + ID);
IF response.IsSuccess
    return("OK");
else
    return("Error");
END
Dimmbarer LED-Ausgang 4 Dimmer

Unabhängiger Dimmerkanal 4 (light-Profil, id=3) mit Helligkeitssteuerung, Kalibrierung und kanalweiser Leistungsmessung

numeric
Serviceattribute
Temperatur
Energieverbrauch
Leistung
Spannung
Strom
Flags
Serviceaktionen
Kalibrierung

Dimmbarer LED-Ausgang 4

Lesen (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
Level lesen
bool output := PARSEJSON(Light.GetStatus, "$.output");
var brightness := PARSEJSON(Light.GetStatus, "$.brightness");

if output
    return(brightness / 100);
else
    return(0);
end
Level schreiben
SENDHTTPREQUEST("/rpc/Light.Set?id=" + ID + "&on=" + if(St, "true", "false") + "&brightness=" + round(Le*100.0));
Serviceattribute
${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)
Serviceaktionen
${detail_deviceSettings_TemperatureSensor_categoryCalibration}
VAR response := SENDHTTPREQUEST("/rpc/Light.Calibrate?id=" + ID);
IF response.IsSuccess
    return("OK");
else
    return("Error");
END
Verbindung: Packet Parser → HTTP
Mögliche Verbesserungen (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

Quellen