diff --git a/fhem/FHEM/98_DOIF.pm b/fhem/FHEM/98_DOIF.pm
index f147df678..26889ed4f 100644
--- a/fhem/FHEM/98_DOIF.pm
+++ b/fhem/FHEM/98_DOIF.pm
@@ -4285,8 +4285,8 @@ sub bar
$trans = -1;
} else {
$bwidth= 75 if (!defined $bwidth);
- $trans = 16;
- $bheight += 16;
+ $trans = 13;
+ $bheight += 13;
}
$bwidth=75 if (!defined $bwidth);
@@ -4330,7 +4330,7 @@ sub bar
$out.= sprintf('',$currColor,$minColor,color($currColor),color($minColor));
$out.= '';
$out.= sprintf('',$bwidth,$bheight);
- $out.= sprintf('%s',$bwidth/2+10,$header) if (defined $header and $header ne "");
+ $out.= sprintf('%s',$bwidth/2+10,$header) if (defined $header and $header ne "");
$out.= sprintf('',$trans);
my $nullColor;
my $null;
@@ -4394,58 +4394,84 @@ sub describeArc {
sub color {
- my ($hue)=@_;
+ my ($hue,$lightness)=@_;
if (substr($hue,0,1) eq "#") {
return ($hue);
}
my $l;
- if ($hue>180 and $hue<290) {
- $l=65;
+ if (defined $lightness) {
+ $l=$lightness;
} else {
- $l=50;
+ if ($hue>180 and $hue<290) {
+ $l=65;
+ } else {
+ $l=50;
+ }
}
return ("hsl($hue,100%,".$l."%)");
}
-
-sub temp_ring {
- my ($value,$min,$max,$size) = @_;
+sub temp_uring {
+ my ($value,$min,$max,$size,$type,$lightring,$lightnumber) = @_;
$min=-20 if (!defined $min);
$max=60 if (!defined $max);
$size=80 if (!defined $size);
- return(ring($value,$min,$max,undef,undef,"°C",$size,\&temp_hue,1));
+ return(ring($value,$min,$max,undef,undef,"°C",$size,\&temp_hue,1,$type,$lightring,$lightnumber));
+}
+
+sub temp_ring{
+ my ($value,$min,$max,$size,$lightring,$lightnumber) = @_;
+ return(temp_uring($value,$min,$max,$size,undef,$lightring,$lightnumber));
+}
+
+sub temp_mring{
+ my ($value,$min,$max,$size,$lightring,$lightnumber) = @_;
+ return(temp_uring($value,$min,$max,$size,1,$lightring,$lightnumber));
+}
+
+
+sub hum_uring {
+ my ($value,$size,$type,$lightring,$lightnumber) = @_;
+ $size=80 if (!defined $size);
+ return(ring($value,0,100,undef,undef,"%",$size,\&hum_hue,0,$type,$lightring,$lightnumber));
}
-sub hum_ring {
- my ($value,$size) = @_;
- $size=80 if (!defined $size);
- return(ring($value,0,100,undef,undef,"%",$size,\&hum_hue,0));
-}
+sub hum_ring{
+ my ($value,$size,$lightring,$lightnumber) = @_;
+ return(hum_uring($value,$size,undef,$lightring,$lightnumber));
+}
+
+sub hum_mring{
+ my ($value,$size,$lightring,$lightnumber) = @_;
+ return(hum_uring($value,$size,1,$lightring,$lightnumber));
+}
sub temp_hum_ring {
- my ($value,$value2,$min,$max,$size) = @_;
+ my ($value,$value2,$min,$max,$size,$lightring,$lightnumber) = @_;
$min=-20 if (!defined $min);
$max=60 if (!defined $max);
$size=90 if (!defined $size);
- return(ring2($value,$min,$max,undef,undef,"°C",$size,\&temp_hue,1,$value2,0,100,0,0,"%",\&hum_hue,0));
+ return(ring2($value,$min,$max,undef,undef,"°C",$size,\&temp_hue,1,$value2,0,100,0,0,"%",\&hum_hue,0,$lightring,$lightnumber));
}
sub temp_temp_ring {
- my ($value,$value2,$min,$max,$size) = @_;
+ my ($value,$value2,$min,$max,$size,$lightring,$lightnumber) = @_;
$min=-20 if (!defined $min);
$max=60 if (!defined $max);
$size=90 if (!defined $size);
- return(ring2($value,$min,$max,undef,undef,"°C",$size,\&temp_hue,1,$value2,$min,$max,undef,undef,"°C",\&temp_hue,1));
+ return(ring2($value,$min,$max,undef,undef,"°C",$size,\&temp_hue,1,$value2,$min,$max,undef,undef,"°C",\&temp_hue,1,$lightring,$lightnumber));
}
-
-
-
sub ring
{
- my ($val,$min,$max,$minColor,$maxColor,$unit,$size,$func,$dec) = @_;
+ my ($val,$min,$max,$minColor,$maxColor,$unit,$size,$func,$dec,$model,$lr,$ln) = @_;
my $out;
my ($format,$value);
+ if (defined $lr) {
+ if (!defined $ln) {
+ $ln=$lr;
+ }
+ }
$min=0 if (!defined $min);
$max=100 if (!defined $max);
@@ -4471,19 +4497,25 @@ sub ring
my $y=125-$val1;
my $currColor;
if (defined $func) {
+ if (defined($model)) {
+ $minColor=&{$func}($value);
+ }
$currColor=&{$func}($value);
} else {
if ($minColor < $maxColor) {
- $currColor=$prop*($maxColor-$minColor);
+ $currColor=$prop*($maxColor-$minColor)+$minColor;
} else {
- $currColor=(1-$prop)*($minColor-$maxColor);
+ $currColor=(1-$prop)*($minColor-$maxColor)+$maxColor;
+ }
+ if (defined($model)) {
+ $minColor=$currColor;
}
}
$out.= sprintf('';
return ($out);
}
+sub mring
+{
+ my ($val,$min,$max,$minColor,$maxColor,$unit,$size,$func,$dec,$lr,$ln) = @_;
+ return(ring($val,$min,$max,$minColor,$maxColor,$unit,$size,$func,$dec,1,$lr,$ln));
+}
+
sub ring2
{
- my ($val,$min,$max,$minColor,$maxColor,$unit,$size,$func,$dec,$val2,$min2,$max2,$minColor2,$maxColor2,$unit2,$func2,$dec2) = @_;
+ my ($val,$min,$max,$minColor,$maxColor,$unit,$size,$func,$dec,$val2,$min2,$max2,$minColor2,$maxColor2,$unit2,$func2,$dec2,$lr,$ln) = @_;
my $out;
my ($format,$value);
my ($format2,$value2);
-
+ if (defined $lr) {
+ if (!defined $ln) {
+ $ln=$lr;
+ }
+ }
$min=0 if (!defined $min);
$max=100 if (!defined $max);
$dec=1 if (!defined $dec);
@@ -4549,9 +4599,9 @@ sub ring2
$currColor=&{$func}($value);
} else {
if ($minColor < $maxColor) {
- $currColor=$prop*($maxColor-$minColor);
+ $currColor=$prop*($maxColor-$minColor)+$minColor;
} else {
- $currColor=(1-$prop)*($minColor-$maxColor);
+ $currColor=(1-$prop)*($minColor-$maxColor)+$maxColor;
}
}
@@ -4580,20 +4630,20 @@ sub ring2
$currColor2=&{$func2}($value2);
} else {
if ($minColor2 < $maxColor2) {
- $currColor2=$prop2*($maxColor2-$minColor2);
+ $currColor2=$prop2*($maxColor2-$minColor2)+$minColor2;
} else {
- $currColor2=(1-$prop2)*($minColor2-$maxColor2);
+ $currColor2=(1-$prop2)*($minColor2-$maxColor2)+$maxColor2;
}
}
$out.= sprintf('';
- $out.=sprintf('');
+ $out.=sprintf('');
$out.=describeArc(40, 30, 28.5, 0, 280);
$out.='';
- $out.=sprintf('');
+ $out.=sprintf('');
$out.=describeArc(40, 30, 22, 0, 280);
$out.='';
- $out.=sprintf('',$currColor,$minColor);
+ $out.=sprintf('',$currColor,$minColor,(defined $lr ? $lr:-1));
$out.=describeArc(40, 30, 27, 0, int($prop*280));
$out.='';
- $out.=sprintf('',$currColor2,$minColor2);
+ $out.=sprintf('',$currColor2,$minColor2,(defined $lr ? $lr:-1));
$out.=describeArc(40, 30, 23.5, 0, int($prop2*280));
$out.='';
-
- $out.=sprintf('',color($maxColor));
- $out.=describeArc(40, 30, 27, 273, 280);
+ $out.='';
+ $out.=describeArc(40, 30, 25.2, 0, 1.5);
$out.='';
- $out.=sprintf('',color($maxColor2));
- $out.=describeArc(40, 30, 23.5, 273, 280);
+ $out.='';
+ $out.=describeArc(40, 30, 25.2, 279, 280.5);
$out.='';
+ #$out.=sprintf('',color($maxColor));
+ #$out.=describeArc(40, 30, 27, 273, 280);
+ #$out.='';
+
+ #$out.=sprintf('',color($maxColor2));
+ #$out.=describeArc(40, 30, 23.5, 273, 280);
+ #$out.='';
- $out.= sprintf('%s',color($currColor),sprintf($format,$val));
- $out.= sprintf('%s',color($currColor),$unit) if (defined $unit);
+ $out.= sprintf('%s',color($currColor,$ln),sprintf($format,$val));
+ $out.= sprintf('%s',color($currColor,$ln),$unit) if (defined $unit);
- $out.= sprintf('%s',color($currColor2),sprintf($format2,$val2));
- $out.= sprintf('%s',color($currColor2),$unit2) if (defined $unit2);
+ $out.= sprintf('%s',color($currColor2,$ln),sprintf($format2,$val2));
+ $out.= sprintf('%s',color($currColor2,$ln),$unit2) if (defined $unit2);
$out.= '';
return ($out);