Sorry, mein Fehler - ich habe da was verwechselt mit einem anderen Shelly 
https://shelly-api-docs.shelly.cloud/gen2/Component…es/RGBW#rgbwset
Laut Doku ist rgb ein Array und die Werte für die Farben gehen von 0 bis 255: Red, Green, Blue [r,g,b] - each value represents level between 0..255 Optional.
Hier das korrigierte Skript: Rainbow habe ich erstmal weggelassen, da ich da auf die Schnelle die Umrechnung nicht hinkriege
// Farbwechselskript für Shelly Plus RGBW PM
// RGB-Werte von 0-255, Brightness von 0-100
let colorIndex = 0;
let brightness = 80; // Helligkeit (0-100)
let transitionTime = 2000; // Übergangszeit in ms
let pauseTime = 3000; // Pause zwischen Farbwechseln in ms
// Vordefinierte Farben (RGB 0-255)
let colors = [
{r: 255, g: 0, b: 0}, // Rot
{r: 255, g: 128, b: 0}, // Orange
{r: 255, g: 255, b: 0}, // Gelb
{r: 0, g: 255, b: 0}, // Grün
{r: 0, g: 255, b: 255}, // Cyan
{r: 0, g: 0, b: 255}, // Blau
{r: 128, g: 0, b: 255}, // Lila
{r: 255, g: 0, b: 255}, // Magenta
{r: 255, g: 255, b: 255} // Weiß
];
// Funktion zum Setzen der Farbe
function setColor(color) {
Shelly.call("RGBW.Set", {
id: 0,
rgb: [color.r, color.g, color.b],
brightness: brightness,
transition: transitionTime
});
}
// Funktion für sanften Farbwechsel
function changeColor() {
let currentColor = colors[colorIndex];
setColor(currentColor);
console.log("Wechsle zu Farbe:", colorIndex + 1, "RGB:", currentColor.r, currentColor.g, currentColor.b);
// Nächste Farbe vorbereiten
colorIndex++;
if (colorIndex >= colors.length) {
colorIndex = 0; // Zurück zum Anfang
}
// Timer für nächsten Farbwechsel setzen
Timer.set(pauseTime, false, changeColor);
}
// Script starten
console.log("Farbwechselskript gestartet");
console.log("Helligkeit:", brightness + "%");
console.log("Übergangszeit:", transitionTime + "ms");
console.log("Pause zwischen Farben:", pauseTime + "ms");
// RGBW einschalten und ersten Farbwechsel starten
Shelly.call("RGBW.Set", {
id: 0,
on: true
});
// Ersten Farbwechsel nach kurzer Verzögerung starten
Timer.set(1000, false, changeColor);
// Zusätzliche Funktionen für erweiterte Steuerung
// Helligkeit ändern (0-100)
function setBrightness(newBrightness) {
if (newBrightness >= 0 && newBrightness <= 100) {
brightness = newBrightness;
console.log("Helligkeit geändert auf:", brightness + "%");
}
}
// Geschwindigkeit ändern
function setSpeed(newTransitionTime, newPauseTime) {
transitionTime = newTransitionTime || transitionTime;
pauseTime = newPauseTime || pauseTime;
console.log("Geschwindigkeit geändert - Übergang:", transitionTime + "ms, Pause:", pauseTime + "ms");
}
// Script stoppen
function stopColorCycle() {
Timer.clear();
console.log("Farbwechsel gestoppt");
}
// Einzelne Farbe setzen (RGB 0-255)
function setSingleColor(r, g, b) {
if (r >= 0 && r <= 255 && g >= 0 && g <= 255 && b >= 0 && b <= 255) {
Timer.clear(); // Farbwechsel stoppen
setColor({r: r, g: g, b: b});
console.log("Einzelfarbe gesetzt - RGB:", r, g, b);
} else {
console.log("Error: RGB-Werte müssen zwischen 0 und 255 liegen");
}
}
Alles anzeigen