2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-04-08 19:32:42 +00:00

LandroidUtils.pm: fix autocreate=0, respect nextOpenDelay (Forum #111959)

git-svn-id: https://svn.fhem.de/fhem/trunk@27464 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
rudolfkoenig 2023-04-19 08:50:26 +00:00
parent 99c66a3c49
commit 7f1e1860dd

View File

@ -49,16 +49,18 @@ my %types = (
# Step 1: check parameters, request & parse the access_token
sub
Landroid_connect($$;$)
Landroid_connect($$;$$)
{
my ($m2c_name, $type, $autocreate) = @_;
my ($m2c_name, $type, $autocreate, $noToCheck) = @_;
my $m2c = $defs{$m2c_name};
if($m2c->{NEXT_OPEN} && gettimeofday() < $m2c->{NEXT_OPEN}) {
if(!$noToCheck && $m2c->{".CONNECT_TO"} &&
gettimeofday() < $m2c->{".CONNECT_TO"}) {
delete($m2c->{inConnectFn});
$readyfnlist{"$m2c_name.$m2c->{DeviceName}"} = $m2c;
return;
}
delete($m2c->{NEXT_OPEN});
$m2c->{".CONNECT_TO"} = gettimeofday()+AttrVal($m2c_name,"nextOpenDelay",180);
my $errPrefix = "ERROR: Landroid_connect $m2c_name -";
my $usr = AttrVal($m2c_name, "username", "");
@ -104,7 +106,7 @@ Landroid_connect($$;$)
if($data->{grant_type} eq "refresh_token") {
readingsDelete($m2c, ".refresh_token");
Log3 $m2c, 4, "$errPrefix refresh_token failed, trying full auth";
Landroid_connect($m2c_name, $type, $autocreate);
Landroid_connect($m2c_name, $type, $autocreate, 1);
} else {
Landroid_retry($m2c, "$errPrefix got no access_token", $d);
}
@ -153,7 +155,7 @@ Landroid_connect2($)
$m2c->{authRetry} = 1;
readingsDelete($m2c, ".access_token");
Log3 $m2c, 4, "$errPrefix no userId, retrying auth / $d";
Landroid_connect($m2c_name, $m2c->{landroidType}, $m2c->{autocreate});
Landroid_connect($m2c_name,$m2c->{landroidType},$m2c->{autocreate},1);
}
return;
}
@ -207,6 +209,7 @@ Landroid_connect3($)
$m2d = $defs{$m2d_name};
$attr{$m2d_name}{IODev} = $m2c->{NAME} if($m2d);
}
my $m2d_name = $m2d ? $m2d->{NAME} : "";
for my $key (keys %{$dl}) {
next if($key =~ m/^${i1}_(auto_schedule|last_status)/);
@ -215,16 +218,14 @@ Landroid_connect3($)
my $val = $dl->{$key};
next if(!defined($val));
$val =~ s,\\/,/,g; # Bug in the backend?
if($m2d) { # autocreate deactivated
my $m2d_name = $m2d->{NAME};
setReadingsVal($m2d, $readingName,$val,$now) if($m2c->{autocreate});
push @cmds, $val if($readingName eq "mqtt_topics_command_in");
if($readingName eq "mqtt_topics_command_out") {
push @subs, $val;
$attr{$m2d_name}{readingList}="$val:.* {json2nameValue(\$EVENT)}"
if($m2c->{autocreate} &&
!AttrVal($m2d->{NAME}, "readingList", undef));
}
setReadingsVal($m2d, $readingName,$val,$now)
if($m2c->{autocreate} && $m2d);
push @cmds, $val if($readingName eq "mqtt_topics_command_in");
if($readingName eq "mqtt_topics_command_out") {
push @subs, $val;
$attr{$m2d_name}{readingList}="$val:.* {json2nameValue(\$EVENT)}"
if($m2c->{autocreate} && $m2d &&
!AttrVal($m2d_name, "readingList", undef));
}
$m2c->{mqttEndpoint} = $val if($readingName eq "mqtt_endpoint");
}
@ -283,14 +284,10 @@ sub
Landroid_retry($$;$)
{
my ($m2c, $err, $debug) = @_;
my $m2c_name = $m2c->{NAME};
Log3 $m2c, 1, $err;
Log3 $m2c, 4, $debug if($debug);
$m2c->{NEXT_OPEN} = gettimeofday()+AttrVal($m2c_name, "nextOpenDelay", 180);
delete($m2c->{inConnectFn});
$readyfnlist{"$m2c_name.$m2c->{DeviceName}"} = $m2c;
$readyfnlist{"$m2c->{NAME}.$m2c->{DeviceName}"} = $m2c;
}
1;