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

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Lux73
Beiträge: 70
Registriert: 26. Dez 2019 12:32
Answers: 0
Wohnort: Bielefeld

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

Beitrag 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:
APU2c4|Debian12.9|OpenHAB4.3.2@Zulu21|mosquitto|hostapd|dnsmasq|zigbee2mqtt / Huawei MediaPad T5|FullyKioskBrowser
Zigbee:CC2652RB|1xCC2530.ROUTER|11xHue|4xIlluminize 5110.40|Danfoss:4xAlly+4xRoomSensor
Aqara:5xMCCGQ11LM/6xWSDCGQ11LM/6xGZCGQ01LM/4xRTCGQ11LM/2xRTCGQ13LM/2xRTCGQ14LM/1xDJT11LM/1xRTCZCGQ11LM/2x WXKG02LM
TuYa:2xTS011F/3xTS0601/1xTS0001|MOES:1xUFO-R11|HEIMAN:1xHS2WD-E
MQTT:Tasmota12.5.0|6xDelock 11826|3xShelly1|3xBlitzwolf SHP8|1xGosund SP112

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

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

Beitrag 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. :)
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Lux73
Beiträge: 70
Registriert: 26. Dez 2019 12:32
Answers: 0
Wohnort: Bielefeld

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

Beitrag 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 :!:
APU2c4|Debian12.9|OpenHAB4.3.2@Zulu21|mosquitto|hostapd|dnsmasq|zigbee2mqtt / Huawei MediaPad T5|FullyKioskBrowser
Zigbee:CC2652RB|1xCC2530.ROUTER|11xHue|4xIlluminize 5110.40|Danfoss:4xAlly+4xRoomSensor
Aqara:5xMCCGQ11LM/6xWSDCGQ11LM/6xGZCGQ01LM/4xRTCGQ11LM/2xRTCGQ13LM/2xRTCGQ14LM/1xDJT11LM/1xRTCZCGQ11LM/2x WXKG02LM
TuYa:2xTS011F/3xTS0601/1xTS0001|MOES:1xUFO-R11|HEIMAN:1xHS2WD-E
MQTT:Tasmota12.5.0|6xDelock 11826|3xShelly1|3xBlitzwolf SHP8|1xGosund SP112

Lux73
Beiträge: 70
Registriert: 26. Dez 2019 12:32
Answers: 0
Wohnort: Bielefeld

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

Beitrag 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
APU2c4|Debian12.9|OpenHAB4.3.2@Zulu21|mosquitto|hostapd|dnsmasq|zigbee2mqtt / Huawei MediaPad T5|FullyKioskBrowser
Zigbee:CC2652RB|1xCC2530.ROUTER|11xHue|4xIlluminize 5110.40|Danfoss:4xAlly+4xRoomSensor
Aqara:5xMCCGQ11LM/6xWSDCGQ11LM/6xGZCGQ01LM/4xRTCGQ11LM/2xRTCGQ13LM/2xRTCGQ14LM/1xDJT11LM/1xRTCZCGQ11LM/2x WXKG02LM
TuYa:2xTS011F/3xTS0601/1xTS0001|MOES:1xUFO-R11|HEIMAN:1xHS2WD-E
MQTT:Tasmota12.5.0|6xDelock 11826|3xShelly1|3xBlitzwolf SHP8|1xGosund SP112

Antworten