diff --git a/src/main/java/no/seime/openhab/binding/esphome/internal/bluetooth/ESPHomeBluetoothDevice.java b/src/main/java/no/seime/openhab/binding/esphome/internal/bluetooth/ESPHomeBluetoothDevice.java index 5e8b109..3ba0cd5 100644 --- a/src/main/java/no/seime/openhab/binding/esphome/internal/bluetooth/ESPHomeBluetoothDevice.java +++ b/src/main/java/no/seime/openhab/binding/esphome/internal/bluetooth/ESPHomeBluetoothDevice.java @@ -26,6 +26,12 @@ public class ESPHomeBluetoothDevice extends BaseBluetoothDevice { private final ESPHomeBluetoothProxyHandler proxyHandler; + public void setAddressType(int addressType) { + this.addressType = addressType; + } + + private int addressType; + public ESPHomeBluetoothDevice(BluetoothAdapter adapter, BluetoothAddress address) { super(adapter, address); proxyHandler = (ESPHomeBluetoothProxyHandler) adapter; @@ -101,14 +107,14 @@ public boolean connect() { // notifyListeners(BluetoothEventType.CONNECTION_STATE, // new BluetoothConnectionStatusNotification(ConnectionState.CONNECTING)); lockToHandler.sendBluetoothCommand(BluetoothDeviceRequest.newBuilder() - .setAddress(BluetoothAddressUtil.convertAddressToLong(address)) + .setAddress(BluetoothAddressUtil.convertAddressToLong(address)).setAddressType(addressType) .setRequestType(BluetoothDeviceRequestType.BLUETOOTH_DEVICE_REQUEST_TYPE_CONNECT_V3_WITHOUT_CACHE) .build()); return true; } - return false; + return true; } @Override diff --git a/src/main/java/no/seime/openhab/binding/esphome/internal/bluetooth/ESPHomeBluetoothProxyHandler.java b/src/main/java/no/seime/openhab/binding/esphome/internal/bluetooth/ESPHomeBluetoothProxyHandler.java index 2913411..853b4e6 100644 --- a/src/main/java/no/seime/openhab/binding/esphome/internal/bluetooth/ESPHomeBluetoothProxyHandler.java +++ b/src/main/java/no/seime/openhab/binding/esphome/internal/bluetooth/ESPHomeBluetoothProxyHandler.java @@ -110,11 +110,14 @@ private synchronized void updateESPHomeDeviceList() { // Enable registration of BLE advertisements ESPHomeHandler handler = (ESPHomeHandler) esphomeThing.getHandler(); + if (handler != null) { + if (!espHomeHandlers.contains(handler)) { + handler.listenForBLEAdvertisements(this); + espHomeHandlers.add(handler); + } - if (!espHomeHandlers.contains(handler)) { - handler.listenForBLEAdvertisements(this); - espHomeHandlers.add(handler); } + } } } @@ -195,7 +198,7 @@ private void handleAdvertisement(BluetoothLEAdvertisementResponse rsp, ESPHomeHa ESPHomeBluetoothDevice device = getDevice(address); logger.debug("Received BLE advertisement from device {} via {}", address, handler.getThing().getUID()); - + device.setAddressType(rsp.getAddressType()); device.setName(rsp.getName()); device.setRssi(rsp.getRssi());