diff --git a/bundles/org.openhab.io.homekit/src/main/java/org/openhab/io/homekit/internal/HomekitImpl.java b/bundles/org.openhab.io.homekit/src/main/java/org/openhab/io/homekit/internal/HomekitImpl.java index 8353bedc121..fff36d73370 100644 --- a/bundles/org.openhab.io.homekit/src/main/java/org/openhab/io/homekit/internal/HomekitImpl.java +++ b/bundles/org.openhab.io.homekit/src/main/java/org/openhab/io/homekit/internal/HomekitImpl.java @@ -85,7 +85,7 @@ public class HomekitImpl implements Homekit, NetworkAddressChangeListener, Ready private final List homekitServers = new ArrayList<>(); private final List bridges = new ArrayList<>(); private MDNSClient mdnsClient; - private int currentStartLevel = 0; + private boolean started = false; private final List changeListeners = new ArrayList<>(); @@ -164,7 +164,7 @@ public class HomekitImpl implements Homekit, NetworkAddressChangeListener, Ready || oldSettings.instances != settings.instances) { // the HomeKit server settings changed. we do a complete re-init stopHomekitServer(); - if (currentStartLevel >= StartLevelService.STARTLEVEL_STATES) { + if (started) { startHomekitServer(); } } else { @@ -185,6 +185,7 @@ public class HomekitImpl implements Homekit, NetworkAddressChangeListener, Ready @Override public synchronized void onReadyMarkerAdded(ReadyMarker readyMarker) { try { + started = true; startHomekitServer(); } catch (IOException | InvalidAlgorithmParameterException e) { logger.warn("could not initialize HomeKit bridge: {}", e.getMessage()); @@ -193,6 +194,7 @@ public class HomekitImpl implements Homekit, NetworkAddressChangeListener, Ready @Override public synchronized void onReadyMarkerRemoved(ReadyMarker readyMarker) { + started = false; stopHomekitServer(); } @@ -326,7 +328,7 @@ public class HomekitImpl implements Homekit, NetworkAddressChangeListener, Ready @Override public synchronized void onChanged(final List added, final List removed) { logger.trace("HomeKit bridge reacting on network interface changes."); - if (currentStartLevel < StartLevelService.STARTLEVEL_STATES) { + if (!started) { return; } removed.forEach(i -> {