diff --git a/CHANGED b/CHANGED
index 79b626594..35c0944c0 100644
--- a/CHANGED
+++ b/CHANGED
@@ -1,5 +1,8 @@
# Add changes at the top of the list. Keep it in ASCII, and 80-char wide.
# Do not insert empty lines here, update check depends on it.
+ - feature: 98_Hyperion: new set toggleMode
+ new attr hyperionToggleModes
+ new german commandref
- bugfix: 93_DbRep: calc issue due to daylight saving time end (winter time)
- new: 30_pilight_raw.pm: New Attribut sendCount
- bugfix: 10_SOMFY: wrong attribute reference ...-up-time-to-close removed
diff --git a/FHEM/98_Hyperion.pm b/FHEM/98_Hyperion.pm
index b37d5813d..67dc9a157 100644
--- a/FHEM/98_Hyperion.pm
+++ b/FHEM/98_Hyperion.pm
@@ -21,15 +21,16 @@ use DevIo;
my %Hyperion_sets =
(
"dim" => "slider,0,1,100",
- "dimDown" => "noArg",
- "dimUp" => "noArg",
+ "dimDown" => "textField",
+ "dimUp" => "textField",
"clear" => "textField",
"clearall" => "noArg",
"mode" => "clearall,effect,off,rgb",
"off" => "noArg",
"on" => "noArg",
"rgb" => "colorpicker,RGB",
- "toggle" => "noArg"
+ "toggle" => "noArg",
+ "toggleMode" => "noArg"
);
my $Hyperion_requiredVersion = "1.03.2";
@@ -60,6 +61,7 @@ sub Hyperion_Initialize($)
"hyperionDimStep ".
"hyperionNoSudo:1 ".
"hyperionSshUser ".
+ "hyperionToggleModes ".
"hyperionVersionCheck:0 ".
"queryAfterSet:0 ".
$readingFnAttributes;
@@ -100,9 +102,10 @@ sub Hyperion_Define($$)
$attr{$name}{icon} = "light_led_stripe_rgb";
$attr{$name}{lightSceneParamsToSave} = "state";
$attr{$name}{room} = "Hyperion";
+ $attr{$name}{webCmd} = $Hyperion_webCmd;
+ $attr{$name}{widgetOverride} = "dimUp:noArg dimDown:noArg";
addToDevAttrList($name,"lightSceneParamsToSave") if (index($attr{"global"}{userattr},"lightSceneParamsToSave") == -1);
addToDevAttrList($name,"homebridgeMapping") if (index($attr{"global"}{userattr},"homebridgeMapping") == -1);
- $attr{$name}{webCmd} = $Hyperion_webCmd;
}
if ($init_done)
{
@@ -638,8 +641,24 @@ sub Hyperion_Set($@)
elsif ($cmd eq "toggle")
{
return "$cmd need no additional value of $value" if (defined $value);
- my $rstate = Value($name);
- ($rstate ne "off") ? fhem "set ".$name." off" : fhem "set ".$name." on";
+ my $state = Value($name);
+ my $nstate = $state ne "off" ? "off" : "on";
+ fhem "set $name $nstate";
+ return undef;
+ }
+ elsif ($cmd eq "toggleMode")
+ {
+ return "$cmd need no additional value of $value" if (defined $value);
+ my $mode = ReadingsVal($name,"mode","off");
+ my $nmode;
+ my @modeorder = split(",",AttrVal($name,"hyperionToggleModes","clearall,rgb,effect,off"));
+ my $count = scalar @modeorder;
+ for (my $i = 0; $i < $count; $i++)
+ {
+ $nmode = $i < $count - 1 ? $modeorder[$i+1] : $modeorder[0] if ($modeorder[$i] eq $mode);
+ }
+ $nmode = $nmode ? $nmode : "off";
+ fhem "set $name mode $nmode";
return undef;
}
elsif ($cmd eq "mode")
@@ -789,6 +808,10 @@ sub Hyperion_Attr(@)
Hyperion_Call($hash);
}
}
+ elsif ($attr_name eq "hyperionToggleModes")
+ {
+ $err = "Invalid value $attr_value for attribute $attr_name. Must be a comma separated list of available modes of clearall,rgb,effect,off. Each mode only once in the list." if ($attr_value !~ /^(clearall|rgb|effect|off),(clearall|rgb|effect|off)(,(clearall|rgb|effect|off)){0,2}$/);
+ }
elsif ($attr_name eq "hyperionVersionCheck")
{
$err = "Invalid value $attr_value for attribute $attr_name. Can only be value 0." if ($attr_value !~ /^0$/);
@@ -875,7 +898,7 @@ sub Hyperion_devStateIcon($;$)
With Hyperion it is possible to change the color or start an effect on a hyperion server.
It's also possible to control the complete color calibration (changes are temorary and will not be written to the config file).
The Hyperion server must have enabled the JSON server.
- You can also restart Hyperion with different configuration files (p.e. switch input)
+ You can also restart Hyperion with different configuration files (p.e. switch input/grabber)
Define
@@ -883,7 +906,7 @@ sub Hyperion_devStateIcon($;$)define <name> Hyperion <IP or HOSTNAME> <PORT> [<INTERVAL>]
Define
+define <name> Hyperion <IP oder HOSTNAME> <PORT> [<INTERVAL>]
define Ambilight Hyperion localhost 19444 10
define Ambilight Hyperion 192.168.1.4 19444 10
set <benötigt> [optional]
+Get
+Attribute
+Readings
+