本帖最后由 louis_lee 于 2021-6-10 11:11 编辑
前言
最近楼主的飞利浦牙刷电机坏了,索性就买了一个米家t500电动牙刷。其实实际体验也就那样,不过好在能接入米家,总觉得玩法有可以开发空间。经过一番折腾,发现根本不能与其他设备联动。如果要想实现联动,必须得买米家t700。服了,本来没什么硬件上的差异,理论只要米家后端支持就行。。。。。。本着少花钱的原则,楼主开始论坛上搜寻解决之道,就看到了大佬XCray有关蓝牙网关TTL2MQTT的帖子。拜读之后,发现有搞头,可是手里只有小爱pro作为蓝牙网关。而且还得接个ESP8266做转发,一想到我这硬件动手能力,直接就放弃了,想当初我可以焊坏了好几个米家门磁。。。
那么有什么不用拆解、焊接,就能实现的方法的呢?(没有哈哈,至少本文没有,需要你至少开启了小爱pro的SSH功能)各种瞎翻之后,发现小爱文件系统中,/tmp/log/messages这个文件存储有蓝牙输出的log,而且小爱系统自带mosquitto client。这就很棒了,直接截取后就可以发到mqtt server上。于是,就有了这篇分享文。
//如下是截取的log
Jun 9 22:52:**.*** mico mibt_mesh[310]: [I][mible_beacon] send_rpc_to_wifi 984: id = 18***, rpc = {"method":"_async.ble_event","params":{"dev":{"did":"blt.3.****,"mac":"FB:***","pdid":1161},"evt":[{"eid":16,"edata":"0034"}],"frmCnt":18*,"gwts":162****}}
实现步骤
1. 首先,你需要将你的小爱pro成功实现SSH
请参考snowwolf725大佬的文章
拆解新买的小爱音箱Pro, 更新固化开机启动 SSH 教学
逆向分析下小爱音箱root密码, 顺带提供密码算号器
2.将GitHub上文件copy到小爱pro /data 目录下,修改一下miaible.sh里边的mqtt配置,再改一下权限,直接启动服务就行
git_url: https://github.com/louisslee/miai_bt2mqtt
chmod 777 /data/miaible.sh
chmod 777 /data/miaible_service
/data/miaible_service start
如果你想实现开机自启动这个脚本,还得再利用snowwolf725大佬的方法,将整个文件系统dd 备份出来,然后再找台linux主机添加一下启动项
3.至此有关小爱pro的部分已经完事了,你只需要在mqtt消费端做逻辑处理就行,可以直接用HA,也可以接入node-red。
收到的json串是下边这样,其中did应该是设备识别码,pdid我猜是产品类型,我的牙刷就是1161;eid是事件类型,16就是牙刷一启动就触发。根据自己的设备情况,试几次基本上都能猜到是啥了。
{
"method": "_async.ble_event",
"params": {
"dev": {
"did": "blt.3.16****",
"mac": "FB:***",
"pdid": 1161
},
"evt": [{
"eid": 16,
"edata": "0011"
}],
"frmCnt": 291,
"gwts": 1613422278
}
}
写在后边
楼主shell脚本基本小白,就愣仿照着F大小爱语音接入脚本抄的,如果哪里写的不好,请不吝赐教哈。
目前,就一周的使用经验看,反应速度还是可以的,而且不咋会丢失数据。楼主使用的1.58.15版本的小爱固件哈。
欢迎尝试~
|