devel #17
@@ -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" );
 | 
			
		||||
      
 | 
			
		||||
      return "Unknown argument $cmd,choose one of $list";
 | 
			
		||||
    
 | 
			
		||||
        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
 | 
			
		||||
        }
 | 
			
		||||
    );
 | 
			
		||||
@@ -514,7 +517,7 @@ sub ErrorHandling {
 | 
			
		||||
      if ( defined( $param->{'device_id'} ) );
 | 
			
		||||
 | 
			
		||||
    my $dname = $dhash->{NAME};
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
    Log3 $name, 4, "GardenaSmartBridge ($name) - Request: $data";
 | 
			
		||||
   
 | 
			
		||||
    my $decode_json = eval { decode_json($data) };
 | 
			
		||||
@@ -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} ) ) {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user