2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-04-22 02:10:32 +00:00

26_tahoma.pm:2018-06-11 V 0220 HttpUtils_Close before login, some newer Debug outputs deleted, Apply command separated, command responds verified

git-svn-id: https://svn.fhem.de/fhem/trunk@16851 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
mike3436 2018-06-11 21:30:34 +00:00
parent 825385aa54
commit ff9b2454dc

View File

@ -52,6 +52,7 @@
# 2018-05-10 V 0217 disable activated on devices # 2018-05-10 V 0217 disable activated on devices
# 2018-05-25 V 0218 keepalive of http connection corrected # 2018-05-25 V 0218 keepalive of http connection corrected
# 2018-06-01 V 0219 new Attributes for time interval of getEvents, getStates and refreshAllStates # 2018-06-01 V 0219 new Attributes for time interval of getEvents, getStates and refreshAllStates
# 2018-06-11 V 0220 HttpUtils_Close before login, some newer Debug outputs deleted, Apply command separated, command responds verified
package main; package main;
@ -75,8 +76,6 @@ my $hash_;
sub tahoma_Initialize($) sub tahoma_Initialize($)
{ {
my ($hash) = @_; my ($hash) = @_;
my $name = $hash->{NAME};
Log3 $name, 3, "$name: tahoma_Initialize";
$hash->{DefFn} = "tahoma_Define"; $hash->{DefFn} = "tahoma_Define";
$hash->{NOTIFYDEV} = "global"; $hash->{NOTIFYDEV} = "global";
@ -126,12 +125,10 @@ my $groupId = 123001;
sub tahoma_Define($$) sub tahoma_Define($$)
{ {
my ($hash, $def) = @_; my ($hash, $def) = @_;
my $name = $hash->{NAME};
Log3 $name, 3, "$name: tahoma_Define: def=$def";
my @a = split("[ \t][ \t]*", $def); my @a = split("[ \t][ \t]*", $def);
my $ModuleVersion = "0219"; my $ModuleVersion = "0220";
my $subtype; my $subtype;
my $name = $a[0]; my $name = $a[0];
@ -290,6 +287,7 @@ sub tahoma_login($)
my $name = $hash->{NAME}; my $name = $hash->{NAME};
Log3 $name, 3, "$name: tahoma_login"; Log3 $name, 3, "$name: tahoma_login";
HttpUtils_Close($hash);
$hash->{logged_in} = undef; $hash->{logged_in} = undef;
$hash->{startup_run} = undef; $hash->{startup_run} = undef;
$hash->{startup_done} = undef; $hash->{startup_done} = undef;
@ -448,6 +446,8 @@ sub tahoma_readStatusTimer($)
if ( $hash->{startup_done} ) { if ( $hash->{startup_done} ) {
tahoma_getStates($hash) ; tahoma_getStates($hash) ;
$hash->{refreshStatesTimer} = $seconds + $hash->{refreshStatesInterval}; $hash->{refreshStatesTimer} = $seconds + $hash->{refreshStatesInterval};
$hash->{getStatesTimer} = $seconds + $hash->{getStatesInterval};
$hash->{getEventsTimer} = $seconds + $hash->{getEventsInterval};
$timeinfo = "tahoma_getStates"; $timeinfo = "tahoma_getStates";
} }
} }
@ -923,21 +923,21 @@ sub tahoma_dispatch($$$)
# perl exception while parsing json string captured # perl exception while parsing json string captured
my $json = {}; my $json = {};
eval { $json = JSON->new->utf8(0)->decode($data); }; eval { $json = JSON->new->utf8(0)->decode($data); };
if ($@) { if ($@ || ((ref $json ne 'HASH') && (ref $json ne 'ARRAY')) ) {
Log3 $name, 3, "$name: tahoma_dispatch json string is faulty"; Log3 $name, 3, "$name: tahoma_dispatch json string is faulty" . substr($data,0,40) . ' ...';
$hash->{lastError} = 'json string is faulty'; $hash->{lastError} = 'json string is faulty: ' . substr($data,0,40) . ' ...';
$hash->{logged_in} = 0; $hash->{logged_in} = 0;
return; return;
} }
if( (ref $json ne 'ARRAY') && ($json->{errorResponse}) ) { if( (ref $json eq 'HASH') && ($json->{errorResponse}) ) {
$hash->{lastError} = $json->{errorResponse}{message}; $hash->{lastError} = $json->{errorResponse}{message};
$hash->{logged_in} = 0; $hash->{logged_in} = 0;
Log3 $name, 3, "$name: tahoma_dispatch error: $hash->{lastError}"; Log3 $name, 3, "$name: tahoma_dispatch error: $hash->{lastError}";
return; return;
} }
if( (ref $json ne 'ARRAY') && ($json->{error}) ) { if( (ref $json eq 'HASH') && ($json->{error}) ) {
$hash->{lastError} = $json->{error}; $hash->{lastError} = $json->{error};
$hash->{logged_in} = 0; $hash->{logged_in} = 0;
Log3 $name, 3, "$name: tahoma_dispatch error: $hash->{lastError}"; Log3 $name, 3, "$name: tahoma_dispatch error: $hash->{lastError}";
@ -1070,13 +1070,18 @@ sub tahoma_parseLogin($$)
my($hash, $json) = @_; my($hash, $json) = @_;
my $name = $hash->{NAME}; my $name = $hash->{NAME};
Log3 $name, 4, "$name: tahoma_parseLogin"; Log3 $name, 4, "$name: tahoma_parseLogin";
if (ref($json) ne 'HASH')
{
Log3 $name, 3, "$name: tahoma_parseLogin response is not a valid hash";
return;
}
if (defined $json->{errorResponse}) { if (defined $json->{errorResponse}) {
$hash->{logged_in} = 0; $hash->{logged_in} = 0;
$hash->{STATE} = $json->{errorResponse}{message}; $hash->{STATE} = $json->{errorResponse}{message};
} else { } else {
$hash->{inVersion} = $json->{version}; $hash->{inVersion} = $json->{version};
$hash->{logged_in} = 1; $hash->{logged_in} = 1;
$hash->{loginRetryTimer} = 5, $hash->{loginRetryTimer} = 5;
} }
Log3 $name, 2, "$name: login end, logged_in=".$hash->{logged_in}; Log3 $name, 2, "$name: login end, logged_in=".$hash->{logged_in};
} }
@ -1157,6 +1162,10 @@ sub tahoma_parseApplyRequest($$)
my $name = $hash->{NAME}; my $name = $hash->{NAME};
Log3 $name, 4, "$name: tahoma_parseApplyRequest"; Log3 $name, 4, "$name: tahoma_parseApplyRequest";
$hash->{inExecState} = 0; $hash->{inExecState} = 0;
if (ref($json) ne 'HASH') {
Log3 $name, 3, "$name: tahoma_parseApplyRequest response is not a valid hash";
return;
}
if (defined($json->{execId})) { if (defined($json->{execId})) {
$hash->{inExecId} = $json->{execId}; $hash->{inExecId} = $json->{execId};
} else { } else {
@ -1172,6 +1181,10 @@ sub tahoma_parseGetSetup($$)
{ {
my($hash, $json) = @_; my($hash, $json) = @_;
my $name = $hash->{NAME}; my $name = $hash->{NAME};
if (ref($json) ne 'HASH') {
Log3 $name, 3, "$name: tahoma_parseGetSetup response is not a valid hash";
return;
}
$hash->{gatewayId} = $json->{setup}{gateways}[0]{gatewayId}; $hash->{gatewayId} = $json->{setup}{gateways}[0]{gatewayId};
@ -1224,6 +1237,10 @@ sub tahoma_parseGetActionGroups($$)
my($hash, $json) = @_; my($hash, $json) = @_;
my $name = $hash->{NAME}; my $name = $hash->{NAME};
Log3 $name, 4, "$name: tahoma_parseGetActionGroups"; Log3 $name, 4, "$name: tahoma_parseGetActionGroups";
if (ref($json) ne 'HASH') {
Log3 $name, 3, "$name: tahoma_parseGetActionGroups response is not a valid hash";
return;
}
my $devices = $hash->{helper}{devices}; my $devices = $hash->{helper}{devices};
foreach my $action (@{$json->{actionGroups}}) { foreach my $action (@{$json->{actionGroups}}) {
@ -1246,6 +1263,10 @@ sub tahoma_parseGetStates($$)
my($hash, $states) = @_; my($hash, $states) = @_;
my $name = $hash->{NAME}; my $name = $hash->{NAME};
Log3 $name, 4, "$name: tahoma_parseGetStates"; Log3 $name, 4, "$name: tahoma_parseGetStates";
if (ref($states) ne 'HASH') {
Log3 $name, 3, "$name: tahoma_parseGetStates response is not a valid hash";
return;
}
if( defined($states->{devices}) ) { if( defined($states->{devices}) ) {
foreach my $devices ( @{$states->{devices}} ) { foreach my $devices ( @{$states->{devices}} ) {
@ -1281,6 +1302,10 @@ sub tahoma_parseEnduserAPISetupGateways($$)
my($hash, $json) = @_; my($hash, $json) = @_;
my $name = $hash->{NAME}; my $name = $hash->{NAME};
Log3 $name, 4, "$name: tahoma_parseEnduserAPISetupGateways"; Log3 $name, 4, "$name: tahoma_parseEnduserAPISetupGateways";
if (ref($json) ne 'HASH') {
Log3 $name, 3, "$name: tahoma_parseEnduserAPISetupGateways response is not a valid hash";
return;
}
eval { $hash->{inGateway} = $json->{result}; }; eval { $hash->{inGateway} = $json->{result}; };
eval { $hash->{inGateway} = $json->[0]{gatewayId}; }; eval { $hash->{inGateway} = $json->[0]{gatewayId}; };
@ -1291,6 +1316,10 @@ sub tahoma_parseGetCurrentExecutions($$)
my($hash, $json) = @_; my($hash, $json) = @_;
my $name = $hash->{NAME}; my $name = $hash->{NAME};
Log3 $name, 4, "$name: tahoma_parseGetCurrentExecutions"; Log3 $name, 4, "$name: tahoma_parseGetCurrentExecutions";
if (ref($json) ne 'HASH') {
Log3 $name, 3, "$name: tahoma_parseGetCurrentExecutions response is not a valid hash";
return;
}
} }
sub tahoma_parseScheduleActionGroup($$) sub tahoma_parseScheduleActionGroup($$)
@ -1298,6 +1327,10 @@ sub tahoma_parseScheduleActionGroup($$)
my($hash, $json) = @_; my($hash, $json) = @_;
my $name = $hash->{NAME}; my $name = $hash->{NAME};
Log3 $name, 4, "$name: tahoma_parseScheduleActionGroup"; Log3 $name, 4, "$name: tahoma_parseScheduleActionGroup";
if (ref($json) ne 'HASH') {
Log3 $name, 3, "$name: tahoma_parseScheduleActionGroup response is not a valid hash";
return;
}
if (defined $json->{actionGroup}) if (defined $json->{actionGroup})
{ {
$hash->{inTriggerState} = 0; $hash->{inTriggerState} = 0;
@ -1318,6 +1351,10 @@ sub tahoma_parseLaunchActionGroup($$)
my($hash, $json) = @_; my($hash, $json) = @_;
my $name = $hash->{NAME}; my $name = $hash->{NAME};
Log3 $name, 4, "$name: tahoma_parseLaunchActionGroup"; Log3 $name, 4, "$name: tahoma_parseLaunchActionGroup";
if (ref($json) ne 'HASH') {
Log3 $name, 3, "$name: tahoma_parseLaunchActionGroup response is not a valid hash";
return;
}
if (defined $json->{actionGroup}) if (defined $json->{actionGroup})
{ {
$hash->{inExecState} = 0; $hash->{inExecState} = 0;
@ -1540,7 +1577,7 @@ sub tahoma_UserAgent_NonblockingGet($)
$hash = $hash->{IODev} if (defined ($hash->{IODev})); $hash = $hash->{IODev} if (defined ($hash->{IODev}));
# restore parameter from last HttpUtils call # restore parameter from last HttpUtils call
if (defined $hash->{paramHash} && $hash->{paramHash}{keepalive}) if (defined $hash->{paramHash} && $hash->{paramHash}{keepalive} && !$hash->{request_active})
{ {
my $paramHash = $hash->{paramHash}; my $paramHash = $hash->{paramHash};
if (defined $paramHash) if (defined $paramHash)