fixed error if tokendata is null
This commit is contained in:
parent
cf3ac10da0
commit
de68eebfc0
|
@ -644,9 +644,10 @@ sub Tado_UpdateZoneOverlayCallback($)
|
|||
sub TadoAPI_SetAllOverlays(@){
|
||||
my ($hash, $setting) = @_;
|
||||
my $name = $hash->{NAME};
|
||||
my $homeID = $attr{$name}{homeID};
|
||||
my $homeID = $attr{$name}{homeID};
|
||||
my $TokenData = TadoAPI_LoadToken($hash);
|
||||
|
||||
if($apiStatus == 1){
|
||||
if(defined($TokenData)){
|
||||
my $zonecount = TadoAPI_ZoneRequest($hash);
|
||||
my $message = "";
|
||||
my $method = "";
|
||||
|
@ -697,11 +698,12 @@ sub TadoAPI_SetAllOverlays(@){
|
|||
sub TadoAPI_UpdateFn(@){
|
||||
my ($hash) = @_;
|
||||
my $name = $hash->{NAME};
|
||||
my $TokenData = TadoAPI_LoadToken($hash);
|
||||
|
||||
TadoAPI_Status($hash);
|
||||
|
||||
# zone specific updates
|
||||
if($apiStatus == 1){
|
||||
if($apiStatus == 1 && defined($TokenData)){
|
||||
my @zones = TadoAPI_ZoneRequest($hash);
|
||||
my @devices = TadoAPI_RequestTadoDevices($hash);
|
||||
my $zonecount = @zones;
|
||||
|
@ -745,6 +747,10 @@ sub TadoAPI_UpdateFn(@){
|
|||
readingsBeginUpdate($hash);
|
||||
readingsBulkUpdate($hash, "ActiveZones", $zonecount);
|
||||
readingsEndUpdate( $hash, 1 );
|
||||
|
||||
$hash->{UpdateFn}="OK";
|
||||
}else{
|
||||
$hash->{UpdateFn}="Update error";
|
||||
}
|
||||
return undef;
|
||||
}
|
||||
|
@ -1101,21 +1107,24 @@ sub TadoAPI_GetZoneNameById(@) {
|
|||
my $URL=$QueryURL.qq{/$homeID/zones};
|
||||
my $TokenData = TadoAPI_LoadToken($hash);
|
||||
|
||||
$header = HTTP::Headers->new("Content-Type"=>"application/json;charset=UTF-8","Authorization" => "$TokenData->{'token_type'} $TokenData->{'access_token'}");
|
||||
$UserAgent = LWP::UserAgent::Paranoid->new(ssl_opts => { verify_hostname => 1 },protocols_allowed => ['https','http'],request_timeout => 3,);
|
||||
$UserAgent->default_headers($header);
|
||||
if(defined($TokenData)){
|
||||
|
||||
$Request = GET($URL);
|
||||
$Response = $UserAgent->request($Request);
|
||||
$header = HTTP::Headers->new("Content-Type"=>"application/json;charset=UTF-8","Authorization" => "$TokenData->{'token_type'} $TokenData->{'access_token'}");
|
||||
$UserAgent = LWP::UserAgent::Paranoid->new(ssl_opts => { verify_hostname => 1 },protocols_allowed => ['https','http'],request_timeout => 3,);
|
||||
$UserAgent->default_headers($header);
|
||||
|
||||
if($Response->is_success){
|
||||
my $ResponseData = decode_json($Response->content);
|
||||
my $zoneName = TadoAPI_ReplaceUmlaute(@$ResponseData[$zoneID - 1]->{'name'});
|
||||
$zoneName = encode("UTF-8", $zoneName);
|
||||
$Request = GET($URL);
|
||||
$Response = $UserAgent->request($Request);
|
||||
|
||||
return $zoneName;
|
||||
}else{
|
||||
Log3 $name, 3, "TadoAPI $name" . ": " . "GetZoneNameById: [Authentication Error]". $Response->status_line;
|
||||
if($Response->is_success){
|
||||
my $ResponseData = decode_json($Response->content);
|
||||
my $zoneName = TadoAPI_ReplaceUmlaute(@$ResponseData[$zoneID - 1]->{'name'});
|
||||
$zoneName = encode("UTF-8", $zoneName);
|
||||
|
||||
return $zoneName;
|
||||
}else{
|
||||
Log3 $name, 3, "TadoAPI $name" . ": " . "GetZoneNameById: [Authentication Error]". $Response->status_line;
|
||||
}
|
||||
}
|
||||
return undef;
|
||||
}
|
||||
|
@ -1129,6 +1138,8 @@ sub TadoAPI_GetZoneTemperatureById(@){
|
|||
my $humidity = 0;
|
||||
my $TokenData = TadoAPI_LoadToken($hash);
|
||||
|
||||
if(defined($TokenData)){
|
||||
|
||||
$header = HTTP::Headers->new("Content-Type"=>"application/json;charset=UTF-8","Authorization" => "$TokenData->{'token_type'} $TokenData->{'access_token'}");
|
||||
$UserAgent = LWP::UserAgent::Paranoid->new(ssl_opts => { verify_hostname => 1 },protocols_allowed => ['https','http'],request_timeout => 3,);
|
||||
$UserAgent->default_headers($header);
|
||||
|
@ -1145,6 +1156,7 @@ sub TadoAPI_GetZoneTemperatureById(@){
|
|||
}else{
|
||||
Log3 $name, 3, "TadoAPI $name" . ": " . "GetZoneTemperatureById: [Authentication Error]". $Response->status_line;
|
||||
}
|
||||
}
|
||||
return undef;
|
||||
}
|
||||
|
||||
|
@ -1160,35 +1172,37 @@ sub TadoAPI_GetZoneReadingsById(@){
|
|||
my $overlay = 0;
|
||||
my $TokenData = TadoAPI_LoadToken($hash);
|
||||
|
||||
my $header = HTTP::Headers->new("Content-Type"=>"application/json;charset=UTF-8","Authorization" => "$TokenData->{'token_type'} $TokenData->{'access_token'}");
|
||||
my $ua = LWP::UserAgent::Paranoid->new(ssl_opts => { verify_hostname => 1 },protocols_allowed => ['https','http'],request_timeout => 3,);
|
||||
$ua->default_headers($header);
|
||||
if(defined($TokenData)){
|
||||
my $header = HTTP::Headers->new("Content-Type"=>"application/json;charset=UTF-8","Authorization" => "$TokenData->{'token_type'} $TokenData->{'access_token'}");
|
||||
my $ua = LWP::UserAgent::Paranoid->new(ssl_opts => { verify_hostname => 1 },protocols_allowed => ['https','http'],request_timeout => 3,);
|
||||
$ua->default_headers($header);
|
||||
|
||||
my $req = GET($URL);
|
||||
my $res = $ua->request($req);
|
||||
my $req = GET($URL);
|
||||
my $res = $ua->request($req);
|
||||
|
||||
if($res->is_success){
|
||||
my $ResponseData = decode_json($res->content);
|
||||
$temperature = $ResponseData->{'sensorDataPoints'}->{'insideTemperature'}->{'celsius'};
|
||||
$humidity = $ResponseData->{'sensorDataPoints'}->{'humidity'}->{'percentage'};
|
||||
$desiredTemp = $ResponseData->{'setting'}->{'temperature'}->{'celsius'};
|
||||
$currentHeatingPower = $ResponseData->{'activityDataPoints'}->{'heatingPower'}->{'percentage'};
|
||||
$overlay = $ResponseData->{'overlayType'};
|
||||
if (!defined $overlay) {$overlay = "no overlay"};
|
||||
if($res->is_success){
|
||||
my $ResponseData = decode_json($res->content);
|
||||
$temperature = $ResponseData->{'sensorDataPoints'}->{'insideTemperature'}->{'celsius'};
|
||||
$humidity = $ResponseData->{'sensorDataPoints'}->{'humidity'}->{'percentage'};
|
||||
$desiredTemp = $ResponseData->{'setting'}->{'temperature'}->{'celsius'};
|
||||
$currentHeatingPower = $ResponseData->{'activityDataPoints'}->{'heatingPower'}->{'percentage'};
|
||||
$overlay = $ResponseData->{'overlayType'};
|
||||
if (!defined $overlay) {$overlay = "no overlay"};
|
||||
|
||||
my $zoneName = TadoAPI_GetZoneNameById($hash, $zoneID);
|
||||
my $zoneName = TadoAPI_GetZoneNameById($hash, $zoneID);
|
||||
|
||||
readingsBeginUpdate($hash);
|
||||
readingsBulkUpdate($hash, "Temperatur_" . $zoneName, $temperature);
|
||||
readingsBulkUpdate($hash, "Luftfeuchtigkeit_" . $zoneName, $humidity);
|
||||
readingsBulkUpdate($hash, "Heizleistung_" . $zoneName, $currentHeatingPower);
|
||||
readingsBulkUpdate($hash, "OverlayType_" . $zoneName, $overlay);
|
||||
readingsBulkUpdate($hash, "DesiredTemp_" . $zoneName, $desiredTemp);
|
||||
readingsEndUpdate( $hash, 1 );
|
||||
readingsBeginUpdate($hash);
|
||||
readingsBulkUpdate($hash, "Temperatur_" . $zoneName, $temperature);
|
||||
readingsBulkUpdate($hash, "Luftfeuchtigkeit_" . $zoneName, $humidity);
|
||||
readingsBulkUpdate($hash, "Heizleistung_" . $zoneName, $currentHeatingPower);
|
||||
readingsBulkUpdate($hash, "OverlayType_" . $zoneName, $overlay);
|
||||
readingsBulkUpdate($hash, "DesiredTemp_" . $zoneName, $desiredTemp);
|
||||
readingsEndUpdate( $hash, 1 );
|
||||
|
||||
return ($temperature, $humidity, $desiredTemp, $currentHeatingPower, $overlay );
|
||||
}else{
|
||||
Log3 $name, 3, "TadoAPI $name" . ": " . "GetZoneReadingsById: [Authentication Error]". $Response->status_line;
|
||||
return ($temperature, $humidity, $desiredTemp, $currentHeatingPower, $overlay );
|
||||
}else{
|
||||
Log3 $name, 3, "TadoAPI $name" . ": " . "GetZoneReadingsById: [Authentication Error]". $Response->status_line;
|
||||
}
|
||||
}
|
||||
return undef;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue