簡體   English   中英

無法使用 Noble 獲取通知數據

[英]Unable to get Notify data using Noble

無法接收從服務器外圍設備發送的任何通知。

我正在使用帶有“BLE_notify”代碼的 ESP32 作為服務器,您可以在 Arduino 應用程序中找到該代碼(文件> 示例 ESP32 BLE Arduino > BLE_notify)。 使用此代碼,一旦客戶端連接,ESP32 就會每秒開始通知新消息。 使用的客戶端是安裝了 Noble 節點庫的 Raspberry Pi( https://github.com/abandonware/noble )。 這是我正在使用的代碼。

    noble.on('discover', async (peripheral) => {
      console.log('found peripheral:', peripheral.advertisement);
      await noble.stopScanningAsync();
      await peripheral.connectAsync();
      console.log("Connected")

      try {
        const services = await peripheral.discoverServicesAsync([SERVICE_UUID]);
        const characteristics = await services[0].discoverCharacteristicsAsync([CHARACTERISTIC_UUID])
        const ch = characteristics[0]
        
        ch.on('read', function(data, isNotification) {
          console.log(isNotification)
          console.log('Temperature Value: ', data.readUInt8(0));
        })
        
        ch.on('data', function(data, isNotification) {
          console.log(isNotification)
          console.log('Temperature Value: ', data.readUInt8(0));
        })
        ch.notify(true, function(error) {
          console.log(error)
          console.log('temperature notification on');
        })
      
      } catch (e) {
        // handle error
        console.log("ERROR: ",e)
      }
    });

SERVICE_UUID 和 CHARACTERISTIC_UUID 顯然是 ESP32 中編碼的 UUID。

這種代碼工作,它可以找到服務和特性,它可以成功連接到外圍設備,但它不能接收消息通知。 我還嘗試了一個作為客戶端工作的 Android 應用程序,從該應用程序中,一旦連接到外圍設備,我就可以獲得外圍設備通知的所有消息。 所以 noBLE 客戶端缺少一些東西。

我認為on.read/on.data/notify(true)回調方法有問題。 也許這些不是從服務器接收通知的方法? 我也嘗試了subscribe方法,但仍然無法正常工作。

官方文檔不清楚。 任何人都可以啟動並運行它嗎? 請幫忙。

on.read/on.data/是事件監聽器。 他們沒有錯。 當有特定事件時調用它們。

例如添加characteristic.read([callback(error, data)]); 會調用on.read

來源:

在以下時間發出:

  • 特征讀取已完成,character.read(...) 的結果
  • 在使用characteristic.notify(true[, callback(error)]) 啟用后,外圍設備已通過通知或指示更新了特征值

我使用以下兩個環境 NOBLE_MULTI_ROLE=1 和 NOBLE_REPORT_ALL_HCI_EVENTS=1 解決(請參閱文檔https://github.com/abandonware/noble

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM