Hallo Leute,
ich bin dabei, eine zirkadiane Lichtsteuerung umzusetzen. Hierzu verwende ich die tunable-white-Leuchtmittel von IKEA.
Mittels einer "at"-Anweisung unter Nutzung der Astro-Funktion wechsle ich morgens und abends die Farbtemperatur ausgewählter Lampen. Dummerweise bewirkt der FHEM-Befehl "set Lampe color xxxx" nicht nur, dass die Farbtemperatur geändert wird, sondern auch, dass die Lampe angeht, sofern sie vorher aus war. Das soll sie aber nicht. Sie soll lediglich wissen, mit welcher Farbtemperatur sie zu leuchten hat, sobald sie eingeschaltet wird.
Liegt das an den Tradfri-Leuchtmitteln oder an FHEM? Gibt es eine einfache Lösung?
Mein erster Ansatz war: Schau vor der Farbänderung, ob die Lampe aus war, falls ja, schicke dem "set Lampe color xxxx" ein "set Lampe off" hinterher. Das Problem hierbei ist, dass ich die beiden Befehle nicht einfach hintereinander abschicken darf, weil sonst der zweite zu früh kommt, d.h. der erste ist noch nicht abgearbeitet, womit das Ausschalten ins Leere läuft. Ich habe das Problem in den Griff bekommen, indem ich dem "set Lampe color xxxx" mehrfach ein "sleep 0.1; set Lampe off" hinterherschicke, aber elegant erscheint mir das programmtechnisch nicht, zumal die Lampe dabei sichtbar an- und wieder ausgeht.
Ein zweiter Ansatz wäre, der Lampe erst beim Einschalten mitzuteilen, welche Farbtemperatur sie nutzen soll. In dem Fall müsste allerdings sichergestellt werden, dass eine längere Zeit eingeschaltete Lampe trotzdem mitbekommt, wenn es gilt, die Farbtemperatur anzupassen. Also: Via "at"-Routine den eingeschalteten Lampen ein "set Lampe color xxxx" zu schicken und ansonsten beim Einschalten schauen, ob die Farbtemperatur geändert werden muss.
Hat sonst noch jemand eine Idee?
Danke für hilfreiche Vorschläge im Vorhinein
falls du meine tradfri version verwendest (mit HUEDevice als client):
HUEDevice schaltet explizit ein falls die lampen aus sind. wenn du das nicht möchtest: im gleichen set noch ein
: off
anhängen.
Zitatfalls du meine tradfri version verwendest (mit HUEDevice als client):
Danach sieht es aus, die "Internats" der Lampe weisen deren "TYPE" als "HUEDevice" aus und die "modelid" als "TRADFRI bulb E27 WS opal 980lm"
Zitatwenn du das nicht möchtest: im gleichen set noch ein
: off
anhängen.
Wie sähe das aus?
"set Lampe color xxxx : off" tut gar nichts, auch nicht mit dem ": off" in einer neuen Zeile.
"set Lampe color xxxx : set Lampe off" führt die Änderung der Farbtemperatur durch, lässt die Lampe aber an, ignoriert den zweiten Befehl also.
Die Aufrufe erfolgen bei mir übrigens in einer eigenen Funktion in der 99_myUtils.pm à la:
sub sdc($$) { # set device color
my ($device,$color) = @_;
if (Value($device) eq "off") {
fhem("
set $device color $color
: set $device off;
");
} else {
fhem("set $device color $color");
};
}
set Lampe color xxxx : off
alles in einem kommando auf einer zeile.
schau mal mit verbose 4 was genau an das gateway geschickt wird.
Zitatschau mal mit verbose 4 was genau an das gateway geschickt wird.
Das sieht so aus:
Connection closed for WEB_192.168.xxx.xxx_61977: EOF
WEB_192.168.xxx.xxx_61978 POST /fhem&fw_id=53&fwcsrf=xxx&cmd=set+Lampe+color+2200+%3A+off; BUFLEN:0
using HttpUtils_NonblockingGet: PUT lights/1/state
http://192.168.xxx.xxx/api/FA26D565F2/lights/1/state: HTTP response code 200
using HttpUtils_NonblockingGet: GET lights/1
http://192.168.xxx.xxx/api/FA26D565F2/lights/1: HTTP response code 200
parse status message for Lampe
WEB_192.168.xxx.xxx_62004 GET /fhem?fw_id=53; BUFLEN:0
WEB: /fhem?fw_id=53 / RL:1390 / text/html; charset=UTF-8 / Content-Encoding: gzip
/
[...]
WEB_192.168.xxx.xxx_62005 GET /fhem?XHR=1&inform=type=status;filter=;since=1561027984;fmt=JSON&fw_id=53×tamp=1561027985651; BUFLEN:0
Connection closed for WEB_192.168.xxx.xxx_62005: EOF
WEB_192.168.xxx.xxx_62004 GET /fhem/FileLog_logWrapper?dev=Logfile&type=text&file=fhem-2019-06.log; BUFLEN:0
Alles innerhalb von 5 Sekunden.
Hallo,
ein "set HUEDevice10 rgb FFCD78 : off" liefert folgende Eventlog-Einträge:
2019-06-20 18:22:25 HUEBridge Philips_HUE lastError: parameter, xy, is not modifiable. Device is set to off.
2019-06-20 18:22:25 HUEDevice HUEDevice10 rgb FFCD78 : off
set HUEDevice10 rgb FFCD78 funktioniert problemlos, aber die Lampe geht an.
Viele Grüße
Jürgen
Hallo Jürgen,
Zitatein "set HUEDevice10 rgb FFCD78 : off" liefert folgende Eventlog-Einträge:
2019-06-20 18:22:25 HUEBridge Philips_HUE lastError: parameter, xy, is not modifiable. Device is set to off.
2019-06-20 18:22:25 HUEDevice HUEDevice10 rgb FFCD78 : off
Ich erhalte zwar nicht Deine Fehlermeldung, aber der Effekt bei mir ist der gleiche: Es passiert nichts. Im Event Monitor findet sich lediglich folgender Eintrag:
HUEDevice Lampe reachable: 1
Zitatset HUEDevice10 rgb FFCD78 funktioniert problemlos, aber die Lampe geht an.
Dito bei mir.
Nachtrag: Wenn die Lampe bereits an war, ist das Ergebnis von "set Lampe rgb FFCD78 : off"wechselnd, mal zeigt der Event Monitor ein "HUEDevice Lampe on" gefolgt von einem "HUEDevice Lampe off", mal nur ein "HUEDevice Lampe off", ein Wechsel der Farbe unterbleibt aber stets. Ich gehe von einer Race Condition aus mit umkalkulierbarem Ausgang.