Ich bin noch ein ziemlicher openHAB Newbie und möchte gerne einen Button für eine bestimmte Farbeinstellung (RGB und White) programmieren.
Wie bekommen ich beide channel zusammen und ein mappings in der Sitemap dafür?
Shelly RGBW2 white und color mit einem button steuern
Moderator: seppy
-
- Beiträge: 21
- Registriert: 4. Jan 2024 08:48
- udo1toni
- Beiträge: 14780
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Shelly RGBW2 white und color mit einem button steuern
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):
Items:
Rule:
Sitemap:
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".
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ß" [ ... ]
}
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!
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
Code: Alles auswählen
Switch item=LampeSet mappings=[0="Aus",1="hell",2="bunt"]
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".
openHAB4.2.2 stable in einem Debian-Container (bookworm) (Proxmox 8.2.8, LXC), mit openHABian eingerichtet
-
- Beiträge: 21
- Registriert: 4. Jan 2024 08:48
Re: Shelly RGBW2 white und color mit einem button steuern
Vielen Dank für die Hilfe so weit.
ich bekomme bei den Rules eine Fehlermeldung (s. Screenshot)
https://www.dropbox.com/scl/fi/xsln4mg1 ... ce8l5&dl=0
ich bekomme bei den Rules eine Fehlermeldung (s. Screenshot)
https://www.dropbox.com/scl/fi/xsln4mg1 ... ce8l5&dl=0
-
- Beiträge: 21
- Registriert: 4. Jan 2024 08:48
Re: Shelly RGBW2 white und color mit einem button steuern
Wenn ich statt
sendCommand(new HSBType(240,60,40))
sendCommand("240,60,40") nehme funktioniert es.
Vielen Dank nochmals!!!
sendCommand(new HSBType(240,60,40))
sendCommand("240,60,40") nehme funktioniert es.
Vielen Dank nochmals!!!