Herzlich willkommen im openHAB Forum!
Wenn Du von einer bestimmten Farbeinstellung sprichst, meinst Du einen Absolutwert, wie z.B. 50% rot, 30% grün, 60% weiß? Vermutlich wäre es das Einfachste, dafür eine Rule zu verwenden.
Grundsätzlich brauchst Du auf jeden Fall zwei Channel, wenn Du die vier Kanäle frei steuern willst. Ich habe keine Erfahrung mit RGBW, aber im Grunde sollte der Controller auch den Weißanteil automatisch umrechnen können (heißt vereinfacht, 30% rot, 40% grün und 50 % blau ergibt 30 % weiß, 10% grün und 20% blau). Ansonsten musst Du halt 3+1 Farben über zwei Channel steuern.
Konkret - hier als Textkonfiguration, geht genauso auch über die UI
Thing (unvollständig, da nicht bekannt ist, welche Hardware zum Einsatz kommt):
Code: Alles auswählen
Thing meinthing "RGBW Lampe" [] {
Channels:
Type color : color "RGB" [ ... ]
Type dimmer : white "weiß" [ ... ]
}
Items:
Code: Alles auswählen
Color LampeRGB "Lampe Farbanteil" {channel="...:meinthing:color"}
Dimmer LampeW "Lampe Weißanteil" {channel="...:meinthing:white"}
Number LampeSet "Lampe Steuerung" // Proxy Item, kein Link zum Binding!
Rule:
Code: Alles auswählen
rule "Farbe für Lampe setzen"
when
Item LampeSet received command
then
if(!(receivedCommand instanceof Number)) return;
switch((receivedCommand as Number).intValue) {
case 0 : {
LampeRGB.sendCommand(OFF)
LampeW.sendCommand(OFF)
}
case 1 : {
LampeRGB.sendCommand(OFF)
LampeW.sendCommand(100)
}
case 2 : {
LampeRGB.sendCommand(new HSBType(240,60,40))
LampeW.sendCommand(35)
}
}
end
Sitemap:
Code: Alles auswählen
Switch item=LampeSet mappings=[0="Aus",1="hell",2="bunt"]
Das Switch Widget (nicht mit Switch Item verwechseln...) zeichnet wegen des Mappings keinen Schalter, sondern Schaltflächen, und zwar so viele, wie im mapping definiert sind. Der Wert vorne wird als Befehl gesendet, der Wert hinten ist die Beschriftung der Schaltfläche.
Die Rule wird jedes Mal ausgeführt, wenn eine der Schaltflächen betätigt wird.
Innerhalb der Rule wird zunächst geprüft, ob der Befehl als Zahl darstellbar ist, ist das nicht der Fall, bricht die Rule ab.
Ist der Befehl als Zahl interpretierbar, so wird über switch() eine bedingte Verzweigung erreicht, je nachdem, welcher Wert gesendet wurde.
In jedem einzelnen Bereich werden dann die passenden Befehle gesendet, um die Lampe wie gewünscht anzusteuern.
Color Items arbeiten IMMER als HSBType, Hue, Saturation, Brightness, also Farbe, Sättigung und Helligkeit. Die Farbe wird als Winkel auf dem Farbkreis angegeben (0 - 359), Sättigung und Helligkeit werden in Prozent angegeben (0 - 100), die 240° von oben entsprechen dabei grün.
Das verknüpfte Binding kümmert sich um die Umrechnung nach RGB, das ist also für den Anwender erst mal irrelevant
Wie erwähnt lässt sich das alles auch komplett über die UI einstellen
die Textform ist aber "forenfreundlicher".