Übernahme in den Testing Zweig #22

Merged
marko merged 24 commits from devel into testing 2021-05-12 07:27:15 +00:00
Showing only changes of commit 6328debf01 - Show all commits

View File

@ -156,8 +156,11 @@ BEGIN {
readingsBeginUpdate
readingsEndUpdate
Log3
devspec2array
asyncOutput
CommandAttr
AttrVal
InternalVal
ReadingsVal
CommandDefMod
modules
@ -404,18 +407,17 @@ sub Get {
// return qq{"get $name" needs at least one argument};
if ( lc $cmd eq 'debug_devices_list' ) {
$hash->{helper}{debug_device_list} = 'get';
#Log3 $name, 2, Dumper($hash->{helper});
#Write($hash, undef, undef, undef, undef);
return 'coming soon';
my $device = shift @$aArg;
$hash->{helper}{debug_device} = $device;
Write($hash, undef, undef, undef, undef);
return undef;
} else {
my $list = "";
$list .= " debug_devices_list:noArg"
if ( AttrVal( $name, "debugJSON", "none") ne "none" );
my $list = "";
$list .= " debug_devices_list:"
.join( ',', @{ $hash->{helper}{deviceList} })
if ( AttrVal( $name, "debugJSON", "none") ne "none"
&& exists($hash->{helper}{deviceList}) );
return "Unknown argument $cmd,choose one of $list";
}
}
@ -487,6 +489,7 @@ sub Write {
method => $method,
header => $header,
doTrigger => 1,
cl => $hash->{CL},
callback => \&ErrorHandling
}
);
@ -709,7 +712,31 @@ sub ErrorHandling {
return;
}
if (defined($hash->{helper}{debug_device})){
Log3 $name, 5, "GardenaSmartBridge DEBUG Device";
my @device_spec = ("name", "id", "category");
my $devJson=$decode_json->{devices};
my $output = '.:{ DEBUG OUTPUT for '.$devJson->{name}.' }:. \n';
for my $spec (@device_spec) {
$output .= "$spec : $devJson->{$spec} \n";
}
#settings
$output .= '\n=== Settings \n';
my $i = 0;
for my $dev_settings ( @ { $devJson->{settings} } ) {
$output .= "[".$i++."]id: $dev_settings->{id} \n";
$output .= "name: $dev_settings->{name} ";
if (ref ($dev_settings->{value}) eq 'ARRAY'
|| ref ($dev_settings->{value}) eq 'HASH'){
$output .= 'N/A \n';
} else {
$output .= "value: $dev_settings->{value} \n";
}
}
$hash->{helper}{debug_device_output} = $output;
asyncOutput($param->{cl}, $hash->{helper}{debug_device_output});
return;
}
readingsSingleUpdate( $hash, 'state', 'Connected', 1 )
if ( defined( $hash->{helper}{locations_id} ) );
ResponseProcessing( $hash, $data )
@ -773,19 +800,6 @@ sub ResponseProcessing {
return;
}
elsif ( exists($hash->{helper}{debug_device_list}) ) {
Log3 $name, 4, "Debug Devices List";
my $msg;
$msg = "test krams";
my @buffer = split( '"devices":\[', $json );
my ( $json, $tail ) = ParseJSON( $hash, $buffer[1] );
$decode_json = eval { decode_json($json) };
delete $hash->{helper}{debug_device_list};
return $msg;
}
elsif (defined( $decode_json->{devices} )
&& ref( $decode_json->{devices} ) eq 'ARRAY'
&& scalar( @{ $decode_json->{devices} } ) > 0 )
@ -960,6 +974,12 @@ sub getDevices {
if ( not IsDisabled($name) ) {
delete $hash->{helper}{deviceList};
my @list;
@list = devspec2array('TYPE=GardenaSmartDevice');
for my $gardenaDev (@list){
push( @{ $hash->{helper}{deviceList} }, $gardenaDev );
}
Write( $hash, undef, undef, undef );
Log3 $name, 4,
"GardenaSmartBridge ($name) - fetch device list and device states";
@ -1195,6 +1215,7 @@ sub createHttpValueStrings {
&& defined( $hash->{helper}{locations_id} ) );
}
$uri = '/devices/'.InternalVal($hash->{helper}{debug_device}, 'DEVICEID', 0 ) if ( exists ($hash->{helper}{debug_device}));
$uri = '/auth/token' if ( !defined( $hash->{helper}{session_id} ) );
if ( defined( $hash->{helper}{locations_id} ) ) {