【问题标题】:Bluetooth web control led stripe蓝牙网页控制灯条
【发布时间】:2022-01-27 03:02:53
【问题描述】:

正在使用 Android 上的 Happylighting 应用程序,我尝试制作一个简单的 Web 应用程序来控制 LED 的颜色,但不知道该怎么做,我必须请求女巫“gatt”,我真的蓝牙新手。

借助 android 嗅探器,我知道可以使用服务更新

const service = "0000ffd5-0000-1000-8000-00805f9b34fb"
const characteristic = "0000ffd9-0000-1000-8000-00805f9b34fb" 



function onRequestBluetoothDeviceButtonClick() {
    navigator.bluetooth.requestDevice({
        filters: [{name:"QHM-0A0B"}],
        optionalServices: [service],
    })
    .then(device => {
        return device.gatt.connect()
    }).then(server =>{
        return server.getPrimaryService(service);
    }).then(service =>{
        return service.getCharacteristics(characteristic);
    }).then(characteristic=>{
        let colorArray = Uint8Array.from([86, 0, 255, 0, 25, 240, 170]);
        return characteristic[0].writeValue(colorArray);
    }).then(()=>{
        console.log("Send")
    })
    .catch(error => {
        console.log('Argh! ' + error);
    });
  }

但我不知道接下来要向它发送数据是什么以及 git repo 中提到的字节数组是什么

这是图像:我们 console.log 的特征

【问题讨论】:

  • 可以分享一下你找到的api文档吗?
  • Ofc @MichaelKotzjan 在这里:web.dev/bluetooth.
  • 哦,你说的是蓝牙 api。我们需要用于您的 LED 的蓝牙 API 来给您提示。我是否理解正确,您想使用 Web 应用程序复制 Happylighting 应用程序?
  • @MichaelKotzjan 这正是重点,但我没有找到实现这一目标的唯一资源
  • 这就是我所担心的。如果您无法使用现有的 BLE 应用程序更改颜色,则不能期望使用您的代码更改它。可能你找到的库已经过时,数据格式不正确。如果没有您的设备文档,就无法判断

标签: javascript bluetooth led web-bluetooth


【解决方案1】:

您已经拥有要从您在 cmets 中发布的 github 存储库写入的特征的相关 UUID。存储库还告诉我们如何组合数据以使用我们想要的颜色发送。

这些是相关的行:

print("RED: ")
red = int(input())
print("GREEN: ")
green = int(input())
print("BLUE: ")
blue = int(input())
lista = [86, red, green, blue, (int(10 * 255 / 100) & 0xFF), 256-16, 256-86]
values = bytearray(lista)

values 然后将被写入设备。因此,如果我们想设置绿色,我们的lista 将包含值red = 0、green = 255 和blue = 0,如下所示:

[86, 0, 255, 0, 25, 240, 170] 或 5600FF0019F0AA 十六进制。

事实上,如果我们想要不同的颜色,只有第二个、第三个和第四个数字需要更改为 0 到 255 之间的值。

现在要开始在您的 LED 设备上设置颜色,请始终使用通用 BLE 扫描仪工具(如 nRF Connect)来测试连接,然后再尝试自己编写一些东西。使用该工具进行扫描时,您应该能够找到您的 LED 设备并连接到它。扫描服务后,您应该找到 UUID 0000ffd9-0000-1000-8000-00805f9b34fb 的特征。将值5600FF0019F0AA 写入其中,看看您的设备是否变绿。

既然这已经奏效了,并且您了解了如何组合数据,您就可以开始编写自己的代码了。

【讨论】:

  • 感谢您的解释我已经使用我从您和控制台的理解更新了帖子,但仍然无法正常工作,我不知道为什么,因为没有显示错误
  • 我添加了一个 img 来向您展示一些我没有先看到的东西,但是当我从上面的特征阅读时我看到了这个
  • @BeatlesBOB 这是来自 nRF Connect 的屏幕截图。你到底想给我看什么?
  • 我想也许通过显示无效数据的第一个特征,我们可以知道出了什么问题
  • @BeatlesBOB 我无法访问该设备。在没有文档的情况下尝试访问 BLE 特性始终只是一个试错过程。如果您使用 nRF Connect 失败,您可以尝试使用 BLE 嗅探器并记录您的智能手机和设备之间的通信以对其进行逆向工程。但我不能再帮你了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-25
  • 2022-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多