]> git.basschouten.com Git - openhab-addons.git/commitdiff
[nikobus] open connection on refresh even if no modules exist (#9603)
authorWouter Denayer <gitwouter@users.noreply.github.com>
Mon, 4 Jan 2021 11:10:36 +0000 (12:10 +0100)
committerGitHub <noreply@github.com>
Mon, 4 Jan 2021 11:10:36 +0000 (12:10 +0100)
* open connection on refresh even if no modules exist

Signed-off-by: Wouter Denayer <wouter@denayer.com>
* ran mvn spotless:apply

Signed-off-by: Wouter Denayer <wouter@denayer.com>
* removed unnecessary file

Signed-off-by: Wouter Denayer <wouter@denayer.com>
* returning when the connection is offline since following code won't work
either.

Signed-off-by: Wouter Denayer <wouter@denayer.com>
Co-authored-by: Wouter Denayer <wouter@denayer.com>
bundles/org.openhab.binding.nikobus/src/main/java/org/openhab/binding/nikobus/internal/handler/NikobusPcLinkHandler.java

index 31bec7c9805bfb7ab8d6048da0b78fa8d3b74bef..6dd8f460363791edfbdba698303b8d83d5d2fb99 100644 (file)
@@ -50,8 +50,8 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
- * The {@link NikobusPcLinkHandler} is responsible for handling commands, which are
- * sent or received from the PC-Link Nikobus component.
+ * The {@link NikobusPcLinkHandler} is responsible for handling commands, which
+ * are sent or received from the PC-Link Nikobus component.
  *
  * @author Boris Krivonog - Initial contribution
  */
@@ -329,6 +329,21 @@ public class NikobusPcLinkHandler extends BaseBridgeHandler {
         List<Thing> things = getThing().getThings().stream()
                 .filter(thing -> thing.getHandler() instanceof NikobusModuleHandler).collect(Collectors.toList());
 
+        // if there are command listeners (buttons) then we need an open connection even if no modules exist
+        if (!commandListeners.isEmpty()) {
+            NikobusConnection connection = this.connection;
+            if (connection == null) {
+                return;
+            }
+            try {
+                connectIfNeeded(connection);
+            } catch (IOException e) {
+                connection.close();
+                updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, e.getMessage());
+                return;
+            }
+        }
+
         if (things.isEmpty()) {
             logger.debug("Nothing to refresh");
             return;
@@ -349,8 +364,8 @@ public class NikobusPcLinkHandler extends BaseBridgeHandler {
         if (!connection.isConnected()) {
             connection.connect();
 
-            // Send connection sequence, mimicking the Nikobus software. If this is not send, PC-Link
-            // sometimes does not forward button presses via serial interface.
+            // Send connection sequence, mimicking the Nikobus software. If this is not
+            // sent, PC-Link sometimes does not forward button presses via serial interface.
             Stream.of(new String[] { "++++", "ATH0", "ATZ", "$10110000B8CF9D", "#L0", "#E0", "#L0", "#E1" })
                     .map(NikobusCommand::new).forEach(this::sendCommand);