[Gelöst]Phillips HUE "synchronisieren"

Begonnen von Pythonf, 10 August 2016, 17:39:37

Vorheriges Thema - Nächstes Thema

Pythonf

Hey FHEM-Freunde,

Ich hab bei mir zwei Stehlampen mit je 2 Phillips HUE RGBW Birnen. Ich steuer das ganze über Smartvisu und möchte jede Lampe individuell schalten können (also nicht über Lightscene). Gleichzeitig hab ich einen Knopf zu jeder Birne, mit der ich die aktuelle Farbe auf die 3 anderen Lampen übertragen möchte. Meine bisherige Lösung war über RGB:
SV.Dummy01:HUEDEVICE:.* {
my $RGB = ReadingsVal("$EVTPART1","rgb","FFFFFF");
fhem("set modelid=LCT007 rgb $RGB");
}

Da der Farbraum der HUEs aber größer zu sein scheint als RGB (Farbtemperatur, etc.) bin ich auf der Suche nach einer Lösung, wie ich auf allen Lampen genau die selbe Farbe/Lichttemperatur einstellen kann.
Habt ihr da Vorschläge?
Grüße
Fabian

DeeSPe

Dann nimm statt nur rgb die 3 Readings hue, bri, sat und übertrage die auf die anderen Lampen.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

justme1968

ja. rgb ist eingeschränkt. dafür aber universell.

eigentlich musst du im colormode reading nachschauen und dann die readings verwenden die zum aktuellen colormode passen.

also entweder ct oder xy oder hue sat und bri.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Pythonf

Zitat von: justme1968 am 10 August 2016, 18:13:17
eigentlich musst du im colormode reading nachschauen und dann die readings verwenden die zum aktuellen colormode passen.

Hab ne schöne Lösung nach diesem Ansatz gefunden:
SV.Dummy01:HUEDEVICE:.* {
my $colormode = ReadingsVal("$EVTPART1","colormode","0");
my $hue = ReadingsVal("$EVTPART1","hue","0");
my $sat = ReadingsVal("$EVTPART1","sat","0");
my $bri = ReadingsVal("$EVTPART1","bri","0");
my $ct = ReadingsVal("$EVTPART1","ct","150");

$ct =~ s/ .*//;

if($colormode eq "hs"){
fhem("set modelid=LCT007 hue $hue");
fhem("set modelid=LCT007 sat $sat");
fhem("set modelid=LCT007 bri $bri");
}
else{
fhem("set modelid=LCT007 ct $ct");
}
}

justme1968

bist du sicher das EVTPART1 richtig ist? ich denke das muss $NAME sein.

der colormode xy fehlt noch.

für hs kannst du alle drei werte in einem einzigen set setzen: fhem ("set modelid=LCT007 hue $hue : sat $sat : bri $bri");

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Pythonf

#5
colormode xy findet bei mir im Smartvisu Widget keine Verwendung weshalb ich den hier nicht definiert hab. Den FHEM-Befehl hab ich angepasst.
Es funktioniert mit EVTPART1. Das Reading lautet wie folgt: SV.Dummy01:HUEDEVICE:HUEDevice1 und das Device ist HUEDevice1. Den Unterschied zu $NAME kenn ich allerdings nicht, müsste ich mir ansehn.

Finaler Code:
SV.Dummy01:HUEDEVICE:.* {
my $colormode = ReadingsVal("$EVTPART1","colormode","0");
my $hue = ReadingsVal("$EVTPART1","hue","0");
my $sat = ReadingsVal("$EVTPART1","sat","0");
my $bri = ReadingsVal("$EVTPART1","bri","0");
my $ct = ReadingsVal("$EVTPART1","ct","150");
my $xy = ReadingsVal("$EVTPART1","xy","0.5000,0.5000");

$ct =~ s/ .*//;

if($colormode eq "hs"){
fhem("set modelid=LCT007 hue $hue : sat $sat : bri $bri");
}
elsif($colormode eq "hs"){
fhem("set modelid=LCT007 ct $ct : bri $bri");
}
else{
fhem("set modelid=LCT007 xy $xy : bri $bri");
}
}


Gruß
Fabian