本帖最后由 neroxps 于 2020-11-26 20:20 编辑
众所周知创米小白万能遥控器带蓝牙功能,TTL 会输出蓝牙设备事件日志,通过ESP8266 读取创米小白的TTL 日志即可获得锁和其他蓝牙传感器的状态.
我参考了下 killadm LOCK2MQTT的和 XCray (多个)蓝牙网关 TTL->MQTT,支持任意米家蓝牙设备接入HA/NR 的代码,K大的因为只服务他的锁,我家是鹿客Q2 的锁,所以不适用,最终选择了XCray大的固件。
我把锁接入,设置了自动化,当人从门外上提把手的话,代表家里已经没人(我和老婆的使用习惯都是家里没人外出才上提把手),然后就自动化布防,按门铃微信视频推送等等。
当时试过几次回家不自动撤防,看了下日志发现没有找到回家的指纹解锁的日志。感觉是TTL消息丢了,米家那边看日志是看到回家的信息的(去到一个无法通过蓝牙连接锁的地方去米家里面看日志),由此断定应该是固件把指纹解锁事件日志丢了。
后来学了下C++,参考 Esphome 的 tuya 插件,按照 XCray 大佬的思路重写了下。使用几天暂时没有发现丢消息的情况。
MQTT 消息及使用方法和 XCray 大佬帖子是一样的,大家可以根据帖子教程部署,我这里就不再赘述。
编译方法
把下方的文件丢到 esphome 的目录下,然后使用 esphome 来编辑即可。
固件
INIT 2020-11-26 16:11:37
Fixed 2020-11-26 20:09:32
- 修复因 rxmessage vector 字符串未设置字符串终止符导致字符串读取溢出(非致命),貌似
parseObject 还是能够成功的解析 Json ~导致我没发现这个 BUG。
mijiaBleMessage_esp8266.zip
(2.47 KB, 下载次数: 106)
MQTT 配置
请参考 Esphome 的 MQTT 配置修改 yaml 文件 https://esphome.io/components/mqtt.html
MQTT topic
/mijiaBleListener/[设备ID]/[事件ID]
日志消息
如果发现传感器消息没有出来,可以先看看日志,mqtt 监听以下的 topic 可以获得 esphome 的日志,或者可以到 esphome 那边看日志,如果需要存储日志,可以选择使用 node-red 把以下的 topic 的监听后,输出到文本文件发出来。
mijia_ble_message/debug
|