[nikobus] open connection on refresh even if no modules exist (#9603)

* 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>
pull/9718/head
Wouter Denayer 2021-01-04 12:10:36 +01:00 committed by GitHub
parent 9ff37fbdd2
commit 1f3b0e2865
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 19 additions and 4 deletions

View 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);