FadeIn / FadeOut Funktion für Lampe gesucht

Begonnen von Det20, 19 Januar 2019, 17:16:51

Vorheriges Thema - Nächstes Thema

Det20

Hallo,

aktuell blende ich eine Birne über folgende Funktion ein/aus. Da gibt es sicherlich optimierungspotential, hat da jemand ev eine fertige Funktion für mich oder Anregungen?


sub FadeIn($)
{
  my ($device) = @_;
  return if($device eq "");
 
  my $IsOpen  = lc ReadingsVal("TradfriGW","state","closed");
  my $State   = lc ReadingsVal($device,"reachableState","1");
  my $CurrDim = ReadingsVal($device,"dimvalue","10");
  return if(($State ne "1")||($IsOpen ne "opened")||($CurrDim>90));
 
  while($CurrDim<100) {
    $CurrDim = $CurrDim+10;
    fhem("set $device dimvalue $CurrDim");
    fhem("sleep 0.1");
  };
}

sub FadeOut($)
{
  my ($device) = @_;
  return if($device eq "");
 
  my $IsOpen  = lc ReadingsVal("TradfriGW","state","closed");
  my $State   = lc ReadingsVal($device,"reachableState","1");
  my $CurrDim = ReadingsVal($device,"dimvalue","10");
  return if(($State ne "1")||($IsOpen ne "opened")||($CurrDim<10));
 
  while($CurrDim>0) {
    $CurrDim = $CurrDim-10;
    fhem("set $device dimvalue $CurrDim");
    fhem("sleep 0.1");
  };
}

justme1968

mit den ganzen sleep die in deinem fall blockierend arbeiten blockierst du dein ganzes fhem. das ist nicht gut.

was du tun solltest:
- schauen ob das device um das es geht die möglichkeit bietet direkt anzugeben das langsam gedimmt werden soll
  das geht z.b. bei homematic, bei hue, lightify, ---
  bei tradfri geht es zumindest mit der version die ich gerade baue auch. mehr hier: https://forum.fhem.de/index.php/topic,96125.msg890934.html#msg890934

- wenn das nicht geht musst du das sleep so verwenden das es nicht blockiert. beispiele gibt es hier im forum.

- eine möglichkeit wie das geht findest du z.b. hier: https://forum.fhem.de/index.php/topic,51906.msg436451.html#msg436451
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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