diff --git a/fhem/CHANGED b/fhem/CHANGED index 06d78b302..5bbc5f002 100644 --- a/fhem/CHANGED +++ b/fhem/CHANGED @@ -1,5 +1,6 @@ # Add changes at the top of the list. Keep it in ASCII - SVN + - feature: HUEDevice: allow usage of openautomation svg icons - feature: FHEMWEB: svg icons / iconPath / www/images/openautomation added - feature: FHEMWEB: SVGcache attribute & clearSvgCache set command added - feature: SYSSTAT: allow (remote) monitoring raspberry pi on cpu frequency diff --git a/fhem/FHEM/31_HUEDevice.pm b/fhem/FHEM/31_HUEDevice.pm index 03e56a736..e3d12ecbf 100644 --- a/fhem/FHEM/31_HUEDevice.pm +++ b/fhem/FHEM/31_HUEDevice.pm @@ -58,10 +58,47 @@ sub HUEDevice_Initialize($) "model:".join(",", sort keys %hueModels)." ". "subType:colordimmer,dimmer,switch"; + #$hash->{FW_summaryFn} = "HUEDevice_summaryFn"; + $data{webCmdFn}{colorpicker} = "HUEDevice_colorpickerFn"; $data{FWEXT}{"/"}{SCRIPT} = "/jscolor/jscolor.js"; } +sub +HUEDevice_devStateIcon($) +{ + my($hash) = @_; + $hash = $defs{$hash} if( ref($hash) ne 'HASH' ); + + return undef if( !$hash ); + + my $name = $hash->{NAME}; + + return undef + if( ReadingsVal($name,"state","off") eq "off" || ReadingsVal($name,"bri","0") eq 0 ); + + return undef + if( AttrVal($name, "model", "") eq "LWL001" ); + + return '
'. + ''.$hash->{STATE}.''. + '
' if( ReadingsVal($name,"colormode","") eq "ct" ); + + return '
'; +} +sub +HUEDevice_summaryFn($$$$) +{ +Log 3, "HUEDevice_summaryFn"; + my ($FW_wname, $d, $room, $pageHash) = @_; # pageHash is set for summaryFn. + my $hash = $defs{$d}; + my $name = $hash->{NAME}; + + return HUEDevice_devStateIcon($hash); +} + sub HUEDevice_colorpickerFn($$$) { @@ -120,7 +157,7 @@ sub HUEDevice_Define($$) $hash->{fhem}{xy} = ''; - $attr{$name}{devStateIcon} = '{(CommandGet("","'.$name.' devStateIcon"),"toggle")}' if( !defined( $attr{$name}{devStateIcon} ) ); + $attr{$name}{devStateIcon} = '{(HUEDevice_devStateIcon($name),"toggle")}' if( !defined( $attr{$name}{devStateIcon} ) ); AssignIoPort($hash); if(defined($hash->{IODev}->{NAME})) { @@ -379,19 +416,7 @@ HUEDevice_Get($@) } return sprintf( "%02x%02x%02x", $r+0.5, $g+0.5, $b+0.5 ); } elsif ( $cmd eq "devStateIcon" ) { - return 'off' - if( ReadingsVal($name,"state","off") eq "off" || ReadingsVal($name,"bri","0") eq 0 ); - - return ''.$hash->{STATE}.'' - if( AttrVal($hash->{NAME}, "model", "") eq "LWL001" ); - - return '
'. - ''.$hash->{STATE}.''. - '
' if( ReadingsVal($name,"colormode","") eq "ct" ); - - return '
'; + return HUEDevice_devStateIcon($hash); } return "Unknown argument $cmd, choose one of rgb devStateIcon"; @@ -462,7 +487,8 @@ HUEDevice_GetUpdate($) || !defined($attr{$name}{model}) || !defined($hueModels{$attr{$name}{model}}{subType}) ); - $attr{$name}{devStateIcon} = '{CommandGet("","'.$name.' devStateIcon")}'; + $attr{$name}{devStateIcon} = '{(HUEDevice_devStateIcon($name),"toggle")}' if( !defined( $attr{$name}{devStateIcon} ) ); + if( !defined( $attr{$name}{webCmd} ) ) { $attr{$name}{webCmd} = 'rgb:rgb ff0000:rgb C8FF12:rgb 0000ff:toggle:on:off' if( $attr{$name}{subType} eq "colordimmer" ); $attr{$name}{webCmd} = 'pct:toggle:on:off' if( $attr{$name}{subType} eq "dimmer" ); @@ -557,7 +583,7 @@ HUEDevice_GetUpdate($)
- + Readings