mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-04-22 02:10:32 +00:00
HMLAN: add commandos for open and close the interface
git-svn-id: https://svn.fhem.de/fhem/trunk@10409 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
cb709dfad8
commit
6e2d8ceb80
@ -28,7 +28,10 @@ sub HMLAN_relOvrLd($);
|
|||||||
sub HMLAN_condUpdate($$);
|
sub HMLAN_condUpdate($$);
|
||||||
sub HMLAN_getVerbLvl ($$$$);
|
sub HMLAN_getVerbLvl ($$$$);
|
||||||
|
|
||||||
my %sets = ( "hmPairForSec" => "HomeMatic"
|
my %sets = ( "open" => ""
|
||||||
|
,"close" => ""
|
||||||
|
,"reopen" => ""
|
||||||
|
,"hmPairForSec" => "HomeMatic"
|
||||||
,"hmPairSerial" => "HomeMatic"
|
,"hmPairSerial" => "HomeMatic"
|
||||||
,"reassignIDs" => ""
|
,"reassignIDs" => ""
|
||||||
);
|
);
|
||||||
@ -43,10 +46,6 @@ my %HMcond = ( 0 =>'ok'
|
|||||||
,254=>'Overload-released'
|
,254=>'Overload-released'
|
||||||
,255=>'init');
|
,255=>'init');
|
||||||
|
|
||||||
#my %HM STATE= ( =>'opened'
|
|
||||||
# =>'disconnected'
|
|
||||||
# =>'overload');
|
|
||||||
|
|
||||||
my $HMmlSlice = 12; # number of messageload slices per hour (10 = 6min)
|
my $HMmlSlice = 12; # number of messageload slices per hour (10 = 6min)
|
||||||
|
|
||||||
sub HMLAN_Initialize($) {
|
sub HMLAN_Initialize($) {
|
||||||
@ -407,7 +406,7 @@ sub HMLAN_Set($@) {############################################################
|
|||||||
my $name = shift @a;
|
my $name = shift @a;
|
||||||
my $cmd = shift @a;
|
my $cmd = shift @a;
|
||||||
my $arg = join("", @a);
|
my $arg = join("", @a);
|
||||||
if($cmd eq "hmPairForSec") { ####################################
|
if ($cmd eq "hmPairForSec") { #################################
|
||||||
$arg = 60 if(!$arg || $arg !~ m/^\d+$/);
|
$arg = 60 if(!$arg || $arg !~ m/^\d+$/);
|
||||||
HMLAN_RemoveHMPair("hmPairForSec:$name");
|
HMLAN_RemoveHMPair("hmPairForSec:$name");
|
||||||
$hash->{hmPair} = 1;
|
$hash->{hmPair} = 1;
|
||||||
@ -427,10 +426,23 @@ sub HMLAN_Set($@) {############################################################
|
|||||||
$hash->{hmPairSerial} = $arg;
|
$hash->{hmPairSerial} = $arg;
|
||||||
InternalTimer(gettimeofday()+20, "HMLAN_RemoveHMPair", "hmPairForSec:".$name, 1);
|
InternalTimer(gettimeofday()+20, "HMLAN_RemoveHMPair", "hmPairForSec:".$name, 1);
|
||||||
}
|
}
|
||||||
elsif($cmd eq "reassignIDs") { ##################################
|
elsif($cmd eq "reassignIDs") { #################################
|
||||||
return "set $name $cmd doesn't support parameter" if(scalar(@a));
|
return "set $name $cmd doesn't support parameter" if(scalar(@a));
|
||||||
HMLAN_assignIDs($hash);
|
HMLAN_assignIDs($hash);
|
||||||
}
|
}
|
||||||
|
elsif($cmd eq "reopen") { #################################
|
||||||
|
DevIo_CloseDev($hash);
|
||||||
|
HMLAN_condUpdate($hash,253);#set disconnected
|
||||||
|
DevIo_OpenDev($hash, 0, "HMLAN_DoInit");
|
||||||
|
}
|
||||||
|
elsif($cmd eq "close") { #################################
|
||||||
|
DevIo_CloseDev($hash);
|
||||||
|
HMLAN_condUpdate($hash,253);#set disconnected
|
||||||
|
}
|
||||||
|
elsif($cmd eq "open") { #################################
|
||||||
|
DevIo_OpenDev($hash, 0, "HMLAN_DoInit");
|
||||||
|
}
|
||||||
|
|
||||||
return ("",1);# no not generate trigger outof command
|
return ("",1);# no not generate trigger outof command
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1062,11 +1074,15 @@ sub HMLAN_condUpdate($$) {#####################################################
|
|||||||
$hash->{helper}{cnd}{$HMcnd} = 0 if (!$hash->{helper}{cnd} ||
|
$hash->{helper}{cnd}{$HMcnd} = 0 if (!$hash->{helper}{cnd} ||
|
||||||
!$hash->{helper}{cnd}{$HMcnd});
|
!$hash->{helper}{cnd}{$HMcnd});
|
||||||
$hash->{helper}{cnd}{$HMcnd}++;
|
$hash->{helper}{cnd}{$HMcnd}++;
|
||||||
|
readingsBeginUpdate($hash);
|
||||||
if ($HMcnd == 4){#HMLAN needs a rest. Supress all sends exept keep alive
|
if ($HMcnd == 4){#HMLAN needs a rest. Supress all sends exept keep alive
|
||||||
readingsSingleUpdate($hash,"state","overload",1);
|
readingsBulkUpdate($hash,"state","overload");
|
||||||
}
|
}
|
||||||
else{
|
elsif ($HMcnd == 251 || $HMcnd == 253){#HMLAN dummy/disconnected
|
||||||
readingsSingleUpdate($hash,"state","opened",1)
|
readingsBulkUpdate($hash,"state","disconnected");
|
||||||
|
}
|
||||||
|
else{# revert from overload
|
||||||
|
readingsBulkUpdate($hash,"state","opened")
|
||||||
if (InternalVal($name,"STATE","") eq "overload");
|
if (InternalVal($name,"STATE","") eq "overload");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1076,14 +1092,13 @@ sub HMLAN_condUpdate($$) {#####################################################
|
|||||||
$txt .= $HMcond{$_}.":".$hash->{helper}{cnd}{$_}." "
|
$txt .= $HMcond{$_}.":".$hash->{helper}{cnd}{$_}." "
|
||||||
foreach (keys%{$hash->{helper}{cnd}});
|
foreach (keys%{$hash->{helper}{cnd}});
|
||||||
|
|
||||||
readingsBeginUpdate($hash);
|
|
||||||
readingsBulkUpdate($hash,"cond",$HMcndTxt);
|
readingsBulkUpdate($hash,"cond",$HMcndTxt);
|
||||||
readingsBulkUpdate($hash,"Xmit-Events",$txt);
|
readingsBulkUpdate($hash,"Xmit-Events",$txt);
|
||||||
readingsBulkUpdate($hash,"prot_".$HMcndTxt,"last");
|
readingsBulkUpdate($hash,"prot_".$HMcndTxt,"last");
|
||||||
|
|
||||||
$hashQ->{HMcndN} = $HMcnd;
|
$hashQ->{HMcndN} = $HMcnd;
|
||||||
|
|
||||||
if ($HMcnd == 4 || $HMcnd == 253) {#transmission down
|
if ($HMcnd == 4 || $HMcnd == 251|| $HMcnd == 253 || $HMcnd == 255) {#transmission down
|
||||||
$hashQ->{answerPend} = 0;
|
$hashQ->{answerPend} = 0;
|
||||||
@{$hashQ->{apIDs}} = (); #clear Q-status
|
@{$hashQ->{apIDs}} = (); #clear Q-status
|
||||||
$hash->{XmitOpen} = 0; #deny transmit
|
$hash->{XmitOpen} = 0; #deny transmit
|
||||||
@ -1092,11 +1107,6 @@ sub HMLAN_condUpdate($$) {#####################################################
|
|||||||
&& $hash->{helper}{k}{Start}
|
&& $hash->{helper}{k}{Start}
|
||||||
&&(gettimeofday() - 29) > $hash->{helper}{k}{Start});
|
&&(gettimeofday() - 29) > $hash->{helper}{k}{Start});
|
||||||
}
|
}
|
||||||
elsif ($HMcnd == 255) {#reset counter after init
|
|
||||||
$hashQ->{answerPend} = 0;
|
|
||||||
@{$hashQ->{apIDs}} = (); #clear Q-status
|
|
||||||
$hash->{XmitOpen} = 0; #deny transmit
|
|
||||||
}
|
|
||||||
else{
|
else{
|
||||||
$hash->{XmitOpen} = ($hashQ->{answerPend} < $hashQ->{hmLanQlen})?"1":"2";#allow transmit
|
$hash->{XmitOpen} = ($hashQ->{answerPend} < $hashQ->{hmLanQlen})?"1":"2";#allow transmit
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user