all zoneIDs dynamic, reduced code
This commit is contained in:
parent
a90835fae2
commit
7d4444ce58
396
98_TadoAPI.pm
396
98_TadoAPI.pm
|
@ -280,7 +280,7 @@ sub TadoAPI_Get(@) {
|
|||
|
||||
$cmd eq "getZoneDevices" and do {
|
||||
Log3 $name, 3, "TadoAPI $name" . ": " . "processing ($cmd)";
|
||||
my @devArr = TadoAPI_RequestTadoDevices($hash);
|
||||
my @devArr = TadoAPI_GetTadoDevices($hash);
|
||||
my $devicecount = 0;
|
||||
$message = "Tado-Device(s):\n";
|
||||
for (my $i=0; $i < @devArr; $i++){
|
||||
|
@ -304,9 +304,9 @@ sub TadoAPI_Get(@) {
|
|||
TadoAPI_GetZoneInfo($hash);
|
||||
my $zonecount = TadoAPI_GetZoneCount($hash);
|
||||
$message = "You have $zonecount Zones in Home " . $attr{$name}{homeID} . ".\n";
|
||||
my @zoneArr = TadoAPI_RequestTadoDevices($hash);
|
||||
for (my $i=0; $i < @zoneArr; $i++){
|
||||
my $zoneid = $zoneArr[$i]->{'id'};
|
||||
my @devArr = TadoAPI_GetTadoDevices($hash);
|
||||
for (my $i=0; $i < @devArr; $i++){
|
||||
my $zoneid = $devArr[$i]->{'id'};
|
||||
$message .= "Zone ID $zoneid: " . TadoAPI_GetZoneNameById($hash, $zoneid) . "\n";
|
||||
}
|
||||
$message .= "See Logfile for more Info";
|
||||
|
@ -608,10 +608,10 @@ sub TadoAPI_SetAllOverlays(@){
|
|||
my $method = "";
|
||||
my $myjson ="";
|
||||
|
||||
my @zoneArr = TadoAPI_RequestTadoDevices($hash);
|
||||
my @devArr = TadoAPI_GetTadoDevices($hash);
|
||||
|
||||
for (my $i=0; $i < @zoneArr; $i++) {
|
||||
my $zoneid = $zoneArr[$i]->{'id'};
|
||||
for (my $i=0; $i < @devArr; $i++) {
|
||||
my $zoneid = $devArr[$i]->{'id'};
|
||||
TadoAPI_SetZoneOverlayById($hash, $zoneid, $setting);
|
||||
}
|
||||
}
|
||||
|
@ -654,46 +654,6 @@ sub TadoAPI_UpdateFn(@){
|
|||
}
|
||||
}
|
||||
|
||||
sub TadoAPI_GetGeoById(@){
|
||||
my ($hash, $mobileID) = @_;
|
||||
my $name = $hash->{NAME};
|
||||
my $homeID = $attr{$name}{homeID};
|
||||
my $URL=$QueryURL.qq{/$homeID/mobileDevices/$mobileID/settings};
|
||||
my $TokenData = TadoAPI_LoadToken($hash);
|
||||
|
||||
if(defined($TokenData)){
|
||||
my $param = {
|
||||
url => $URL,
|
||||
header => {"Content-Type"=>"application/json;charset=UTF-8","Authorization" => "$TokenData->{'token_type'} $TokenData->{'access_token'}"},
|
||||
method => 'GET',
|
||||
timeout => 4,
|
||||
hash => $hash,
|
||||
};
|
||||
|
||||
#Log3 $name, 5, 'Blocking GET: ' . Dumper($param);
|
||||
my ($err, $data) = HttpUtils_BlockingGet($param);
|
||||
|
||||
if($err ne "")
|
||||
{
|
||||
Log3 $name, 3, "TadoAPI $name" . ": " . "TadoAPI_GetGeoById: 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" . ": " . "TadoAPI_GetGeoById: decode_json failed, invalid json. error:$@\n";
|
||||
}else{
|
||||
my $setting = $decoded_data->{'geoTrackingEnabled'};
|
||||
readingsBeginUpdate($hash);
|
||||
readingsBulkUpdate($hash, "Geolocation_" . $mobileID, $setting);
|
||||
readingsEndUpdate( $hash, 1 );
|
||||
return $setting;
|
||||
}
|
||||
}
|
||||
}
|
||||
return undef;
|
||||
}
|
||||
########################################################################################################################################################################
|
||||
# Callback Subs
|
||||
########################################################################################################################################################################
|
||||
|
@ -914,7 +874,7 @@ sub TadoAPI_GetZoneInfo(@) {
|
|||
url => $URL,
|
||||
header => { "Content-Type"=>"application/json;charset=UTF-8","Authorization" => "$TokenData->{'token_type'} $TokenData->{'access_token'}" },
|
||||
method => 'GET',
|
||||
timeout => 4,
|
||||
timeout => 8,
|
||||
infotext => "HomeInfos",
|
||||
hash => $hash,
|
||||
callback => \&TadoAPI_LogInfoCallback
|
||||
|
@ -923,7 +883,7 @@ sub TadoAPI_GetZoneInfo(@) {
|
|||
HttpUtils_NonblockingGet($request);
|
||||
|
||||
# TadoDevicesInfo
|
||||
$URL = $QueryURL.qq{/$homeID/zones};
|
||||
$URL = $QueryURL . qq{/$homeID/zones};
|
||||
$request = {
|
||||
url => $URL,
|
||||
header => { "Content-Type"=>"application/json;charset=UTF-8","Authorization" => "$TokenData->{'token_type'} $TokenData->{'access_token'}" },
|
||||
|
@ -954,7 +914,7 @@ sub TadoAPI_GetZoneInfo(@) {
|
|||
my @mobDev = TadoAPI_GetMobileDevices($hash);
|
||||
for (my $i=0; $i < @mobDev; $i++) {
|
||||
my $mobileID = $mobDev[$i]->{'id'};
|
||||
$URL=$QueryURL.qq{/$homeID/mobileDevices/$mobileID/settings};
|
||||
$URL=$QueryURL . qq{/$homeID/mobileDevices/$mobileID/settings};
|
||||
$request = {
|
||||
url => $URL,
|
||||
header => { "Content-Type"=>"application/json;charset=UTF-8","Authorization" => "$TokenData->{'token_type'} $TokenData->{'access_token'}" },
|
||||
|
@ -969,10 +929,10 @@ sub TadoAPI_GetZoneInfo(@) {
|
|||
}
|
||||
|
||||
# zones
|
||||
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 @devArr = TadoAPI_GetTadoDevices($hash);
|
||||
for (my $i=0; $i < @devArr; $i++) {
|
||||
my $zoneid = $devArr[$i]->{'id'};
|
||||
my $URL=$QueryURL . qq{/$homeID/zones/$zoneid/state};
|
||||
my $infotext = "ZoneID $zoneid (" . TadoAPI_GetZoneNameById($hash, $zoneid) . ") Status";
|
||||
my $request = {
|
||||
url => $URL,
|
||||
|
@ -994,7 +954,7 @@ sub TadoAPI_SetGeoById(@){
|
|||
my ($hash, $mobileID, $geo) = @_;
|
||||
my $name = $hash->{NAME};
|
||||
my $homeID = $attr{$name}{homeID};
|
||||
my $URL=$QueryURL.qq{/$homeID/mobileDevices/$mobileID/settings};
|
||||
my $URL=$QueryURL . qq{/$homeID/mobileDevices/$mobileID/settings};
|
||||
my $TokenData = TadoAPI_LoadToken($hash);
|
||||
|
||||
if(defined($TokenData)){
|
||||
|
@ -1024,140 +984,9 @@ sub TadoAPI_SetGeoById(@){
|
|||
#######################################################################################################
|
||||
# API Requests
|
||||
###############
|
||||
sub TadoAPI_RequestTadoDevices(@) {
|
||||
# returns array with zonenames and zone devices
|
||||
my ($hash) = @_;
|
||||
my $name = $hash->{NAME};
|
||||
my $homeID = $attr{$name}{homeID};
|
||||
my $URL=$QueryURL.qq{/$homeID/zones};
|
||||
my $TokenData = TadoAPI_LoadToken($hash);
|
||||
|
||||
if(defined($TokenData)){
|
||||
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
|
||||
};
|
||||
|
||||
#Log3 $name, 5, 'Blocking GET: ' . Dumper($param);
|
||||
my ($err, $data) = HttpUtils_BlockingGet($param);
|
||||
|
||||
if($err ne "")
|
||||
{
|
||||
Log3 $name, 3, "TadoAPI $name" . ": " . "RequestTadoDevices: 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" . ": " . "RequestTadoDevices: decode_json failed, invalid json. error:$@\n";
|
||||
}else{
|
||||
if(ref($decoded_data) eq 'ARRAY'){
|
||||
my @devices = ();
|
||||
foreach my $dev (@$decoded_data){
|
||||
push @devices, $dev;
|
||||
}
|
||||
return @devices;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return undef;
|
||||
}
|
||||
|
||||
# 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
|
||||
# };
|
||||
|
||||
# #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 ($@){
|
||||
# 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) = @_;
|
||||
my $name = $hash->{NAME};
|
||||
my $homeID = $attr{$name}{homeID};
|
||||
my $URL=$QueryURL . qq{/$homeID/mobileDevices};
|
||||
my $TokenData = TadoAPI_LoadToken($hash);
|
||||
|
||||
if(defined($TokenData)){
|
||||
my $param = {
|
||||
url => $URL,
|
||||
header => {"Content-Type"=>"application/json;charset=UTF-8","Authorization" => "$TokenData->{'token_type'} $TokenData->{'access_token'}"},
|
||||
method => 'GET',
|
||||
timeout => 2,
|
||||
hash => $hash
|
||||
};
|
||||
|
||||
#Log3 $name, 5, 'Blocking GET: ' . Dumper($param);
|
||||
my ($err, $data) = HttpUtils_BlockingGet($param);
|
||||
|
||||
if($err ne "")
|
||||
{
|
||||
Log3 $name, 3, "TadoAPI $name" . ": " . "GetMobileDevices: Error while requesting ".$param->{url}." - $err";
|
||||
}
|
||||
elsif($data ne "")
|
||||
{
|
||||
my @devices = ();
|
||||
Log3 $name, 5, "url ".$param->{url}." returned: $data";
|
||||
my $decoded_data = eval { decode_json($data) };
|
||||
if ($@){
|
||||
Log3 $name, 3, "TadoAPI $name" . ": " . "GetMobileDevices: decode_json failed, invalid json. error:$@\n";
|
||||
}else{
|
||||
if(ref($decoded_data) eq 'ARRAY'){
|
||||
foreach my $item( @$decoded_data ) {
|
||||
push @devices, $item;
|
||||
}
|
||||
return @devices;
|
||||
}elsif(ref($decoded_data) eq 'HASH'){
|
||||
Log3 $name, 3, "TadoAPI $name" . ": " . "GetMobileDevices: " . $decoded_data->{'errors'}->[0]->{'code'} if (exists($decoded_data->{'errors'}));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return undef;
|
||||
}
|
||||
|
||||
######################################
|
||||
############ Helpers #################
|
||||
|
@ -1210,6 +1039,93 @@ sub TadoAPI_GetHomeId(@){
|
|||
return undef;
|
||||
}
|
||||
|
||||
sub TadoAPI_GetGeoById(@){
|
||||
my ($hash, $mobileID) = @_;
|
||||
my $name = $hash->{NAME};
|
||||
my $homeID = $attr{$name}{homeID};
|
||||
my $URL=$QueryURL.qq{/$homeID/mobileDevices/$mobileID/settings};
|
||||
my $TokenData = TadoAPI_LoadToken($hash);
|
||||
|
||||
if(defined($TokenData)){
|
||||
my $param = {
|
||||
url => $URL,
|
||||
header => {"Content-Type"=>"application/json;charset=UTF-8","Authorization" => "$TokenData->{'token_type'} $TokenData->{'access_token'}"},
|
||||
method => 'GET',
|
||||
timeout => 4,
|
||||
hash => $hash,
|
||||
};
|
||||
|
||||
#Log3 $name, 5, 'Blocking GET: ' . Dumper($param);
|
||||
my ($err, $data) = HttpUtils_BlockingGet($param);
|
||||
|
||||
if($err ne "")
|
||||
{
|
||||
Log3 $name, 3, "TadoAPI $name" . ": " . "TadoAPI_GetGeoById: 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" . ": " . "TadoAPI_GetGeoById: decode_json failed, invalid json. error:$@\n";
|
||||
}else{
|
||||
my $setting = $decoded_data->{'geoTrackingEnabled'};
|
||||
readingsBeginUpdate($hash);
|
||||
readingsBulkUpdate($hash, "Geolocation_" . $mobileID, $setting);
|
||||
readingsEndUpdate( $hash, 1 );
|
||||
return $setting;
|
||||
}
|
||||
}
|
||||
}
|
||||
return undef;
|
||||
}
|
||||
|
||||
sub TadoAPI_GetMobileDevices(@) {
|
||||
my ($hash) = @_;
|
||||
my $name = $hash->{NAME};
|
||||
my $homeID = $attr{$name}{homeID};
|
||||
my $URL=$QueryURL . qq{/$homeID/mobileDevices};
|
||||
my $TokenData = TadoAPI_LoadToken($hash);
|
||||
|
||||
if(defined($TokenData)){
|
||||
my $param = {
|
||||
url => $URL,
|
||||
header => {"Content-Type"=>"application/json;charset=UTF-8","Authorization" => "$TokenData->{'token_type'} $TokenData->{'access_token'}"},
|
||||
method => 'GET',
|
||||
timeout => 2,
|
||||
hash => $hash
|
||||
};
|
||||
|
||||
#Log3 $name, 5, 'Blocking GET: ' . Dumper($param);
|
||||
my ($err, $data) = HttpUtils_BlockingGet($param);
|
||||
|
||||
if($err ne "")
|
||||
{
|
||||
Log3 $name, 3, "TadoAPI $name" . ": " . "GetMobileDevices: Error while requesting ".$param->{url}." - $err";
|
||||
}
|
||||
elsif($data ne "")
|
||||
{
|
||||
my @devices = ();
|
||||
Log3 $name, 5, "url ".$param->{url}." returned: $data";
|
||||
my $decoded_data = eval { decode_json($data) };
|
||||
if ($@){
|
||||
Log3 $name, 3, "TadoAPI $name" . ": " . "GetMobileDevices: decode_json failed, invalid json. error:$@\n";
|
||||
}else{
|
||||
if(ref($decoded_data) eq 'ARRAY'){
|
||||
foreach my $item( @$decoded_data ) {
|
||||
push @devices, $item;
|
||||
}
|
||||
# default case
|
||||
return @devices;
|
||||
}elsif(ref($decoded_data) eq 'HASH'){
|
||||
Log3 $name, 3, "TadoAPI $name" . ": " . "GetMobileDevices: " . $decoded_data->{'errors'}->[0]->{'code'} if (exists($decoded_data->{'errors'}));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return undef;
|
||||
}
|
||||
|
||||
sub TadoAPI_GetZoneCount(@) {
|
||||
my ($hash) = @_;
|
||||
my $name = $hash->{NAME};
|
||||
|
@ -1260,43 +1176,13 @@ sub TadoAPI_GetZoneCount(@) {
|
|||
sub TadoAPI_GetZoneNameById(@) {
|
||||
my ($hash, $zoneID) = @_;
|
||||
my $name = $hash->{NAME};
|
||||
my $homeID = $attr{$name}{homeID};
|
||||
my $URL=$QueryURL.qq{/$homeID/zones};
|
||||
my $TokenData = TadoAPI_LoadToken($hash);
|
||||
my @devArr = TadoAPI_GetTadoDevices($hash);
|
||||
my $zoneName = undef;
|
||||
|
||||
if(defined($TokenData)){
|
||||
my $param = {
|
||||
url => $URL,
|
||||
header => {"Content-Type"=>"application/json;charset=UTF-8","Authorization" => "$TokenData->{'token_type'} $TokenData->{'access_token'}"},
|
||||
method => 'GET',
|
||||
timeout => 2,
|
||||
hash => $hash
|
||||
};
|
||||
|
||||
#Log3 $name, 5, 'Blocking GET: ' . Dumper($param);
|
||||
my ($err, $data) = HttpUtils_BlockingGet($param);
|
||||
|
||||
if($err ne "")
|
||||
{
|
||||
Log3 $name, 3, "TadoAPI $name" . ": " . "GetZoneCount: Error while requesting ".$param->{url}." - $err";
|
||||
}
|
||||
elsif($data ne "")
|
||||
{
|
||||
my @devices = ();
|
||||
Log3 $name, 5, "url ".$param->{url}." returned: $data";
|
||||
my $decoded_data = eval { decode_json($data) };
|
||||
|
||||
if ($@){
|
||||
Log3 $name, 3, "TadoAPI $name" . ": " . "GetZoneCount: decode_json failed, invalid json. error:$@\n";
|
||||
}else{
|
||||
if(ref($decoded_data) eq 'ARRAY'){
|
||||
my $zoneName = TadoAPI_ReplaceUmlaute(@$decoded_data[$zoneID - 1]->{'name'});
|
||||
$zoneName = encode("UTF-8", $zoneName);
|
||||
return $zoneName;
|
||||
}elsif(ref($decoded_data) eq 'HASH'){
|
||||
Log3 $name, 3, "TadoAPI $name" . ": " . "GetZoneCount: " . $decoded_data->{'errors'}->[0]->{'code'} if (exists($decoded_data->{'errors'}));
|
||||
}
|
||||
}
|
||||
foreach my $zone ( @devArr ){
|
||||
if ($zone->{'id'} == $zoneID){
|
||||
$zoneName = TadoAPI_ReplaceUmlaute($zone->{'name'});
|
||||
return $zoneName;
|
||||
}
|
||||
}
|
||||
return undef;
|
||||
|
@ -1319,7 +1205,7 @@ sub TadoAPI_GetZoneReadingsById(@){
|
|||
url => $URL,
|
||||
header => {"Content-Type"=>"application/json;charset=UTF-8","Authorization" => "$TokenData->{'token_type'} $TokenData->{'access_token'}"},
|
||||
method => 'GET',
|
||||
timeout => 3,
|
||||
timeout => 5,
|
||||
hash => $hash
|
||||
};
|
||||
|
||||
|
@ -1345,15 +1231,16 @@ sub TadoAPI_GetZoneReadingsById(@){
|
|||
if (!defined $overlay) {$overlay = "no overlay"};
|
||||
|
||||
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 );
|
||||
|
||||
|
||||
if (defined($zoneName)){
|
||||
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 );
|
||||
}
|
||||
}
|
||||
|
@ -1361,6 +1248,51 @@ sub TadoAPI_GetZoneReadingsById(@){
|
|||
return undef;
|
||||
}
|
||||
|
||||
sub TadoAPI_GetTadoDevices(@) {
|
||||
# returns array with zonenames and zone devices
|
||||
my ($hash) = @_;
|
||||
my $name = $hash->{NAME};
|
||||
my $homeID = $attr{$name}{homeID};
|
||||
my $URL=$QueryURL . qq{/$homeID/zones};
|
||||
my $TokenData = TadoAPI_LoadToken($hash);
|
||||
|
||||
if(defined($TokenData)){
|
||||
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
|
||||
};
|
||||
|
||||
#Log3 $name, 5, 'Blocking GET: ' . Dumper($param);
|
||||
my ($err, $data) = HttpUtils_BlockingGet($param);
|
||||
|
||||
if($err ne "")
|
||||
{
|
||||
Log3 $name, 3, "TadoAPI $name" . ": " . "RequestTadoDevices: 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" . ": " . "RequestTadoDevices: decode_json failed, invalid json. error:$@\n";
|
||||
}else{
|
||||
if(ref($decoded_data) eq 'ARRAY'){
|
||||
my @devices = ();
|
||||
foreach my $dev (@$decoded_data){
|
||||
push @devices, $dev;
|
||||
}
|
||||
return @devices;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return undef;
|
||||
}
|
||||
|
||||
######################################################
|
||||
# storePW & readPW Code geklaut aus 96_SIP.pm :)
|
||||
######################################################
|
||||
|
|
Loading…
Reference in New Issue