diff --git a/src/main/java/org/sputnikdev/esh/binding/bluetooth/handler/BluetoothHandler.java b/src/main/java/org/sputnikdev/esh/binding/bluetooth/handler/BluetoothHandler.java index 1e05569..b5c2e78 100644 --- a/src/main/java/org/sputnikdev/esh/binding/bluetooth/handler/BluetoothHandler.java +++ b/src/main/java/org/sputnikdev/esh/binding/bluetooth/handler/BluetoothHandler.java @@ -107,6 +107,10 @@ public void channelUnlinked(ChannelUID channelUID) { }); } + public boolean hasChannelHandler(ChannelHandler handler) { + return this.channelHandlers.containsKey(handler); + } + @Override protected void updateState(String channelID, State state) { super.updateState(channelID, state); diff --git a/src/main/java/org/sputnikdev/esh/binding/bluetooth/handler/GattChannelHandler.java b/src/main/java/org/sputnikdev/esh/binding/bluetooth/handler/GattChannelHandler.java index 2084596..0648e27 100644 --- a/src/main/java/org/sputnikdev/esh/binding/bluetooth/handler/GattChannelHandler.java +++ b/src/main/java/org/sputnikdev/esh/binding/bluetooth/handler/GattChannelHandler.java @@ -171,7 +171,7 @@ private boolean channelRequired(Field field) { } private void buildMissingBinaryChannel() { - if (getBinaryChannel() == null) { + if (!handler.hasChannelHandler(this) || getBinaryChannel() == null) { Channel channel = buildBinaryChannel(); handler.registerChannel(channel.getUID(), this); handler.updateThingWithChannels(Collections.singletonList(channel));