mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-04-22 08:11:44 +00:00
22_HOMEMODE: minor changes for ESP sketch
git-svn-id: https://svn.fhem.de/fhem/trunk@15325 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
079a8569e2
commit
fe3db5661d
@ -98,19 +98,18 @@ sub Hyperion_Define($$)
|
|||||||
RemoveInternalTimer($hash);
|
RemoveInternalTimer($hash);
|
||||||
if ($init_done && !defined $hash->{OLDDEF})
|
if ($init_done && !defined $hash->{OLDDEF})
|
||||||
{
|
{
|
||||||
|
addToDevAttrList($name,"lightSceneParamsToSave") if (!grep /^lightSceneParamsToSave/,split(" ",$attr{"global"}{userattr}));
|
||||||
|
addToDevAttrList($name,"homebridgeMapping:textField-long") if (!grep /^homebridgeMapping/,split(" ",$attr{"global"}{userattr}));
|
||||||
$attr{$name}{alias} = "Ambilight";
|
$attr{$name}{alias} = "Ambilight";
|
||||||
$attr{$name}{cmdIcon} = "on:general_an off:general_aus dimDown:dimdown dimUp:dimup";
|
$attr{$name}{cmdIcon} = "on:general_an off:general_aus dimDown:dimdown dimUp:dimup";
|
||||||
$attr{$name}{devStateIcon} = '{(Hyperion_devStateIcon($name),"toggle")}';
|
$attr{$name}{devStateIcon} = '{(Hyperion_devStateIcon($name))}';
|
||||||
$attr{$name}{"event-on-change-reading"} = ".*";
|
$attr{$name}{"event-on-change-reading"} = ".*";
|
||||||
$attr{$name}{group} = "colordimmer";
|
|
||||||
$attr{$name}{homebridgeMapping} = $Hyperion_homebridgeMapping;
|
$attr{$name}{homebridgeMapping} = $Hyperion_homebridgeMapping;
|
||||||
$attr{$name}{icon} = "light_led_stripe_rgb";
|
$attr{$name}{icon} = "light_led_stripe_rgb";
|
||||||
$attr{$name}{lightSceneParamsToSave} = "state";
|
$attr{$name}{lightSceneParamsToSave} = "state";
|
||||||
$attr{$name}{room} = "Hyperion";
|
$attr{$name}{room} = "Hyperion";
|
||||||
$attr{$name}{webCmd} = $Hyperion_webCmd;
|
$attr{$name}{webCmd} = $Hyperion_webCmd;
|
||||||
$attr{$name}{widgetOverride} = "dimUp:noArg dimDown:noArg";
|
$attr{$name}{widgetOverride} = "dimUp:noArg dimDown:noArg";
|
||||||
addToDevAttrList($name,"lightSceneParamsToSave") if (!grep /^lightSceneParamsToSave/,split(" ",$attr{"global"}{userattr}));
|
|
||||||
addToDevAttrList($name,"homebridgeMapping:textField-long") if (!grep /^homebridgeMapping/,split(" ",$attr{"global"}{userattr}));
|
|
||||||
}
|
}
|
||||||
return Hyperion_OpenDev($hash);
|
return Hyperion_OpenDev($hash);
|
||||||
}
|
}
|
||||||
@ -206,15 +205,15 @@ sub Hyperion_Read($)
|
|||||||
my $name = $hash->{NAME};
|
my $name = $hash->{NAME};
|
||||||
my $buf = DevIo_SimpleRead($hash);
|
my $buf = DevIo_SimpleRead($hash);
|
||||||
return if (!$buf);
|
return if (!$buf);
|
||||||
|
$buf =~ s/[\r\n]//gm;
|
||||||
my $result = $hash->{PARTIAL} ? $hash->{PARTIAL}.$buf : $buf;
|
my $result = $hash->{PARTIAL} ? $hash->{PARTIAL}.$buf : $buf;
|
||||||
$hash->{PARTIAL} = $result;
|
$hash->{PARTIAL} = $result;
|
||||||
return if ($buf !~ /(^.+"success":(true|false)\}$)/);
|
return if ($buf !~ /(^.+"success":(true|false)\}$)/);
|
||||||
Log3 $name,5,"$name: url $hash->{DeviceName} returned result: $result";
|
Log3 $name,5,"$name: url $hash->{DeviceName} returned result: $result";
|
||||||
delete $hash->{PARTIAL};
|
delete $hash->{PARTIAL};
|
||||||
$result =~ /(\s+)?\/{2,}.*|(?:[\t ]*(?:\r?\n|\r))+/gm;
|
|
||||||
if ($result =~ /^\{"success":true\}$/)
|
if ($result =~ /^\{"success":true\}$/)
|
||||||
{
|
{
|
||||||
fhem "sleep 1; get $name statusRequest"
|
AnalyzeCommandChain(undef,"sleep 1; get $name statusRequest")
|
||||||
if (AttrVal($name,"queryAfterSet",1) == 1 || !$hash->{INTERVAL});
|
if (AttrVal($name,"queryAfterSet",1) == 1 || !$hash->{INTERVAL});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -342,7 +341,7 @@ sub Hyperion_Read($)
|
|||||||
my ($r,$g,$b) = Color::hex2rgb($rgb);
|
my ($r,$g,$b) = Color::hex2rgb($rgb);
|
||||||
my ($h,$s,$v) = Color::rgb2hsv($r / 255,$g / 255,$b / 255);
|
my ($h,$s,$v) = Color::rgb2hsv($r / 255,$g / 255,$b / 255);
|
||||||
my $dim = int($v * 100);
|
my $dim = int($v * 100);
|
||||||
readingsBulkUpdate($hash,"rgb",$rgb);
|
readingsBulkUpdate($hash,"rgb",$rgb) if ($rgb ne "000000");
|
||||||
readingsBulkUpdate($hash,"dim",$dim);
|
readingsBulkUpdate($hash,"dim",$dim);
|
||||||
readingsBulkUpdate($hash,"mode","rgb");
|
readingsBulkUpdate($hash,"mode","rgb");
|
||||||
readingsBulkUpdate($hash,"mode_before_off","rgb");
|
readingsBulkUpdate($hash,"mode_before_off","rgb");
|
||||||
@ -411,7 +410,7 @@ sub Hyperion_GetConfigs($)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
fhem "deletereading $name .configs" if (defined ReadingsVal($name,".configs",undef));
|
AnalyzeCommandChain(undef,"deletereading $name .configs") if (defined ReadingsVal($name,".configs",undef));
|
||||||
$attr{$name}{webCmd} = $Hyperion_webCmd if (AttrVal($name,"webCmd","") eq $Hyperion_webCmd_config);
|
$attr{$name}{webCmd} = $Hyperion_webCmd if (AttrVal($name,"webCmd","") eq $Hyperion_webCmd_config);
|
||||||
return "Found just one config file.\nPlease add at least one more config file to properly use this function."
|
return "Found just one config file.\nPlease add at least one more config file to properly use this function."
|
||||||
if (@files == 1);
|
if (@files == 1);
|
||||||
@ -549,7 +548,7 @@ sub Hyperion_Set($@)
|
|||||||
{
|
{
|
||||||
return "Value of $cmd has to be in RGB hex format like ffffff or 3F7D90"
|
return "Value of $cmd has to be in RGB hex format like ffffff or 3F7D90"
|
||||||
if ($value !~ /^[\dA-Fa-f]{6}$/);
|
if ($value !~ /^[\dA-Fa-f]{6}$/);
|
||||||
$value = lc($value);
|
$value = lc $value;
|
||||||
my ($r,$g,$b) = Color::hex2rgb($value);
|
my ($r,$g,$b) = Color::hex2rgb($value);
|
||||||
$obj{color} = [$r,$g,$b];
|
$obj{color} = [$r,$g,$b];
|
||||||
$obj{command} = "color";
|
$obj{command} = "color";
|
||||||
@ -586,7 +585,9 @@ sub Hyperion_Set($@)
|
|||||||
my $dimStep = $value ? $value : AttrVal($name,"hyperionDimStep",10);
|
my $dimStep = $value ? $value : AttrVal($name,"hyperionDimStep",10);
|
||||||
my $dimUp = ($dim + $dimStep < 100) ? $dim + $dimStep : 100;
|
my $dimUp = ($dim + $dimStep < 100) ? $dim + $dimStep : 100;
|
||||||
my $dimDown = ($dim - $dimStep > 0) ? $dim - $dimStep : 1;
|
my $dimDown = ($dim - $dimStep > 0) ? $dim - $dimStep : 1;
|
||||||
$cmd eq "dimUp" ? fhem "set $name dim $dimUp" : fhem "set $name dim $dimDown";
|
my $set;
|
||||||
|
$cmd eq "dimUp" ? $set = $dimUp : $set = $dimDown;
|
||||||
|
CommandSet(undef,"$name dim $set");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
elsif ($cmd eq "effect")
|
elsif ($cmd eq "effect")
|
||||||
@ -641,18 +642,10 @@ sub Hyperion_Set($@)
|
|||||||
my $rrgb = ReadingsVal($name,"rgb","");
|
my $rrgb = ReadingsVal($name,"rgb","");
|
||||||
my $reffect = ReadingsVal($name,"effect","");
|
my $reffect = ReadingsVal($name,"effect","");
|
||||||
my ($r,$g,$b) = Color::hex2rgb($rrgb);
|
my ($r,$g,$b) = Color::hex2rgb($rrgb);
|
||||||
if ($rmode eq "rgb")
|
my $set = "$rmode $rrgb";
|
||||||
{
|
$set = "$rmode $reffect" if ($rmode eq "effect");
|
||||||
fhem "set ".$name." $rmode $rrgb";
|
$set = $rmode if ($rmode eq "clearall");
|
||||||
}
|
CommandSet(undef,"$name $set");
|
||||||
elsif ($rmode eq "effect")
|
|
||||||
{
|
|
||||||
fhem "set ".$name." $rmode $reffect";
|
|
||||||
}
|
|
||||||
elsif ($rmode eq "clearall")
|
|
||||||
{
|
|
||||||
fhem "set ".$name." clearall";
|
|
||||||
}
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
elsif ($cmd eq "toggle")
|
elsif ($cmd eq "toggle")
|
||||||
@ -660,7 +653,7 @@ sub Hyperion_Set($@)
|
|||||||
return "$cmd need no additional value of $value" if (defined $value);
|
return "$cmd need no additional value of $value" if (defined $value);
|
||||||
my $state = Value($name);
|
my $state = Value($name);
|
||||||
my $nstate = $state ne "off" ? "off" : "on";
|
my $nstate = $state ne "off" ? "off" : "on";
|
||||||
fhem "set $name $nstate";
|
CommandSet(undef,"$name $nstate");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
elsif ($cmd eq "toggleMode")
|
elsif ($cmd eq "toggleMode")
|
||||||
@ -674,7 +667,7 @@ sub Hyperion_Set($@)
|
|||||||
$nmode = $i < @modeorder - 1 ? $modeorder[$i+1] : $modeorder[0] if ($modeorder[$i] eq $mode);
|
$nmode = $i < @modeorder - 1 ? $modeorder[$i+1] : $modeorder[0] if ($modeorder[$i] eq $mode);
|
||||||
}
|
}
|
||||||
$nmode = $nmode ? $nmode : $modeorder[0];
|
$nmode = $nmode ? $nmode : $modeorder[0];
|
||||||
fhem "set $name mode $nmode";
|
CommandSet(undef,"$name mode $nmode");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
elsif ($cmd eq "mode")
|
elsif ($cmd eq "mode")
|
||||||
@ -685,22 +678,11 @@ sub Hyperion_Set($@)
|
|||||||
my $rrgb = ReadingsVal($name,"rgb","");
|
my $rrgb = ReadingsVal($name,"rgb","");
|
||||||
my $reffect = ReadingsVal($name,"effect","");
|
my $reffect = ReadingsVal($name,"effect","");
|
||||||
my ($r,$g,$b) = Color::hex2rgb($rrgb);
|
my ($r,$g,$b) = Color::hex2rgb($rrgb);
|
||||||
if ($rmode eq "rgb")
|
my $set = "$rmode $rrgb";
|
||||||
{
|
$set = "$rmode $reffect" if ($rmode eq "effect");
|
||||||
fhem "set $name $rmode $rrgb";
|
$set = $rmode if ($rmode eq "clearall");
|
||||||
}
|
$set = $rmode if ($rmode eq "off");
|
||||||
elsif ($rmode eq "effect")
|
CommandSet(undef,"$name $set");
|
||||||
{
|
|
||||||
fhem "set $name $rmode $reffect";
|
|
||||||
}
|
|
||||||
elsif ($rmode eq "clearall")
|
|
||||||
{
|
|
||||||
fhem "set $name clearall";
|
|
||||||
}
|
|
||||||
elsif ($rmode eq "off")
|
|
||||||
{
|
|
||||||
fhem "set $name $rmode";
|
|
||||||
}
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
elsif ($cmd =~ /^(luminanceGain|luminanceMinimum|saturationGain|saturationLGain|valueGain)$/)
|
elsif ($cmd =~ /^(luminanceGain|luminanceMinimum|saturationGain|saturationLGain|valueGain)$/)
|
||||||
@ -753,7 +735,9 @@ sub Hyperion_Set($@)
|
|||||||
my $gainStep = $value ? $value : AttrVal($name,"hyperionGainStep",0.1);
|
my $gainStep = $value ? $value : AttrVal($name,"hyperionGainStep",0.1);
|
||||||
my $gainUp = ($gain + $gainStep < 5) ? $gain + $gainStep : 5;
|
my $gainUp = ($gain + $gainStep < 5) ? $gain + $gainStep : 5;
|
||||||
my $gainDown = ($gain - $gainStep > 0) ? $gain - $gainStep : 0.1;
|
my $gainDown = ($gain - $gainStep > 0) ? $gain - $gainStep : 0.1;
|
||||||
$cmd eq "valueGainUp" ? fhem "set $name valueGain $gainUp" : fhem "set $name valueGain $gainDown";
|
my $set;
|
||||||
|
$cmd eq "valueGainUp" ? $set = $gainUp : $set = $gainDown;
|
||||||
|
CommandSet(undef,"$name valueGain $set");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
elsif ($cmd eq "addEffect")
|
elsif ($cmd eq "addEffect")
|
||||||
@ -927,17 +911,19 @@ sub Hyperion_devStateIcon($;$)
|
|||||||
my $name = $hash->{NAME};
|
my $name = $hash->{NAME};
|
||||||
my $rgb = ReadingsVal($name,"rgb","");
|
my $rgb = ReadingsVal($name,"rgb","");
|
||||||
my $dim = ReadingsVal($name,"dim",10);
|
my $dim = ReadingsVal($name,"dim",10);
|
||||||
|
my $val = ReadingsVal($name,"state","off");
|
||||||
|
my $mode = ReadingsVal($name,"mode","");
|
||||||
my $ico = int($dim / 10) * 10 < 10 ? 10 : int($dim / 10) * 10;
|
my $ico = int($dim / 10) * 10 < 10 ? 10 : int($dim / 10) * 10;
|
||||||
return ".*:off:toggle"
|
return ".*:off:toggle"
|
||||||
if (Value($name) eq "off");
|
if ($val eq "off");
|
||||||
return ".*:light_exclamation"
|
return ".*:light_exclamation"
|
||||||
if (Value($name) =~ /^(ERROR|disconnected)$/);
|
if (($val eq "disconnected" && !$hash->{INTERVAL}) || $val eq "ERROR");
|
||||||
return ".*:light_light_dim_$ico@#".$rgb.":toggle"
|
return ".*:light_light_dim_$ico@#".$rgb.":toggle"
|
||||||
if (Value($name) ne "off" && ReadingsVal($name,"mode","") eq "rgb");
|
if ($val ne "off" && $mode eq "rgb");
|
||||||
return ".*:light_led_stripe_rgb@#FFFF00:toggle"
|
return ".*:light_led_stripe_rgb@#FFFF00:toggle"
|
||||||
if (Value($name) ne "off" && ReadingsVal($name,"mode","") eq "effect");
|
if ($val ne "off" && $mode eq "effect");
|
||||||
return ".*:it_television@#0000FF:toggle"
|
return ".*:it_television@#0000FF:toggle"
|
||||||
if (Value($name) ne "off" && ReadingsVal($name,"mode","") eq "clearall");
|
if ($val ne "off" && $mode eq "clearall");
|
||||||
return ".*:light_question";
|
return ".*:light_question";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user