HSB als drei einzelne Werte
-
- Beiträge: 5
- Registriert: 7. Sep 2021 10:51
HSB als drei einzelne Werte
Hallo,
Leider bin ich noch recht neu und habe immer mal wieder Hürden, bei dieser komme ich einfach nicht weiter.
Ich würde gerne einen rgb Controller als color Item nutzen, also mit den drei Schiebern für HSB. Leider habe ich die Werte nur in 3 einzelnen channels. Kann mir jemand weiter helfen, wie ich die vereinen kann?
Leider bin ich noch recht neu und habe immer mal wieder Hürden, bei dieser komme ich einfach nicht weiter.
Ich würde gerne einen rgb Controller als color Item nutzen, also mit den drei Schiebern für HSB. Leider habe ich die Werte nur in 3 einzelnen channels. Kann mir jemand weiter helfen, wie ich die vereinen kann?
- udo1toni
- Beiträge: 15246
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: HSB als drei einzelne Werte
Du musst nur eine entsprechende Rule programmieren.
Du brauchst vier Items, drei Number Items, welche mit den drei Channels vom Controller verbunden werden, und ein Color Item.
Nehmen wir an, die Items heißen Control_H, Control_S und Control_B sowie Control_Color. Um es noch bequemer zu haben, legen wir noch ein fünftes Item an, und zwar ein Group Item gControl. Dieses Group Item wird bei den drei Items H,S und B angegeben. Es spielt keine Rolle, welchen Typ Item wir nutzen, es geht nur um die Group-Eigenschaft.
Nun brauchen wir noch eine Rule. (Ich gebe hier eine DSL Rule wieder, das ginge aber auch mit anderen Rule Engines)
Falls das so nicht funktioniert, kann es sein, dass die Zahlenwerte nicht sauber an den HSBType übergeben werden. Dann müsste die Übergabe leicht anders formuliert werden
Man kann auch auf das Group Item verzichten, dann müssen halt alle drei "Quell-Items" als Trigger der Rule hinterlegt werden.
Die ersten drei Zeilen sorgen dafür, dass die Rule nicht "abstürzt", wenn der Controller noch keine gültigen Werte für alle drei Channel geliefert hat.
Du brauchst vier Items, drei Number Items, welche mit den drei Channels vom Controller verbunden werden, und ein Color Item.
Nehmen wir an, die Items heißen Control_H, Control_S und Control_B sowie Control_Color. Um es noch bequemer zu haben, legen wir noch ein fünftes Item an, und zwar ein Group Item gControl. Dieses Group Item wird bei den drei Items H,S und B angegeben. Es spielt keine Rolle, welchen Typ Item wir nutzen, es geht nur um die Group-Eigenschaft.
Nun brauchen wir noch eine Rule. (Ich gebe hier eine DSL Rule wieder, das ginge aber auch mit anderen Rule Engines)
Code: Alles auswählen
rule "Control to Color"
when
Member of gControl changed
then
val nH = if(Control_H.state instanceof Number) (Control_H.state as Number).intValue else 0
val nS = if(Control_S.state instanceof Number) (Control_S.state as Number).intValue else 0
val nB = if(Control_B.state instanceof Number) (Control_B.state as Number).intValue else 0
logInfo("c2c","Hue: {} Sat: {} Bri: {}",nH,nS,nB)
Control_Color.sendCommand(New HSBType(nH,nS,nB))
end

Die ersten drei Zeilen sorgen dafür, dass die Rule nicht "abstürzt", wenn der Controller noch keine gültigen Werte für alle drei Channel geliefert hat.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 9
- Registriert: 22. Jan 2021 15:14
Re: HSB als drei einzelne Werte
Hallo Udo,
ich stehe mal wieder auf dem Schlauch. Diesmal bezüglich des Color Items deswegen schreibe ich es mal hier rein.
OpenHab 2.5.11
Ich möchte die Farbe von einem Colorpicker im Habpanel in einer Regel an die Lampen übergeben.
Dafür habe ich ein Color Item erstellt "var_GF_nightlights.color".
Diesen Wert würde ich gerne an "HUE_GF_Hallway_HUEGo_Color" und "HUE_GF_Treppenhaus_HUEGo_Color" senden.
Ich habe mich gestern ein paar Stunden durch verschiedene Foren gelesen leider ohne Erfolg da jeder scheinbar eine andere Syntax benutzt.
ich stehe mal wieder auf dem Schlauch. Diesmal bezüglich des Color Items deswegen schreibe ich es mal hier rein.
OpenHab 2.5.11
Ich möchte die Farbe von einem Colorpicker im Habpanel in einer Regel an die Lampen übergeben.
Dafür habe ich ein Color Item erstellt "var_GF_nightlights.color".
Diesen Wert würde ich gerne an "HUE_GF_Hallway_HUEGo_Color" und "HUE_GF_Treppenhaus_HUEGo_Color" senden.
Ich habe mich gestern ein paar Stunden durch verschiedene Foren gelesen leider ohne Erfolg da jeder scheinbar eine andere Syntax benutzt.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
- udo1toni
- Beiträge: 15246
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: HSB als drei einzelne Werte
Es wäre die Frage, was für einen Fehler das sendCommand hier schmeißt (es ist ja rot unterstrichen).
Handelt es sich bei allen beteiligten Items um Color Items?
Du kannst auf jeden Fall versuchen, den Wert als String zu schicken, mit ...sendCommand(hsbValue.toString), das geht, weil HSBType ein Objekt ist und damit die Umwandlung nach String beherrscht. Aber wie gesagt, ich denke, da ist ein anderes Problem...
Handelt es sich bei allen beteiligten Items um Color Items?
Du kannst auf jeden Fall versuchen, den Wert als String zu schicken, mit ...sendCommand(hsbValue.toString), das geht, weil HSBType ein Objekt ist und damit die Umwandlung nach String beherrscht. Aber wie gesagt, ich denke, da ist ein anderes Problem...
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 9
- Registriert: 22. Jan 2021 15:14
Re: HSB als drei einzelne Werte
Vielen Dank 
Dein Tipp " sendCommand(hsbValue.toString)" hat auf Anhieb funktioniert.
Ich kann mir jetzt sogar die Variable "hsbvalue" ganz sparen und den Wert von dem Colorpicker direkt in die HUE Lampe schreiben.
HUE_GF_Hallway_HUEGo_Color.sendCommand(var_GF_nightlights_color.state.toString)

Dein Tipp " sendCommand(hsbValue.toString)" hat auf Anhieb funktioniert.
Ich kann mir jetzt sogar die Variable "hsbvalue" ganz sparen und den Wert von dem Colorpicker direkt in die HUE Lampe schreiben.
HUE_GF_Hallway_HUEGo_Color.sendCommand(var_GF_nightlights_color.state.toString)
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
-
- Beiträge: 21
- Registriert: 13. Apr 2021 13:20
Re: HSB als drei einzelne Werte
Hallo zusammen,
ich bin gerade selbst dabei mit HSB zu experimentieren und scheitere an der Zuweisung der Kanäle.
Ich verwende LCN und habe für das HSB Farbmodell 4 Ausgänge zur Ansteuerung zur Verfügung. 1-3 steuert die H/S/B und der 4 steuert das warmweiße Licht. Über Kanal 4 kann ich auch den LED Streifen schon regeln. Nur bei 1-3 passiert bei mir gar nichts.
Ich habe jetzt wie oben erwähnt die 3 Items angelegt und mit der Rule und Gruppe verknüpft, aber der LED Streifen spricht nicht an, wenn ich das Color Item ändere?
Ich habe auch versucht, die 3 Ausgänge direkt beim Color Item zuzuweisen, hier vermute ich aber, weiß Openhab nicht, welchr Kanal wofür zuständig ist.
Die Regel sieht so aus wie von Udo vorgeschlagen, ich vermute aber, dass ich generell einen Fehler in meiner Vorgehensweise habe? (OH 3.3)
Ich denke irgendwie müsste ich eine Regel haben, die wenn sich das Color Item ändert dann die 3 Werte HSB auf die einzelnen Kanäle bzw. Items aufteilt?
ich bin gerade selbst dabei mit HSB zu experimentieren und scheitere an der Zuweisung der Kanäle.
Ich verwende LCN und habe für das HSB Farbmodell 4 Ausgänge zur Ansteuerung zur Verfügung. 1-3 steuert die H/S/B und der 4 steuert das warmweiße Licht. Über Kanal 4 kann ich auch den LED Streifen schon regeln. Nur bei 1-3 passiert bei mir gar nichts.
Ich habe jetzt wie oben erwähnt die 3 Items angelegt und mit der Rule und Gruppe verknüpft, aber der LED Streifen spricht nicht an, wenn ich das Color Item ändere?
Ich habe auch versucht, die 3 Ausgänge direkt beim Color Item zuzuweisen, hier vermute ich aber, weiß Openhab nicht, welchr Kanal wofür zuständig ist.
Die Regel sieht so aus wie von Udo vorgeschlagen, ich vermute aber, dass ich generell einen Fehler in meiner Vorgehensweise habe? (OH 3.3)
Ich denke irgendwie müsste ich eine Regel haben, die wenn sich das Color Item ändert dann die 3 Werte HSB auf die einzelnen Kanäle bzw. Items aufteilt?
Code: Alles auswählen
rule "Control to Color"
when
Member of gmauerfarbe changed
then
val nH = if(mauerfarbeh.state instanceof Number) (mauerfarbeh.state as Number).intValue else 0
val nS = if(mauerfarbes.state instanceof Number) (mauerfarbes.state as Number).intValue else 0
val nB = if(mauerfarbeb.state instanceof Number) (mauerfarbeb.state as Number).intValue else 0
logInfo("c2c","Hue: {} Sat: {} Bri: {}",nH,nS,nB)
mauerfarbe.sendCommand(NewHSBType(nH,nS,nB))
end
-
- Beiträge: 21
- Registriert: 13. Apr 2021 13:20
Re: HSB als drei einzelne Werte
Ok, ich bin zwar jetzt einen Schritt weiter, ich habe vom Color Picker Item die Einzelwerte an alle einzelnen Items zuweisen können, aber die Lampe bleibt trotzdem dunkel. Mit Postupdate wird nur das Item upgedated, ohne wirklich einen Befehl auszuführen, aber mit sendCommand komme bleibt alles auf 0?
Ich habe folgende Regel:
Kann ich mit sendCommand keine Werte übergeben? Wie wäre hier die richtige Vorgehensweise?
Ich habe folgende Regel:
Code: Alles auswählen
rule "Farbe Mauer"
when
Item mauerfarbe changed
then
val MFH = (mauerfarbe.state as HSBType).getHue()
val MFS = (mauerfarbe.state as HSBType).getSaturation()
val MFB = (mauerfarbe.state as HSBType).getBrightness()
mauerfarbeh.sendCommand(MFH)
mauerfarbes.sendCommand(MFS)
mauerfarbeb.sendCommand(MFB)
end
- udo1toni
- Beiträge: 15246
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: HSB als drei einzelne Werte
Dir ist schon klar, dass der Thread fast zwei Jahre alt ist?
Aber egal...
Frage 1: wie sind die Items definiert? Insbesondere: wie ist der Channel definiert, der die Anbindung an LCN erledigt?
Grundsätzlich: postUpdate() setzt den Status eines Items. sendCommand() sendet einen Befehl an das Item (das hat erst mal keine Auswirkungen auf den Status des Items).
Ein sendCommand() wird grundsätzlich an alle verlinkten Channel weitergeleitet. Wenn der Channel in der Lage ist, Befehle an ein externes Gerät zu senden, wird er das daraufhin tun (es gibt je nach Binding auch readonly Channel, die können eben keine Befehle versenden)
Gewöhnlich wird man immer bestrebt sein, Farbleuchten als Color Channel anzubinden. Ein Color Channel kann einfach mit einem Color Item verlinkt werden. Ein Color Item kann einfach mit einem Color Picker verknüpft werden. openHAB weiß automatisch, welche Anteile wie zu steuern sind.
openHAB kann aber nicht mit zusätzlichen angeflanschten Funktionen wie RGBW, RGBW(W) oder Farbtemperatur umgehen.
Will man solche Dinge steuern, so muss man das eben über zusätzliche Dimmer Channel abdecken und darauf vertrauen, dass die Hardware die Daten korrekt umsetzt.
Aber egal...
Frage 1: wie sind die Items definiert? Insbesondere: wie ist der Channel definiert, der die Anbindung an LCN erledigt?
Grundsätzlich: postUpdate() setzt den Status eines Items. sendCommand() sendet einen Befehl an das Item (das hat erst mal keine Auswirkungen auf den Status des Items).
Ein sendCommand() wird grundsätzlich an alle verlinkten Channel weitergeleitet. Wenn der Channel in der Lage ist, Befehle an ein externes Gerät zu senden, wird er das daraufhin tun (es gibt je nach Binding auch readonly Channel, die können eben keine Befehle versenden)
Gewöhnlich wird man immer bestrebt sein, Farbleuchten als Color Channel anzubinden. Ein Color Channel kann einfach mit einem Color Item verlinkt werden. Ein Color Item kann einfach mit einem Color Picker verknüpft werden. openHAB weiß automatisch, welche Anteile wie zu steuern sind.
openHAB kann aber nicht mit zusätzlichen angeflanschten Funktionen wie RGBW, RGBW(W) oder Farbtemperatur umgehen.
Will man solche Dinge steuern, so muss man das eben über zusätzliche Dimmer Channel abdecken und darauf vertrauen, dass die Hardware die Daten korrekt umsetzt.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 21
- Registriert: 13. Apr 2021 13:20
Re: HSB als drei einzelne Werte
Gute Morgen,
ich wollte keinen seperaten Thread für das gleiche Thema starten
Danke für die Hilfe Udo, konnte das Problem jetzt lösen.
Bei mir war die Ursache die Verarbeitung der Einzelwerte bei der Hue. LCN arbeitet in Prozent, das Colorpicker Item gibt aber in 360 Grad aus. Mit einer Umrechnung kann ich jetzt mit der Rule wie oben beschrieben alles steuern.
ich wollte keinen seperaten Thread für das gleiche Thema starten

Danke für die Hilfe Udo, konnte das Problem jetzt lösen.
Bei mir war die Ursache die Verarbeitung der Einzelwerte bei der Hue. LCN arbeitet in Prozent, das Colorpicker Item gibt aber in 360 Grad aus. Mit einer Umrechnung kann ich jetzt mit der Rule wie oben beschrieben alles steuern.