智能电视网

电脑版
提示:原网页已由神马搜索转码, 内容由www.znds.com提供.
跳转到指定楼层
楼主
发表于 2024-1-11 16:24|只看该作者|只看大图回帖奖励
家里的投影仪是当贝F3 Air,蓝牙遥控器,无红外,支持上电开机。为了接入HA实现自动化,尝试了三个不同的方案:
先是直接接了个智能插座,简单粗暴,开关 = 上下电。觉得不够优雅,尤其是关机,弃用了。

后来买了个Zigbee的手指机器人,通过模拟点按机器上的开关实现自动化。用了一段时间,缺点很明显:

1. 稳定性一般,延迟高。有时候发指令刚执行完,还会隔个十几秒,又执行一次。

2. 无法获取到投影仪真实开机的状态,没法实现更多玩法。当然也可以通过智能插座的功率来判断,但是这就有些多余了。

3. 噪音大,用过的朋友应该知道,这个小电机声音不小。
又弃用了。

最终还是选择ESP32玩点儿花的。这里讲下思路:

1、唤醒方式

官方的APP都不支持网络唤醒,本地也扫了一下mdns,确实在关机状态下没什么能用的服务,所以只能走蓝牙模拟。

拿nf52840抓了一下包,发现在关机状态下,按下开机键,遥控器会持续5秒广播带有特殊Manufactor Data的报文,5秒后消失,那推测大概率就是这段神秘数据触发了唤醒。

当贝投影仪通过ESP32接入HA方案 实现开关机自由


实践证明猜测正确。有没有懂行的老哥知道怎么解析这串数据,求科普。

2、关机方式

起初选择走网络途径,实现直接简单一些,毕竟官方APP自带局域网遥控功能。

抓包发现指令是通过WebSocket明文传输的,地址就是ws://投影仪IP:6689,数据内容忘记截图了,大概就只需要里面的Command和Value两个字段即可。后来代码也写了,通过mdns先找到投影仪的IP,再发送按键指令。不过ESP32上面的mdns一直不是很稳,服务扫描时有时无,也没心情仔细研究,就又转向了蓝牙抓包(有兴趣的朋友可以继续尝试一下)。

同样用nf52840抓了一下按下关机键时刻的BLE报文,发现电源键按下时,对应的HID Report值会变为0x0000660000,松开就会发0x0000000000,那么方向明晰了。

当贝投影仪通过ESP32接入HA方案 实现开关机自由

玩过HID抓包的朋友可能会发现这个数值格式并不是键盘鼠标这类设备的常见格式,又仔细研究了一番他的HID描述符,发现的确是自定义的。

当贝投影仪通过ESP32接入HA方案 实现开关机自由

看来现成的ESP32 HID Keyboard轮子还不能用,只能手撸一个了,说干就干。

最终实现的效果是通过ESP32模拟蓝牙报文触发投影仪开关,同时蓝牙连接的状态也能够反映出投影仪当前的工作状态。把这些信息通过MQTT,就可以接入到Home Assistant中,以一个开关的实体存在,配置代码如下:

  1. mqtt:
  2.   - switch:
  3.      unique_id: esp32_projector_switch
  4.      name: "ESP32 Projector Switch"
  5.      state_topic: "esp32projector006"
  6.      command_topic: "esp32projector006"
复制代码

当贝投影仪通过ESP32接入HA方案 实现开关机自由

至于是否稳定,容我再观察一段时间。

最终代码实现已经开源:https://github.com/fentensoft/esp32-dangbei-projector,README还没写。

欢迎大家自由尝试,目前当贝F3 Air能够正确控制,其余设备未测试,但原理雷同。


上一篇:当贝F6的节能模式如何打开 当贝F6节能模式打开教程
下一篇:
当贝X5 Ultra的节能模式如何打开 当贝X5 Ultra节能模式打开...
5#
发表于 2024-1-12 09:19|只看该作者
你真是大神啊

智能电视网
投影网
智能电视行业资讯
当贝点金广告联盟
当贝投影
当贝盒子
当贝OS
当贝投屏
当贝市场
当贝音乐
当贝健身
当贝桌面