]> git.basschouten.com Git - openhab-addons.git/commitdiff
Synchronized Weather cache update requests (#16572)
authorGaël L'hopital <gael@lhopital.org>
Mon, 25 Mar 2024 08:06:50 +0000 (09:06 +0100)
committerGitHub <noreply@github.com>
Mon, 25 Mar 2024 08:06:50 +0000 (09:06 +0100)
Signed-off-by: clinique <gael@lhopital.org>
bundles/org.openhab.binding.netatmo/src/main/java/org/openhab/binding/netatmo/internal/handler/capability/AirCareCapability.java
bundles/org.openhab.binding.netatmo/src/main/java/org/openhab/binding/netatmo/internal/handler/capability/CacheWeatherCapability.java
bundles/org.openhab.binding.netatmo/src/main/java/org/openhab/binding/netatmo/internal/handler/capability/WeatherCapability.java

index 351fbf951be5f5b211dc875dddd86f94606b76e2..c2e1545b092372f54c28108300145773f11cef98 100644 (file)
@@ -41,7 +41,7 @@ public class AirCareCapability extends RestCapability<AircareApi> {
         try {
             return List.of(api.getHomeCoach(handler.getId()));
         } catch (NetatmoException e) {
-            logger.warn("Error retrieving home-coach data '{}' : {}", handler.getId(), e.getMessage());
+            logger.warn("Error retrieving home-coach data '{}': {}", handler.getId(), e.getMessage());
         }
         return List.of();
     }
index 05593888b9f6a3fda81f244f9c70a79ba41271a9..c472029a1f0826a1a26a7a7f22a59643ff27b886 100644 (file)
@@ -43,13 +43,16 @@ public abstract class CacheWeatherCapability extends RestCapability<WeatherApi>
     }
 
     @Override
-    protected List<NAObject> updateReadings(WeatherApi api) {
+    protected synchronized List<NAObject> updateReadings(WeatherApi api) {
         Instant now = Instant.now();
 
         if (requestTS.plus(validity).isBefore(now)) {
-            logger.debug("Requesting fresh data");
-            lastResult = getFreshData(api);
-            requestTS = now;
+            logger.debug("{} requesting fresh data for {}", getClass().getSimpleName(), thingUID);
+            List<NAObject> result = getFreshData(api);
+            if (!result.isEmpty()) {
+                lastResult = result;
+                requestTS = now;
+            }
         }
 
         return lastResult;
index b86c820e67ee84b7d464d17a4b52dd0dbbf7eef2..7faec8efef24a1541078d102719fc8d9c9208c41 100644 (file)
@@ -42,7 +42,7 @@ public class WeatherCapability extends CacheWeatherCapability {
         try {
             return List.of(owned ? api.getOwnedStationData(handler.getId()) : api.getStationData(handler.getId()));
         } catch (NetatmoException e) {
-            logger.warn("Error retrieving weather data '{}' : {}", handler.getId(), e.getMessage());
+            logger.warn("Error retrieving weather data '{}': {}", handler.getId(), e.getMessage());
         }
         return List.of();
     }