Shelly RGBW2 white und color mit einem button steuern

Geflasht oder ungeflasht ...

Moderator: seppy

Antworten
papet
Beiträge: 21
Registriert: 4. Jan 2024 08:48
Answers: 0

Shelly RGBW2 white und color mit einem button steuern

Beitrag von papet »

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?

Benutzeravatar
udo1toni
Beiträge: 14780
Registriert: 11. Apr 2018 18:05
Answers: 230
Wohnort: Darmstadt

Re: Shelly RGBW2 white und color mit einem button steuern

Beitrag von udo1toni »

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".
openHAB4.2.2 stable in einem Debian-Container (bookworm) (Proxmox 8.2.8, LXC), mit openHABian eingerichtet

papet
Beiträge: 21
Registriert: 4. Jan 2024 08:48
Answers: 0

Re: Shelly RGBW2 white und color mit einem button steuern

Beitrag von papet »

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

papet
Beiträge: 21
Registriert: 4. Jan 2024 08:48
Answers: 0

Re: Shelly RGBW2 white und color mit einem button steuern

Beitrag von papet »

Wenn ich statt
sendCommand(new HSBType(240,60,40))
sendCommand("240,60,40") nehme funktioniert es.

Vielen Dank nochmals!!!

Antworten