diff --git a/bundles/org.connectorio.addons.binding.bacnet/src/main/java/org/connectorio/addons/binding/bacnet/internal/handler/object/BACnetDeviceHandler.java b/bundles/org.connectorio.addons.binding.bacnet/src/main/java/org/connectorio/addons/binding/bacnet/internal/handler/object/BACnetDeviceHandler.java index 4500b320..b4c0869d 100644 --- a/bundles/org.connectorio.addons.binding.bacnet/src/main/java/org/connectorio/addons/binding/bacnet/internal/handler/object/BACnetDeviceHandler.java +++ b/bundles/org.connectorio.addons.binding.bacnet/src/main/java/org/connectorio/addons/binding/bacnet/internal/handler/object/BACnetDeviceHandler.java @@ -161,9 +161,9 @@ protected void initializeChannels(BacNetClient client) { pollingMap.get(refreshInterval).add(readout); } - this.watchdog = watchdogBuilder.build(getCallback(), new ThingStatusWatchdogListener(getThing(), getCallback())); + //this.watchdog = watchdogBuilder.build(getCallback(), new ThingStatusWatchdogListener(getThing(), getCallback())); for (Entry> entry : pollingMap.entrySet()) { - ScheduledFuture poller = scheduler.scheduleAtFixedRate(new RefreshDeviceTask(() -> clientFuture, thing, watchdog.getCallbackWrapper(), device, entry.getValue(), linkManager), + ScheduledFuture poller = scheduler.scheduleAtFixedRate(new RefreshDeviceTask(() -> clientFuture, thing, getCallback(), device, entry.getValue(), linkManager), 0, entry.getKey(), TimeUnit.MILLISECONDS); pollers.put(entry.getKey(), poller); } @@ -181,7 +181,7 @@ public void dispose() { for (Entry> entry : pollers.entrySet()) { try { ScheduledFuture value = entry.getValue(); - value.cancel(false); + value.cancel(true); } catch (Exception e) { logger.warn("Error during shutdown of poller checking device {} every {}ms", device, entry.getKey()); } diff --git a/bundles/org.connectorio.addons.binding.bacnet/src/main/java/org/connectorio/addons/binding/bacnet/internal/handler/object/task/RefreshDeviceTask.java b/bundles/org.connectorio.addons.binding.bacnet/src/main/java/org/connectorio/addons/binding/bacnet/internal/handler/object/task/RefreshDeviceTask.java index bd9c6033..bcbc8929 100644 --- a/bundles/org.connectorio.addons.binding.bacnet/src/main/java/org/connectorio/addons/binding/bacnet/internal/handler/object/task/RefreshDeviceTask.java +++ b/bundles/org.connectorio.addons.binding.bacnet/src/main/java/org/connectorio/addons/binding/bacnet/internal/handler/object/task/RefreshDeviceTask.java @@ -82,7 +82,7 @@ private Map> getReadouts() { @Override public void run() { - if (linkManager.hasLinkedChannels(thing)) { + if (!linkManager.hasLinkedChannels(thing)) { logger.trace("Ignore device {} readout, no linked channels found.", device); return; } diff --git a/bundles/org.connectorio.addons.link/src/main/java/org/connectorio/addons/link/internal/DefaultChannelLinkManager.java b/bundles/org.connectorio.addons.link/src/main/java/org/connectorio/addons/link/internal/DefaultChannelLinkManager.java index 730746c0..d9769620 100644 --- a/bundles/org.connectorio.addons.link/src/main/java/org/connectorio/addons/link/internal/DefaultChannelLinkManager.java +++ b/bundles/org.connectorio.addons.link/src/main/java/org/connectorio/addons/link/internal/DefaultChannelLinkManager.java @@ -32,6 +32,7 @@ import org.openhab.core.thing.ThingRegistry; import org.openhab.core.thing.ThingUID; import org.openhab.core.thing.link.ItemChannelLink; +import org.openhab.core.thing.link.ItemChannelLinkRegistry; import org.osgi.service.component.annotations.Activate; import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Reference; @@ -52,7 +53,7 @@ public class DefaultChannelLinkManager implements LinkManager { private final ThingRegistryListener thingRegistryListener; @Activate - public DefaultChannelLinkManager(@Reference(target = ITEM_CHANNEL_LINK_REGISTRY_FILTER) Registry linkRegistry, + public DefaultChannelLinkManager(@Reference(target = ITEM_CHANNEL_LINK_REGISTRY_FILTER) ItemChannelLinkRegistry linkRegistry, @Reference ThingRegistry thingRegistry) { this.linkRegistry = linkRegistry; this.thingRegistry = thingRegistry; @@ -61,6 +62,8 @@ public DefaultChannelLinkManager(@Reference(target = ITEM_CHANNEL_LINK_REGISTRY_ thingRegistryListener = new ThingRegistryListener(); linkRegistry.addRegistryChangeListener(linkRegistryListener); thingRegistry.addRegistryChangeListener(thingRegistryListener); + linkRegistry.getAll().forEach(linkRegistryListener::added); + thingRegistry.getAll().forEach(thingRegistryListener::added); } public void deactivate() {