characteristic.registerNotifyWait()でエラー繰り返し約5時間受信できず
お世話になっております。
obniz BLE/Wi-Fiゲートウェイを常時接続していますが、下記のエラーを繰り返して
約5時間、データを受信できませんでした。
対処方法をご教示お願いいたします。
【情報】
機種:obniz BLE/Wi-Fiゲートウェイ
OS:encored 3.5.0
タイミング:characteristic.registerNotifyWait()
エラー:ObnizTimeoutError: Receive data timeout. Waiting for readAclStream handle:0 cid:4 firstData:19
※類似Q&Aに見つけました。obniz.reboot()のやり方を教えてください。
よろしくお願いいたします。
-
Bluetoothの通信が何らかおかしくなった状態と思われます。
obnizを再起動することで正常化することがありますのでそちらをお試しください。再起動するためには下記のいずれかを実施ください
- obnizデバイスを電源を抜き差しを行ってください
- プログラムでobniz.rebootを利用し、再起動してくださいhttps://obniz.github.io/obniz/obnizjs/classes/obnizcore.obniz.html#reboot
0 -
ご回答ありがとうございます。
obniz.reboot()を実行し再起動することを確認できました。
【確認】
①reboot()後にonconnect()するのかと思ったのですが、来ませんでした。
reboot後の正しい動作を教えてください(scanでしょうか)
②本クラッシュを検知するには、どうしたらよいでしょうか。
※registerNotifyWait()はtry~catchしていました。
以上、よろしくお願いいたします。
0 -
reboot後はデバイスが再起動しますので、デバイスがonlineになったタイミングでobniz.onconnectが自動的に呼ばれます。
onconnectの中身が再度順次実行されますので、そちらに実行したいプログラムを記載ください。try catchはソースコードを拝見しないとわからない部分が多くなっておりますが、他デバイスから通知がくるcallback時のエラーの場合、try catchハンドリングが不可となっております。
StackTraceとかはなにか出ているでしょうか。0 -
ご回答ありがとうございます。
本件のStackTraceとその他3つのStackTraceがあります。
(ファイルの添付はできないのでしょうか)
ご意見を伺いたくお願いいたします。
①ObnizTimeoutError: Receive data timeout. Waiting for readAclStream handle:0 cid:4 firstData:19
②ObnizBleUnknownDescriptorError: unknown descriptor. peripheral :XXXXX service
③TypeError: Cannot read property 'notifyFromServer' of null
④RangeError [ERR_OUT_OF_RANGE]: The value of "offset" is out of range. It must be >= 0 and <= 27. Received 28
以上、よろしくお願いいたします。
0 -
Cannot read property 'notifyFromServer' of null
などもあることを考えると、状態がおかしくなっているようです。
もしかして、obnizデバイスとBLEデバイスのコネクションが何らかの理由で切断され、その切断後もnotificationを受け取ろうとプログラムを動かしていないでしょうか。
BLEデバイスの切断はperipheral.ondisconnectコールバックにて検知が可能ですので、そちらが呼ばれていないかもご確認いただけないでしょうか。
0 -
ご回答ありがとうございます。
peripheral.ondisconnectを試したところ、次のことが判明しました。
①peripheral.ondisconnect後にnotifyをリトライしていた(エラー時は3回リトライ)
②notifyのリトライに失敗したら、peripheral.disconnectWait()していた
上記のエラー時リトライやdisconnectWait()は不要でしたでしょうか。
また、BLEデバイスの切断検知したときのセントラル側動作はスキャンでしょうか。
以上、よろしくお願いいたします。
0
サインインしてコメントを残してください。
コメント
6件のコメント