reduced API-querys in UpdateFn up to 50%
This commit is contained in:
parent
e2a3946e3e
commit
4102cadc6c
@ -40,6 +40,7 @@ my $tokenFile = "./FHEM/FhemUtils/TadoAPI_token";
|
|||||||
my $header = {};
|
my $header = {};
|
||||||
my $data = {};
|
my $data = {};
|
||||||
my $TokenData = {};
|
my $TokenData = {};
|
||||||
|
my $reqDebug = 5;
|
||||||
|
|
||||||
# helpers
|
# helpers
|
||||||
my $apiStatus = 1;
|
my $apiStatus = 1;
|
||||||
@ -376,6 +377,7 @@ sub TadoAPI_CheckStatus(@){
|
|||||||
callback => \&TadoAPI_callback
|
callback => \&TadoAPI_callback
|
||||||
};
|
};
|
||||||
#test if api is reachable
|
#test if api is reachable
|
||||||
|
Log3 $name, $reqDebug, "TadoAPI $name" . ": " . "Request $AuthURL";
|
||||||
HttpUtils_NonblockingGet($param);
|
HttpUtils_NonblockingGet($param);
|
||||||
|
|
||||||
return undef;
|
return undef;
|
||||||
@ -440,6 +442,7 @@ sub TadoAPI_NewTokenRequest(@) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
#Log3 $name, 5, 'Blocking GET: ' . Dumper($param);
|
#Log3 $name, 5, 'Blocking GET: ' . Dumper($param);
|
||||||
|
Log3 $name, $reqDebug, "TadoAPI $name" . ": " . "Request $AuthURL";
|
||||||
my ($err, $data) = HttpUtils_BlockingGet($param);
|
my ($err, $data) = HttpUtils_BlockingGet($param);
|
||||||
|
|
||||||
if($err ne "")
|
if($err ne "")
|
||||||
@ -495,6 +498,7 @@ sub TadoAPI_TokenRefresh(@) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
#Log3 $name, 5, 'Blocking GET TokenRefresh: ' . Dumper($param);
|
#Log3 $name, 5, 'Blocking GET TokenRefresh: ' . Dumper($param);
|
||||||
|
Log3 $name, $reqDebug, "TadoAPI $name" . ": " . "Request $AuthURL";
|
||||||
my ($err, $data) = HttpUtils_BlockingGet($param);
|
my ($err, $data) = HttpUtils_BlockingGet($param);
|
||||||
|
|
||||||
if($err ne "")
|
if($err ne "")
|
||||||
@ -663,6 +667,7 @@ sub TadoAPI_SetZoneOverlayById(@){
|
|||||||
};
|
};
|
||||||
|
|
||||||
#Log3 $name, 5, 'NonBlocking Request: ' . Dumper($request);
|
#Log3 $name, 5, 'NonBlocking Request: ' . Dumper($request);
|
||||||
|
Log3 $name, $reqDebug, "TadoAPI $name" . ": " . "Request $URL";
|
||||||
HttpUtils_NonblockingGet($request);
|
HttpUtils_NonblockingGet($request);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -705,6 +710,7 @@ sub TadoAPI_UpdateFn(@){
|
|||||||
hash => $hash,
|
hash => $hash,
|
||||||
callback => \&TadoAPI_UpdateAllZoneReadingsCallback
|
callback => \&TadoAPI_UpdateAllZoneReadingsCallback
|
||||||
};
|
};
|
||||||
|
Log3 $name, $reqDebug, "TadoAPI $name" . ": " . "UpdFN: Request $URL";
|
||||||
HttpUtils_NonblockingGet($request);
|
HttpUtils_NonblockingGet($request);
|
||||||
|
|
||||||
# mobile devices
|
# mobile devices
|
||||||
@ -718,6 +724,7 @@ sub TadoAPI_UpdateFn(@){
|
|||||||
callback => \&TadoAPI_UpdateMobileReadingsCallback,
|
callback => \&TadoAPI_UpdateMobileReadingsCallback,
|
||||||
hash => $hash
|
hash => $hash
|
||||||
};
|
};
|
||||||
|
Log3 $name, $reqDebug, "TadoAPI $name" . ": " . "Request $URL";
|
||||||
HttpUtils_NonblockingGet($request);
|
HttpUtils_NonblockingGet($request);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -767,12 +774,13 @@ sub TadoAPI_UpdateAllZoneReadingsCallback($){
|
|||||||
Log3 $name, 3, "TadoAPI $name" . ": " . "UpdateAllZonesCallback: Error in decoded data, Code: " . $decoded_data->{'errors'}->[0]->{'code'} if (exists($decoded_data->{'errors'}->[0]->{'code'}));
|
Log3 $name, 3, "TadoAPI $name" . ": " . "UpdateAllZonesCallback: Error in decoded data, Code: " . $decoded_data->{'errors'}->[0]->{'code'} if (exists($decoded_data->{'errors'}->[0]->{'code'}));
|
||||||
$hash->{LastRequest}="error";
|
$hash->{LastRequest}="error";
|
||||||
}else{
|
}else{
|
||||||
readingsBeginUpdate($hash);
|
readingsBeginUpdate($hash);
|
||||||
foreach my $zone ( @$decoded_data ){
|
foreach my $zone ( @$decoded_data ){
|
||||||
my $zoneid = $zone->{'id'};
|
my $zoneid = $zone->{'id'};
|
||||||
|
my $zoneName = TadoAPI_ReplaceUmlaute($zone->{'name'});
|
||||||
Log3 $name, 5, "TadoAPI $name" . ": " . "Set Reading Update for Zone $zoneid ";
|
Log3 $name, 5, "TadoAPI $name" . ": " . "Set Reading Update for Zone $zoneid ";
|
||||||
|
|
||||||
my ($temperature, $humidity, $desiredTemp, $currentHeatingPower, $overlay, $zoneName ) = TadoAPI_GetZoneReadingsById($hash, $zoneid);
|
my ($temperature, $humidity, $desiredTemp, $currentHeatingPower, $overlay ) = TadoAPI_GetZoneReadingsById($hash, $zoneid);
|
||||||
|
|
||||||
# updates zone readings
|
# updates zone readings
|
||||||
readingsBulkUpdate($hash, "Temperatur_" . $zoneName, $temperature);
|
readingsBulkUpdate($hash, "Temperatur_" . $zoneName, $temperature);
|
||||||
@ -785,7 +793,6 @@ sub TadoAPI_UpdateAllZoneReadingsCallback($){
|
|||||||
my $devices = $zone->{'devices'};
|
my $devices = $zone->{'devices'};
|
||||||
foreach my $device ( @$devices ){
|
foreach my $device ( @$devices ){
|
||||||
readingsBulkUpdate($hash, "Battery_" . $device->{'serialNo'}, $device->{'batteryState'});
|
readingsBulkUpdate($hash, "Battery_" . $device->{'serialNo'}, $device->{'batteryState'});
|
||||||
$hash->{LastRequest}="OK";
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
readingsEndUpdate( $hash, 1 );
|
readingsEndUpdate( $hash, 1 );
|
||||||
@ -794,6 +801,7 @@ sub TadoAPI_UpdateAllZoneReadingsCallback($){
|
|||||||
readingsBeginUpdate($hash);
|
readingsBeginUpdate($hash);
|
||||||
readingsBulkUpdate($hash, "ActiveZones", $zonecount);
|
readingsBulkUpdate($hash, "ActiveZones", $zonecount);
|
||||||
readingsEndUpdate( $hash, 0 );
|
readingsEndUpdate( $hash, 0 );
|
||||||
|
$hash->{LastRequest}="OK";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -915,6 +923,7 @@ sub TadoAPI_GetZoneInfo(@) {
|
|||||||
hash => $hash,
|
hash => $hash,
|
||||||
callback => \&TadoAPI_LogInfoCallback
|
callback => \&TadoAPI_LogInfoCallback
|
||||||
};
|
};
|
||||||
|
Log3 $name, $reqDebug, "TadoAPI $name" . ": " . "Request $URL";
|
||||||
HttpUtils_NonblockingGet($request);
|
HttpUtils_NonblockingGet($request);
|
||||||
|
|
||||||
# Mobileinfo
|
# Mobileinfo
|
||||||
@ -943,6 +952,7 @@ sub TadoAPI_GetZoneInfo(@) {
|
|||||||
hash => $hash,
|
hash => $hash,
|
||||||
callback => \&TadoAPI_LogInfoCallback
|
callback => \&TadoAPI_LogInfoCallback
|
||||||
};
|
};
|
||||||
|
Log3 $name, $reqDebug, "TadoAPI $name" . ": " . "Request $URL";
|
||||||
HttpUtils_NonblockingGet($request);
|
HttpUtils_NonblockingGet($request);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -961,6 +971,7 @@ sub TadoAPI_GetZoneInfo(@) {
|
|||||||
hash => $hash,
|
hash => $hash,
|
||||||
callback => \&TadoAPI_LogInfoCallback
|
callback => \&TadoAPI_LogInfoCallback
|
||||||
};
|
};
|
||||||
|
Log3 $name, $reqDebug, "TadoAPI $name" . ": " . "Request $URL";
|
||||||
HttpUtils_NonblockingGet($request);
|
HttpUtils_NonblockingGet($request);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -993,6 +1004,7 @@ sub TadoAPI_SetGeoById(@){
|
|||||||
hash => $hash,
|
hash => $hash,
|
||||||
callback => \&TadoAPI_SetGeoByIdCallback
|
callback => \&TadoAPI_SetGeoByIdCallback
|
||||||
};
|
};
|
||||||
|
Log3 $name, $reqDebug, "TadoAPI $name" . ": " . "Request $URL";
|
||||||
HttpUtils_NonblockingGet($request);
|
HttpUtils_NonblockingGet($request);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1026,6 +1038,7 @@ sub TadoAPI_GetHomeId(@){
|
|||||||
};
|
};
|
||||||
|
|
||||||
#Log3 $name, 5, 'Blocking GET: ' . Dumper($param);
|
#Log3 $name, 5, 'Blocking GET: ' . Dumper($param);
|
||||||
|
Log3 $name, $reqDebug, "TadoAPI $name" . ": " . "Request $DataURL";
|
||||||
my ($err, $data) = HttpUtils_BlockingGet($param);
|
my ($err, $data) = HttpUtils_BlockingGet($param);
|
||||||
|
|
||||||
if($err ne "")
|
if($err ne "")
|
||||||
@ -1068,6 +1081,7 @@ sub TadoAPI_GetGeoById(@){
|
|||||||
};
|
};
|
||||||
|
|
||||||
#Log3 $name, 5, 'Blocking GET: ' . Dumper($param);
|
#Log3 $name, 5, 'Blocking GET: ' . Dumper($param);
|
||||||
|
Log3 $name, $reqDebug, "TadoAPI $name" . ": " . "Request $URL";
|
||||||
my ($err, $data) = HttpUtils_BlockingGet($param);
|
my ($err, $data) = HttpUtils_BlockingGet($param);
|
||||||
|
|
||||||
if($err ne "")
|
if($err ne "")
|
||||||
@ -1092,7 +1106,7 @@ sub TadoAPI_GetGeoById(@){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}elsif(defined($item)){
|
}elsif(defined($item)){
|
||||||
Log3 $name, 3, "TadoAPI $name" . ": " . "GetGeoById: parsing item";
|
Log3 $name, 5, "TadoAPI $name" . ": " . "GetGeoById: parsing passed item";
|
||||||
return my ($setting, $distance) = TadoAPI_ParseMobileItem($hash, $item);
|
return my ($setting, $distance) = TadoAPI_ParseMobileItem($hash, $item);
|
||||||
}
|
}
|
||||||
return undef;
|
return undef;
|
||||||
@ -1143,6 +1157,7 @@ sub TadoAPI_GetMobileDevices(@) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
#Log3 $name, 5, 'Blocking GET: ' . Dumper($param);
|
#Log3 $name, 5, 'Blocking GET: ' . Dumper($param);
|
||||||
|
Log3 $name, $reqDebug, "TadoAPI $name" . ": " . "Request $URL";
|
||||||
my ($err, $data) = HttpUtils_BlockingGet($param);
|
my ($err, $data) = HttpUtils_BlockingGet($param);
|
||||||
|
|
||||||
if($err ne "")
|
if($err ne "")
|
||||||
@ -1191,6 +1206,7 @@ sub TadoAPI_GetZoneCount(@) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
#Log3 $name, 5, 'Blocking GET: ' . Dumper($param);
|
#Log3 $name, 5, 'Blocking GET: ' . Dumper($param);
|
||||||
|
Log3 $name, $reqDebug, "TadoAPI $name" . ": " . "Request $URL";
|
||||||
my ($err, $data) = HttpUtils_BlockingGet($param);
|
my ($err, $data) = HttpUtils_BlockingGet($param);
|
||||||
|
|
||||||
if($err ne "")
|
if($err ne "")
|
||||||
@ -1223,10 +1239,10 @@ sub TadoAPI_GetZoneCount(@) {
|
|||||||
sub TadoAPI_GetZoneNameById(@) {
|
sub TadoAPI_GetZoneNameById(@) {
|
||||||
my ($hash, $zoneID) = @_;
|
my ($hash, $zoneID) = @_;
|
||||||
my $name = $hash->{NAME};
|
my $name = $hash->{NAME};
|
||||||
my @devArr = TadoAPI_GetTadoDevices($hash);
|
|
||||||
my $zoneName = undef;
|
my $zoneName = undef;
|
||||||
|
my @zones = TadoAPI_GetTadoDevices($hash);
|
||||||
|
|
||||||
foreach my $zone ( @devArr ){
|
foreach my $zone ( @zones ){
|
||||||
if ($zone->{'id'} == $zoneID){
|
if ($zone->{'id'} == $zoneID){
|
||||||
$zoneName = TadoAPI_ReplaceUmlaute($zone->{'name'});
|
$zoneName = TadoAPI_ReplaceUmlaute($zone->{'name'});
|
||||||
return $zoneName;
|
return $zoneName;
|
||||||
@ -1258,6 +1274,7 @@ sub TadoAPI_GetZoneReadingsById(@){
|
|||||||
};
|
};
|
||||||
|
|
||||||
#Log3 $name, 5, 'Blocking GET: ' . Dumper($param);
|
#Log3 $name, 5, 'Blocking GET: ' . Dumper($param);
|
||||||
|
Log3 $name, $reqDebug, "TadoAPI $name" . ": " . "Request $URL";
|
||||||
my ($err, $data) = HttpUtils_BlockingGet($param);
|
my ($err, $data) = HttpUtils_BlockingGet($param);
|
||||||
|
|
||||||
if($err ne "")
|
if($err ne "")
|
||||||
@ -1271,8 +1288,6 @@ sub TadoAPI_GetZoneReadingsById(@){
|
|||||||
if ($@){
|
if ($@){
|
||||||
Log3 $name, 3, "TadoAPI $name" . ": " . "GetZoneReadingsById: Zone $zoneID decode_json failed, invalid json. error:$@\n";
|
Log3 $name, 3, "TadoAPI $name" . ": " . "GetZoneReadingsById: Zone $zoneID decode_json failed, invalid json. error:$@\n";
|
||||||
}else{
|
}else{
|
||||||
my $zoneName = TadoAPI_GetZoneNameById($hash, $zoneID);
|
|
||||||
|
|
||||||
$temperature = sprintf("%.1f", $decoded_data->{'sensorDataPoints'}->{'insideTemperature'}->{'celsius'});
|
$temperature = sprintf("%.1f", $decoded_data->{'sensorDataPoints'}->{'insideTemperature'}->{'celsius'});
|
||||||
$humidity = $decoded_data->{'sensorDataPoints'}->{'humidity'}->{'percentage'};
|
$humidity = $decoded_data->{'sensorDataPoints'}->{'humidity'}->{'percentage'};
|
||||||
if($decoded_data->{'setting'}->{'power'} eq "OFF"){
|
if($decoded_data->{'setting'}->{'power'} eq "OFF"){
|
||||||
@ -1284,7 +1299,7 @@ sub TadoAPI_GetZoneReadingsById(@){
|
|||||||
$overlay = $decoded_data->{'overlayType'};
|
$overlay = $decoded_data->{'overlayType'};
|
||||||
if (!defined $overlay) {$overlay = "no overlay"};
|
if (!defined $overlay) {$overlay = "no overlay"};
|
||||||
|
|
||||||
return ($temperature, $humidity, $desiredTemp, $currentHeatingPower, $overlay, $zoneName );
|
return ($temperature, $humidity, $desiredTemp, $currentHeatingPower, $overlay );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1309,6 +1324,7 @@ sub TadoAPI_GetTadoDevices(@) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
#Log3 $name, 5, 'Blocking GET: ' . Dumper($param);
|
#Log3 $name, 5, 'Blocking GET: ' . Dumper($param);
|
||||||
|
Log3 $name, $reqDebug, "TadoAPI $name" . ": " . "Request $URL";
|
||||||
my ($err, $data) = HttpUtils_BlockingGet($param);
|
my ($err, $data) = HttpUtils_BlockingGet($param);
|
||||||
|
|
||||||
if($err ne "")
|
if($err ne "")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user