Seite 1 von 1

hsbType Colorpicker Dummy - Rule soll nur feuern wenn Dummy und Stripe unterschiedliche HSB Werte haben

Verfasst: 7. Aug 2024 16:35
von Lux73
Hallo in die Runde,

ich habe die letzten Wochen alle meine "günstigen" RGB-Stripe durch wesentlich hochwerige RGBW-Stripes ersetzt.

Meine Rules sind soweit angepasst, allerdings habe ich Probleme damit die RGB Rules nur feuern zu lassen wenn sich der Colorpicker Dummy Wert dem aktuellen RGB Stripe Wert unterscheidet ^^ aktuell wird bei jedem betreten des Raumes immer die RGB Rule gesendet obwohl der Stripe ja schon in der gewünschten Farbe leuchtet.

Ich möchte der Uhrzeit angepasst verschiedene Colorpicker Dummy nutzen (gesteuert per Bewegungssensor & Präsenzmelder)

Rule auschnitt - so funktionert es, aber selbstverständlich wird die Rule immer ausgeführt - auch wenn der Stripe schon in der gleichen Farbe leuchtet wie der Colorpicker Dummy

Code: Alles auswählen

Stripe_WZ_Sofa_color.sendCommand(cpStripe_WZ_Sofa.state as HSBType)
ich habe im Netz eine Funktion 'HSYType.equals' gefunden welche aber genau verkehrt herum funktioniert ^^ ich benötige ja eher 'notequals' oder '!equals'

Code: Alles auswählen

if ((Stripe_WZ_Sofa_color.state as HSBType).equals(cpStripe_WZ_Sofa)) Stripe_WZ_Sofa_color.sendCommand(cpStripe_WZ_Sofa.state as HSBType)
Angefangen habe ich vor Jahren mit einer statischen Rule (funktioniert)

Code: Alles auswählen

Stripe_WZ_Sofa_color.sendCommand(new HSBType("120,100,5"))
dann mit 3 Slidern und getrennten HSB Werten (funktioniert)

Code: Alles auswählen

Stripe_SZ_Bett_color.sendCommand(new HSBType(new DecimalType(spRGBSZhStandby.state as Number), new PercentType((spRGBSZsStandby.state as Number).intValue), new PercentType((spRGBSZbStandby.state as Number).intValue)))
ABER der Colorpicker ist halt wesentlich hübscher und logischer für RGB :mrgreen:

um nochmal zu verdeutlichen was ich erreichen möchte:

mein Colorpicker Dummy Item

Code: Alles auswählen

Color	cpStripe_WZ_Sofa	"Stripe WZ Sofa Dummy"
einen Wert zuteilen per Sitemap und diesen Wert dann nur zum Stripe

Code: Alles auswählen

Color 	Stripe_WZ_Sofa_color	"Stripe WZ Sofa Color"
schicken wenn die Werte sich unterscheiden (ich arbeite mit 4-5 verschiedenen Voreinstellungen je nach Uhrzeit, Fenster auf/zu, schlaf nachts etc)

so wie ich dies auch ganz einfach mit einer Hue mache welche nur ambience und brightness kann

Code: Alles auswählen

if ((Hue_SZ_colortemp.state as Number) != (spHueSZCOLstandby.state as Number)) Hue_SZ_colortemp.sendCommand(spHueSZCOLstandby.state as Number)
if ((Hue_SZ_dimmer.state as Number) != (spHueSZDIMstandby.state as Number)) Hue_SZ_dimmer.sendCommand(spHueSZDIMstandby.state as Number)
o.g. Code feuert die Rule auch nur wenn die Werte unterschiedlich sind

hoffe ich habe jetzt nicht zuviel wirres Zeug geschrieben - aber ich komme seit Tagen nicht weiter ^^ mir raucht aktuell der Schädel :lol:

Re: hsbType Colorpicker Dummy - Rule soll nur feuern wenn Dummy und Stripe unterschiedliche HSB Werte haben

Verfasst: 8. Aug 2024 04:55
von udo1toni
Wenn die Funktion grundsätzlich tut, was sie soll, kannst Du es ja einfach umdrehen. Zwei Möglichkeiten dazu:

Code: Alles auswählen

if((Stripe_WZ_Sofa_color.state as HSBType).equals(cpStripe_WZ_Sofa))  // falls Farbe stimmt
   return;       // Abbruch der Rule
Stripe_WZ_Sofa_color.sendCommand(cpStripe_WZ_Sofa.state as HSBType) // setze Wert
alternativ (falls noch andere Dinge zu erledigen sind - unabhängig von der Farbe):

Code: Alles auswählen

if(!((Stripe_WZ_Sofa_color.state as HSBType).equals(cpStripe_WZ_Sofa)))
     Stripe_WZ_Sofa_color.sendCommand(cpStripe_WZ_Sofa.state as HSBType)
Das ! negiert die Logik. :)

Re: hsbType Colorpicker Dummy - Rule soll nur feuern wenn Dummy und Stripe unterschiedliche HSB Werte haben

Verfasst: 8. Aug 2024 09:51
von Lux73
Guten Morgen,

das mit dem Ausrufezeichen hatte ich überhaupt nicht mehr auf dem Schirm - obwohl ich selber die Funktion in zig Rules nutze... :lol:

Einfach mal wieder den Wald vor lauter Bäumen nicht gesehen - was mir durchaus öfter passiert wenn ich tagelang nicht zu einem gewünschten Ergebnis komme :mrgreen:

vielen Dank für deinen Input, werde ich später direkt umsetzen :!:

Re: hsbType Colorpicker Dummy - Rule soll nur feuern wenn Dummy und Stripe unterschiedliche HSB Werte haben

Verfasst: 12. Aug 2024 19:22
von Lux73
Hallo Udo,

der guten Ordnung halber hier nochmal kurz meine Rückmeldung bzgl. der kompletten Codezeile:

Code: Alles auswählen

if(!((Stripe_WZ_Sofa_color.state as HSBType).equals(cpStripe_WZ_Sofa.state as HSBType))) Stripe_WZ_Sofa_color.sendCommand(cpStripe_WZ_Sofa.state as HSBType)

dein Hinweis mit dem '(!' war wieder mal komplett richtig - zusätzlich musste ich das zu vergleichende ColorPicker Item auch noch mit '.state as HSBType' ergänzen. Funktioniert nun genauso wie gewünscht, der Wert wird nur noch von OpenHAB gesendet wenn er unterschiedlich ist. Vermeidetet halt unnötig "traffic" im Netztwerk da unsere gesamte Beleuchtung per Bewegungssensor und Präsenzmelder geregelt ist.

Vielen Dank nochmals für deine kompetente Hilfe! :)

Dir noch einen angenehmen (wenn auch viel zu warmen) Montagabend :mrgreen:

Grüße aus Bielefeld
Michael