mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-05-04 22:19:38 +00:00
35_SWAP_0000002200000003.pm: added set hue command
git-svn-id: https://svn.fhem.de/fhem/trunk/fhem@10281 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
1e291143f5
commit
9de5d0556a
@ -56,6 +56,7 @@ SWAP_0000002200000003_Initialize($)
|
|||||||
$hash->{SWAP_SetFn} = "SWAP_0000002200000003_Set";
|
$hash->{SWAP_SetFn} = "SWAP_0000002200000003_Set";
|
||||||
$hash->{SWAP_SetList} = { off => 0, on => 0, "on-for-timer" => 1, fadeTo => undef,
|
$hash->{SWAP_SetList} = { off => 0, on => 0, "on-for-timer" => 1, fadeTo => undef,
|
||||||
"rgb:colorpicker,RGB" => 1,
|
"rgb:colorpicker,RGB" => 1,
|
||||||
|
"hue:colorpicker,HUE,0,1,360" => 1,
|
||||||
toggle => 0,
|
toggle => 0,
|
||||||
dimUp => 0, dimDown => 0,
|
dimUp => 0, dimDown => 0,
|
||||||
getIR => 1, setIR => 2, learnIR => 1, storeIR => 3,
|
getIR => 1, setIR => 2, learnIR => 1, storeIR => 3,
|
||||||
@ -186,6 +187,7 @@ SWAP_0000002200000003_Parse($$$$)
|
|||||||
InternalTimer(gettimeofday()+hex($hash->{'SWAP_0A-PeriodicTxInterval'})+10, "SWAP_0000002200000003_Watchdog", $hash, 0) if( defined $hash->{'SWAP_0A-PeriodicTxInterval'} );
|
InternalTimer(gettimeofday()+hex($hash->{'SWAP_0A-PeriodicTxInterval'})+10, "SWAP_0000002200000003_Watchdog", $hash, 0) if( defined $hash->{'SWAP_0A-PeriodicTxInterval'} );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub SWAP_0000002200000003_Set($@);
|
||||||
sub
|
sub
|
||||||
SWAP_0000002200000003_Set($@)
|
SWAP_0000002200000003_Set($@)
|
||||||
{
|
{
|
||||||
@ -208,16 +210,21 @@ SWAP_0000002200000003_Set($@)
|
|||||||
} else {
|
} else {
|
||||||
return( "regSet", CMD_REG, ret(CMD_On. "FF" x $hash->{helper}->{RGB_SIZE} ."01") );
|
return( "regSet", CMD_REG, ret(CMD_On. "FF" x $hash->{helper}->{RGB_SIZE} ."01") );
|
||||||
}
|
}
|
||||||
|
|
||||||
} elsif( $cmd eq "on-for-timer" ) {
|
} elsif( $cmd eq "on-for-timer" ) {
|
||||||
return( "regSet", CMD_REG, ret(CMD_OnForTimer. sprintf( "%04X",$arg ) ) ) if( $arg =~ /^\d{1,4}$/ );
|
return( "regSet", CMD_REG, ret(CMD_OnForTimer. sprintf( "%04X",$arg ) ) ) if( $arg =~ /^\d{1,4}$/ );
|
||||||
return (undef, "$arg not a valid time" );
|
return (undef, "$arg not a valid time" );
|
||||||
|
|
||||||
} elsif( $cmd eq "off" ) {
|
} elsif( $cmd eq "off" ) {
|
||||||
return( "regSet", CMD_REG, ret(CMD_Off."0001" ) );
|
return( "regSet", CMD_REG, ret(CMD_Off."0001" ) );
|
||||||
return( "regSet", CMD_REG, ret(CMD_Off) );
|
return( "regSet", CMD_REG, ret(CMD_Off) );
|
||||||
|
|
||||||
} elsif( $cmd eq "toggle" ) {
|
} elsif( $cmd eq "toggle" ) {
|
||||||
return( "regSet", CMD_REG, ret(CMD_Toggle) );
|
return( "regSet", CMD_REG, ret(CMD_Toggle) );
|
||||||
|
|
||||||
} elsif( $cmd eq "rgb" ) {
|
} elsif( $cmd eq "rgb" ) {
|
||||||
my $d = $hash->{CHANNELS}*2;
|
my $d = $hash->{CHANNELS}*2;
|
||||||
|
$d = 6 if( !$d );
|
||||||
$arg .= "00" x ($d/2-length($arg)/2);
|
$arg .= "00" x ($d/2-length($arg)/2);
|
||||||
return (undef, "$arg is not a valid color" ) if( $arg !~ /^[\da-f]{$d}$/i );
|
return (undef, "$arg is not a valid color" ) if( $arg !~ /^[\da-f]{$d}$/i );
|
||||||
$arg .= "00" x ($hash->{helper}->{RGB_SIZE}-length($arg)/2);
|
$arg .= "00" x ($hash->{helper}->{RGB_SIZE}-length($arg)/2);
|
||||||
@ -227,6 +234,20 @@ SWAP_0000002200000003_Set($@)
|
|||||||
return( "regSet", CMD_REG, ret(CMD_On.$arg."00") );
|
return( "regSet", CMD_REG, ret(CMD_On.$arg."00") );
|
||||||
}
|
}
|
||||||
return (undef, "$arg is not a valid color" );
|
return (undef, "$arg is not a valid color" );
|
||||||
|
|
||||||
|
} elsif( $cmd eq "hue" ) {
|
||||||
|
return (undef, "$arg is not a valid color" ) if( $arg !~ /^\d{1,3}$/ );
|
||||||
|
return (undef, "$arg is not a valid color" ) if( $arg > 360 );
|
||||||
|
my $h = $arg/360;
|
||||||
|
my $s = 1;
|
||||||
|
my ($v,undef) = SWAP_0000002200000003_rgbToPct(ReadingsVal( $name, "0B-RGBlevel", undef));
|
||||||
|
$v /= 100;
|
||||||
|
|
||||||
|
my ($r,$g,$b) = Color::hsv2rgb($h,$s,$v);
|
||||||
|
my $rgb = Color::rgb2hex( $r*255, $g*255, $b*255 );
|
||||||
|
|
||||||
|
return SWAP_0000002200000003_Set( $hash, $name, 'rgb', $rgb );
|
||||||
|
|
||||||
} elsif( $cmd eq "fadeTo" ) {
|
} elsif( $cmd eq "fadeTo" ) {
|
||||||
return (undef, "set $cmd requires 1 or 2 parameters" ) if( !defined($arg) || defined($arg3) );
|
return (undef, "set $cmd requires 1 or 2 parameters" ) if( !defined($arg) || defined($arg3) );
|
||||||
$arg2 = AttrVal($name, "defaultFadeTime", 1) if( !defined($arg2) );
|
$arg2 = AttrVal($name, "defaultFadeTime", 1) if( !defined($arg2) );
|
||||||
@ -241,10 +262,13 @@ SWAP_0000002200000003_Set($@)
|
|||||||
return( "regSet", CMD_REG, ret(CMD_On.$arg.sprintf( "%02X",$arg2 ) ) );
|
return( "regSet", CMD_REG, ret(CMD_On.$arg.sprintf( "%02X",$arg2 ) ) );
|
||||||
}
|
}
|
||||||
return (undef, "$arg is not a valid color" );
|
return (undef, "$arg is not a valid color" );
|
||||||
|
|
||||||
} elsif( $cmd eq "dimUp" ) {
|
} elsif( $cmd eq "dimUp" ) {
|
||||||
return( "regSet", CMD_REG, ret(CMD_DimUp) );
|
return( "regSet", CMD_REG, ret(CMD_DimUp) );
|
||||||
|
|
||||||
} elsif( $cmd eq "dimDown" ) {
|
} elsif( $cmd eq "dimDown" ) {
|
||||||
return( "regSet", CMD_REG, ret(CMD_DimDown) );
|
return( "regSet", CMD_REG, ret(CMD_DimDown) );
|
||||||
|
|
||||||
} elsif( $cmd eq "getIR" ) {
|
} elsif( $cmd eq "getIR" ) {
|
||||||
if( $arg eq "all" ) {
|
if( $arg eq "all" ) {
|
||||||
for( my $reg = 0; $reg <= 0xF; ++$reg) {
|
for( my $reg = 0; $reg <= 0xF; ++$reg) {
|
||||||
@ -254,13 +278,16 @@ SWAP_0000002200000003_Set($@)
|
|||||||
}
|
}
|
||||||
return( "regSet", CMD_REG, ret(CMD_GetIR."0".sprintf("%1X",$arg) ) ) if( $arg =~ /^(\d|0\d|1[0-5])$/ );
|
return( "regSet", CMD_REG, ret(CMD_GetIR."0".sprintf("%1X",$arg) ) ) if( $arg =~ /^(\d|0\d|1[0-5])$/ );
|
||||||
return (undef, "$arg is not a valid ir register number" );
|
return (undef, "$arg is not a valid ir register number" );
|
||||||
|
|
||||||
} elsif( $cmd eq "setIR" ) {
|
} elsif( $cmd eq "setIR" ) {
|
||||||
return (undef, "$arg2 not a valid ir value" )if( $arg2 !~ /^[\da-f]{8}$/i );
|
return (undef, "$arg2 not a valid ir value" )if( $arg2 !~ /^[\da-f]{8}$/i );
|
||||||
return( "regSet", CMD_REG, ret(CMD_SetIR."0".sprintf("%1X",$arg).$arg2 ) ) if( $arg =~ /^(\d|0\d|1[0-5])$/ );
|
return( "regSet", CMD_REG, ret(CMD_SetIR."0".sprintf("%1X",$arg).$arg2 ) ) if( $arg =~ /^(\d|0\d|1[0-5])$/ );
|
||||||
return (undef, "$arg is not a valid ir register" );
|
return (undef, "$arg is not a valid ir register" );
|
||||||
|
|
||||||
} elsif( $cmd eq "learnIR" ) {
|
} elsif( $cmd eq "learnIR" ) {
|
||||||
return( "regSet", CMD_REG, ret(CMD_LearnIR."0".sprintf("%1X",$arg) ) ) if( $arg =~ /^(\d|0\d|1[0-5])$/ );
|
return( "regSet", CMD_REG, ret(CMD_LearnIR."0".sprintf("%1X",$arg) ) ) if( $arg =~ /^(\d|0\d|1[0-5])$/ );
|
||||||
return (undef, "$arg is not a valid ir register number" );
|
return (undef, "$arg is not a valid ir register number" );
|
||||||
|
|
||||||
} elsif( $cmd eq "storeIR" ) {
|
} elsif( $cmd eq "storeIR" ) {
|
||||||
return (undef, "$arg is not a valid ir register number" ) if( $arg !~ /^(\d|0\d|1[0-5])$/ );
|
return (undef, "$arg is not a valid ir register number" ) if( $arg !~ /^(\d|0\d|1[0-5])$/ );
|
||||||
return (undef, "$arg2 not a valid ir value" )if( $arg2 !~ /^[\da-f]{8}$/i );
|
return (undef, "$arg2 not a valid ir value" )if( $arg2 !~ /^[\da-f]{8}$/i );
|
||||||
@ -268,6 +295,7 @@ SWAP_0000002200000003_Set($@)
|
|||||||
SWAP_Send($hash, $hash->{addr}, "02", CMD_REG, ret(CMD_SetIR."0".sprintf("%1X",$arg).$arg2 ) );
|
SWAP_Send($hash, $hash->{addr}, "02", CMD_REG, ret(CMD_SetIR."0".sprintf("%1X",$arg).$arg2 ) );
|
||||||
SWAP_Send($hash, $hash->{addr}, "02", CMD_REG, ret($arg3) );
|
SWAP_Send($hash, $hash->{addr}, "02", CMD_REG, ret($arg3) );
|
||||||
return( "regSet", CMD_REG, CMD_GetIR."0".sprintf("%1X",$arg)."00000000" );
|
return( "regSet", CMD_REG, CMD_GetIR."0".sprintf("%1X",$arg)."00000000" );
|
||||||
|
|
||||||
} elsif( $cmd eq "getFade" ) {
|
} elsif( $cmd eq "getFade" ) {
|
||||||
if( $arg eq "all" ) {
|
if( $arg eq "all" ) {
|
||||||
for( my $reg = 0; $reg <= 0xF; ++$reg) {
|
for( my $reg = 0; $reg <= 0xF; ++$reg) {
|
||||||
@ -277,20 +305,25 @@ SWAP_0000002200000003_Set($@)
|
|||||||
}
|
}
|
||||||
return( "regSet", CMD_REG, ret(CMD_GetFade."0".sprintf("%1X",$arg) ) ) if( $arg =~ /^(\d|0\d|1[0-5])$/ );
|
return( "regSet", CMD_REG, ret(CMD_GetFade."0".sprintf("%1X",$arg) ) ) if( $arg =~ /^(\d|0\d|1[0-5])$/ );
|
||||||
return (undef, "$arg is not a valid fade register number" );
|
return (undef, "$arg is not a valid fade register number" );
|
||||||
|
|
||||||
} elsif( $cmd eq "setFade" ) {
|
} elsif( $cmd eq "setFade" ) {
|
||||||
return (undef, "$arg2 not a valid rgb value" ) if( $arg2 !~ /^[\da-f]{6}$/i );
|
return (undef, "$arg2 not a valid rgb value" ) if( $arg2 !~ /^[\da-f]{6}$/i );
|
||||||
return (undef, "$arg3 not a valid time value" ) if( $arg3 !~ /^[\da-f]{1,3}$/i );
|
return (undef, "$arg3 not a valid time value" ) if( $arg3 !~ /^[\da-f]{1,3}$/i );
|
||||||
return( "regSet", CMD_REG, ret(CMD_SetFade."0".sprintf("%1X",$arg).$arg2.sprintf( "%02X",$arg3 ) ) ) if( $arg =~ /^(\d|0\d|1[0-5])$/ );
|
return( "regSet", CMD_REG, ret(CMD_SetFade."0".sprintf("%1X",$arg).$arg2.sprintf( "%02X",$arg3 ) ) ) if( $arg =~ /^(\d|0\d|1[0-5])$/ );
|
||||||
|
|
||||||
return (undef, "$arg not a valid fade register" );
|
return (undef, "$arg not a valid fade register" );
|
||||||
} elsif( $cmd eq "startFade" ) {
|
} elsif( $cmd eq "startFade" ) {
|
||||||
return (undef, "$arg is not a valid fade register number" ) if( $arg !~ /^(\d|0\d|1[0-5])$/ );
|
return (undef, "$arg is not a valid fade register number" ) if( $arg !~ /^(\d|0\d|1[0-5])$/ );
|
||||||
return( "regSet", CMD_REG, ret(CMD_StartFade."0".sprintf("%1X",$arg)."0".sprintf( "%1X",$arg2 ) ) ) if( $arg2 =~ /^(\d|0\d|1[0-5])$/ );
|
return( "regSet", CMD_REG, ret(CMD_StartFade."0".sprintf("%1X",$arg)."0".sprintf( "%1X",$arg2 ) ) ) if( $arg2 =~ /^(\d|0\d|1[0-5])$/ );
|
||||||
return (undef, "$arg2 not a valid fade register number" );
|
return (undef, "$arg2 not a valid fade register number" );
|
||||||
|
|
||||||
} elsif( $cmd eq "sendIR" ) {
|
} elsif( $cmd eq "sendIR" ) {
|
||||||
return( "regSet", CMD_REG, ret(CMD_SendIR.$arg ) ) if( $arg =~ /^[\da-f]{10}$/i );
|
return( "regSet", CMD_REG, ret(CMD_SendIR.$arg ) ) if( $arg =~ /^[\da-f]{10}$/i );
|
||||||
return (undef, "$arg is not a valid IR command" );
|
return (undef, "$arg is not a valid IR command" );
|
||||||
|
|
||||||
} elsif( $cmd eq "reset" ) {
|
} elsif( $cmd eq "reset" ) {
|
||||||
return( "regSet", CMD_REG, ret(CMD_RESET) );
|
return( "regSet", CMD_REG, ret(CMD_RESET) );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return undef;
|
return undef;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user