Device-Nest

 view release on metacpan or  search on metacpan

lib/Device/Nest.pm  view on Meta::CPAN

 Returns 0 on failure
 
=cut
sub fetch_Thermostat_Designation {
    my $self     = shift;
	my $response = $self->{'ua'}->get($self->{'device_url'});
    
    $self->{'last_code'} = $response->code;
    
    if ($response->is_success) {
      my $decoded_response      = decode_json($response->content);
      my $designation           = ($decoded_response->{'thermostats'});
      my @designation2          = keys(%$designation);
      $self->{'thermostat'}     = $designation2[0];
      $self->{'thermostat_url'} = "https://developer-api.nest.com/devices/thermostats/".$self->{'thermostat'};
      print "Thermostat designation: ".$self->{'thermostat'}."\n" if ($self->{'debug'});

      my $response = $self->{'ua'}->get("https://developer-api.nest.com/structures?auth=".$self->{'auth_token'});

      $self->{'last_code'}   = $response->code;
    
      if ($response->is_success) {
        my $decoded_response  = decode_json($response->content);
        my @designation       = keys(%$decoded_response);        
        $self->{'structure'}  = $designation[0];
        $self->{'struct_url'} = "https://developer-api.nest.com/structures/".$self->{'structure'}."?auth=".$self->{'auth_token'};
        print "Structure Designation: ".$self->{'structure'}."\n" if ($self->{'debug'});
        return 1;
      } else {
        print "Nest->fetch_Thermostat_Designation(): Response from server for structure URL is not valid\n";
        print "  \"".$response->content."\"\n\n";
        return 0;
      }
    } else {

lib/Device/Nest.pm  view on Meta::CPAN

    if (!defined $self->{'thermostat'}) {
      print "Nest->fetch_Away_State(): No thermostat designation found\n";
      return 0;
    }
    
	my $response = $self->{'ua'}->get($self->{'struct_url'});

    $self->{'last_code'}   = $response->code;
    
    if ($response->is_success) {
      my $decoded_response = decode_json($response->content);
      return $decoded_response->{'away'};
    } else {
      print "Nest->fetch_Away_State(): Failed with return code ".$self->get_last_code()."\n";
      return 0;
    }
}


#*****************************************************************

=head2 fetch_Country_Code - Fetch the country code reported by Nest

lib/Device/Nest.pm  view on Meta::CPAN

    if (!defined $self->{'thermostat'}) {
      print "Nest->fetch_Country_Code(): No thermostat designation found\n";
      return 0;
    }
    
	my $response = $self->{'ua'}->get($self->{'struct_url'});
    
    $self->{'last_code'}   = $response->code;
    
    if ($response->is_success) {
      my $decoded_response = decode_json($response->content);
      return $decoded_response->{$self->{'structure'}}->{'country_code'};
    } else {
      print "Nest->fetch_Country_Code(): Failed with return code ".$self->get_last_code()."\n";
      return 0;
    }
}


#*****************************************************************

=head2 fetch_Locale - Fetch the locale reported by Nest

lib/Device/Nest.pm  view on Meta::CPAN

    my $url         = shift;
    my $tag         = shift;
    my $time_before = gettimeofday;
	my $response    = $self->{'ua'}->get($url);
    my $time_after  = gettimeofday;
	
    $self->{'last_exec_time'} = eval{($time_after-$time_before)*1000};
    $self->{'last_code'}      = $response->code;
    
    if ($response->is_success) {
      my $decoded_response = decode_json($response->content);
#      print Dumper($decoded_response);
      return $decoded_response->{'thermostats'}->{$self->{'thermostat'}}->{$tag};
    } else {
      print "\n".(caller(1))[3]."(): Failed with return code ".$self->get_last_code()."\n";
      return 0;
    }
}


#*****************************************************************

sub __process_set {



( run in 0.244 second using v1.01-cache-2.11-cpan-a9ef4e587e4 )