Hallo zusammen,
Ich habe mehrere HM-LC-RGBW-WM, die ich bei Bedarf synchronisieren möchte.
Dafür habe ich zunächst einen zentralen Dummy angelegt:
Zitat
define v.RGB_Program dummy
attr v.RGB_Program alias Programm
attr v.RGB_Program group 90 Szenen
attr v.RGB_Program icon light_led_stripe_rgb
attr v.RGB_Program room 00_Wohnzimmer
attr v.RGB_Program setList state:0,1,2,3,4,5,6,7
attr v.RGB_Program webCmd state
define v.RGB_Picker dummy
attr v.RGB_Picker alias Farbe
attr v.RGB_Picker devStateIcon {my $icon=Color_devStateIcon(ReadingsVal($name,"rgb","000000"));;$icon=~s/on/light_led_stripe_rgb/;;$icon}
attr v.RGB_Picker group 90 Szenen
attr v.RGB_Picker icon light_led_stripe_rgb
attr v.RGB_Picker readingList hue
attr v.RGB_Picker room 00_Wohnzimmer
attr v.RGB_Picker setList hue:colorpicker,HUE,0,1,100
attr v.RGB_Picker stateFormat hue
attr v.RGB_Picker userReadings rgb {my $hue=ReadingsVal($name,"hue","0");;($hue eq "100")?"FFFFFF":Color::hsv2hex(($hue/100),1,1)}
attr v.RGB_Picker webCmd hue
define v.RGB_Dimmer dummy
attr v.RGB_Dimmer alias Dimmer
attr v.RGB_Dimmer group 90 Szenen
attr v.RGB_Dimmer icon light_led_stripe_rgb
attr v.RGB_Dimmer room 00_Wohnzimmer
attr v.RGB_Dimmer setList state:slider,0,1,100
attr v.RGB_Dimmer webCmd state
Notifys übertragen die Einstellungen auf alle Aktoren:
Zitat
define W.RGB_Picker_notify notify v.RGB_Picker:hue.* { fhem "set W.Sideboard_TV_Color color " . ReadingsVal($NAME,'hue',100) };;{ fhem "set W.TV_Color color " . ReadingsVal($NAME,'hue',100) }
define W.RGB_Dimmer_notify notify v.RGB_Dimmer.* { fhem "set W.Sideboard_TV_Dim pct " . ReadingsVal($NAME,'state',25) };;{ fhem "set W.TV_Dim pct " . ReadingsVal($NAME,'state',25) }
define W.RGB_Programm_notify notify v.RGB_Program.* { fhem "set W.Sideboard_TV_Auto colProgram " . ReadingsVal($NAME,'state',25) };;{ fhem "set W.TV_Auto colProgram " . ReadingsVal($NAME,'state',25) }
Das funktioniert auch recht gut, aber der Dimmer schaltet auch Aktoren ein, die eigentlich ausgeschaltet waren
und auch ausgeschaltet bleiben sollen.Es gibt 4 unabhängig schaltbare Aktoren:
- RGB.TV
- RGB.Wohnzimmer
- RGB.Terrasse
- RGB.Gartenkugeln
Das Zielszenario sollte folgendes sein:
- Einschaltbefehl via Taster oder WebUI: FHEM holt aus den Dummies die aktuellen Sollwerte und schaltet den gewünschten Aktor ein
- bei Farbverläufen:
- wird das Programm bei allen eingeschalteten Aktoren angehalten
- wird aus einem Device der Hue-Wert ausgelesen
- werden alle eingeschalteten Aktoren mit einem Verlauf (5 Sek.) auf diese Farbe eingestellt
- wird der Verlauf auf allen eingeschalteten Aktoren neu gestartet
- Veränderungen in den Dummies wirken nur auf bereits eingeschaltete Aktoren
Wie löse ich das am besten ?
Nutze die Kommandos effektiv:
set device1,devise2,device3 pct value
Du willst alle Werte des einen Dimmer auf die anderen übertragen. Allerdings reagiert dein notify auf alle Events. Solltest du versuchen zu verbessern. State ist hier ein Problem, schlecht implementiert. Du solltest evtl Level nutzen. Das spiegelt immer den Level wieder, lässt sich auch filtern.
Warum. Aber sollte etwas angehen, was nicht soll? Das musst du genauer beschreiben.
Danke für die schnelle Antwort, Martin.
ZitatWarum. Aber sollte etwas angehen, was nicht soll? Das musst du genauer beschreiben
Verändere ich z.B. den Dummy Dimmer auf 50%, setzt er alle Aktoren auf 50%, auch wenn sie vorher auf 0 standen.
Ich möchte aber nur die Aktoren verändern, die vorher schon eingeschaltet waren.
ZitatState ist hier ein Problem, schlecht implementiert. Du solltest evtl Level nutzen. Das spiegelt immer den Level wieder, lässt sich auch filtern.
Hast Du einen Link, wo so was ähnliches besser realisiert wurde ?
Evtl. kannst Du den Status von den Devices ja direkt rausfiltern?
Meine zB so:
set W.Sideboard_TV_Auto:FILTER=state="off" colProgram