mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-04-20 01:06:04 +00:00
dug fixes
git-svn-id: https://svn.fhem.de/fhem/trunk@3017 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
550c577c01
commit
7683d7e241
@ -228,7 +228,7 @@ sub CUL_HM_updateConfig($){
|
|||||||
push @getConfList,$name if (0 != substr(AttrVal($name,"autoReadReg","0"),0,1));
|
push @getConfList,$name if (0 != substr(AttrVal($name,"autoReadReg","0"),0,1));
|
||||||
}
|
}
|
||||||
$modules{CUL_HM}{helper}{updtCfgLst} = \@getConfList;
|
$modules{CUL_HM}{helper}{updtCfgLst} = \@getConfList;
|
||||||
CUL_HM_autoReadConfig("updateConfig");
|
#General log CUL_HM_autoReadConfig("updateConfig");
|
||||||
}
|
}
|
||||||
sub CUL_HM_Define($$) {##############################
|
sub CUL_HM_Define($$) {##############################
|
||||||
my ($hash, $def) = @_;
|
my ($hash, $def) = @_;
|
||||||
@ -824,7 +824,7 @@ sub CUL_HM_Parse($$) {##############################
|
|||||||
}
|
}
|
||||||
else{ #invalid PhysLevel
|
else{ #invalid PhysLevel
|
||||||
InternalTimer(gettimeofday()+3,"CUL_HM_stateUpdat","sUpdt:".
|
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)
|
#Info Level: msgType=0x10 p(..)(..)(..)(..) subty=06, chn, state,err (3bit)
|
||||||
#AckStatus: msgType=0x02 p(..)(..)(..)(..) subty=01, chn, state,err (3bit)
|
#AckStatus: msgType=0x02 p(..)(..)(..)(..) subty=01, chn, state,err (3bit)
|
||||||
my ($chn,$state,$err,$cnt); #define locals
|
my ($chn,$state,$err,$cnt); #define locals
|
||||||
if($msgType eq "10" || $msgType eq "02"){
|
if(($msgType eq "10" && $p =~ m/^06/) ||
|
||||||
my $mT = $msgType.substr($p,0,2);
|
($msgType eq "02" && $p =~ m/^01/)) {
|
||||||
if ($mT eq "1006" ||$$mT eq "0201"){
|
$p =~ m/^..(..)(..)(..)?$/;
|
||||||
$p =~ m/^..(..)(..)(..)?$/;
|
($chn,$state,$err) = (hex($1), $2, hex($3));
|
||||||
($chn,$state,$err) = (hex($1), $2, hex($3));
|
$chn = sprintf("%02X",$chn&0x3f);
|
||||||
$chn = sprintf("%02X",$chn&0x3f);
|
$shash = $modules{CUL_HM}{defptr}{"$src$chn"}
|
||||||
$shash = $modules{CUL_HM}{defptr}{"$src$chn"}
|
|
||||||
if($modules{CUL_HM}{defptr}{"$src$chn"});
|
if($modules{CUL_HM}{defptr}{"$src$chn"});
|
||||||
push @event, "alive:yes";
|
push @event, "alive:yes";
|
||||||
push @event, "battery:". (($err&0x80)?"low" :"ok" );
|
push @event, "battery:". (($err&0x80)?"low" :"ok" );
|
||||||
if ($model ne "HM-SEC-WDS"){
|
if ($model ne "HM-SEC-WDS"){
|
||||||
push @event, "cover:". (($err&0x0E)?"open" :"closed");
|
push @event, "cover:". (($err&0x0E)?"open" :"closed");
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
elsif($msgType eq "41"){
|
elsif($msgType eq "41"){
|
||||||
@ -2050,7 +2048,7 @@ sub CUL_HM_Set($@) {
|
|||||||
$eSec += 3600*24 if ($ltSec > $eSec); # go for the next day
|
$eSec += 3600*24 if ($ltSec > $eSec); # go for the next day
|
||||||
$duration = $eSec - $ltSec;
|
$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
|
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);
|
CUL_HM_PushCmdStack($hash,'++'.$flag.'11'.$id.$dst.'02'.$chn.'C80000'.$tval);
|
||||||
$hash = $chnHash; # report to channel if defined
|
$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",
|
CUL_HM_PushCmdStack($hash,sprintf("++%s11%s%s02%s%02X%s%s",
|
||||||
$flag,$id,$dst,$chn,$lvl*2,$rval,$tval));
|
$flag,$id,$dst,$chn,$lvl*2,$rval,$tval));
|
||||||
if (defined $hash->{READINGS}{"virtLevel"}{VAL}){
|
readingsSingleUpdate($hash,"level","set_".$lvl,1);
|
||||||
readingsSingleUpdate($hash,"virtLevel","set_".$lvl,1);
|
$state = "set_".$lvl;
|
||||||
}else{$state = "set_".$lvl;}
|
|
||||||
}
|
}
|
||||||
elsif($cmd eq "stop") { #####################################################
|
elsif($cmd eq "stop") { #####################################################
|
||||||
CUL_HM_PushCmdStack($hash,'++'.$flag.'11'.$id.$dst.'03'.$chn);
|
CUL_HM_PushCmdStack($hash,'++'.$flag.'11'.$id.$dst.'03'.$chn);
|
||||||
@ -3303,7 +3300,7 @@ sub CUL_HM_decodeTime8($) {#####################
|
|||||||
}
|
}
|
||||||
sub CUL_HM_encodeTime16($) {####################
|
sub CUL_HM_encodeTime16($) {####################
|
||||||
my $v = shift;
|
my $v = shift;
|
||||||
return "0000" if($v < 0.05);
|
return "0000" if($v < 0.05 || $v !~ m/^[+-]?\d+(\.\d+)?$/);
|
||||||
|
|
||||||
my $ret = "FFFF";
|
my $ret = "FFFF";
|
||||||
my $mul = 10;
|
my $mul = 10;
|
||||||
@ -3341,19 +3338,19 @@ sub CUL_HM_secSince2000() {#####################
|
|||||||
my $t = time();
|
my $t = time();
|
||||||
my @l = localtime($t);
|
my @l = localtime($t);
|
||||||
my @g = gmtime($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...
|
# timezone and daylight saving...
|
||||||
- 946684800 # seconds between 01.01.2000, 00:00 and THE EPOCH (1970)
|
- 946684800 # seconds between 01.01.2000, 00:00 and THE EPOCH (1970)
|
||||||
- 7200; # HM Special
|
- 7200; # HM Special
|
||||||
return $t;
|
return $t2;
|
||||||
}
|
}
|
||||||
sub CUL_HM_getChnLvl($){# in: name out: vit or phys level
|
sub CUL_HM_getChnLvl($){# in: name out: vit or phys level
|
||||||
my $name = shift;
|
my $name = shift;
|
||||||
my $curVal = ReadingsVal($name,"virtLevel",undef);
|
my $curVal = ReadingsVal($name,"level",0);
|
||||||
$curVal = ReadingsVal($name,"state",0) if (!defined $curVal);
|
|
||||||
$curVal =~ s/set_//;
|
$curVal =~ s/set_//;
|
||||||
$curVal =~ s/ .*//;#strip unit
|
$curVal =~ s/ .*//;#strip unit
|
||||||
return ($curVal eq "on")?100:(($curVal eq "off")?0:$curVal);
|
return $curVal;
|
||||||
}
|
}
|
||||||
|
|
||||||
#--------------- Conversion routines for register settings---------------------
|
#--------------- Conversion routines for register settings---------------------
|
||||||
|
Loading…
x
Reference in New Issue
Block a user