ESPHOME通过创米小白TTL输出接入米家蓝牙设备

众所周知创米小白万能遥控器带蓝牙功能,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

  • 修复因 rx_message_ vector 字符串未设置字符串终止符导致字符串读取溢出(非致命),貌似 parseObject 还是能够成功的解析 Json ~导致我没发现这个 BUG。
    mijiaBleMessage_esp8266.zip (2.5 KB)

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

这个固件不是bin后缀的呀 我想直接OTA不行呢

我XCray 大的蛮稳定的,但还是偶尔有不反馈

需要使用 esphome 编译固件,请参考下 esphome.io 的使用方法。

好的 :sunglasses: 我试试看

我也是换一种方法来获取 ttl 消息,到底稳不稳定我也没很多蓝牙设备。

我也就一个门锁 :thinking: