2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-03-13 11:16:36 +00:00

bugfix: defaults of additional warnings overwrite actual state

git-svn-id: https://svn.fhem.de/fhem/trunk@564 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
m_fischer 2010-01-22 19:25:47 +00:00
parent 219bbce1a3
commit b7beae1491

View File

@ -99,6 +99,13 @@ my %cantset = (
"windowsensor" => 1,
);
# additional warnings
my %warnings = (
"battery" => 1,
"lowtemp" => 1,
"window" => 1,
"windowsensor" => 1,
);
my %priority = (
"desired-temp"=> 1,
@ -288,7 +295,7 @@ FHT_SetState($$$$)
return "Ignoring FHZ state" if($vt =~ m/^FHZ:/);
$vt =~ s/^FHZ://;
return "Undefined type $vt" if(!defined($c2b{$vt}));
return "Undefined type $vt" if(!defined($c2b{$vt}) && !defined($warnings{$vt}));
return undef;
}
@ -374,24 +381,8 @@ FHT_Parse($$)
my $tn = TimeNow();
###########################
# Set default values for battery, lowtemp, window and windowsensor warnings.
my $warnBattery = "ok";
my $warnTempLow = "ok";
my $warnWindowSensor = "ok";
my $warnWindow = "closed";
$def->{READINGS}{'battery'}{TIME} = $tn;
$def->{READINGS}{'battery'}{VAL} = $warnBattery;
$def->{READINGS}{'lowtemp'}{TIME} = $tn;
$def->{READINGS}{'lowtemp'}{VAL} = $warnTempLow;
$def->{READINGS}{'window'}{TIME} = $tn;
$def->{READINGS}{'window'}{VAL} = $warnWindow;
$def->{READINGS}{'windowsensor'}{TIME} = $tn;
$def->{READINGS}{'windowsensor'}{VAL} = $warnWindowSensor;
# counter for notifies
my $nc = 0;
###########################
# Reformat the values so they are readable.
@ -453,32 +444,66 @@ FHT_Parse($$)
} elsif($cmd eq "warnings") {
my $nVal;
# initialize values for additional warnings
my $valBattery;
my $valLowTemp;
my $valWindow;
my $valSensor;
my $nBattery;
my $nLowTemp;
my $nWindow;
my $nSensor;
# parse warnings
if($val & 1) {
$nVal = "Battery low";
$warnBattery = "low";
$def->{READINGS}{'battery'}{TIME} = $tn;
$def->{READINGS}{'battery'}{VAL} = $warnBattery;
$nBattery = "low";
}
if($val & 2) {
$nVal .= "; " if($nVal); $nVal .= "Temperature too low";
$warnTempLow = "warn";
$def->{READINGS}{'lowtemp'}{TIME} = $tn;
$def->{READINGS}{'lowtemp'}{VAL} = $warnTempLow;
}
$nLowTemp = "warn";
}
if($val &32) {
$nVal .= "; " if($nVal); $nVal .= "Window open";
$warnWindow = "open";
$def->{READINGS}{'window'}{TIME} = $tn;
$def->{READINGS}{'window'}{VAL} = $warnWindow;
}
$nWindow = "open";
}
if($val &16) {
$nVal .= "; " if($nVal); $nVal .= "Fault on window sensor";
$warnWindowSensor = "fault";
$def->{READINGS}{'windowsensor'}{TIME} = $tn;
$def->{READINGS}{'windowsensor'}{VAL} = $warnWindowSensor;
$nSensor = "fault";
}
# set default values or new values if they were changed
$valBattery = $nBattery? $nBattery : "ok";
$valLowTemp = $nLowTemp? $nLowTemp : "ok";
$valWindow = $nWindow? $nWindow : "closed";
$valSensor = $nSensor? $nSensor : "ok";
$val = $nVal? $nVal : "none";
# set additional warnings and trigger notify
$def->{READINGS}{'battery'}{TIME} = $tn;
$def->{READINGS}{'battery'}{VAL} = $valBattery;
$def->{CHANGED}[$nc] = "battery: $valBattery";
Log 4, "FHT $name battery: $valBattery";
$nc++;
$def->{READINGS}{'lowtemp'}{TIME} = $tn;
$def->{READINGS}{'lowtemp'}{VAL} = $valLowTemp;
$def->{CHANGED}[$nc] = "lowtemp: $valLowTemp";
Log 4, "FHT $name lowtemp: $valLowTemp";
$nc++;
$def->{READINGS}{'window'}{TIME} = $tn;
$def->{READINGS}{'window'}{VAL} = $valWindow;
$def->{CHANGED}[$nc] = "window: $valWindow";
Log 4, "FHT $name window: $valWindow";
$nc++;
$def->{READINGS}{'windowsensor'}{TIME} = $tn;
$def->{READINGS}{'windowsensor'}{VAL} = $valSensor;
$def->{CHANGED}[$nc] = "windowsensor: $valSensor";
Log 4, "FHT $name windowsensor: $valSensor";
$nc++;
}
if(substr($msg,24,1) eq "7") {
@ -488,22 +513,10 @@ FHT_Parse($$)
$def->{READINGS}{$cmd}{VAL} = $val;
$def->{STATE} = "$cmd: $val" if($cmd eq "measured-temp");
}
$def->{CHANGED}[0] = "$cmd: $val";
$def->{CHANGED}[$nc] = "$cmd: $val";
Log 4, "FHT $name $cmd: $val";
if ($cmd eq "warnings") {
$def->{CHANGED}[1] = "battery: $warnBattery";
Log 4, "FHT $name battery: $warnBattery";
$def->{CHANGED}[2] = "lowtemp: $warnTempLow";
Log 4, "FHT $name lowtemp: $warnTempLow";
$def->{CHANGED}[3] = "window: $warnWindow";
Log 4, "FHT $name window: $warnWindow";
$def->{CHANGED}[4] = "windowsensor: $warnWindowSensor";
Log 4, "FHT $name windowsensor: $warnWindowSensor";
}
################################
# Softbuffer: delete confirmed commands
if($confirm) {