From 505de090f2d951beb92463f984d55d633a49d201 Mon Sep 17 00:00:00 2001 From: Philipp Wo Date: Tue, 10 Dec 2019 17:41:08 +0100 Subject: [PATCH] no event when readingsBulkUpdate --- 98_TadoAPI.pm | 47 +++++++++++++++++++++++------------------------ 1 file changed, 23 insertions(+), 24 deletions(-) diff --git a/98_TadoAPI.pm b/98_TadoAPI.pm index 9ebb433..7b03524 100644 --- a/98_TadoAPI.pm +++ b/98_TadoAPI.pm @@ -770,8 +770,16 @@ sub TadoAPI_UpdateAllZoneReadingsCallback($){ my $zoneid = $zone->{'id'}; Log3 $name, 5, "TadoAPI $name" . ": " . "Set Reading Update for Zone $zoneid "; + my ($temperature, $humidity, $desiredTemp, $currentHeatingPower, $overlay, $zoneName ) = TadoAPI_GetZoneReadingsById($hash, $zoneid); + # updates zone readings - TadoAPI_GetZoneReadingsById($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, 0 ); # iterate through all devices in zone my $devices = $zone->{'devices'}; @@ -787,7 +795,7 @@ sub TadoAPI_UpdateAllZoneReadingsCallback($){ my $zonecount = TadoAPI_GetZoneCount($hash); readingsBeginUpdate($hash); readingsBulkUpdate($hash, "ActiveZones", $zonecount); - readingsEndUpdate( $hash, 1 ); + readingsEndUpdate( $hash, 0 ); } } @@ -1242,28 +1250,19 @@ sub TadoAPI_GetZoneReadingsById(@){ Log3 $name, 3, "TadoAPI $name" . ": " . "GetZoneReadingsById: Zone $zoneID decode_json failed, invalid json. error:$@\n"; }else{ my $zoneName = TadoAPI_GetZoneNameById($hash, $zoneID); - - if (defined($zoneName)){ - $temperature = sprintf("%.1f", $decoded_data->{'sensorDataPoints'}->{'insideTemperature'}->{'celsius'}); - $humidity = $decoded_data->{'sensorDataPoints'}->{'humidity'}->{'percentage'}; - if($decoded_data->{'setting'}->{'power'} eq "OFF"){ - $desiredTemp = "OFF"; - }else{ - $desiredTemp = $decoded_data->{'setting'}->{'temperature'}->{'celsius'}; - } - $currentHeatingPower = $decoded_data->{'activityDataPoints'}->{'heatingPower'}->{'percentage'}; - $overlay = $decoded_data->{'overlayType'}; - if (!defined $overlay) {$overlay = "no overlay"}; - - 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 ); + + $temperature = sprintf("%.1f", $decoded_data->{'sensorDataPoints'}->{'insideTemperature'}->{'celsius'}); + $humidity = $decoded_data->{'sensorDataPoints'}->{'humidity'}->{'percentage'}; + if($decoded_data->{'setting'}->{'power'} eq "OFF"){ + $desiredTemp = "OFF"; + }else{ + $desiredTemp = $decoded_data->{'setting'}->{'temperature'}->{'celsius'}; + } + $currentHeatingPower = $decoded_data->{'activityDataPoints'}->{'heatingPower'}->{'percentage'}; + $overlay = $decoded_data->{'overlayType'}; + if (!defined $overlay) {$overlay = "no overlay"}; + + return ($temperature, $humidity, $desiredTemp, $currentHeatingPower, $overlay, $zoneName ); } } }