Как работать с велосипедным замком Bluetooth - PullRequest
0 голосов
/ 30 сентября 2018

Есть велосипедный замок, который открывается по Bluetooth.Перед началом работы с блокировкой необходимо отправить набор байтов, в ответ на которые устройство должно вернуть ключ.Вот инструкция для составления набора байтов:

Документация для блокировки блокировки страницы 3-5.

На основании данных из таблицы значений, необходимых для получения ключа, получен массив таких значений:

FE 43 11 22 19 8A 60 65 7E 5C 46 41 8B F7 4D.

Я подписываюсь на уведомление и пишу этот комплект.Но после этого я не получаю никаких уведомлений.

rxBleConnection.setupNotification(UUID.fromString(BluetoothModel.NOTIFY))
                                                .doOnSubscribe(disposable -> rxBleConnection.writeCharacteristic(UUID.fromString(BluetoothModel.WRITE), bt)
                                                        .subscribe(
                                                                characteristicValue -> {
                                                                    Log.e("BLE++", "RESULT " + Arrays.toString(characteristicValue));
                                                                },
                                                                throwable -> {
                                                                    System.out.println();
                                                                }))
                                                .flatMap((Function<Observable<byte[]>, Observable<byte[]>>) observable -> observable)
                                                .subscribe(new DisposableObserver<byte[]>() {
                                                    @Override
                                                    public void onNext(byte[] bytes) {
                                                        Log.e("BLE++", "NOTIFY " + Arrays.toString(bytes));
                                                    }

                                                    @Override
                                                    public void onError(Throwable e) {
                                                    }

                                                    @Override
                                                    public void onComplete() {
                                                    }
                                                });
...