From e60d090a8ac63cefe379281e70f926a2cf84fc4f Mon Sep 17 00:00:00 2001 From: =?utf8?q?Ga=C3=ABl=20L=27hopital?= Date: Mon, 25 Mar 2024 09:06:50 +0100 Subject: [PATCH] Synchronized Weather cache update requests (#16572) Signed-off-by: clinique --- .../handler/capability/AirCareCapability.java | 2 +- .../handler/capability/CacheWeatherCapability.java | 11 +++++++---- .../handler/capability/WeatherCapability.java | 2 +- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/bundles/org.openhab.binding.netatmo/src/main/java/org/openhab/binding/netatmo/internal/handler/capability/AirCareCapability.java b/bundles/org.openhab.binding.netatmo/src/main/java/org/openhab/binding/netatmo/internal/handler/capability/AirCareCapability.java index 351fbf951b..c2e1545b09 100644 --- a/bundles/org.openhab.binding.netatmo/src/main/java/org/openhab/binding/netatmo/internal/handler/capability/AirCareCapability.java +++ b/bundles/org.openhab.binding.netatmo/src/main/java/org/openhab/binding/netatmo/internal/handler/capability/AirCareCapability.java @@ -41,7 +41,7 @@ public class AirCareCapability extends RestCapability { 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(); } diff --git a/bundles/org.openhab.binding.netatmo/src/main/java/org/openhab/binding/netatmo/internal/handler/capability/CacheWeatherCapability.java b/bundles/org.openhab.binding.netatmo/src/main/java/org/openhab/binding/netatmo/internal/handler/capability/CacheWeatherCapability.java index 05593888b9..c472029a1f 100644 --- a/bundles/org.openhab.binding.netatmo/src/main/java/org/openhab/binding/netatmo/internal/handler/capability/CacheWeatherCapability.java +++ b/bundles/org.openhab.binding.netatmo/src/main/java/org/openhab/binding/netatmo/internal/handler/capability/CacheWeatherCapability.java @@ -43,13 +43,16 @@ public abstract class CacheWeatherCapability extends RestCapability } @Override - protected List updateReadings(WeatherApi api) { + protected synchronized List 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 result = getFreshData(api); + if (!result.isEmpty()) { + lastResult = result; + requestTS = now; + } } return lastResult; diff --git a/bundles/org.openhab.binding.netatmo/src/main/java/org/openhab/binding/netatmo/internal/handler/capability/WeatherCapability.java b/bundles/org.openhab.binding.netatmo/src/main/java/org/openhab/binding/netatmo/internal/handler/capability/WeatherCapability.java index b86c820e67..7faec8efef 100644 --- a/bundles/org.openhab.binding.netatmo/src/main/java/org/openhab/binding/netatmo/internal/handler/capability/WeatherCapability.java +++ b/bundles/org.openhab.binding.netatmo/src/main/java/org/openhab/binding/netatmo/internal/handler/capability/WeatherCapability.java @@ -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(); } -- 2.47.3