From 1feb25372497807ea5e2d55674d17a214b04d6e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20L=27hopital?= Date: Sat, 26 Oct 2024 10:40:41 +0200 Subject: [PATCH] [netatmo] Home properties are not persisted (#17601) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Lazy reading of thing in Capability Signed-off-by: Gaƫl L'hopital --- .../handler/capability/CameraCapability.java | 4 ++-- .../internal/handler/capability/Capability.java | 16 +++++++++------- .../handler/capability/HomeCapability.java | 12 ++++++------ 3 files changed, 17 insertions(+), 15 deletions(-) diff --git a/bundles/org.openhab.binding.netatmo/src/main/java/org/openhab/binding/netatmo/internal/handler/capability/CameraCapability.java b/bundles/org.openhab.binding.netatmo/src/main/java/org/openhab/binding/netatmo/internal/handler/capability/CameraCapability.java index 398bd9a876..b1d0638961 100644 --- a/bundles/org.openhab.binding.netatmo/src/main/java/org/openhab/binding/netatmo/internal/handler/capability/CameraCapability.java +++ b/bundles/org.openhab.binding.netatmo/src/main/java/org/openhab/binding/netatmo/internal/handler/capability/CameraCapability.java @@ -80,8 +80,8 @@ public class CameraCapability extends HomeSecurityThingCapability { @Override public void initialize() { - hasSubEventGroup = !thing.getChannelsOfGroup(GROUP_SUB_EVENT).isEmpty(); - hasLastEventGroup = !thing.getChannelsOfGroup(GROUP_LAST_EVENT).isEmpty(); + hasSubEventGroup = !getThing().getChannelsOfGroup(GROUP_SUB_EVENT).isEmpty(); + hasLastEventGroup = !getThing().getChannelsOfGroup(GROUP_LAST_EVENT).isEmpty(); } @Override diff --git a/bundles/org.openhab.binding.netatmo/src/main/java/org/openhab/binding/netatmo/internal/handler/capability/Capability.java b/bundles/org.openhab.binding.netatmo/src/main/java/org/openhab/binding/netatmo/internal/handler/capability/Capability.java index 749a6817e8..a108dec324 100644 --- a/bundles/org.openhab.binding.netatmo/src/main/java/org/openhab/binding/netatmo/internal/handler/capability/Capability.java +++ b/bundles/org.openhab.binding.netatmo/src/main/java/org/openhab/binding/netatmo/internal/handler/capability/Capability.java @@ -45,7 +45,6 @@ import org.openhab.core.types.Command; */ @NonNullByDefault public class Capability { - protected final Thing thing; protected final CommonInterface handler; protected final ModuleType moduleType; protected final ThingUID thingUID; @@ -56,9 +55,8 @@ public class Capability { Capability(CommonInterface handler) { this.handler = handler; - this.thing = handler.getThing(); - this.thingUID = thing.getUID(); - this.moduleType = ModuleType.from(thing.getThingTypeUID()); + this.thingUID = getThing().getUID(); + this.moduleType = ModuleType.from(getThing().getThingTypeUID()); } public final @Nullable String setNewData(NAObject newData) { @@ -100,13 +98,13 @@ public class Capability { } protected void beforeNewData() { - properties = new HashMap<>(thing.getProperties()); + properties = new HashMap<>(getThing().getProperties()); statusReason = null; } protected void afterNewData(@Nullable NAObject newData) { - if (!properties.equals(thing.getProperties())) { - thing.setProperties(properties); + if (!properties.equals(getThing().getProperties())) { + getThing().setProperties(properties); } firstLaunch = false; } @@ -177,4 +175,8 @@ public class Capability { public List updateReadings() { return List.of(); } + + protected Thing getThing() { + return handler.getThing(); + } } diff --git a/bundles/org.openhab.binding.netatmo/src/main/java/org/openhab/binding/netatmo/internal/handler/capability/HomeCapability.java b/bundles/org.openhab.binding.netatmo/src/main/java/org/openhab/binding/netatmo/internal/handler/capability/HomeCapability.java index 2089dfe6f7..66c9f3377d 100644 --- a/bundles/org.openhab.binding.netatmo/src/main/java/org/openhab/binding/netatmo/internal/handler/capability/HomeCapability.java +++ b/bundles/org.openhab.binding.netatmo/src/main/java/org/openhab/binding/netatmo/internal/handler/capability/HomeCapability.java @@ -27,7 +27,6 @@ import org.openhab.binding.netatmo.internal.api.HomeApi; import org.openhab.binding.netatmo.internal.api.NetatmoException; import org.openhab.binding.netatmo.internal.api.data.NetatmoConstants.FeatureArea; import org.openhab.binding.netatmo.internal.api.dto.HomeData; -import org.openhab.binding.netatmo.internal.api.dto.Location; import org.openhab.binding.netatmo.internal.api.dto.NAError; import org.openhab.binding.netatmo.internal.api.dto.NAObject; import org.openhab.binding.netatmo.internal.config.HomeConfiguration; @@ -82,17 +81,17 @@ public class HomeCapability extends CacheCapability { if (featureAreas.contains(FeatureArea.SECURITY)) { handler.getCapabilities().put(new SecurityCapability(handler)); } else { - handler.removeChannels(thing.getChannelsOfGroup(GROUP_SECURITY)); + handler.removeChannels(getThing().getChannelsOfGroup(GROUP_SECURITY)); } if (featureAreas.contains(FeatureArea.ENERGY)) { handler.getCapabilities().put(new EnergyCapability(handler, descriptionProvider)); } else { - handler.removeChannels(thing.getChannelsOfGroup(GROUP_ENERGY)); + handler.removeChannels(getThing().getChannelsOfGroup(GROUP_ENERGY)); } home.getCountry().map(country -> properties.put(PROPERTY_COUNTRY, country)); zoneId = home.getZoneId(handler.getSystemTimeZone()); properties.put(PROPERTY_TIMEZONE, zoneId.toString()); - properties.put(GROUP_LOCATION, ((Location) home).getLocation().toString()); + properties.put(GROUP_LOCATION, home.getLocation().toString()); properties.put(PROPERTY_FEATURE, featureAreas.stream().map(FeatureArea::name).collect(Collectors.joining(","))); } @@ -104,8 +103,9 @@ public class HomeCapability extends CacheCapability { */ @Override protected void updateErrors(NAError error) { - handler.getAllActiveChildren((Bridge) thing).stream().filter(handler -> handler.getId().equals(error.getId())) - .findFirst().ifPresent(handler -> handler.setNewData(error)); + handler.getAllActiveChildren((Bridge) getThing()).stream() + .filter(handler -> handler.getId().equals(error.getId())).findFirst() + .ifPresent(handler -> handler.setNewData(error)); } @Override