Hab mal einen Script Baustein gebaut, um den bockigen HM-IP RGBW Dimmer in Symcon zu integrieren und die Farbkachel in der VISU zu verwenden. Möchte diesen Baustein hier mal teilen.
Damit kann die Bedienung sowohl per Symcon als auch in Homematic z.B. mit direkten Verknüpfungen erfolgen. Die Visualisierung wird in beide Richtungen synchronisiert.
Die Farb Kachel in Symcon benötigt eine String Variable um den HSV Farbraum zu verwenden - der Aktor hat aber nur Float Variablen für HUE (Farbe), SATURATION und LEVEL.
Setzen von Saturation ist nur über den oben schon erwähnten „combined“ Befehl möglich.
In dem Baustein ist diese Problematik ebenfalls gelöst.
Mit dem Baustein funktioniert bei mir jetzt die Einbindung des HM-IP RGBW Dimmers.
Umsetzung geht vielleicht auch eleganter …
<?php
/* ******************* HM IP RGBW Dimmer Visualisierung ***********************************************************
Der RGBW Dimmer hat einige Eigenheiten, die in dem Script behandelt werden.
- arbeitet mit dem HSL Farbmodell und dieses wird mit dem Parameter HUE als Integer angeboten
- Symcon benötigt für die Farb Kachel eine String Variable, um das HSL Farbmodell auswählbar zu machen
Das Script übernimmt die Umrechnung vom Integer Wert (0-355) des Aktors in die String Variable in Symcon {"h":39,"s":100,"v":100} und umgekehrt
- der Wert für Saturation kann im RGB Dimmer nur über einen sog. Combined Befehl zusammen mit LEVEL und HUE geschrieben werden
das Combined Befehl wird im Script "komponiert" und an Homematic CCU gesendet
- das Script erlaubt die beliebige Bedienung über Homematic oder Webfront mit gegenseitig synchronisierung
*/
if ($IPS_SENDER == "WebFront") SetValue($IPS_VARIABLE, $_IPS['VALUE']);
include '36315.ips.php'; // Global Functions
include '45990.ips.php'; // Global Variables
//HSV ID der Aktorwerte
$id_aktor = 52959;
// ************* Variablendefinitionen vor Installer ****************************************
$object = IPS_GetObject($_IPS['SELF']); //print_r ($object);
$parentID = $object['ParentID']; // Instanz ID Parent festlegen
//**************I N S T A L L E R ********************************************
if ($_IPS['SENDER'] == "Execute"){
$vid = CreateVariableByName($_IPS['SELF'], "HSV", 3, "",$_IPS['SELF'], 20, 0, 0);
// create event trigger
//($id, $name, $triggertype (1 Aenderung), $id_trigger, $value (Triggerwert), $subsequent)
// type: 0 bei bei Aktualisierung, 1 Aenderung, 2 Ueberschreitung, 3 Unter, 4 best Wert
$vid = CreateEventTrigger($_IPS['SELF'], "HUE_trigger", 0, $id_HUE, 0, false); // bei Aktualisierung von HUE auslösen
}
//************* Variablendefinitionen nach Installer *************************
$id_HUE = @IPS_GetObjectIDByName("HUE", $id_aktor);
$id_LEV = @IPS_GetObjectIDByName("LEVEL", $id_aktor);
$id_SAT = @IPS_GetObjectIDByName("SATURATION", $id_aktor);
$id_HSV = @IPS_GetObjectIDByName("HSV", $IPS_SELF);
$HUE = getvalue ($id_HUE); // HSV Werte vom Aktor abfragen
$SAT = getvalue ($id_SAT)*100;
$LEV = getvalue ($id_LEV)*100;
$HSV = GetValueString ($id_HSV); //HSV String laden //print $HSV;
// *********** Script *****************
if ($IPS_SENDER == "WebFront") { // bei webfront aenderung die HSV Werte an den Aktor senden
//echo $HSV;
$HSV = substr ($HSV, 5,); // Zeichen abschneiden vorne 5
//echo " schnitt: ". $HSV;
$HSV = explode(':', $HSV); // Array erzeugen mit Trennzeichen ":"
//print_r($HSV);
$HUE = intval(substr ($HSV[0], 0, -4)); //hinten 4 abschneiden
//echo " 0: ". $HUE;
$SAT = intval (substr ($HSV[1], 0,-4));
//echo " 1: ". $SAT;
$LEV = substr ($HSV[2], 0,-1);
//echo " 2: ". $LEV;
HM_WriteValueString($id_aktor, 'COMBINED_PARAMETER', 'L='.$LEV.',H='.$HUE.',SAT='.$SAT.',OT=0,RT=0,RTTDV=0,RTTDU=0');
}
if ($_IPS['SENDER']=="Variable") {
//echo $HSV;
$HSV = '{"h":'. $HUE. ',"s":'. $SAT. ',"v":'. $LEV.'}' ; //HSV String bilden //print $HSV;
setvalue ($id_HSV, $HSV); //HSV STring schreiben in Variable zur Visualisierung
}
?>