2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-04-16 10:46:03 +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:
martinp876 2016-01-08 15:13:59 +00:00
parent cb709dfad8
commit 6e2d8ceb80

View File

@ -28,7 +28,10 @@ sub HMLAN_relOvrLd($);
sub HMLAN_condUpdate($$);
sub HMLAN_getVerbLvl ($$$$);
my %sets = ( "hmPairForSec" => "HomeMatic"
my %sets = ( "open" => ""
,"close" => ""
,"reopen" => ""
,"hmPairForSec" => "HomeMatic"
,"hmPairSerial" => "HomeMatic"
,"reassignIDs" => ""
);
@ -43,10 +46,6 @@ my %HMcond = ( 0 =>'ok'
,254=>'Overload-released'
,255=>'init');
#my %HM STATE= ( =>'opened'
# =>'disconnected'
# =>'overload');
my $HMmlSlice = 12; # number of messageload slices per hour (10 = 6min)
sub HMLAN_Initialize($) {
@ -407,7 +406,7 @@ sub HMLAN_Set($@) {############################################################
my $name = shift @a;
my $cmd = shift @a;
my $arg = join("", @a);
if($cmd eq "hmPairForSec") { ####################################
if ($cmd eq "hmPairForSec") { #################################
$arg = 60 if(!$arg || $arg !~ m/^\d+$/);
HMLAN_RemoveHMPair("hmPairForSec:$name");
$hash->{hmPair} = 1;
@ -427,10 +426,23 @@ sub HMLAN_Set($@) {############################################################
$hash->{hmPairSerial} = $arg;
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));
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
}
@ -1062,11 +1074,15 @@ sub HMLAN_condUpdate($$) {#####################################################
$hash->{helper}{cnd}{$HMcnd} = 0 if (!$hash->{helper}{cnd} ||
!$hash->{helper}{cnd}{$HMcnd});
$hash->{helper}{cnd}{$HMcnd}++;
readingsBeginUpdate($hash);
if ($HMcnd == 4){#HMLAN needs a rest. Supress all sends exept keep alive
readingsSingleUpdate($hash,"state","overload",1);
readingsBulkUpdate($hash,"state","overload");
}
else{
readingsSingleUpdate($hash,"state","opened",1)
elsif ($HMcnd == 251 || $HMcnd == 253){#HMLAN dummy/disconnected
readingsBulkUpdate($hash,"state","disconnected");
}
else{# revert from overload
readingsBulkUpdate($hash,"state","opened")
if (InternalVal($name,"STATE","") eq "overload");
}
@ -1076,14 +1092,13 @@ sub HMLAN_condUpdate($$) {#####################################################
$txt .= $HMcond{$_}.":".$hash->{helper}{cnd}{$_}." "
foreach (keys%{$hash->{helper}{cnd}});
readingsBeginUpdate($hash);
readingsBulkUpdate($hash,"cond",$HMcndTxt);
readingsBulkUpdate($hash,"Xmit-Events",$txt);
readingsBulkUpdate($hash,"prot_".$HMcndTxt,"last");
$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->{apIDs}} = (); #clear Q-status
$hash->{XmitOpen} = 0; #deny transmit
@ -1092,11 +1107,6 @@ sub HMLAN_condUpdate($$) {#####################################################
&& $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{
$hash->{XmitOpen} = ($hashQ->{answerPend} < $hashQ->{hmLanQlen})?"1":"2";#allow transmit
}