2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-04-17 11:26:03 +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);
}
$attr{$name}{$aName} = "$no:".
(($val =~ m /^[0-9A-Fa-f]{32}$/ )?
$val:
unpack('H*', md5($val)));
(($val =~ m /^[0-9A-Fa-f]{32}$/ )
? $val
: unpack('H*', md5($val)));
$retVal = "$aName set to $attr{$name}{$aName}"
if($aVal ne $attr{$name}{$aName});
}
else{
delete $attr{$name}{$aName};
}
my ($k1no,$k1,$k2no,$k2,$k3no,$k3,$k4no,$k4,$k5no,$k5)
=( "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,"));
HMLAN_writeAesKey($name);
return $retVal;
}
elsif($aName eq "hmMsgLowLimit"){
@ -763,33 +745,19 @@ sub HMLAN_DoInit($) {##########################################################
my $name = $hash->{NAME};
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};
HMLAN_SimpleWrite($hash, "A$id") if($id ne "999999");
HMLAN_SimpleWrite($hash, "C");
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($hash, "T$s2000,04,00,00000000");
HMLAN_writeAesKey($name);
delete $hash->{helper}{ref};
HMLAN_condUpdate($hash,0xff);
$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
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}{keepAliveRpt} = 0; # ok for first time
@ -806,6 +774,16 @@ sub HMLAN_DoInit($) {##########################################################
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($) {#######################################################
my($in ) = shift;
my(undef,$name) = split(':',$in);

View File

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