diff --git a/bundles/org.openhab.binding.nikohomecontrol/src/main/java/org/openhab/binding/nikohomecontrol/internal/handler/NikoHomeControlActionHandler.java b/bundles/org.openhab.binding.nikohomecontrol/src/main/java/org/openhab/binding/nikohomecontrol/internal/handler/NikoHomeControlActionHandler.java
index df5bb9544..af185ee4f 100644
--- a/bundles/org.openhab.binding.nikohomecontrol/src/main/java/org/openhab/binding/nikohomecontrol/internal/handler/NikoHomeControlActionHandler.java
+++ b/bundles/org.openhab.binding.nikohomecontrol/src/main/java/org/openhab/binding/nikohomecontrol/internal/handler/NikoHomeControlActionHandler.java
@@ -36,6 +36,7 @@ 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.thing.ThingStatusInfo;
import org.openhab.core.thing.binding.BaseThingHandler;
import org.openhab.core.types.Command;
import org.slf4j.Logger;
@@ -54,6 +55,8 @@ public class NikoHomeControlActionHandler extends BaseThingHandler implements Nh
private volatile @Nullable NhcAction nhcAction;
+ private volatile boolean initialized = false;
+
private String actionId = "";
private int stepValue;
private boolean invert;
@@ -64,10 +67,9 @@ public class NikoHomeControlActionHandler extends BaseThingHandler implements Nh
@Override
public void handleCommand(ChannelUID channelUID, Command command) {
- NikoHomeControlCommunication nhcComm = getCommunication();
+ NikoHomeControlCommunication nhcComm = getCommunication(getBridgeHandler());
if (nhcComm == null) {
- updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.BRIDGE_UNINITIALIZED,
- "@text/offline.bridge-unitialized");
+ logger.debug("communication not up yet, cannot handle command {} for {}", command, channelUID);
return;
}
@@ -200,6 +202,8 @@ public class NikoHomeControlActionHandler extends BaseThingHandler implements Nh
@Override
public void initialize() {
+ initialized = false;
+
NikoHomeControlActionConfig config;
if (thing.getThingTypeUID().equals(THING_TYPE_DIMMABLE_LIGHT)) {
config = getConfig().as(NikoHomeControlActionDimmerConfig.class);
@@ -212,52 +216,66 @@ public class NikoHomeControlActionHandler extends BaseThingHandler implements Nh
}
actionId = config.actionId;
- NikoHomeControlCommunication nhcComm = getCommunication();
- if (nhcComm == null) {
- updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.BRIDGE_UNINITIALIZED,
- "@text/offline.bridge-unitialized");
+ NikoHomeControlBridgeHandler bridgeHandler = getBridgeHandler();
+ if (bridgeHandler == null) {
+ updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR,
+ "@text/offline.configuration-error.invalid-bridge-handler");
return;
- } else {
- updateStatus(ThingStatus.UNKNOWN);
}
- // We need to do this in a separate thread because we may have to wait for the communication to become active
- scheduler.submit(() -> {
- if (!nhcComm.communicationActive()) {
- updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR,
- "@text/offline.communication-error");
- return;
- }
+ updateStatus(ThingStatus.UNKNOWN);
- NhcAction nhcAction = nhcComm.getActions().get(actionId);
- if (nhcAction == null) {
- updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR,
- "@text/offline.configuration-error.actionId");
- return;
- }
+ Bridge bridge = getBridge();
+ if ((bridge != null) && ThingStatus.ONLINE.equals(bridge.getStatus())) {
+ // We need to do this in a separate thread because we may have to wait for the
+ // communication to become active
+ scheduler.submit(this::startCommunication);
+ }
+ }
- nhcAction.setEventHandler(this);
+ private synchronized void startCommunication() {
+ NikoHomeControlCommunication nhcComm = getCommunication(getBridgeHandler());
- updateProperties(nhcAction);
+ if (nhcComm == null) {
+ return;
+ }
- String actionLocation = nhcAction.getLocation();
- if (thing.getLocation() == null) {
- thing.setLocation(actionLocation);
- }
+ if (!nhcComm.communicationActive()) {
+ updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR,
+ "@text/offline.communication-error");
+ return;
+ }
- actionEvent(nhcAction.getState());
+ NhcAction nhcAction = nhcComm.getActions().get(actionId);
+ if (nhcAction == null) {
+ updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR,
+ "@text/offline.configuration-error.actionId");
+ return;
+ }
- this.nhcAction = nhcAction;
+ nhcAction.setEventHandler(this);
- logger.debug("action initialized {}", actionId);
+ updateProperties(nhcAction);
- Bridge bridge = getBridge();
- if ((bridge != null) && (bridge.getStatus() == ThingStatus.ONLINE)) {
- updateStatus(ThingStatus.ONLINE);
- } else {
- updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.BRIDGE_OFFLINE);
- }
- });
+ String actionLocation = nhcAction.getLocation();
+ if (thing.getLocation() == null) {
+ thing.setLocation(actionLocation);
+ }
+
+ this.nhcAction = nhcAction;
+
+ logger.debug("action initialized {}", actionId);
+
+ Bridge bridge = getBridge();
+ if ((bridge != null) && (bridge.getStatus() == ThingStatus.ONLINE)) {
+ updateStatus(ThingStatus.ONLINE);
+ } else {
+ updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.BRIDGE_OFFLINE);
+ }
+
+ actionEvent(nhcAction.getState());
+
+ initialized = true;
}
private void updateProperties(NhcAction nhcAction) {
@@ -341,13 +359,13 @@ public class NikoHomeControlActionHandler extends BaseThingHandler implements Nh
if (nhcBridgeHandler != null) {
nhcBridgeHandler.bridgeOnline();
} else {
- updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.BRIDGE_UNINITIALIZED,
- "@text/offline.bridge-unitialized");
+ updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR,
+ "@text/offline.configuration-error.invalid-bridge-handler");
}
}
- private @Nullable NikoHomeControlCommunication getCommunication() {
- NikoHomeControlBridgeHandler nhcBridgeHandler = getBridgeHandler();
+ private @Nullable NikoHomeControlCommunication getCommunication(
+ @Nullable NikoHomeControlBridgeHandler nhcBridgeHandler) {
return nhcBridgeHandler != null ? nhcBridgeHandler.getCommunication() : null;
}
@@ -355,4 +373,18 @@ public class NikoHomeControlActionHandler extends BaseThingHandler implements Nh
Bridge nhcBridge = getBridge();
return nhcBridge != null ? (NikoHomeControlBridgeHandler) nhcBridge.getHandler() : null;
}
+
+ @Override
+ public void bridgeStatusChanged(ThingStatusInfo bridgeStatusInfo) {
+ ThingStatus bridgeStatus = bridgeStatusInfo.getStatus();
+ if (ThingStatus.ONLINE.equals(bridgeStatus)) {
+ if (!initialized) {
+ scheduler.submit(this::startCommunication);
+ } else {
+ updateStatus(ThingStatus.ONLINE);
+ }
+ } else {
+ updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.BRIDGE_OFFLINE);
+ }
+ }
}
diff --git a/bundles/org.openhab.binding.nikohomecontrol/src/main/java/org/openhab/binding/nikohomecontrol/internal/handler/NikoHomeControlEnergyMeterHandler.java b/bundles/org.openhab.binding.nikohomecontrol/src/main/java/org/openhab/binding/nikohomecontrol/internal/handler/NikoHomeControlEnergyMeterHandler.java
index 6aee1157f..1f5d66280 100644
--- a/bundles/org.openhab.binding.nikohomecontrol/src/main/java/org/openhab/binding/nikohomecontrol/internal/handler/NikoHomeControlEnergyMeterHandler.java
+++ b/bundles/org.openhab.binding.nikohomecontrol/src/main/java/org/openhab/binding/nikohomecontrol/internal/handler/NikoHomeControlEnergyMeterHandler.java
@@ -31,6 +31,7 @@ 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.thing.ThingStatusInfo;
import org.openhab.core.thing.binding.BaseThingHandler;
import org.openhab.core.types.Command;
import org.openhab.core.types.UnDefType;
@@ -50,6 +51,8 @@ public class NikoHomeControlEnergyMeterHandler extends BaseThingHandler implemen
private volatile @Nullable NhcEnergyMeter nhcEnergyMeter;
+ private volatile boolean initialized = false;
+
private String energyMeterId = "";
public NikoHomeControlEnergyMeterHandler(Thing thing) {
@@ -71,66 +74,81 @@ public class NikoHomeControlEnergyMeterHandler extends BaseThingHandler implemen
@Override
public void initialize() {
+ initialized = false;
+
NikoHomeControlEnergyMeterConfig config = getConfig().as(NikoHomeControlEnergyMeterConfig.class);
energyMeterId = config.energyMeterId;
- NikoHomeControlCommunication nhcComm = getCommunication();
- if (nhcComm == null) {
- updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.BRIDGE_UNINITIALIZED,
- "@text/offline.bridge-unitialized");
+ NikoHomeControlBridgeHandler bridgeHandler = getBridgeHandler();
+ if (bridgeHandler == null) {
+ updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR,
+ "@text/offline.configuration-error.invalid-bridge-handler");
return;
- } else {
- updateStatus(ThingStatus.UNKNOWN);
}
- // We need to do this in a separate thread because we may have to wait for the
- // communication to become active
- scheduler.submit(() -> {
- if (!nhcComm.communicationActive()) {
- updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR,
- "@text/offline.communication-error");
- return;
- }
+ updateStatus(ThingStatus.UNKNOWN);
- NhcEnergyMeter nhcEnergyMeter = nhcComm.getEnergyMeters().get(energyMeterId);
- if (nhcEnergyMeter == null) {
- updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR,
- "@text/offline.configuration-error.energyMeterId");
- return;
- }
+ Bridge bridge = getBridge();
+ if ((bridge != null) && ThingStatus.ONLINE.equals(bridge.getStatus())) {
+ // We need to do this in a separate thread because we may have to wait for the
+ // communication to become active
+ scheduler.submit(this::startCommunication);
+ }
+ }
- nhcEnergyMeter.setEventHandler(this);
+ private synchronized void startCommunication() {
+ NikoHomeControlCommunication nhcComm = getCommunication(getBridgeHandler());
- updateProperties(nhcEnergyMeter);
+ if (nhcComm == null) {
+ return;
+ }
- String location = nhcEnergyMeter.getLocation();
- if (thing.getLocation() == null) {
- thing.setLocation(location);
- }
+ if (!nhcComm.communicationActive()) {
+ updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR,
+ "@text/offline.communication-error");
+ return;
+ }
- // Subscribing to power readings starts an intensive data flow, therefore only do it when there is an item
- // linked to the channel
- if (isLinked(CHANNEL_POWER)) {
- nhcComm.startEnergyMeter(energyMeterId);
- }
+ NhcEnergyMeter nhcEnergyMeter = nhcComm.getEnergyMeters().get(energyMeterId);
+ if (nhcEnergyMeter == null) {
+ updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR,
+ "@text/offline.configuration-error.energyMeterId");
+ return;
+ }
- this.nhcEnergyMeter = nhcEnergyMeter;
+ nhcEnergyMeter.setEventHandler(this);
- logger.debug("energy meter intialized {}", energyMeterId);
+ updateProperties(nhcEnergyMeter);
- Bridge bridge = getBridge();
- if ((bridge != null) && (bridge.getStatus() == ThingStatus.ONLINE)) {
- updateStatus(ThingStatus.ONLINE);
- } else {
- updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.BRIDGE_OFFLINE);
- }
- });
+ String location = nhcEnergyMeter.getLocation();
+ if (thing.getLocation() == null) {
+ thing.setLocation(location);
+ }
+
+ this.nhcEnergyMeter = nhcEnergyMeter;
+
+ logger.debug("energy meter intialized {}", energyMeterId);
+
+ Bridge bridge = getBridge();
+ if ((bridge != null) && (bridge.getStatus() == ThingStatus.ONLINE)) {
+ updateStatus(ThingStatus.ONLINE);
+ } else {
+ updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.BRIDGE_OFFLINE);
+ }
+
+ // Subscribing to power readings starts an intensive data flow, therefore only do it when there is an item
+ // linked to the channel
+ if (isLinked(CHANNEL_POWER)) {
+ nhcComm.startEnergyMeter(energyMeterId);
+ }
+
+ initialized = true;
}
@Override
public void dispose() {
- NikoHomeControlCommunication nhcComm = getCommunication();
+ NikoHomeControlCommunication nhcComm = getCommunication(getBridgeHandler());
if (nhcComm != null) {
nhcComm.stopEnergyMeter(energyMeterId);
@@ -178,7 +196,7 @@ public class NikoHomeControlEnergyMeterHandler extends BaseThingHandler implemen
// Subscribing to power readings starts an intensive data flow, therefore only do it when there is an item linked to
// the channel
public void channelLinked(ChannelUID channelUID) {
- NikoHomeControlCommunication nhcComm = getCommunication();
+ NikoHomeControlCommunication nhcComm = getCommunication(getBridgeHandler());
if (nhcComm != null) {
// This can be expensive, therefore do it in a job.
scheduler.submit(() -> {
@@ -196,7 +214,7 @@ public class NikoHomeControlEnergyMeterHandler extends BaseThingHandler implemen
@Override
public void channelUnlinked(ChannelUID channelUID) {
- NikoHomeControlCommunication nhcComm = getCommunication();
+ NikoHomeControlCommunication nhcComm = getCommunication(getBridgeHandler());
if (nhcComm != null) {
// This can be expensive, therefore do it in a job.
scheduler.submit(() -> {
@@ -230,13 +248,13 @@ public class NikoHomeControlEnergyMeterHandler extends BaseThingHandler implemen
if (nhcBridgeHandler != null) {
nhcBridgeHandler.bridgeOnline();
} else {
- updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.BRIDGE_UNINITIALIZED,
- "@text/offline.bridge-unitialized");
+ updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR,
+ "@text/offline.configuration-error.invalid-bridge-handler");
}
}
- private @Nullable NikoHomeControlCommunication getCommunication() {
- NikoHomeControlBridgeHandler nhcBridgeHandler = getBridgeHandler();
+ private @Nullable NikoHomeControlCommunication getCommunication(
+ @Nullable NikoHomeControlBridgeHandler nhcBridgeHandler) {
return nhcBridgeHandler != null ? nhcBridgeHandler.getCommunication() : null;
}
@@ -244,4 +262,18 @@ public class NikoHomeControlEnergyMeterHandler extends BaseThingHandler implemen
Bridge nhcBridge = getBridge();
return nhcBridge != null ? (NikoHomeControlBridgeHandler) nhcBridge.getHandler() : null;
}
+
+ @Override
+ public void bridgeStatusChanged(ThingStatusInfo bridgeStatusInfo) {
+ ThingStatus bridgeStatus = bridgeStatusInfo.getStatus();
+ if (ThingStatus.ONLINE.equals(bridgeStatus)) {
+ if (!initialized) {
+ scheduler.submit(this::startCommunication);
+ } else {
+ updateStatus(ThingStatus.ONLINE);
+ }
+ } else {
+ updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.BRIDGE_OFFLINE);
+ }
+ }
}
diff --git a/bundles/org.openhab.binding.nikohomecontrol/src/main/java/org/openhab/binding/nikohomecontrol/internal/handler/NikoHomeControlThermostatHandler.java b/bundles/org.openhab.binding.nikohomecontrol/src/main/java/org/openhab/binding/nikohomecontrol/internal/handler/NikoHomeControlThermostatHandler.java
index 0debc0e7a..f318306a0 100644
--- a/bundles/org.openhab.binding.nikohomecontrol/src/main/java/org/openhab/binding/nikohomecontrol/internal/handler/NikoHomeControlThermostatHandler.java
+++ b/bundles/org.openhab.binding.nikohomecontrol/src/main/java/org/openhab/binding/nikohomecontrol/internal/handler/NikoHomeControlThermostatHandler.java
@@ -36,6 +36,7 @@ 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.thing.ThingStatusInfo;
import org.openhab.core.thing.binding.BaseThingHandler;
import org.openhab.core.types.Command;
import org.slf4j.Logger;
@@ -54,6 +55,8 @@ public class NikoHomeControlThermostatHandler extends BaseThingHandler implement
private volatile @Nullable NhcThermostat nhcThermostat;
+ private volatile boolean initialized = false;
+
private String thermostatId = "";
private int overruleTime;
@@ -66,10 +69,9 @@ public class NikoHomeControlThermostatHandler extends BaseThingHandler implement
@Override
public void handleCommand(ChannelUID channelUID, Command command) {
- NikoHomeControlCommunication nhcComm = getCommunication();
+ NikoHomeControlCommunication nhcComm = getCommunication(getBridgeHandler());
if (nhcComm == null) {
- updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.BRIDGE_UNINITIALIZED,
- "@text/offline.bridge-unitialized");
+ logger.debug("communication not up yet, cannot handle command {} for {}", command, channelUID);
return;
}
@@ -149,59 +151,74 @@ public class NikoHomeControlThermostatHandler extends BaseThingHandler implement
@Override
public void initialize() {
+ initialized = false;
+
NikoHomeControlThermostatConfig config = getConfig().as(NikoHomeControlThermostatConfig.class);
thermostatId = config.thermostatId;
overruleTime = config.overruleTime;
- NikoHomeControlCommunication nhcComm = getCommunication();
- if (nhcComm == null) {
- updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.BRIDGE_UNINITIALIZED,
- "@text/offline.bridge-unitialized");
+ NikoHomeControlBridgeHandler bridgeHandler = getBridgeHandler();
+ if (bridgeHandler == null) {
+ updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR,
+ "@text/offline.configuration-error.invalid-bridge-handler");
return;
- } else {
- updateStatus(ThingStatus.UNKNOWN);
}
- // We need to do this in a separate thread because we may have to wait for the
- // communication to become active
- scheduler.submit(() -> {
- if (!nhcComm.communicationActive()) {
- updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR,
- "@text/offline.communication-error");
- return;
- }
+ updateStatus(ThingStatus.UNKNOWN);
- NhcThermostat nhcThermostat = nhcComm.getThermostats().get(thermostatId);
- if (nhcThermostat == null) {
- updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR,
- "@text/offline.configuration-error.thermostatId");
- return;
- }
+ Bridge bridge = getBridge();
+ if ((bridge != null) && ThingStatus.ONLINE.equals(bridge.getStatus())) {
+ // We need to do this in a separate thread because we may have to wait for the
+ // communication to become active
+ scheduler.submit(this::startCommunication);
+ }
+ }
- nhcThermostat.setEventHandler(this);
+ private synchronized void startCommunication() {
+ NikoHomeControlCommunication nhcComm = getCommunication(getBridgeHandler());
- updateProperties(nhcThermostat);
+ if (nhcComm == null) {
+ return;
+ }
- String thermostatLocation = nhcThermostat.getLocation();
- if (thing.getLocation() == null) {
- thing.setLocation(thermostatLocation);
- }
+ if (!nhcComm.communicationActive()) {
+ updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR,
+ "@text/offline.communication-error");
+ return;
+ }
- thermostatEvent(nhcThermostat.getMeasured(), nhcThermostat.getSetpoint(), nhcThermostat.getMode(),
- nhcThermostat.getOverrule(), nhcThermostat.getDemand());
+ NhcThermostat nhcThermostat = nhcComm.getThermostats().get(thermostatId);
+ if (nhcThermostat == null) {
+ updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR,
+ "@text/offline.configuration-error.thermostatId");
+ return;
+ }
- this.nhcThermostat = nhcThermostat;
+ nhcThermostat.setEventHandler(this);
- logger.debug("thermostat intialized {}", thermostatId);
+ updateProperties(nhcThermostat);
- Bridge bridge = getBridge();
- if ((bridge != null) && (bridge.getStatus() == ThingStatus.ONLINE)) {
- updateStatus(ThingStatus.ONLINE);
- } else {
- updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.BRIDGE_OFFLINE);
- }
- });
+ String thermostatLocation = nhcThermostat.getLocation();
+ if (thing.getLocation() == null) {
+ thing.setLocation(thermostatLocation);
+ }
+
+ this.nhcThermostat = nhcThermostat;
+
+ logger.debug("thermostat intialized {}", thermostatId);
+
+ Bridge bridge = getBridge();
+ if ((bridge != null) && (bridge.getStatus() == ThingStatus.ONLINE)) {
+ updateStatus(ThingStatus.ONLINE);
+ } else {
+ updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.BRIDGE_OFFLINE);
+ }
+
+ thermostatEvent(nhcThermostat.getMeasured(), nhcThermostat.getSetpoint(), nhcThermostat.getMode(),
+ nhcThermostat.getOverrule(), nhcThermostat.getDemand());
+
+ initialized = true;
}
private void updateProperties(NhcThermostat nhcThermostat) {
@@ -306,13 +323,13 @@ public class NikoHomeControlThermostatHandler extends BaseThingHandler implement
if (nhcBridgeHandler != null) {
nhcBridgeHandler.bridgeOnline();
} else {
- updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.BRIDGE_UNINITIALIZED,
- "@text/offline.bridge-unitialized");
+ updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR,
+ "@text/offline.configuration-error.invalid-bridge-handler");
}
}
- private @Nullable NikoHomeControlCommunication getCommunication() {
- NikoHomeControlBridgeHandler nhcBridgeHandler = getBridgeHandler();
+ private @Nullable NikoHomeControlCommunication getCommunication(
+ @Nullable NikoHomeControlBridgeHandler nhcBridgeHandler) {
return nhcBridgeHandler != null ? nhcBridgeHandler.getCommunication() : null;
}
@@ -320,4 +337,18 @@ public class NikoHomeControlThermostatHandler extends BaseThingHandler implement
Bridge nhcBridge = getBridge();
return nhcBridge != null ? (NikoHomeControlBridgeHandler) nhcBridge.getHandler() : null;
}
+
+ @Override
+ public void bridgeStatusChanged(ThingStatusInfo bridgeStatusInfo) {
+ ThingStatus bridgeStatus = bridgeStatusInfo.getStatus();
+ if (ThingStatus.ONLINE.equals(bridgeStatus)) {
+ if (!initialized) {
+ scheduler.submit(this::startCommunication);
+ } else {
+ updateStatus(ThingStatus.ONLINE);
+ }
+ } else {
+ updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.BRIDGE_OFFLINE);
+ }
+ }
}
diff --git a/bundles/org.openhab.binding.nikohomecontrol/src/main/resources/OH-INF/i18n/nikohomecontrol.properties b/bundles/org.openhab.binding.nikohomecontrol/src/main/resources/OH-INF/i18n/nikohomecontrol.properties
index e7c7a4ce0..3f63b3909 100644
--- a/bundles/org.openhab.binding.nikohomecontrol/src/main/resources/OH-INF/i18n/nikohomecontrol.properties
+++ b/bundles/org.openhab.binding.nikohomecontrol/src/main/resources/OH-INF/i18n/nikohomecontrol.properties
@@ -116,5 +116,6 @@ offline.configuration-error.energyMeterRemoved = Energy meter has been removed f
offline.configuration-error.thermostatId = Configured thermostat ID does not match an thermostat in controller
offline.configuration-error.thermostatRemoved = Thermostat has been removed from controller
+offline.configuration-error.invalid-bridge-handler = Invalid bridge handler
+
offline.communication-error = Error communicating with controller
-offline.bridge-unitialized = Bridge not initialized
diff --git a/bundles/org.openhab.binding.nikohomecontrol/src/main/resources/OH-INF/i18n/nikohomecontrol_fr.properties b/bundles/org.openhab.binding.nikohomecontrol/src/main/resources/OH-INF/i18n/nikohomecontrol_fr.properties
index cc473f544..4a12e2dbc 100644
--- a/bundles/org.openhab.binding.nikohomecontrol/src/main/resources/OH-INF/i18n/nikohomecontrol_fr.properties
+++ b/bundles/org.openhab.binding.nikohomecontrol/src/main/resources/OH-INF/i18n/nikohomecontrol_fr.properties
@@ -116,4 +116,3 @@ offline.configuration-error.thermostatId = L'ID configuré ne correspond pas à
offline.configuration-error.thermostatRemoved = Le thermostat a été retiré de l'unité de contrôle
offline.communication-error = Erreur de communication avec l'unité de contrôle
-offline.bridge-unitialized = Pont de connexion non initialisé
diff --git a/bundles/org.openhab.binding.nikohomecontrol/src/main/resources/OH-INF/i18n/nikohomecontrol_nl.properties b/bundles/org.openhab.binding.nikohomecontrol/src/main/resources/OH-INF/i18n/nikohomecontrol_nl.properties
index e03247a66..1de9dda40 100644
--- a/bundles/org.openhab.binding.nikohomecontrol/src/main/resources/OH-INF/i18n/nikohomecontrol_nl.properties
+++ b/bundles/org.openhab.binding.nikohomecontrol/src/main/resources/OH-INF/i18n/nikohomecontrol_nl.properties
@@ -116,4 +116,4 @@ offline.configuration-error.thermostatId = Geconfigureerde thermostaat-ID komt n
offline.configuration-error.thermostatRemoved = Thermostaat is verwijderd van de controller
offline.communication-error = Fout tijdens het communiceren met de controller
-offline.bridge-unitialized = Bridge niet geïnitialiseerd
+
diff --git a/bundles/org.openhab.binding.nikohomecontrol/src/main/resources/OH-INF/thing/thing-types.xml b/bundles/org.openhab.binding.nikohomecontrol/src/main/resources/OH-INF/thing/thing-types.xml
index e75e3a666..90af05135 100644
--- a/bundles/org.openhab.binding.nikohomecontrol/src/main/resources/OH-INF/thing/thing-types.xml
+++ b/bundles/org.openhab.binding.nikohomecontrol/src/main/resources/OH-INF/thing/thing-types.xml
@@ -161,8 +161,8 @@
-
- @textThermostatDescription
+
+ @text/ThermostatDescription