2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-04-21 20:06:18 +00:00

some cleanup and minor improvement

git-svn-id: https://svn.fhem.de/fhem/trunk@4705 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
martinp876 2014-01-21 12:37:15 +00:00
parent f0e23d4608
commit b53f32cfb2
2 changed files with 19 additions and 39 deletions

View File

@ -195,34 +195,16 @@ sub HMLAN_Attr(@) {############################################################
return "illegal number:$no" if (hex($no) < 1 || hex($no) > 255 || length($no) != 2); return "illegal number:$no" if (hex($no) < 1 || hex($no) > 255 || length($no) != 2);
} }
$attr{$name}{$aName} = "$no:". $attr{$name}{$aName} = "$no:".
(($val =~ m /^[0-9A-Fa-f]{32}$/ )? (($val =~ m /^[0-9A-Fa-f]{32}$/ )
$val: ? $val
unpack('H*', md5($val))); : unpack('H*', md5($val)));
$retVal = "$aName set to $attr{$name}{$aName}" $retVal = "$aName set to $attr{$name}{$aName}"
if($aVal ne $attr{$name}{$aName}); if($aVal ne $attr{$name}{$aName});
} }
else{ else{
delete $attr{$name}{$aName}; delete $attr{$name}{$aName};
} }
my ($k1no,$k1,$k2no,$k2,$k3no,$k3,$k4no,$k4,$k5no,$k5) HMLAN_writeAesKey($name);
=( "01",AttrVal($name,"hmKey","")
,"02",AttrVal($name,"hmKey2","")
,"03",AttrVal($name,"hmKey3","")
,"04",AttrVal($name,"hmKey4","")
,"05",AttrVal($name,"hmKey5","")
);
if ($k1 =~ m/:/){($k1no,$k1) = split(":",$k1);}
if ($k2 =~ m/:/){($k2no,$k2) = split(":",$k2);}
if ($k3 =~ m/:/){($k3no,$k3) = split(":",$k3);}
if ($k4 =~ m/:/){($k4no,$k4) = split(":",$k4);}
if ($k5 =~ m/:/){($k5no,$k5) = split(":",$k5);}
HMLAN_SimpleWrite($defs{$name}, "Y01,".($k1?"$k1no,$k1":"00,"));
HMLAN_SimpleWrite($defs{$name}, "Y02,".($k2?"$k2no,$k2":"00,"));
HMLAN_SimpleWrite($defs{$name}, "Y03,".($k3?"$k3no,$k3":"00,"));
HMLAN_SimpleWrite($defs{$name}, "Y04,".($k4?"$k4no,$k4":"00,"));
HMLAN_SimpleWrite($defs{$name}, "Y05,".($k5?"$k5no,$k5":"00,"));
return $retVal; return $retVal;
} }
elsif($aName eq "hmMsgLowLimit"){ elsif($aName eq "hmMsgLowLimit"){
@ -763,33 +745,19 @@ sub HMLAN_DoInit($) {##########################################################
my $name = $hash->{NAME}; my $name = $hash->{NAME};
my $id = AttrVal($name, "hmId", "999999"); my $id = AttrVal($name, "hmId", "999999");
my ($k1no,$k1,$k2no,$k2,$k3no,$k3)
=( "01",AttrVal($name,"hmKey","")
,"02",AttrVal($name,"hmKey2","")
,"03",AttrVal($name,"hmKey3","")
,"04",AttrVal($name,"hmKey4","")
,"05",AttrVal($name,"hmKey5","")
);
if ($k1 =~ m/:/){($k1no,$k1) = split(":",$k1);}
if ($k2 =~ m/:/){($k2no,$k2) = split(":",$k2);}
if ($k3 =~ m/:/){($k3no,$k3) = split(":",$k3);}
my $s2000 = sprintf("%02X", HMLAN_secSince2000());
delete $hash->{READINGS}{state}; delete $hash->{READINGS}{state};
HMLAN_SimpleWrite($hash, "A$id") if($id ne "999999"); HMLAN_SimpleWrite($hash, "A$id") if($id ne "999999");
HMLAN_SimpleWrite($hash, "C"); HMLAN_SimpleWrite($hash, "C");
HMLAN_SimpleWrite($defs{$name}, "Y01,".($k1?"$k1no,$k1":"00,")); HMLAN_writeAesKey($name);
HMLAN_SimpleWrite($defs{$name}, "Y02,".($k2?"$k2no,$k2":"00,"));
HMLAN_SimpleWrite($defs{$name}, "Y03,".($k3?"$k3no,$k3":"00,"));
HMLAN_SimpleWrite($hash, "T$s2000,04,00,00000000");
delete $hash->{helper}{ref}; delete $hash->{helper}{ref};
HMLAN_condUpdate($hash,0xff); HMLAN_condUpdate($hash,0xff);
$hash->{helper}{q}{cap}{$_}=0 foreach (keys %{$hash->{helper}{q}{cap}}); $hash->{helper}{q}{cap}{$_}=0 foreach (keys %{$hash->{helper}{q}{cap}});
foreach (keys %{$hash->{helper}{assIDs}}){delete ($hash->{helper}{assIDs}{$_})};# clear IDs - HMLAN might have a reset foreach (keys %{$hash->{helper}{assIDs}}){delete ($hash->{helper}{assIDs}{$_})};# clear IDs - HMLAN might have a reset
delete ($hash->{helper}{assIDs}{$_}) foreach (keys %{$hash->{helper}{assIDs}});# clear IDs - HMLAN might have a reset
$hash->{helper}{q}{keepAliveRec} = 1; # ok for first time $hash->{helper}{q}{keepAliveRec} = 1; # ok for first time
$hash->{helper}{q}{keepAliveRpt} = 0; # ok for first time $hash->{helper}{q}{keepAliveRpt} = 0; # ok for first time
@ -806,6 +774,16 @@ sub HMLAN_DoInit($) {##########################################################
return undef; return undef;
} }
sub HMLAN_writeAesKey($) {#####################################################
my ($name) = @_;
my ($k,$kNo);
foreach my $i (1..5){
($kNo,$k) = ("0".$i,AttrVal($name,"hmKey".($i== 1?"":$i),""));
($kNo,$k) = split(":",$k);
HMLAN_SimpleWrite($defs{$name}, "Y0$i,".($k?"$kNo,$k":"00,"));
}
}
sub HMLAN_KeepAlive($) {####################################################### sub HMLAN_KeepAlive($) {#######################################################
my($in ) = shift; my($in ) = shift;
my(undef,$name) = split(':',$in); my(undef,$name) = split(':',$in);

View File

@ -3167,6 +3167,7 @@ sub CUL_HM_Set($@) {
if ($a[2] eq "off"){ if ($a[2] eq "off"){
$state = "ValveAdjust:stopped"; $state = "ValveAdjust:stopped";
RemoveInternalTimer("valvePos:$dst$chn");# remove responsePending timer RemoveInternalTimer("valvePos:$dst$chn");# remove responsePending timer
RemoveInternalTimer("valveTmr:$dst$chn");# remove responsePending timer
delete($hash->{helper}{virtTC}); delete($hash->{helper}{virtTC});
} }
else { else {
@ -3184,6 +3185,7 @@ sub CUL_HM_Set($@) {
$hash->{helper}{vd}{idl} = hex(substr($dst,4,2))*256; $hash->{helper}{vd}{idl} = hex(substr($dst,4,2))*256;
$hash->{helper}{vd}{msgCnt} = 1 if (!defined $hash->{helper}{vd}{msgCnt}); $hash->{helper}{vd}{msgCnt} = 1 if (!defined $hash->{helper}{vd}{msgCnt});
if (!$hash->{helper}{virtTC}){ if (!$hash->{helper}{virtTC}){
$hash->{helper}{vd}{ackT} = "" if (!defined$hash->{helper}{vd}{ackT});
$hash->{helper}{vd}{next} = gettimeofday() $hash->{helper}{vd}{next} = gettimeofday()
if (!defined $hash->{helper}{vd}{next}); if (!defined $hash->{helper}{vd}{next});
$hash->{helper}{virtTC} = "03"; $hash->{helper}{virtTC} = "03";