From 5792edfc4c0a6e987cb6c0dfb86b3c8f794fbcc8 Mon Sep 17 00:00:00 2001 From: jlaur Date: Sun, 5 Dec 2021 17:48:37 +0100 Subject: [PATCH] Fix initialization of shade handler. (#11707) Fixes #11702 Signed-off-by: Jacob Laursen --- .../handler/HDPowerViewHubHandler.java | 2 +- .../handler/HDPowerViewShadeHandler.java | 20 +++++++++++++++---- .../OH-INF/i18n/hdpowerview.properties | 4 +++- 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/bundles/org.openhab.binding.hdpowerview/src/main/java/org/openhab/binding/hdpowerview/internal/handler/HDPowerViewHubHandler.java b/bundles/org.openhab.binding.hdpowerview/src/main/java/org/openhab/binding/hdpowerview/internal/handler/HDPowerViewHubHandler.java index 35f1696932ef..2eda6b8b2359 100644 --- a/bundles/org.openhab.binding.hdpowerview/src/main/java/org/openhab/binding/hdpowerview/internal/handler/HDPowerViewHubHandler.java +++ b/bundles/org.openhab.binding.hdpowerview/src/main/java/org/openhab/binding/hdpowerview/internal/handler/HDPowerViewHubHandler.java @@ -135,7 +135,7 @@ public void initialize() { if (host == null || host.isEmpty()) { updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR, - "@text/offline.conf-error-no-host-address"); + "@text/offline.conf-error.no-host-address"); return; } diff --git a/bundles/org.openhab.binding.hdpowerview/src/main/java/org/openhab/binding/hdpowerview/internal/handler/HDPowerViewShadeHandler.java b/bundles/org.openhab.binding.hdpowerview/src/main/java/org/openhab/binding/hdpowerview/internal/handler/HDPowerViewShadeHandler.java index 42514597bafb..038b4f71a370 100644 --- a/bundles/org.openhab.binding.hdpowerview/src/main/java/org/openhab/binding/hdpowerview/internal/handler/HDPowerViewShadeHandler.java +++ b/bundles/org.openhab.binding.hdpowerview/src/main/java/org/openhab/binding/hdpowerview/internal/handler/HDPowerViewShadeHandler.java @@ -39,6 +39,7 @@ import org.openhab.core.library.types.StopMoveType; import org.openhab.core.library.types.UpDownType; import org.openhab.core.library.unit.Units; +import org.openhab.core.thing.Bridge; import org.openhab.core.thing.ChannelUID; import org.openhab.core.thing.Thing; import org.openhab.core.thing.ThingStatus; @@ -80,14 +81,25 @@ public void initialize() { getShadeId(); } catch (NumberFormatException e) { updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR, - "Configuration 'id' not a valid integer"); + "@text/offline.conf-error.invalid-id"); return; } - if (getBridgeHandler() == null) { - updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR, "Hub not configured"); + Bridge bridge = getBridge(); + if (bridge == null) { + updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.BRIDGE_UNINITIALIZED); return; } - updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR); + if (!(bridge.getHandler() instanceof HDPowerViewHubHandler)) { + updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.BRIDGE_UNINITIALIZED, + "@text/offline.conf-error.invalid-bridge-handler"); + return; + } + ThingStatus bridgeStatus = bridge.getStatus(); + if (bridgeStatus == ThingStatus.ONLINE) { + updateStatus(ThingStatus.ONLINE); + } else { + updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.BRIDGE_OFFLINE); + } } @Override diff --git a/bundles/org.openhab.binding.hdpowerview/src/main/resources/OH-INF/i18n/hdpowerview.properties b/bundles/org.openhab.binding.hdpowerview/src/main/resources/OH-INF/i18n/hdpowerview.properties index 34875ac80c59..9e8e94cd1817 100644 --- a/bundles/org.openhab.binding.hdpowerview/src/main/resources/OH-INF/i18n/hdpowerview.properties +++ b/bundles/org.openhab.binding.hdpowerview/src/main/resources/OH-INF/i18n/hdpowerview.properties @@ -36,7 +36,9 @@ channel-type.hdpowerview.shade-vane.description = The opening of the slats in th # thing status descriptions -offline.conf-error-no-host-address = Host address must be set +offline.conf-error.no-host-address = Host address must be set +offline.conf-error.invalid-id = Configuration 'id' not a valid integer +offline.conf-error.invalid-bridge-handler = Invalid bridge handler # dynamic channels