想将投影仪接入米家,请教一下 ESP32 重放投影仪蓝牙遥控器的按键,用于控制投影仪的开关

203 天前
 kuoruan

买了一台当贝 F6 ,想要实现米家控制。找到一篇文章:https://www.znds.com/tv-1237327-1-1.html

但是作者没有在文章中透露细节,没办法,只有自己来研究。

准备了以下内容:

抓到的电源键广播包类似于:

/**
 * LEN | TYPE | VALUE
 * 2   | 0x01 | 0x04
 * 3   | 0x03 | 0x1218
 * 3   | 0x19 | 0x8001
 * 13  | 0xFF | 0x5D000300011808642AA0C884
 */
static uint8_t adv_data_on_off[] = {
    // Flags
    0x02, 0x01, 0x04,
    // Complete list of 16-bit Service UUIDs
    0x03, 0x03, 0x12, 0x18,
    // Appearance
    0x03, 0x19, 0x80, 0x01,
    // Manufacturer Specific Data
    0x0D, 0xFF, 0x5D, 0x00, 0x03, 0x00, 0x01, 0x18, 0x08, 0x64, 0x2A, 0xA0, 0xC8, 0x84
};

由于不知道怎么用手机重放测试,直接开始编写 ESP 代码,刷入之后,用小爱同学执行命令也能正常重放。 但是投影仪并没有反应。

观察遥控器广播的包数据 Manufacturer Specific Data 里,有一位是每次递增的。我直接改为下一次预计的值,重放之后也无法正常开关。

遥控器发出的包貌似是单次广播的?我看 BLE 协议里,广播包都是循环广播的?

按帖文里的说法,他直接重放原包就实现了,感觉我是不是哪里有问题。

现在卡住了,不知道后面如何进行。

我的代码放在 GitHub 了:esp32-ble-remote-control

希望各位能帮忙分析一下问题出在什么地方,谢谢

642 次点击
所在节点   嵌入式开发
6 条回复
dule
203 天前
这么麻烦?像小爱音箱自带红外,米家直接添加设备-红外遥控器-投影仪-选择品牌,我的爱普生就直接搞定了,直接开关控制音量都行
kuoruan
203 天前
当贝 F6 是蓝牙遥控器,非红外遥控器。无法通过红外遥控
xuextx
203 天前
@yujinchn776 红外或者射频都好解决,但是蓝牙信号目前比较麻烦。
dule
200 天前
@xuextx 那就不清楚了,没研究的那么深入
fentensoft666
143 天前
@kuoruan 我是当贝 F3 Air 投影仪,那串 Manufactor Data 不变就能触发开机,不知道型号之间是不是通用的,你可以试试。代码: https://github.com/fentensoft/esp32-dangbei-projector ,我也搞通了关机指令
kuoruan
143 天前
@fentensoft666 感谢感谢,我抽个时间再研究研究,上次没实现之后我就作罢了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/983671

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX