mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-05-04 22:19:38 +00:00
valvePos, comments and get param improve
git-svn-id: https://svn.fhem.de/fhem/trunk/fhem@4699 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
e20bed5386
commit
5c97c34417
@ -176,6 +176,13 @@ sub CUL_HM_Initialize($) {
|
|||||||
$hash->{hmIoMaxDly} = 60;# poll timeout - stop poll and discard
|
$hash->{hmIoMaxDly} = 60;# poll timeout - stop poll and discard
|
||||||
$hash->{hmAutoReadScan} = 4; # delay autoConf readings
|
$hash->{hmAutoReadScan} = 4; # delay autoConf readings
|
||||||
$hash->{helper}{hmManualOper} = 0;# default automode
|
$hash->{helper}{hmManualOper} = 0;# default automode
|
||||||
|
|
||||||
|
my @dcpl = # deviceChannelParamList list of device params valid for channels
|
||||||
|
("ignore","dummy",
|
||||||
|
"actCycle","actStatus",
|
||||||
|
"expert","burstAccess","msgRepeat","autoReadReg",
|
||||||
|
".stc",".devInfo","firmware","serialNr","model","subType");
|
||||||
|
$hash->{helper}{dcpl} = \@dcpl;
|
||||||
}
|
}
|
||||||
|
|
||||||
sub CUL_HM_updateConfig($){
|
sub CUL_HM_updateConfig($){
|
||||||
@ -200,10 +207,12 @@ sub CUL_HM_updateConfig($){
|
|||||||
$attr{$name}{expert} = AttrVal($name,"expert" ,"2_full");
|
$attr{$name}{expert} = AttrVal($name,"expert" ,"2_full");
|
||||||
$attr{$name}{autoReadReg}= AttrVal($name,"autoReadReg","4_reqStatus");
|
$attr{$name}{autoReadReg}= AttrVal($name,"autoReadReg","4_reqStatus");
|
||||||
}
|
}
|
||||||
CUL_HM_Attr("attr",$name,"expert",$attr{$name}{expert}) if ($attr{$name}{expert});#need update after readings are available
|
CUL_HM_Attr("attr",$name,"expert",$attr{$name}{expert})
|
||||||
|
if ($attr{$name}{expert});#need update after readings are available
|
||||||
}
|
}
|
||||||
else{# Action Detector only
|
else{# Action Detector only
|
||||||
$attr{$name}{"event-on-change-reading"} = AttrVal($name, "event-on-change-reading", ".*");
|
$attr{$name}{"event-on-change-reading"} =
|
||||||
|
AttrVal($name, "event-on-change-reading", ".*");
|
||||||
delete $hash->{helper}{role};
|
delete $hash->{helper}{role};
|
||||||
$hash->{helper}{role}{vrt} = 1;
|
$hash->{helper}{role}{vrt} = 1;
|
||||||
next;
|
next;
|
||||||
@ -351,7 +360,7 @@ sub CUL_HM_Define($$) {##############################
|
|||||||
$hash->{helper}{q}{qReqConf}=""; # queue autoConfig requests for this device
|
$hash->{helper}{q}{qReqConf}=""; # queue autoConfig requests for this device
|
||||||
$hash->{helper}{q}{qReqStat}=""; # queue autoConfig requests for this device
|
$hash->{helper}{q}{qReqStat}=""; # queue autoConfig requests for this device
|
||||||
CUL_HM_prtInit ($hash);
|
CUL_HM_prtInit ($hash);
|
||||||
AssignIoPort($hash) if (!$init_done);
|
AssignIoPort($hash) if (!$init_done && $HMid ne "000000");
|
||||||
}
|
}
|
||||||
$modules{CUL_HM}{defptr}{$HMid} = $hash;
|
$modules{CUL_HM}{defptr}{$HMid} = $hash;
|
||||||
|
|
||||||
@ -619,7 +628,7 @@ sub CUL_HM_Parse($$) {##############################
|
|||||||
my @event; #events to be posted for main entity
|
my @event; #events to be posted for main entity
|
||||||
|
|
||||||
my $name = $shash->{NAME};
|
my $name = $shash->{NAME};
|
||||||
my $ioId = CUL_HM_Id($shash->{IODev});
|
my $ioId = CUL_HM_Id($devH->{IODev});
|
||||||
$ioId = $id if(!$ioId);
|
$ioId = $id if(!$ioId);
|
||||||
|
|
||||||
return (@entities,$name) if (CUL_HM_getAttrInt($name,"ignore"));
|
return (@entities,$name) if (CUL_HM_getAttrInt($name,"ignore"));
|
||||||
@ -2123,7 +2132,7 @@ sub CUL_HM_Get($@) {
|
|||||||
return "no get value specified" if(@a < 2);
|
return "no get value specified" if(@a < 2);
|
||||||
|
|
||||||
my $name = $hash->{NAME};
|
my $name = $hash->{NAME};
|
||||||
my $devName = $hash->{device}?$hash->{device}:$name;
|
my $devName = InternalVal($name,"device",$name);
|
||||||
my $st = AttrVal($devName, "subType", "");
|
my $st = AttrVal($devName, "subType", "");
|
||||||
my $md = AttrVal($devName, "model", "");
|
my $md = AttrVal($devName, "model", "");
|
||||||
my $mId = CUL_HM_getMId($hash);
|
my $mId = CUL_HM_getMId($hash);
|
||||||
@ -2162,12 +2171,15 @@ sub CUL_HM_Get($@) {
|
|||||||
my $id = CUL_HM_IOid($hash);
|
my $id = CUL_HM_IOid($hash);
|
||||||
|
|
||||||
#----------- now start processing --------------
|
#----------- now start processing --------------
|
||||||
if($cmd eq "param") { ######################################################
|
if ($cmd eq "param") { ###################################################
|
||||||
return $attr{$name}{$a[2]} if ($attr{$name}{$a[2]});
|
my $p = $a[2];
|
||||||
return $hash->{READINGS}{$a[2]}{VAL} if ($hash->{READINGS}{$a[2]});
|
return $attr{$name}{$p} if ($attr{$name}{$p});
|
||||||
return $attr{$devName}{$a[2]} if ($attr{$devName}{$a[2]});
|
return $hash->{READINGS}{$p}{VAL} if ($hash->{READINGS}{$p});
|
||||||
return $hash->{$a[2]} if ($hash->{$a[2]});
|
return $hash->{$p} if ($hash->{$p});
|
||||||
return $hash->{helper}{$a[2]} if ($hash->{helper}{$a[2]} && ref($hash->{helper}{$a[2]}) ne "HASH");
|
return $hash->{helper}{$p} if ($hash->{helper}{$p} && ref($hash->{helper}{$p}) ne "HASH");
|
||||||
|
|
||||||
|
return "undefined" if (!grep /^$p$/,@{$modules{CUL_HM}{helper}{dcpl}});
|
||||||
|
return $attr{$devName}{$p} if ($attr{$devName}{$p});
|
||||||
return "undefined";
|
return "undefined";
|
||||||
}
|
}
|
||||||
elsif($cmd eq "reg") { #####################################################
|
elsif($cmd eq "reg") { #####################################################
|
||||||
@ -2310,7 +2322,7 @@ sub CUL_HM_Set($@) {
|
|||||||
my $name = $hash->{NAME};
|
my $name = $hash->{NAME};
|
||||||
return "device ignored due to attr 'ignore'"
|
return "device ignored due to attr 'ignore'"
|
||||||
if (CUL_HM_getAttrInt($name,"ignore"));
|
if (CUL_HM_getAttrInt($name,"ignore"));
|
||||||
my $devName = $hash->{device}?$hash->{device}:$name;
|
my $devName = InternalVal($name,"device",$name);
|
||||||
my $st = AttrVal($devName, "subType", "");
|
my $st = AttrVal($devName, "subType", "");
|
||||||
my $md = AttrVal($devName, "model" , "");
|
my $md = AttrVal($devName, "model" , "");
|
||||||
my $flag = CUL_HM_getFlag($hash); #set burst flag
|
my $flag = CUL_HM_getFlag($hash); #set burst flag
|
||||||
@ -3166,7 +3178,7 @@ sub CUL_HM_Set($@) {
|
|||||||
readingsSingleUpdate($hash,"valvePosTC","$vp %",0);
|
readingsSingleUpdate($hash,"valvePosTC","$vp %",0);
|
||||||
$hash->{helper}{vd}{idh} = hex(substr($dst,2,2))*20077;
|
$hash->{helper}{vd}{idh} = hex(substr($dst,2,2))*20077;
|
||||||
$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;
|
$hash->{helper}{vd}{msgCnt} = 1 if (!defined $hash->{helper}{vd}{msgCnt});
|
||||||
if (!$hash->{helper}{virtTC}){
|
if (!$hash->{helper}{virtTC}){
|
||||||
$hash->{helper}{vd}{next} = gettimeofday()
|
$hash->{helper}{vd}{next} = gettimeofday()
|
||||||
if (!defined $hash->{helper}{vd}{next});
|
if (!defined $hash->{helper}{vd}{next});
|
||||||
@ -3953,7 +3965,6 @@ sub CUL_HM_SndCmd($$) {
|
|||||||
return if( AttrVal($hash->{NAME},"ignore","")
|
return if( AttrVal($hash->{NAME},"ignore","")
|
||||||
|| AttrVal($hash->{NAME},"dummy",""));
|
|| AttrVal($hash->{NAME},"dummy",""));
|
||||||
if(!defined $hash->{IODev} ||!defined $hash->{IODev}{NAME}){
|
if(!defined $hash->{IODev} ||!defined $hash->{IODev}{NAME}){
|
||||||
|
|
||||||
AssignIoPort($hash);
|
AssignIoPort($hash);
|
||||||
if(!defined $hash->{IODev} ||!defined $hash->{IODev}{NAME}){
|
if(!defined $hash->{IODev} ||!defined $hash->{IODev}{NAME}){
|
||||||
CUL_HM_eventP($hash,"IOerr");
|
CUL_HM_eventP($hash,"IOerr");
|
||||||
@ -4390,6 +4401,10 @@ sub CUL_HM_getAssChnIds($) { #in: name out:ID list of assotiated channels
|
|||||||
|
|
||||||
sub CUL_HM_Id($) {#in: ioHash out: ioHMid
|
sub CUL_HM_Id($) {#in: ioHash out: ioHMid
|
||||||
my ($io) = @_;
|
my ($io) = @_;
|
||||||
|
if (ref($io) ne 'HASH'){
|
||||||
|
Log 1,"have problems with $io";
|
||||||
|
return "000000";
|
||||||
|
}
|
||||||
my $fhtid = defined($io->{FHTID}) ? $io->{FHTID} : "0000";
|
my $fhtid = defined($io->{FHTID}) ? $io->{FHTID} : "0000";
|
||||||
return $attr{$io->{NAME}}{hmId}?$attr{$io->{NAME}}{hmId}:"F1$fhtid";
|
return $attr{$io->{NAME}}{hmId}?$attr{$io->{NAME}}{hmId}:"F1$fhtid";
|
||||||
}
|
}
|
||||||
|
@ -261,11 +261,8 @@ my $K_actDetID = '000000'; # id of actionDetector
|
|||||||
#263 167 HM Smoke Detector Schueco
|
#263 167 HM Smoke Detector Schueco
|
||||||
#"HM-RC-Key4-2"
|
#"HM-RC-Key4-2"
|
||||||
#"HM-RC-Sec4-2"
|
#"HM-RC-Sec4-2"
|
||||||
|
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
##----------definitions for register settings-----------------
|
##----------definitions for register settings-----------------
|
||||||
# definition of Register for all devices
|
# definition of Register for all devices
|
||||||
# a: address, incl bits 13.4 4th bit in reg 13
|
# a: address, incl bits 13.4 4th bit in reg 13
|
||||||
@ -519,10 +516,10 @@ my $K_actDetID = '000000'; # id of actionDetector
|
|||||||
|
|
||||||
cndTxFalling =>{a=>132.0,s=>0.1,l=>1,min=>0 ,max=>1 ,c=>'lit' ,f=>'' ,u=>'' ,d=>1,t=>"trigger if falling" ,lit=>{off=>0,on=>1}},
|
cndTxFalling =>{a=>132.0,s=>0.1,l=>1,min=>0 ,max=>1 ,c=>'lit' ,f=>'' ,u=>'' ,d=>1,t=>"trigger if falling" ,lit=>{off=>0,on=>1}},
|
||||||
cndTxRising =>{a=>132.1,s=>0.1,l=>1,min=>0 ,max=>1 ,c=>'lit' ,f=>'' ,u=>'' ,d=>1,t=>"trigger if rising" ,lit=>{off=>0,on=>1}},
|
cndTxRising =>{a=>132.1,s=>0.1,l=>1,min=>0 ,max=>1 ,c=>'lit' ,f=>'' ,u=>'' ,d=>1,t=>"trigger if rising" ,lit=>{off=>0,on=>1}},
|
||||||
cndTxCycBelow =>{a=>132.2,s=>0.1,l=>1,min=>0 ,max=>1 ,c=>'lit' ,f=>'' ,u=>'' ,d=>1,t=>"trigger if cond is below threshold",lit=>{off=>0,on=>1}},
|
cndTxCycBelow =>{a=>132.2,s=>0.1,l=>1,min=>0 ,max=>1 ,c=>'lit' ,f=>'' ,u=>'' ,d=>1,t=>"cyclic trigger if level is below cndTxCycBelow",lit=>{off=>0,on=>1}},
|
||||||
cndTxCycAbove =>{a=>132.3,s=>0.1,l=>1,min=>0 ,max=>1 ,c=>'lit' ,f=>'' ,u=>'' ,d=>1,t=>"trigger if cond is above threshold",lit=>{off=>0,on=>1}},
|
cndTxCycAbove =>{a=>132.3,s=>0.1,l=>1,min=>0 ,max=>1 ,c=>'lit' ,f=>'' ,u=>'' ,d=>1,t=>"cyclic trigger if level is above cndTxDecAbove",lit=>{off=>0,on=>1}},
|
||||||
cndTxDecAbove =>{a=>133 ,s=>1 ,l=>1,min=>0 ,max=>255 ,c=>'' ,f=>'' ,u=>'' ,d=>1,t=>"trigger if decision is above"},
|
cndTxDecAbove =>{a=>133 ,s=>1 ,l=>1,min=>0 ,max=>255 ,c=>'' ,f=>'' ,u=>'' ,d=>1,t=>"level for cndTxCycAbove"},
|
||||||
cndTxDecBelow =>{a=>134 ,s=>1 ,l=>1,min=>0 ,max=>255 ,c=>'' ,f=>'' ,u=>'' ,d=>1,t=>"trigger if decision is below"},
|
cndTxDecBelow =>{a=>134 ,s=>1 ,l=>1,min=>0 ,max=>255 ,c=>'' ,f=>'' ,u=>'' ,d=>1,t=>"level for cndTxCycBelow"},
|
||||||
|
|
||||||
txThrLoPwr =>{a=>135.0,s=>4 ,l=>1,min=>0 ,max=>3680 ,c=>'' ,f=>'100' ,u=>'W' ,d=>1,t=>"threshold low power"},
|
txThrLoPwr =>{a=>135.0,s=>4 ,l=>1,min=>0 ,max=>3680 ,c=>'' ,f=>'100' ,u=>'W' ,d=>1,t=>"threshold low power"},
|
||||||
txThrHiPwr =>{a=>139.0,s=>4 ,l=>1,min=>0 ,max=>3680 ,c=>'' ,f=>'100' ,u=>'W' ,d=>1,t=>"threshold high power"},
|
txThrHiPwr =>{a=>139.0,s=>4 ,l=>1,min=>0 ,max=>3680 ,c=>'' ,f=>'100' ,u=>'W' ,d=>1,t=>"threshold high power"},
|
||||||
@ -564,7 +561,6 @@ my $K_actDetID = '000000'; # id of actionDetector
|
|||||||
# RC19 08:00 ? RC19 Button 08:08
|
# RC19 08:00 ? RC19 Button 08:08
|
||||||
# Bl1PBU 08:00 09:00 10:00
|
# Bl1PBU 08:00 09:00 10:00
|
||||||
|
|
||||||
|
|
||||||
# logicCombination=>{a=> 89.0,s=>0.5,l=>1,min=>0 ,max=>16 ,c=>'lit' ,f=>'' ,u=>'' ,d=>1,t=>"".
|
# logicCombination=>{a=> 89.0,s=>0.5,l=>1,min=>0 ,max=>16 ,c=>'lit' ,f=>'' ,u=>'' ,d=>1,t=>"".
|
||||||
# "inactive=>unused\n".
|
# "inactive=>unused\n".
|
||||||
# "or =>max(state,chan)\n".
|
# "or =>max(state,chan)\n".
|
||||||
|
Loading…
x
Reference in New Issue
Block a user