variable declarations at the beginning of the method.

This commit is contained in:
Matthias Sandmann 2022-03-27 01:14:16 +01:00
parent 75f33f0144
commit 66d0c87f09

View File

@ -231,14 +231,13 @@ sub _GetCmdList {
my %cmdArray = %$commands; my %cmdArray = %$commands;
my $name = $hash->{NAME}; my $name = $hash->{NAME};
my $retVal;
#return, if cmd is valid #return, if cmd is valid
return if ( defined($cmd) and defined( $cmdArray{$cmd} ) ); return if ( defined($cmd) and defined( $cmdArray{$cmd} ) );
#response for gui or the user, if command is invalid #response for gui or the user, if command is invalid
my $retVal;
foreach my $mySet ( keys %cmdArray ) { foreach my $mySet ( keys %cmdArray ) {
#append set-command #append set-command
$retVal = $retVal . " " $retVal = $retVal . " "
if ( defined($retVal) ) if ( defined($retVal) )
@ -284,11 +283,12 @@ sub Define {
my ( $hash, $def ) = @_; my ( $hash, $def ) = @_;
my @param = split( "[ \t]+", $def ); my @param = split( "[ \t]+", $def );
my $name = $hash->{NAME}; my $name = $hash->{NAME};
my $errmsg = '';
# set API URI as Internal Key # set API URI as Internal Key
$hash->{APIURI} = 'https://api.easee.cloud/api/'; $hash->{APIURI} = 'https://api.easee.cloud/api/';
Log3 $name, 3, "EaseeWallbox_Define $name: called "; Log3 $name, 3, "EaseeWallbox_Define $name: called ";
my $errmsg = '';
# Check parameter(s) - Must be min 4 in total (counts strings not purly parameter, interval is optional) # Check parameter(s) - Must be min 4 in total (counts strings not purly parameter, interval is optional)
if ( int(@param) < 4 ) { if ( int(@param) < 4 ) {
@ -314,7 +314,6 @@ sub Define {
#Take password and use custom encryption. #Take password and use custom encryption.
# Encryption is taken from fitbit / withings module # Encryption is taken from fitbit / withings module
my $password = _encrypt( $param[3] ); my $password = _encrypt( $param[3] );
$hash->{Password} = $password; $hash->{Password} = $password;
if ( defined $param[4] ) { if ( defined $param[4] ) {
@ -365,7 +364,6 @@ sub Define {
sub Undef { sub Undef {
my ( $hash, $arg ) = @_; my ( $hash, $arg ) = @_;
RemoveInternalTimer($hash); RemoveInternalTimer($hash);
return; return;
} }
@ -567,13 +565,15 @@ sub WriteToCloudAPI {
my $message = shift; my $message = shift;
my $name = $hash->{NAME}; my $name = $hash->{NAME};
my $url = $hash->{APIURI} . $dpoints{$dpoint}; my $url = $hash->{APIURI} . $dpoints{$dpoint};
my $chargerId;
my $siteId;
my $payload;
######### #########
# CHANGE THIS # CHANGE THIS
my $payload; my $deviceId = "WC1";
$payload = encode_json \%$message if defined $message; $payload = encode_json \%$message if defined $message;
my $deviceId = "WC1";
if ( not defined $hash ) { if ( not defined $hash ) {
my $msg = my $msg =
"Error on EaseeWallbox_WriteToCloudAPI. Missing hash variable"; "Error on EaseeWallbox_WriteToCloudAPI. Missing hash variable";
@ -584,7 +584,7 @@ sub WriteToCloudAPI {
#Check if chargerID is required in URL and replace or alert. #Check if chargerID is required in URL and replace or alert.
if ( $url =~ m/\#ChargerID\#/x ) if ( $url =~ m/\#ChargerID\#/x )
{ # Regular expression without "/x" flag. See page 236 of PBP (RegularExpressions::RequireExtendedFormatting) { # Regular expression without "/x" flag. See page 236 of PBP (RegularExpressions::RequireExtendedFormatting)
my $chargerId = ReadingsVal( $name, 'charger_id', undef ); $chargerId = ReadingsVal( $name, 'charger_id', undef );
if ( not defined $chargerId ) { if ( not defined $chargerId ) {
my $error = my $error =
"Error on EaseeWallbox_WriteToCloudAPI. Missing charger_id. Please ensure basic data is available."; "Error on EaseeWallbox_WriteToCloudAPI. Missing charger_id. Please ensure basic data is available.";
@ -598,7 +598,7 @@ sub WriteToCloudAPI {
#Check if siteID is required in URL and replace or alert. #Check if siteID is required in URL and replace or alert.
if ( $url =~ m/\#SiteID\#/x ) if ( $url =~ m/\#SiteID\#/x )
{ # Regular expression without "/x" flag. See page 236 of PBP (RegularExpressions::RequireExtendedFormatting) { # Regular expression without "/x" flag. See page 236 of PBP (RegularExpressions::RequireExtendedFormatting)
my $siteId = ReadingsVal( $name, 'site_id', undef ); $siteId = ReadingsVal( $name, 'site_id', undef );
if ( not defined $siteId ) { if ( not defined $siteId ) {
my $error = my $error =
"Error on EaseeWallbox_WriteToCloudAPI. Missing site_id. Please ensure basic data is available."; "Error on EaseeWallbox_WriteToCloudAPI. Missing site_id. Please ensure basic data is available.";
@ -642,6 +642,8 @@ sub ResponseHandling {
my $data = shift; my $data = shift;
my $hash = $param->{hash}; my $hash = $param->{hash};
my $name = $hash->{NAME}; my $name = $hash->{NAME};
my $decoded_json;
my $value;
Log3 $name, 4, "Callback received." . $param->{url}; Log3 $name, 4, "Callback received." . $param->{url};
@ -690,14 +692,12 @@ sub ResponseHandling {
Log3 $name, 5, '$err: ' . $err; Log3 $name, 5, '$err: ' . $err;
Log3 $name, 5, "method: " . $param->{method}; Log3 $name, 5, "method: " . $param->{method};
my $decoded_json;
eval { $decoded_json = decode_json($data) }; # statt eval ist es empfohlen catch try zu verwenden. Machen wir später eval { $decoded_json = decode_json($data) }; # statt eval ist es empfohlen catch try zu verwenden. Machen wir später
if ($@) { if ($@) {
Log3 $name, 3, "EaseeWallbox ($name) - JSON error while processing request"; Log3 $name, 3, "EaseeWallbox ($name) - JSON error while processing request";
} }
Log3 $name, 5, 'Decoded: ' . Dumper($decoded_json); Log3 $name, 5, 'Decoded: ' . Dumper($decoded_json);
my $value;
if ( defined $decoded_json if ( defined $decoded_json
and $decoded_json ne '' and $decoded_json ne ''
and ref($decoded_json) eq "HASH" and ref($decoded_json) eq "HASH"
@ -713,8 +713,6 @@ sub ResponseHandling {
return; return;
} }
# Und so weiter und so weiter mit den einzelnen Funktionen !!!
if ( $param->{dpoint} eq 'getChargerSessionsMonthly' ) { if ( $param->{dpoint} eq 'getChargerSessionsMonthly' ) {
Processing_DpointGetChargerSessionsMonthly( $hash, $decoded_json ); Processing_DpointGetChargerSessionsMonthly( $hash, $decoded_json );
return; return;
@ -743,7 +741,7 @@ sub ResponseHandling {
$decoded_json = $decoded_json->[0] if ref($decoded_json) eq "ARRAY"; $decoded_json = $decoded_json->[0] if ref($decoded_json) eq "ARRAY";
readingsSingleUpdate( $hash, "lastResponse", readingsSingleUpdate( $hash, "lastResponse",
'OK - Action: ' . $commandCodes{ $decoded_json->{commandId} }, 1 ) 'OK - Action: ' . $commandCodes{ $decoded_json->{commandId} }, 1 )
if defined $decoded_json->{commandId}; if exists $decoded_json->{commandId};
readingsSingleUpdate( readingsSingleUpdate(
$hash, $hash,
"lastResponse", "lastResponse",
@ -752,7 +750,7 @@ sub ResponseHandling {
. $decoded_json->{status} . ')', . $decoded_json->{status} . ')',
1 1
) )
if defined $decoded_json->{status} and defined $decoded_json->{title}; if exists $decoded_json->{status} and exists $decoded_json->{title};
return; return;
} }
else { else {
@ -915,13 +913,13 @@ sub Processing_DpointGetChargerConfiguration {
sub Processing_DpointGetCurrentSession { sub Processing_DpointGetCurrentSession {
my $hash = shift; my $hash = shift;
my $decoded_json = shift; my $decoded_json = shift;
my $name = $hash->{NAME}; my $name = $hash->{NAME};
my $value;
readingsBeginUpdate($hash); readingsBeginUpdate($hash);
readingsBulkUpdate( $hash, "session_energy", readingsBulkUpdate( $hash, "session_energy",
sprintf( "%.2f", $decoded_json->{sessionEnergy} ) ); sprintf( "%.2f", $decoded_json->{sessionEnergy} ) );
my $value = $value =
defined $decoded_json->{sessionStart} defined $decoded_json->{sessionStart}
? _transcodeDate( $decoded_json->{sessionStart} ) ? _transcodeDate( $decoded_json->{sessionStart} )
: 'N/A'; : 'N/A';
@ -972,7 +970,6 @@ sub Processing_DpointGetChargerSite {
readingsBulkUpdate( $hash, "cost_vat", $decoded_json->{vat} ); readingsBulkUpdate( $hash, "cost_vat", $decoded_json->{vat} );
readingsBulkUpdate( $hash, "cost_currency", readingsBulkUpdate( $hash, "cost_currency",
$decoded_json->{currencyId} ); $decoded_json->{currencyId} );
#readingsBulkUpdate( $hash, "site_ratedCurrent", $decoded_json->{ratedCurrent} ); #readingsBulkUpdate( $hash, "site_ratedCurrent", $decoded_json->{ratedCurrent} );
#readingsBulkUpdate( $hash, "site_createdOn", $decoded_json->{createdOn} ); #readingsBulkUpdate( $hash, "site_createdOn", $decoded_json->{createdOn} );
#readingsBulkUpdate( $hash, "site_updatedOn", $decoded_json->{updatedOn} ); #readingsBulkUpdate( $hash, "site_updatedOn", $decoded_json->{updatedOn} );
@ -989,9 +986,9 @@ sub Processing_DpointGetChargers {
my $site = $decoded_json->[0]; my $site = $decoded_json->[0];
my $circuit = $site->{circuits}->[0]; my $circuit = $site->{circuits}->[0];
my $charger = $circuit->{chargers}->[0]; my $charger = $circuit->{chargers}->[0];
my $chargerId = $charger->{id};
readingsBeginUpdate($hash); readingsBeginUpdate($hash);
my $chargerId = $charger->{id};
readingsBulkUpdate( $hash, "site_id", $site->{id} ); readingsBulkUpdate( $hash, "site_id", $site->{id} );
readingsBulkUpdate( $hash, "site_key", $site->{siteKey} ); readingsBulkUpdate( $hash, "site_key", $site->{siteKey} );
readingsBulkUpdate( $hash, "charger_id", $chargerId ); readingsBulkUpdate( $hash, "charger_id", $chargerId );
@ -1000,21 +997,17 @@ sub Processing_DpointGetChargers {
readingsEndUpdate( $hash, 1 ); readingsEndUpdate( $hash, 1 );
WriteToCloudAPI( $hash, 'getChargerConfiguration', 'GET' ); WriteToCloudAPI( $hash, 'getChargerConfiguration', 'GET' );
return; return;
} }
sub Processing_DpointGetChargerSessionsDaily { sub Processing_DpointGetChargerSessionsDaily {
my $hash = shift; my $hash = shift;
my $decoded_json = shift; my $decoded_json = shift;
my $name = $hash->{NAME}; my $name = $hash->{NAME};
my @a = ( -5 .. -1 );
Log3 $name, 5, 'Evaluating getChargerSessionsDaily'; Log3 $name, 5, 'Evaluating getChargerSessionsDaily';
my @x = $decoded_json;
my @a = ( -5 .. -1 );
readingsBeginUpdate($hash); readingsBeginUpdate($hash);
for (@a) { for (@a) {
Log3 $name, 5, 'laeuft noch: ' . $_; Log3 $name, 5, 'laeuft noch: ' . $_;
@ -1029,22 +1022,17 @@ sub Processing_DpointGetChargerSessionsDaily {
sprintf( "%.2f", $decoded_json->[$_]->{'totalCost'} ) sprintf( "%.2f", $decoded_json->[$_]->{'totalCost'} )
); );
} }
readingsEndUpdate( $hash, 1 ); readingsEndUpdate( $hash, 1 );
return; return;
} }
sub Processing_DpointGetChargerSessionsMonthly { sub Processing_DpointGetChargerSessionsMonthly {
my $hash = shift; my $hash = shift;
my $decoded_json = shift; my $decoded_json = shift;
my $name = $hash->{NAME}; my $name = $hash->{NAME};
my @a = ( -6 .. -1 );
Log3 $name, 4, 'Evaluating getChargerSessionsMonthly'; Log3 $name, 4, 'Evaluating getChargerSessionsMonthly';
my @x = $decoded_json;
my @a = ( -6 .. -1 );
readingsBeginUpdate($hash); readingsBeginUpdate($hash);
for (@a) { for (@a) {