Autor Thema: Tradfri: Farbtemperatur ändern, ohne das Licht einzuschalten  (Gelesen 262 mal)

Offline Yokohama

  • New Member
  • *
  • Beiträge: 7
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

Offline justme1968

  • Developer
  • Hero Member
  • ****
  • Beiträge: 19640
Antw:Tradfri: Farbtemperatur ändern, ohne das Licht einzuschalten
« Antwort #1 am: 19 Juni 2019, 12:49:34 »
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.
FHEM5.4,DS1512+,2xCULv3,DS9490R,HMLAN,2xRasPi
CUL_HM:HM-LC-Bl1PBU-FM,HM-LC-Sw1PBU-FM,HM-SEC-MDIR,HM-SEC-RHS
HUEBridge,HUEDevice:LCT001,LLC001,LLC006,LWL001
OWDevice:DS1420,DS18B20,DS2406,DS2423
FS20:fs20as4,fs20bs,fs20di
AKCP:THS01,WS15
CUL_WS:S300TH

Offline Yokohama

  • New Member
  • *
  • Beiträge: 7
Antw:Tradfri: Farbtemperatur ändern, ohne das Licht einzuschalten
« Antwort #2 am: 20 Juni 2019, 10:12:58 »
Zitat
falls 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"

Zitat
wenn 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");
  };
}

Offline justme1968

  • Developer
  • Hero Member
  • ****
  • Beiträge: 19640
Antw:Tradfri: Farbtemperatur ändern, ohne das Licht einzuschalten
« Antwort #3 am: 20 Juni 2019, 10:18:03 »
set Lampe color xxxx : off
alles in einem kommando auf einer zeile.

schau mal mit verbose 4 was genau an das gateway geschickt wird.
FHEM5.4,DS1512+,2xCULv3,DS9490R,HMLAN,2xRasPi
CUL_HM:HM-LC-Bl1PBU-FM,HM-LC-Sw1PBU-FM,HM-SEC-MDIR,HM-SEC-RHS
HUEBridge,HUEDevice:LCT001,LLC001,LLC006,LWL001
OWDevice:DS1420,DS18B20,DS2406,DS2423
FS20:fs20as4,fs20bs,fs20di
AKCP:THS01,WS15
CUL_WS:S300TH

Offline Yokohama

  • New Member
  • *
  • Beiträge: 7
Antw:Tradfri: Farbtemperatur ändern, ohne das Licht einzuschalten
« Antwort #4 am: 20 Juni 2019, 13:07:00 »
Zitat
schau 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.

Offline juemuc

  • Full Member
  • ***
  • Beiträge: 479
Antw:Tradfri: Farbtemperatur ändern, ohne das Licht einzuschalten
« Antwort #5 am: 20 Juni 2019, 18:45:48 »
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
« Letzte Änderung: 20 Juni 2019, 19:12:56 von juemuc »
3x Sonos Play 1, 1x Sonos Playbar + Sub, 1 Sonos-One
Fritzbox 7490 mit 4x Dect 200 und 3 Dect-ULE-Thermostate,  raspberry3, HM Funkmodul HM-MOD-RPI-PCB, HM Klingelsensor HM-Sen-DB-PCB, HM Fensterkontakte und  Amazon Echo Dot, raspberry3B+ mit RPI-RF-MOD und piVCCU, Raspbian Stretch Lite

Offline Yokohama

  • New Member
  • *
  • Beiträge: 7
Antw:Tradfri: Farbtemperatur ändern, ohne das Licht einzuschalten
« Antwort #6 am: 20 Juni 2019, 20:58:30 »
Hallo Jürgen,

Zitat
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

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
Zitat
set 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.
« Letzte Änderung: 20 Juni 2019, 21:10:55 von Yokohama »