mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-01-31 12:49:34 +00:00
26_tahoma.pm:2022-01-22 V 0225 reconnect after disable removed
git-svn-id: https://svn.fhem.de/fhem/trunk@25543 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
3c2117d975
commit
03d809969a
@ -59,6 +59,7 @@
|
|||||||
# 2019-06-15 V 0222 new Attribute levelRound
|
# 2019-06-15 V 0222 new Attribute levelRound
|
||||||
# 2021-03-05 V 0223 new Attributes intervalLoginMin and intervalLoginMax
|
# 2021-03-05 V 0223 new Attributes intervalLoginMin and intervalLoginMax
|
||||||
# 2021-06-08 V 0224 response 'TOO_MANY_OPERATIONS_IN_PROGRESS' didn't start a re-login
|
# 2021-06-08 V 0224 response 'TOO_MANY_OPERATIONS_IN_PROGRESS' didn't start a re-login
|
||||||
|
# 2022-01-22 V 0225 reconnect after disable removed
|
||||||
|
|
||||||
package main;
|
package main;
|
||||||
|
|
||||||
@ -138,7 +139,7 @@ sub tahoma_Define($$)
|
|||||||
|
|
||||||
my @a = split("[ \t][ \t]*", $def);
|
my @a = split("[ \t][ \t]*", $def);
|
||||||
|
|
||||||
my $ModuleVersion = "0223";
|
my $ModuleVersion = "0225";
|
||||||
|
|
||||||
my $subtype;
|
my $subtype;
|
||||||
my $name = $a[0];
|
my $name = $a[0];
|
||||||
@ -514,6 +515,22 @@ sub tahoma_readStatusTimer($)
|
|||||||
InternalTimer(gettimeofday()+2, "tahoma_readStatusTimer", $hash, 0);
|
InternalTimer(gettimeofday()+2, "tahoma_readStatusTimer", $hash, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub tahoma_disconnect($)
|
||||||
|
{
|
||||||
|
my ($hash) = @_;
|
||||||
|
my $name = $hash->{NAME};
|
||||||
|
Log3 $name, 3, "$name: tahoma_disconnect";
|
||||||
|
|
||||||
|
RemoveInternalTimer($hash);
|
||||||
|
HttpUtils_Close($hash);
|
||||||
|
$hash->{socket} = undef;
|
||||||
|
$hash->{request_active} = undef;
|
||||||
|
$hash->{logged_in} = undef;
|
||||||
|
$hash->{startup_run} = undef;
|
||||||
|
$hash->{startup_done} = undef;
|
||||||
|
$hash->{STATE} = 'Disconnected';
|
||||||
|
}
|
||||||
|
|
||||||
sub tahoma_connect($)
|
sub tahoma_connect($)
|
||||||
{
|
{
|
||||||
my ($hash) = @_;
|
my ($hash) = @_;
|
||||||
@ -787,6 +804,12 @@ sub tahoma_applyRequest($$$)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!$hash->{IODev}->{logged_in})
|
||||||
|
{
|
||||||
|
Log3 $name, 3, "$name: tahoma_applyRequest failed - not logged in";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
my @devices = ();
|
my @devices = ();
|
||||||
if ( defined($hash->{device}) ) {
|
if ( defined($hash->{device}) ) {
|
||||||
push ( @devices, { device => $hash->{device}, class => $hash->{inClass}, commands => $hash->{COMMANDS}, levelInvert => $attr{$hash->{NAME}}{levelInvert} } );
|
push ( @devices, { device => $hash->{device}, class => $hash->{inClass}, commands => $hash->{COMMANDS}, levelInvert => $attr{$hash->{NAME}}{levelInvert} } );
|
||||||
@ -858,6 +881,12 @@ sub tahoma_scheduleActionGroup($$)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!$hash->{IODev}->{logged_in})
|
||||||
|
{
|
||||||
|
Log3 $name, 3, "$name: tahoma_scheduleActionGroup failed - not logged in";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
$delay = 1 if(!defined($delay));
|
$delay = 1 if(!defined($delay));
|
||||||
$delay = ($delay+time)*1000;
|
$delay = ($delay+time)*1000;
|
||||||
$delay = $delay . '';
|
$delay = $delay . '';
|
||||||
@ -886,6 +915,12 @@ sub tahoma_launchActionGroup($)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!$hash->{IODev}->{logged_in})
|
||||||
|
{
|
||||||
|
Log3 $name, 3, "$name: tahoma_launchActionGroup failed - not logged in";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
tahoma_UserAgent_NonblockingGet({
|
tahoma_UserAgent_NonblockingGet({
|
||||||
timeout => 10,
|
timeout => 10,
|
||||||
noshutdown => 1,
|
noshutdown => 1,
|
||||||
@ -1544,7 +1579,7 @@ sub tahoma_Set($$@)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if( $hash->{SUBTYPE} eq "ACCOUNT") {
|
if( $hash->{SUBTYPE} eq "ACCOUNT") {
|
||||||
$list = "cancel:noArg reset:noArg refreshAllStates:noArg getStates:noArg";
|
$list = "cancel:noArg reset:noArg disconnect:noArg reconnect:noArg refreshAllStates:noArg getStates:noArg";
|
||||||
|
|
||||||
if( $cmd eq "cancel" ) {
|
if( $cmd eq "cancel" ) {
|
||||||
tahoma_cancelExecutions($hash);
|
tahoma_cancelExecutions($hash);
|
||||||
@ -1556,6 +1591,15 @@ sub tahoma_Set($$@)
|
|||||||
$hash->{loginRetryTimer} = undef;
|
$hash->{loginRetryTimer} = undef;
|
||||||
return undef;
|
return undef;
|
||||||
}
|
}
|
||||||
|
elsif( $cmd eq "disconnect" ) {
|
||||||
|
tahoma_disconnect($hash);
|
||||||
|
return undef;
|
||||||
|
}
|
||||||
|
elsif( $cmd eq "reconnect" ) {
|
||||||
|
tahoma_disconnect($hash);
|
||||||
|
tahoma_connect($hash);
|
||||||
|
return undef;
|
||||||
|
}
|
||||||
elsif( $cmd eq "refreshAllStates" ) {
|
elsif( $cmd eq "refreshAllStates" ) {
|
||||||
tahoma_refreshAllStates($hash);
|
tahoma_refreshAllStates($hash);
|
||||||
return undef;
|
return undef;
|
||||||
@ -1621,10 +1665,11 @@ sub tahoma_Attr($$$)
|
|||||||
$hash->{getLoginIntervalMax} = $attrVal;
|
$hash->{getLoginIntervalMax} = $attrVal;
|
||||||
} elsif( $attrName eq "disable" ) {
|
} elsif( $attrName eq "disable" ) {
|
||||||
my $hash = $defs{$name};
|
my $hash = $defs{$name};
|
||||||
RemoveInternalTimer($hash);
|
|
||||||
if( $cmd eq "set" && $attrVal ne "0" ) {
|
if( $cmd eq "set" && $attrVal ne "0" ) {
|
||||||
|
tahoma_disconnect($hash) if $hash->{SUBTYPE} eq "ACCOUNT";
|
||||||
} else {
|
} else {
|
||||||
$attr{$name}{$attrName} = 0;
|
$attr{$name}{$attrName} = 0;
|
||||||
|
tahoma_connect($hash) if $hash->{SUBTYPE} eq "ACCOUNT";
|
||||||
}
|
}
|
||||||
} elsif( $attrName eq "blocking" ) {
|
} elsif( $attrName eq "blocking" ) {
|
||||||
my $hash = $defs{$name};
|
my $hash = $defs{$name};
|
||||||
@ -1745,6 +1790,7 @@ sub tahoma_GetCookies($$)
|
|||||||
my ($hash, $header) = @_;
|
my ($hash, $header) = @_;
|
||||||
my $name = $hash->{NAME};
|
my $name = $hash->{NAME};
|
||||||
Log3 $name, 5, "$name: tahoma_GetCookies looking for Cookies in header";
|
Log3 $name, 5, "$name: tahoma_GetCookies looking for Cookies in header";
|
||||||
|
Log3 $name, 5, "$name: tahoma_GetCookies header=$header";
|
||||||
foreach my $cookie ($header =~ m/set-cookie: ?(.*)/gi) {
|
foreach my $cookie ($header =~ m/set-cookie: ?(.*)/gi) {
|
||||||
Log3 $name, 5, "$name: Set-Cookie: $cookie";
|
Log3 $name, 5, "$name: Set-Cookie: $cookie";
|
||||||
$cookie =~ /([^,; ]+)=([^,; ]+)[;, ]*(.*)/;
|
$cookie =~ /([^,; ]+)=([^,; ]+)[;, ]*(.*)/;
|
||||||
|
Loading…
Reference in New Issue
Block a user