From 89ae8afa49f65800fd57a61c133c9295b0734006 Mon Sep 17 00:00:00 2001 From: Ondrej Pecta Date: Sun, 28 Mar 2021 18:52:33 +0200 Subject: [PATCH] [somfytahoma] Fixed bug causing Gateway and Actiongroups get never ONLINE (#10355) Signed-off-by: Ondrej Pecta --- .../handler/SomfyTahomaActionGroupHandler.java | 15 +++++++++++++-- .../handler/SomfyTahomaBaseThingHandler.java | 6 +----- .../handler/SomfyTahomaGatewayHandler.java | 16 ++++++++++++++++ 3 files changed, 30 insertions(+), 7 deletions(-) diff --git a/bundles/org.openhab.binding.somfytahoma/src/main/java/org/openhab/binding/somfytahoma/internal/handler/SomfyTahomaActionGroupHandler.java b/bundles/org.openhab.binding.somfytahoma/src/main/java/org/openhab/binding/somfytahoma/internal/handler/SomfyTahomaActionGroupHandler.java index 3b31eae33d..75b18ee753 100644 --- a/bundles/org.openhab.binding.somfytahoma/src/main/java/org/openhab/binding/somfytahoma/internal/handler/SomfyTahomaActionGroupHandler.java +++ b/bundles/org.openhab.binding.somfytahoma/src/main/java/org/openhab/binding/somfytahoma/internal/handler/SomfyTahomaActionGroupHandler.java @@ -15,9 +15,12 @@ package org.openhab.binding.somfytahoma.internal.handler; import static org.openhab.binding.somfytahoma.internal.SomfyTahomaBindingConstants.EXECUTE_ACTION; import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; import org.openhab.core.library.types.OnOffType; import org.openhab.core.thing.ChannelUID; import org.openhab.core.thing.Thing; +import org.openhab.core.thing.ThingStatus; +import org.openhab.core.thing.ThingStatusDetail; import org.openhab.core.types.Command; /** @@ -34,8 +37,16 @@ public class SomfyTahomaActionGroupHandler extends SomfyTahomaBaseThingHandler { } @Override - protected boolean isAlwaysOnline() { - return true; + public void initializeThing(@Nullable ThingStatus bridgeStatus) { + if (bridgeStatus != null) { + if (bridgeStatus == ThingStatus.ONLINE) { + updateStatus(ThingStatus.ONLINE); + } else { + updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.BRIDGE_OFFLINE); + } + } else { + updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.BRIDGE_UNINITIALIZED); + } } @Override diff --git a/bundles/org.openhab.binding.somfytahoma/src/main/java/org/openhab/binding/somfytahoma/internal/handler/SomfyTahomaBaseThingHandler.java b/bundles/org.openhab.binding.somfytahoma/src/main/java/org/openhab/binding/somfytahoma/internal/handler/SomfyTahomaBaseThingHandler.java index 9861a59c72..003df0d7ab 100644 --- a/bundles/org.openhab.binding.somfytahoma/src/main/java/org/openhab/binding/somfytahoma/internal/handler/SomfyTahomaBaseThingHandler.java +++ b/bundles/org.openhab.binding.somfytahoma/src/main/java/org/openhab/binding/somfytahoma/internal/handler/SomfyTahomaBaseThingHandler.java @@ -146,10 +146,6 @@ public abstract class SomfyTahomaBaseThingHandler extends BaseThingHandler { return logger; } - protected boolean isAlwaysOnline() { - return false; - } - protected @Nullable SomfyTahomaBridgeHandler getBridgeHandler() { Bridge localBridge = this.getBridge(); return localBridge != null ? (SomfyTahomaBridgeHandler) localBridge.getHandler() : null; @@ -167,7 +163,7 @@ public abstract class SomfyTahomaBaseThingHandler extends BaseThingHandler { } private void setUnavailable() { - if (ThingStatus.OFFLINE != thing.getStatus() && !isAlwaysOnline()) { + if (ThingStatus.OFFLINE != thing.getStatus()) { updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, UNAVAILABLE); } } diff --git a/bundles/org.openhab.binding.somfytahoma/src/main/java/org/openhab/binding/somfytahoma/internal/handler/SomfyTahomaGatewayHandler.java b/bundles/org.openhab.binding.somfytahoma/src/main/java/org/openhab/binding/somfytahoma/internal/handler/SomfyTahomaGatewayHandler.java index 302631f849..9bab4cebe9 100644 --- a/bundles/org.openhab.binding.somfytahoma/src/main/java/org/openhab/binding/somfytahoma/internal/handler/SomfyTahomaGatewayHandler.java +++ b/bundles/org.openhab.binding.somfytahoma/src/main/java/org/openhab/binding/somfytahoma/internal/handler/SomfyTahomaGatewayHandler.java @@ -12,14 +12,17 @@ */ package org.openhab.binding.somfytahoma.internal.handler; +import static org.openhab.binding.somfytahoma.internal.SomfyTahomaBindingConstants.STATUS; import static org.openhab.core.thing.Thing.PROPERTY_FIRMWARE_VERSION; import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; import org.openhab.binding.somfytahoma.internal.model.SomfyTahomaStatus; import org.openhab.core.library.types.StringType; import org.openhab.core.thing.Channel; import org.openhab.core.thing.Thing; import org.openhab.core.thing.ThingStatus; +import org.openhab.core.thing.ThingStatusDetail; /** * The {@link SomfyTahomaGatewayHandler} is responsible for handling commands, @@ -34,6 +37,19 @@ public class SomfyTahomaGatewayHandler extends SomfyTahomaBaseThingHandler { super(thing); } + @Override + public void initializeThing(@Nullable ThingStatus bridgeStatus) { + if (bridgeStatus != null) { + if (bridgeStatus == ThingStatus.ONLINE) { + refresh(STATUS); + } else { + updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.BRIDGE_OFFLINE); + } + } else { + updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.BRIDGE_UNINITIALIZED); + } + } + @Override public void refresh(String channel) { String id = getGateWayId(); -- 2.47.3