Fehler beim Ändern der LED-Farbe mit Color-Picker

Ich habe folgende Situation:
Bei meiner Couch steuere ich eine LED-Leiste über den Homematic RGBW Controler per Color-Picker Skript.
Wenn ich einen Farbwechseln im WebFront durchführe, funktioniert alles einwandfrei. Wenn ich einen Farbwechsel im IPSView vornehme und zwar nicht über den Color-Picker sondern über ein Popup mit vordefinierten Farben, funktioniert der Farbwechsel ebenfalls auf die Sekunde, jedoch kommt eine Fehlermeldung - ohne Text!
Kann mir jemand sagen, wo hier der Fehler liegt?

Fehler Farbe.png

Color-Picker Skript:

<?

   /**
    * Set_HM_RGBW_Color
    *
    * Umwandeln eines HEX-RGB Wertes von einem IPS-Color-Picker in
     * den benötigten Wert von 0-199 für den HomeMatic RGBW-Controller
    *
    * Christian Wolter
    * Version 1.0, 28.10.2015
    */


// Speichert den HEX-Wert vom Color-Picker
$Farbe = $_IPS['VALUE'];
SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);

// HEX-Wert in einzelne Werte für Rot / Grün / Blau zerlegen
$r = (($Farbe >> 16) & 0xFF);
$g = (($Farbe >> 8) & 0xFF);
$b = (($Farbe >> 0) & 0xFF);

// Umwandeln der RGB Werte
$hsv =  RGBtoHSV($r, $g, $b);

// Schreiben des Homematic Hue Wert in den Controller
HM_WriteValueInteger(44690 /*[Lichter\RGBW Wohnzimmer\RGBW_COLOR]*/, 'COLOR', $hsv);


/**
 *     Umwandeln der RGB-Werte in ein Farbwert des HSV-Farbraum
 *        RGB Werte:          0-255, 0-255, 0-255
 *        H Wert:                   0-360°
 *        Homematic H Wert: 0-199
 */
function RGBtoHSV($R, $G, $B)
{
    $R = ($R / 255);
    $G = ($G / 255);
    $B = ($B / 255);

    $maxRGB = max($R, $G, $B);
    $minRGB = min($R, $G, $B);
    $chroma = $maxRGB - $minRGB;

    if ($chroma == 0)
        return 0;

    if ($R == $minRGB)
        $h = 3 - (($G - $B) / $chroma);
    elseif ($B == $minRGB)
        $h = 1 - (($R - $G) / $chroma);
    else // $G == $minRGB
        $h = 5 - (($B - $R) / $chroma);

    $Hue = (60 * $h);
     $HomematicHue = ($Hue/1.8);

     if ($HomematicHue == 200)
       $HomematicHue = 199;

    return $HomematicHue;
}

?>

Hallo Loewenkoenig,

die gute Nachricht lautet, dass das auch ohne Fehlermeldung funktioniert :slight_smile: Das Script von Christian liefert dir den Hue-Wert umgerechnet für Homematic. Wie sieht denn das Script zum Schalten der vordefinierten Farben aus?

Gruß
Hans

Sehr schön :smiley:

Habe kein eigenes Skript. Umgesetzt habe ich dies mit dem RGB-Button des IPSStudio, dort kann man die Farbe auswählen und die wird dann an mein Dummy-Modul mit Integer-Variable weitergegeben. Bei der Integer-Variable habe ich des Skript von Christina als „Eigene Aktion“ hinterlegt.
Interessanterweise habe ich kein Problem, wenn ich über das WebFront von IPS die Farben ändere.

LG Peter

Hallo Peter,

in der HM Dokumentation findest du für den RGBW Controller die Datenpunkte. Dort gibt es einen Datenpunkt Color den du schalten musst. Ein Beispiel kann ich dir erst in einigen Tagen senden, da ich unterwegs bin.

Schon merkwürdig, dass es mit dem Webfront geht. Ich habe 12 von den Controllern im Einsatz, die ich alle über ein zentrales Programm steuere inkl. Der Color Picker Auswertung.

Gruß
Hans

Hallo Hans,

der Datenpunkt Color wird im Moment angesteuert. Wäre nett, wenn du mir nachsehen könntest, irgendwo steckt der Fehler drin.

LG Peter

Hallo Peter,

nun bin ich von meinem Kurztrip wieder zurück :wink: Ich nutze - anders als du - zur Farbsteuerung ein Script, welches meine Controller steuert.

Um zu sehen, ob ich bei Benutzung eines RGB Button deinen Fehler erhalte, habe ich dies gerade mit einigen Farbtasten getestet und kann nur sagen, dass ich diesen Fehler nicht erhalte. Ich habe dann auch noch ein Popup angelegt, die Farbtasten dort hinterlegt und auch das hat problemlos funktioniert :slight_smile:

Wird im Log irgendetwas angezeigt? Letztendlich scheint das Problem ja mit dem Aktionsskript zusammenzuhängen.

Gruß
Hans

Hallo Peter,

ich habe jetzt dein Script hier aus dem Forum kopiert und nur die Instanz geändert. Beim Betätigen der Farbtaste bekam ich den Hinweis Resultat auf dem iPad angezeigt. Grund dafür ist, dass in der 1. Zeile ein Leerzeichen vor dem <? ist.

Nach dem Löschen des Leerzeichens wurde das Script fehlerfei ausgeführt :wink:

Gruß
Hans

Hallo Hans,

habe deinen Hinweis geprüft und GENAU DAS war das Problem!!!
Herzlichen Dank für deinen Hinweise!!

Jetzt funktioniert es ohne Fehlermeldung :slight_smile:

Liebe Grüße
Peter