mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-04-17 05:16:02 +00:00
CUL fhtsoftbuffer fixes
git-svn-id: https://svn.fhem.de/fhem/trunk@745 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
12b4ff6fe4
commit
d6d23be0f7
@ -379,16 +379,22 @@ FHT_Parse($$)
|
|||||||
my $name = $def->{NAME};
|
my $name = $def->{NAME};
|
||||||
return "" if(IsIgnored($name));
|
return "" if(IsIgnored($name));
|
||||||
|
|
||||||
|
my $io = $def->{IODev};
|
||||||
|
my $ll4 = GetLogLevel($name,4);
|
||||||
|
|
||||||
# Short message
|
# Short message
|
||||||
if(length($msg) < 26) {
|
if(length($msg) < 26) {
|
||||||
Log 4,"FHT Short message. Device $name, Message: $msg";
|
Log $ll4,"FHT Short message. Device $name, Message: $msg";
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!$val || $cde eq "65" || $cde eq "66") {
|
if($io->{TYPE} eq "CUL") {
|
||||||
|
$confirm = 1;
|
||||||
|
|
||||||
|
} elsif(!$val || $cde eq "65" || $cde eq "66") {
|
||||||
# This is a confirmation message. We reformat it so that
|
# This is a confirmation message. We reformat it so that
|
||||||
# it looks like a real message, and let the rest parse it
|
# it looks like a real message, and let the rest parse it
|
||||||
Log 4, "FHT $name confirmation: $cde";
|
Log $ll4, "FHT $name confirmation: $cde";
|
||||||
$val = substr($msg, 22, 2);
|
$val = substr($msg, 22, 2);
|
||||||
$confirm = 1;
|
$confirm = 1;
|
||||||
}
|
}
|
||||||
@ -397,7 +403,7 @@ FHT_Parse($$)
|
|||||||
|
|
||||||
my $cmd = $codes{$cde};
|
my $cmd = $codes{$cde};
|
||||||
if(!$cmd) {
|
if(!$cmd) {
|
||||||
Log 4, "FHT $name (Unknown: $cde => $val)";
|
Log $ll4, "FHT $name (Unknown: $cde => $val)";
|
||||||
$def->{CHANGED}[0] = "unknown_$cde: $val";
|
$def->{CHANGED}[0] = "unknown_$cde: $val";
|
||||||
return $name;
|
return $name;
|
||||||
}
|
}
|
||||||
@ -507,30 +513,31 @@ FHT_Parse($$)
|
|||||||
$def->{READINGS}{'battery'}{TIME} = $tn;
|
$def->{READINGS}{'battery'}{TIME} = $tn;
|
||||||
$def->{READINGS}{'battery'}{VAL} = $valBattery;
|
$def->{READINGS}{'battery'}{VAL} = $valBattery;
|
||||||
$def->{CHANGED}[$nc] = "battery: $valBattery";
|
$def->{CHANGED}[$nc] = "battery: $valBattery";
|
||||||
Log 4, "FHT $name battery: $valBattery";
|
Log $ll4, "FHT $name battery: $valBattery";
|
||||||
$nc++;
|
$nc++;
|
||||||
|
|
||||||
$def->{READINGS}{'lowtemp'}{TIME} = $tn;
|
$def->{READINGS}{'lowtemp'}{TIME} = $tn;
|
||||||
$def->{READINGS}{'lowtemp'}{VAL} = $valLowTemp;
|
$def->{READINGS}{'lowtemp'}{VAL} = $valLowTemp;
|
||||||
$def->{CHANGED}[$nc] = "lowtemp: $valLowTemp";
|
$def->{CHANGED}[$nc] = "lowtemp: $valLowTemp";
|
||||||
Log 4, "FHT $name lowtemp: $valLowTemp";
|
Log $ll4, "FHT $name lowtemp: $valLowTemp";
|
||||||
$nc++;
|
$nc++;
|
||||||
|
|
||||||
$def->{READINGS}{'window'}{TIME} = $tn;
|
$def->{READINGS}{'window'}{TIME} = $tn;
|
||||||
$def->{READINGS}{'window'}{VAL} = $valWindow;
|
$def->{READINGS}{'window'}{VAL} = $valWindow;
|
||||||
$def->{CHANGED}[$nc] = "window: $valWindow";
|
$def->{CHANGED}[$nc] = "window: $valWindow";
|
||||||
Log 4, "FHT $name window: $valWindow";
|
Log $ll4, "FHT $name window: $valWindow";
|
||||||
$nc++;
|
$nc++;
|
||||||
|
|
||||||
$def->{READINGS}{'windowsensor'}{TIME} = $tn;
|
$def->{READINGS}{'windowsensor'}{TIME} = $tn;
|
||||||
$def->{READINGS}{'windowsensor'}{VAL} = $valSensor;
|
$def->{READINGS}{'windowsensor'}{VAL} = $valSensor;
|
||||||
$def->{CHANGED}[$nc] = "windowsensor: $valSensor";
|
$def->{CHANGED}[$nc] = "windowsensor: $valSensor";
|
||||||
Log 4, "FHT $name windowsensor: $valSensor";
|
Log $ll4, "FHT $name windowsensor: $valSensor";
|
||||||
$nc++;
|
$nc++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(substr($msg,24,1) eq "7") { # Do not store FHZ acks.
|
if(substr($msg,24,1) eq "7") { # Do not store FHZ acks.
|
||||||
$cmd = "FHZ:$cmd";
|
$cmd = "FHZ:$cmd";
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
$def->{READINGS}{$cmd}{TIME} = $tn;
|
$def->{READINGS}{$cmd}{TIME} = $tn;
|
||||||
$def->{READINGS}{$cmd}{VAL} = $val;
|
$def->{READINGS}{$cmd}{VAL} = $val;
|
||||||
@ -538,21 +545,20 @@ FHT_Parse($$)
|
|||||||
}
|
}
|
||||||
$def->{CHANGED}[$nc] = "$cmd: $val";
|
$def->{CHANGED}[$nc] = "$cmd: $val";
|
||||||
|
|
||||||
Log 4, "FHT $name $cmd: $val";
|
Log $ll4, "FHT $name $cmd: $val";
|
||||||
|
|
||||||
################################
|
################################
|
||||||
# Softbuffer: delete confirmed commands
|
# Softbuffer: delete confirmed commands
|
||||||
if($confirm) {
|
if($confirm) {
|
||||||
my $found;
|
my $found;
|
||||||
my $io = $def->{IODev};
|
|
||||||
foreach my $key (sort keys %{$io->{SOFTBUFFER}}) {
|
foreach my $key (sort keys %{$io->{SOFTBUFFER}}) {
|
||||||
my $h = $io->{SOFTBUFFER}{$key};
|
my $h = $io->{SOFTBUFFER}{$key};
|
||||||
my $hcmd = $h->{CMD};
|
my $hcmd = $h->{CMD};
|
||||||
my $hname = $h->{HASH}->{NAME};
|
my $hname = $h->{HASH}->{NAME};
|
||||||
Log 4, "FHT softbuffer check: $hname / $hcmd";
|
Log $ll4, "FHT softbuffer check: $hname / $hcmd";
|
||||||
if($hname eq $name && $hcmd =~ m/^$cmd $val/) {
|
if($hname eq $name && $hcmd =~ m/^$cmd $val/) {
|
||||||
$found = $key;
|
$found = $key;
|
||||||
Log 4, "FHT softbuffer found";
|
Log $ll4, "FHT softbuffer found";
|
||||||
last;
|
last;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user