2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-04-16 10:46:03 +00:00

dug fixes

git-svn-id: https://svn.fhem.de/fhem/trunk@3017 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
martinp876 2013-04-01 18:27:38 +00:00
parent 550c577c01
commit 7683d7e241

View File

@ -228,7 +228,7 @@ sub CUL_HM_updateConfig($){
push @getConfList,$name if (0 != substr(AttrVal($name,"autoReadReg","0"),0,1));
}
$modules{CUL_HM}{helper}{updtCfgLst} = \@getConfList;
CUL_HM_autoReadConfig("updateConfig");
#General log CUL_HM_autoReadConfig("updateConfig");
}
sub CUL_HM_Define($$) {##############################
my ($hash, $def) = @_;
@ -824,7 +824,7 @@ sub CUL_HM_Parse($$) {##############################
}
else{ #invalid PhysLevel
InternalTimer(gettimeofday()+3,"CUL_HM_stateUpdat","sUpdt:".
$shash->{NAME},0);
$name,0);# update for device!
}
}
}
@ -1101,19 +1101,17 @@ sub CUL_HM_Parse($$) {##############################
#Info Level: msgType=0x10 p(..)(..)(..)(..) subty=06, chn, state,err (3bit)
#AckStatus: msgType=0x02 p(..)(..)(..)(..) subty=01, chn, state,err (3bit)
my ($chn,$state,$err,$cnt); #define locals
if($msgType eq "10" || $msgType eq "02"){
my $mT = $msgType.substr($p,0,2);
if ($mT eq "1006" ||$$mT eq "0201"){
$p =~ m/^..(..)(..)(..)?$/;
($chn,$state,$err) = (hex($1), $2, hex($3));
$chn = sprintf("%02X",$chn&0x3f);
$shash = $modules{CUL_HM}{defptr}{"$src$chn"}
if(($msgType eq "10" && $p =~ m/^06/) ||
($msgType eq "02" && $p =~ m/^01/)) {
$p =~ m/^..(..)(..)(..)?$/;
($chn,$state,$err) = (hex($1), $2, hex($3));
$chn = sprintf("%02X",$chn&0x3f);
$shash = $modules{CUL_HM}{defptr}{"$src$chn"}
if($modules{CUL_HM}{defptr}{"$src$chn"});
push @event, "alive:yes";
push @event, "battery:". (($err&0x80)?"low" :"ok" );
if ($model ne "HM-SEC-WDS"){
push @event, "cover:". (($err&0x0E)?"open" :"closed");
}
push @event, "alive:yes";
push @event, "battery:". (($err&0x80)?"low" :"ok" );
if ($model ne "HM-SEC-WDS"){
push @event, "cover:". (($err&0x0E)?"open" :"closed");
}
}
elsif($msgType eq "41"){
@ -2050,7 +2048,7 @@ sub CUL_HM_Set($@) {
$eSec += 3600*24 if ($ltSec > $eSec); # go for the next day
$duration = $eSec - $ltSec;
}
return "please enter the duration in seconds" if (!defined ($duration));
return "please enter the duration in seconds" if (!defined $duration || $duration !~ m/^[+-]?\d+(\.\d+)?$/);
my $tval = CUL_HM_encodeTime16($duration);# onTime 0.0..85825945.6, 0=forever
CUL_HM_PushCmdStack($hash,'++'.$flag.'11'.$id.$dst.'02'.$chn.'C80000'.$tval);
$hash = $chnHash; # report to channel if defined
@ -2092,9 +2090,8 @@ sub CUL_HM_Set($@) {
}
CUL_HM_PushCmdStack($hash,sprintf("++%s11%s%s02%s%02X%s%s",
$flag,$id,$dst,$chn,$lvl*2,$rval,$tval));
if (defined $hash->{READINGS}{"virtLevel"}{VAL}){
readingsSingleUpdate($hash,"virtLevel","set_".$lvl,1);
}else{$state = "set_".$lvl;}
readingsSingleUpdate($hash,"level","set_".$lvl,1);
$state = "set_".$lvl;
}
elsif($cmd eq "stop") { #####################################################
CUL_HM_PushCmdStack($hash,'++'.$flag.'11'.$id.$dst.'03'.$chn);
@ -3303,7 +3300,7 @@ sub CUL_HM_decodeTime8($) {#####################
}
sub CUL_HM_encodeTime16($) {####################
my $v = shift;
return "0000" if($v < 0.05);
return "0000" if($v < 0.05 || $v !~ m/^[+-]?\d+(\.\d+)?$/);
my $ret = "FFFF";
my $mul = 10;
@ -3341,19 +3338,19 @@ sub CUL_HM_secSince2000() {#####################
my $t = time();
my @l = localtime($t);
my @g = gmtime($t);
$t += 60*(($l[2]-$g[2] + ((($l[5]<<9)|$l[7]) <=> (($g[5]<<9)|$g[7])) * 24 + $l[8]) * 60 + $l[1]-$g[1])
# my $t2 = $t + 60*(($l[2]-$g[2] + ((($l[5]<<9)|$l[7]) <=> (($g[5]<<9)|$g[7])) * 24 + $l[8]) * 60 + $l[1]-$g[1])
my $t2 = $t + 60*(($l[2]-$g[2] + ((($l[5]<<9)|$l[7]) <=> (($g[5]<<9)|$g[7])) * 24) * 60 + $l[1]-$g[1])
# timezone and daylight saving...
- 946684800 # seconds between 01.01.2000, 00:00 and THE EPOCH (1970)
- 7200; # HM Special
return $t;
return $t2;
}
sub CUL_HM_getChnLvl($){# in: name out: vit or phys level
my $name = shift;
my $curVal = ReadingsVal($name,"virtLevel",undef);
$curVal = ReadingsVal($name,"state",0) if (!defined $curVal);
my $curVal = ReadingsVal($name,"level",0);
$curVal =~ s/set_//;
$curVal =~ s/ .*//;#strip unit
return ($curVal eq "on")?100:(($curVal eq "off")?0:$curVal);
return $curVal;
}
#--------------- Conversion routines for register settings---------------------