all subs use now correct zoneID

This commit is contained in:
Philipp Wo 2019-11-22 16:35:48 +01:00
parent f862149027
commit c802b3f655
1 changed files with 60 additions and 56 deletions

View File

@ -288,7 +288,7 @@ sub TadoAPI_Get(@) {
$message .= "ZoneID: " . ($devArr[$i]->{'id'});
my $spacer = 0;
foreach my $item ( @$tadodevices ){
$message .= "\t" if ($spacer > 0);
$message .= "\t " if ($spacer > 0);
$message .= " " . $item->{'serialNo'} . " Battery: " . $item->{'batteryState'} . "\n";
$devicecount++;
$spacer++;
@ -604,13 +604,15 @@ sub TadoAPI_SetAllOverlays(@){
my $TokenData = TadoAPI_LoadToken($hash);
if(defined($TokenData)){
my $zonecount = TadoAPI_ZoneRequest($hash);
my $message = "";
my $method = "";
my $myjson ="";
for (my $i=1; $i <= $zonecount; $i++) {
TadoAPI_SetZoneOverlayById($hash, $i, $setting);
my @zoneArr = TadoAPI_RequestTadoDevices($hash);
for (my $i=0; $i < @zoneArr; $i++) {
my $zoneid = $zoneArr[$i]->{'id'};
TadoAPI_SetZoneOverlayById($hash, $zoneid, $setting);
}
}
}
@ -969,18 +971,20 @@ sub TadoAPI_GetZoneInfo(@) {
HttpUtils_NonblockingGet($request);
# zones
for (my $i=1; $i <= TadoAPI_GetZoneCount($hash); $i++) {
$URL=$QueryURL.qq{/$homeID/zones/$i/state};
my $infotext = "ZoneID $i (" . TadoAPI_GetZoneNameById($hash, $i) . ") Status:";
my $request = {
url => $URL,
header => { "Content-Type"=>"application/json;charset=UTF-8","Authorization" => "$TokenData->{'token_type'} $TokenData->{'access_token'}" },
method => 'GET',
timeout => 3,
infotext => $infotext,
hash => $hash,
callback => \&TadoAPI_LogInfoCallback
};
my @zoneArr = TadoAPI_RequestTadoDevices($hash);
for (my $i=0; $i < @zoneArr; $i++) {
my $zoneid = $zoneArr[$i]->{'id'};
my $URL=$QueryURL.qq{/$homeID/zones/$zoneid/state};
my $infotext = "ZoneID $zoneid (" . TadoAPI_GetZoneNameById($hash, $zoneid) . ") Status:";
my $request = {
url => $URL,
header => { "Content-Type"=>"application/json;charset=UTF-8","Authorization" => "$TokenData->{'token_type'} $TokenData->{'access_token'}" },
method => 'GET',
timeout => 3,
infotext => $infotext,
hash => $hash,
callback => \&TadoAPI_LogInfoCallback
};
HttpUtils_NonblockingGet($request);
}
@ -1067,50 +1071,50 @@ sub TadoAPI_RequestTadoDevices(@) {
return undef;
}
sub TadoAPI_ZoneRequest(@) {
# returns array with state of all zones
my ($hash) = @_;
my $name = $hash->{NAME};
my $homeID = $attr{$name}{homeID};
my @zones = ();
my $TokenData = TadoAPI_LoadToken($hash);
# sub TadoAPI_ZoneStateRequest(@) {
# # returns array with state of all zones
# my ($hash) = @_;
# my $name = $hash->{NAME};
# my $homeID = $attr{$name}{homeID};
# my @zones = ();
# my $TokenData = TadoAPI_LoadToken($hash);
if(defined($TokenData))
{
for (my $i=1; $i <= TadoAPI_GetZoneCount($hash); $i++) {
my $URL=$QueryURL.qq{/$homeID/zones/$i/state};
my $param = {
url => $URL,
header => {"Content-Type"=>"application/json;charset=UTF-8","Authorization" => "$TokenData->{'token_type'} $TokenData->{'access_token'}"},
method => 'GET',
timeout => 5,
hash => $hash,
zoneID => $i
};
# if(defined($TokenData))
# {
# for (my $i=1; $i <= TadoAPI_GetZoneCount($hash); $i++) {
# my $URL=$QueryURL.qq{/$homeID/zones/$i/state};
# my $param = {
# url => $URL,
# header => {"Content-Type"=>"application/json;charset=UTF-8","Authorization" => "$TokenData->{'token_type'} $TokenData->{'access_token'}"},
# method => 'GET',
# timeout => 5,
# hash => $hash,
# zoneID => $i
# };
#Log3 $name, 5, 'Blocking GET: ' . Dumper($param);
my ($err, $data) = HttpUtils_BlockingGet($param);
# #Log3 $name, 5, 'Blocking GET: ' . Dumper($param);
# my ($err, $data) = HttpUtils_BlockingGet($param);
if($err ne "")
{
Log3 $name, 3, "TadoAPI $name" . ": " . "ZoneRequest: Error while requesting ".$param->{url}." - $err";
}
elsif($data ne "")
{
Log3 $name, 5, "url ".$param->{url}." returned: $data";
my $decoded_data = eval { decode_json($data) };
# if($err ne "")
# {
# Log3 $name, 3, "TadoAPI $name" . ": " . "ZoneRequest: Error while requesting ".$param->{url}." - $err";
# }
# elsif($data ne "")
# {
# Log3 $name, 5, "url ".$param->{url}." returned: $data";
# my $decoded_data = eval { decode_json($data) };
if ($@){
Log3 $name, 3, "TadoAPI $name" . ": " . "RequestZones: Zone $i decode_json failed, invalid json. error:$@\n";
}else{
# pushes zone i to array
push @zones, $decoded_data;
}
}
}
return @zones;
}
}
# if ($@){
# Log3 $name, 3, "TadoAPI $name" . ": " . "RequestZones: Zone $i decode_json failed, invalid json. error:$@\n";
# }else{
# # pushes zone i to array
# push @zones, $decoded_data;
# }
# }
# }
# return @zones;
# }
# }
sub TadoAPI_GetMobileDevices(@) {
my ($hash) = @_;