add interval fetch data
This commit is contained in:
parent
8339ef86a4
commit
ee486e0ada
@ -66,7 +66,7 @@ use HttpUtils;
|
|||||||
eval "use JSON;1" or $missingModul .= "JSON ";
|
eval "use JSON;1" or $missingModul .= "JSON ";
|
||||||
|
|
||||||
|
|
||||||
my $version = "0.0.8";
|
my $version = "0.0.18";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -76,7 +76,7 @@ sub TeslaPowerwall2AC_Attr(@);
|
|||||||
sub TeslaPowerwall2AC_Define($$);
|
sub TeslaPowerwall2AC_Define($$);
|
||||||
sub TeslaPowerwall2AC_Initialize($);
|
sub TeslaPowerwall2AC_Initialize($);
|
||||||
sub TeslaPowerwall2AC_Get($@);
|
sub TeslaPowerwall2AC_Get($@);
|
||||||
sub TeslaPowerwall2AC_GetData($@);
|
sub TeslaPowerwall2AC_GetData($);
|
||||||
sub TeslaPowerwall2AC_Undef($$);
|
sub TeslaPowerwall2AC_Undef($$);
|
||||||
sub TeslaPowerwall2AC_ResponseProcessing($$$);
|
sub TeslaPowerwall2AC_ResponseProcessing($$$);
|
||||||
sub TeslaPowerwall2AC_ReadingsProcessing_Aggregates($$);
|
sub TeslaPowerwall2AC_ReadingsProcessing_Aggregates($$);
|
||||||
@ -94,7 +94,6 @@ my %paths = ( 'statussoe' => 'system_status/soe',
|
|||||||
'sitemaster' => 'sitemaster',
|
'sitemaster' => 'sitemaster',
|
||||||
'powerwalls' => 'powerwalls'
|
'powerwalls' => 'powerwalls'
|
||||||
);
|
);
|
||||||
my %readings = ();
|
|
||||||
|
|
||||||
|
|
||||||
sub TeslaPowerwall2AC_Initialize($) {
|
sub TeslaPowerwall2AC_Initialize($) {
|
||||||
@ -144,11 +143,11 @@ sub TeslaPowerwall2AC_Define($$) {
|
|||||||
|
|
||||||
if( $init_done ) {
|
if( $init_done ) {
|
||||||
|
|
||||||
#TeslaPowerwall2AC_Timer_GetData($hash);
|
TeslaPowerwall2AC_Timer_GetData($hash);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
#InternalTimer( gettimeofday()+15, "TeslaPowerwall2AC_Timer_GetData", $hash, 0 );
|
InternalTimer( gettimeofday()+15, "TeslaPowerwall2AC_Timer_GetData", $hash );
|
||||||
}
|
}
|
||||||
|
|
||||||
$modules{TeslaPowerwall2AC}{defptr}{HOST} = $hash;
|
$modules{TeslaPowerwall2AC}{defptr}{HOST} = $hash;
|
||||||
@ -212,10 +211,11 @@ sub TeslaPowerwall2AC_Get($@) {
|
|||||||
|
|
||||||
my ($hash, $name, $cmd) = @_;
|
my ($hash, $name, $cmd) = @_;
|
||||||
my $arg;
|
my $arg;
|
||||||
#my ($hash, $name, $cmd, @args) = @_;
|
|
||||||
#my ($arg, @params) = @args;
|
|
||||||
|
|
||||||
|
|
||||||
|
# ensure actionQueue exists
|
||||||
|
$hash->{actionQueue} = [] if( not defined($hash->{actionQueue}) );
|
||||||
|
|
||||||
if( $cmd eq 'statusSOE' ) {
|
if( $cmd eq 'statusSOE' ) {
|
||||||
|
|
||||||
$arg = lc($cmd);
|
$arg = lc($cmd);
|
||||||
@ -247,7 +247,9 @@ sub TeslaPowerwall2AC_Get($@) {
|
|||||||
#TeslaPowerwall2AC_ResponseProcessing($hash,$arg,$json);
|
#TeslaPowerwall2AC_ResponseProcessing($hash,$arg,$json);
|
||||||
|
|
||||||
|
|
||||||
TeslaPowerwall2AC_GetData($hash,$arg);
|
unshift( @{$hash->{actionQueue}}, $arg );
|
||||||
|
|
||||||
|
TeslaPowerwall2AC_GetData($hash);
|
||||||
|
|
||||||
return undef;
|
return undef;
|
||||||
}
|
}
|
||||||
@ -258,12 +260,17 @@ sub TeslaPowerwall2AC_Timer_GetData($) {
|
|||||||
my $name = $hash->{NAME};
|
my $name = $hash->{NAME};
|
||||||
|
|
||||||
|
|
||||||
if( not IsDisabled($name) ) {
|
# ensure actionQueue exists
|
||||||
|
$hash->{actionQueue} = [] if( not defined($hash->{actionQueue}) );
|
||||||
|
|
||||||
TeslaPowerwall2AC_GetData($hash,'all','all');
|
if( not IsDisabled($name) ) {
|
||||||
|
while( my $obj = each %{$paths} ) {
|
||||||
|
unshift( @{$hash->{actionQueue}}, $obj );
|
||||||
|
}
|
||||||
|
|
||||||
|
TeslaPowerwall2AC_GetData($hash);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
readingsSingleUpdate($hash,'state','disabled',1);
|
readingsSingleUpdate($hash,'state','disabled',1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -271,50 +278,17 @@ sub TeslaPowerwall2AC_Timer_GetData($) {
|
|||||||
Log3 $name, 4, "TeslaPowerwall2AC ($name) - Call InternalTimer TeslaPowerwall2AC_Timer_GetData";
|
Log3 $name, 4, "TeslaPowerwall2AC ($name) - Call InternalTimer TeslaPowerwall2AC_Timer_GetData";
|
||||||
}
|
}
|
||||||
|
|
||||||
sub TeslaPowerwall2AC_GetData($@) {
|
sub TeslaPowerwall2AC_GetData($) {
|
||||||
|
|
||||||
|
my ($hash) = @_;
|
||||||
|
|
||||||
my ($hash,$path) = @_;
|
|
||||||
my $name = $hash->{NAME};
|
my $name = $hash->{NAME};
|
||||||
my $host = $hash->{HOST};
|
my $host = $hash->{HOST};
|
||||||
my $port = $hash->{PORT};
|
my $port = $hash->{PORT};
|
||||||
|
my $path = pop( @{$hash->{actionQueue}} );
|
||||||
my $uri = $host . ':' . $port . '/api/' . $paths{$path};
|
my $uri = $host . ':' . $port . '/api/' . $paths{$path};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# ensure actionQueue exists
|
|
||||||
$hash->{actionQueue} = [] if ( ! defined( $hash->{actionQueue} ) );
|
|
||||||
|
|
||||||
# Queue if not yet retried and currently waiting
|
|
||||||
if( defined( $hash->{doStatus}) and $hash->{doStatus} =~ /^WAITING/ and $retryCount == 0 ) {
|
|
||||||
# add to queue
|
|
||||||
Log3 $name, 4, "LoeweTV_SendRequest $name: add action to queue - args: ".$actionString;
|
|
||||||
# RequestAccess will always be added to the beginning of the queue
|
|
||||||
if ( ( $action eq "RequestAccess" ) ) {
|
|
||||||
unshift( @{ $hash->{actionQueue} }, \@args );
|
|
||||||
} else {
|
|
||||||
push( @{ $hash->{actionQueue} }, \@args );
|
|
||||||
}
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
readingsSingleUpdate($hash,'state','fetch data',1);
|
readingsSingleUpdate($hash,'state','fetch data',1);
|
||||||
|
|
||||||
HttpUtils_NonblockingGet(
|
HttpUtils_NonblockingGet(
|
||||||
@ -390,17 +364,8 @@ sub TeslaPowerwall2AC_ErrorHandling($$$) {
|
|||||||
### End Error Handling
|
### End Error Handling
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TeslaPowerwall2AC_GetData($hash)
|
||||||
$hash->{doStatus} = "";
|
unless( defined($hash->{actionQueue}) and scalar(@{$hash->{actionQueue}}) > 0 );
|
||||||
|
|
||||||
#########################
|
|
||||||
# start next command in queue if available
|
|
||||||
if( defined( $hash->{actionQueue}) and scalar( @{ $hash->{actionQueue}}) ) {
|
|
||||||
my $ref = shift @{ $hash->{actionQueue} };
|
|
||||||
Log3 $name, 4, "LoeweTV_HU_Callback $name: handle queued cmd with :@$ref[0]: ";
|
|
||||||
LoeweTV_SendRequest( $hash, @$ref[0], @$ref[1], @$ref[2] );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
Log3 $name, 4, "TeslaPowerwall2AC ($name) - Recieve JSON data: $data";
|
Log3 $name, 4, "TeslaPowerwall2AC ($name) - Recieve JSON data: $data";
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user