2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-04-22 08:11:44 +00:00

59_HCS: Simplify idle/demand condition implementation.

git-svn-id: https://svn.fhem.de/fhem/trunk@15866 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
hjr 2018-01-13 10:47:22 +00:00
parent fd6068e2ac
commit 305a04256f

View File

@ -522,9 +522,7 @@ HCS_getValues($$) {
if($td eq " n/a" || $tm eq " n/a") { if($td eq " n/a" || $tm eq " n/a") {
$delta = " n/a"; $delta = " n/a";
} else { } else {
$delta = sprintf(" %.1f",$td-$tm); $delta = sprintf("%+5.1f",$tm-$td);
$delta = sprintf("+%.1f",$tm-$td) if($tm > $td);
$delta = sprintf("-%.1f",$td-$tm) if($td > $tm);
} }
$str .= sprintf("%-${ln}s: desired: %s°C measured: %s°C delta: %s valve: %${lv}d%% state: %s\n", $str .= sprintf("%-${ln}s: desired: %s°C measured: %s°C delta: %s valve: %${lv}d%% state: %s\n",
$d,$td,$tm,$delta,$act,$info); $d,$td,$tm,$delta,$act,$info);
@ -601,7 +599,6 @@ HCS_getValues($$) {
my $act = $devs{$d}{actuator}; my $act = $devs{$d}{actuator};
my $tm = $devs{$d}{tempMeasured}; my $tm = $devs{$d}{tempMeasured};
my $td = $devs{$d}{tempDesired}; my $td = $devs{$d}{tempDesired};
my $delta;
my $str; my $str;
if(!$hash->{helper}{device}{$d}{demand}) { if(!$hash->{helper}{device}{$d}{demand}) {
@ -613,37 +610,20 @@ HCS_getValues($$) {
my $tOn = AttrVal($name,"thermostatThresholdOn",$defaults{thermostatThresholdOn}); my $tOn = AttrVal($name,"thermostatThresholdOn",$defaults{thermostatThresholdOn});
my $tOff = AttrVal($name,"thermostatThresholdOff",$defaults{thermostatThresholdOff}); my $tOff = AttrVal($name,"thermostatThresholdOff",$defaults{thermostatThresholdOff});
if($tm > $td && $tm-$td >= $tOff) { if( $tm >= $td + $tOff ) {
$devState = "idle"; $devState = "idle";
$hash->{helper}{device}{$d}{demand} = 0; $hash->{helper}{device}{$d}{demand} = 0;
$delta = $tm-$td;
$str = sprintf("desired: %4.1f measured: %4.1f delta: +%.1f open: %${lv}d%% state: %s",$td,$tm,$delta,$act,$devState);
$sumIdle++; $sumIdle++;
} elsif($td > $tm && $td-$tm >= $tOn) { } elsif( $tm <= $td - $tOn ) {
$devState = "demand"; $devState = "demand";
$hash->{helper}{device}{$d}{demand} = 1; $hash->{helper}{device}{$d}{demand} = 1;
$delta = $td-$tm;
$str = sprintf("desired: %4.1f measured: %4.1f delta: -%.1f open: %${lv}d%% state: %s",$td,$tm,$delta,$act,$devState);
$sumDemand++; $sumDemand++;
} elsif($tm > $td) {
$devState = $lastState;
$delta = $tm-$td;
$str = sprintf("desired: %4.1f measured: %4.1f delta: +%.1f open: %${lv}d%% state: %s",$td,$tm,$delta,$act,$devState);
$sumIdle++ if($devState eq "idle");
$sumDemand++ if($devState eq "demand");
} elsif($td > $tm) {
$devState = $lastState;
$delta = $td-$tm;
$str = sprintf("desired: %4.1f measured: %4.1f delta: -%.1f open: %${lv}d%% state: %s",$td,$tm,$delta,$act,$devState);
$sumIdle++ if($devState eq "idle");
$sumDemand++ if($devState eq "demand");
} else { } else {
$devState = $lastState; $devState = $lastState;
$delta = $td-$tm;
$str = sprintf("desired: %4.1f measured: %4.1f delta: %.1f open: %${lv}d%% state: %s",$td,$tm,$delta,$act,$devState);
$sumIdle++ if($devState eq "idle"); $sumIdle++ if($devState eq "idle");
$sumDemand++ if($devState eq "demand"); $sumDemand++ if($devState eq "demand");
} }
$str = sprintf("desired: %4.1f measured: %4.1f d: %+5.1f open: %${lv}d%% state: %s",$td,$tm,$tm-$td,$act,$devState);
} elsif($mode eq "valve") { } elsif($mode eq "valve") {
my $vOn = AttrVal($name,"valveThresholdOn",$defaults{valveThresholdOn}); my $vOn = AttrVal($name,"valveThresholdOn",$defaults{valveThresholdOn});
my $vOff = AttrVal($name,"valveThresholdOff",$defaults{valveThresholdOff}); my $vOff = AttrVal($name,"valveThresholdOff",$defaults{valveThresholdOff});
@ -670,12 +650,8 @@ HCS_getValues($$) {
$hash->{helper}{device}{$d}{demand} = 0; $hash->{helper}{device}{$d}{demand} = 0;
$sumIdle++; $sumIdle++;
} }
} }
$delta = sprintf(" %.1f",$td-$tm); $str = sprintf("desired: %4.1f measured: %4.1f delta: %+5.1f valve: %${lv}d%% state: %s",$td,$tm,$tm-$td,$valve,$devState);
$delta = sprintf("+%.1f",$tm-$td) if($tm > $td);
$delta = sprintf("-%.1f",$td-$tm) if($td > $tm);
$str = sprintf("desired: %4.1f measured: %4.1f delta: %s valve: %${lv}d%% state: %s",$td,$tm,$delta,$valve,$devState);
} }
Log3 $name, 4, "$type $name $d: $str"; Log3 $name, 4, "$type $name $d: $str";