用小爱加手指机器人实现传统开关语音关灯
yihong0618 opened this issue · 16 comments
最近做了一些折腾,花了点精力终于实现了晚上趟床上看书不用下地,直接跟小爱说一声关灯,手指机器人就能控制开关了。
效果
5ff47a26ceba3da409fa8c9b90bc69.mp4
手指机器人选购
- 开始选用了一款射频开关的,控制不灵敏放弃
- 之后找了款配合米家的,但是逆向蓝牙略麻烦,米家这块安全性做的不错
- 最后选定了一款涂鸦的,可以无痛申请开发者,拿到 local token, 就它了(大家如果选用任意平台搜索涂鸦手指机器人就行)
如何操作
- 结合 xiaogpt 使用 git clone 的方式,因为我们需要改一些代码(未来可能会做成插件)
- 下载涂鸦 app 然后参考这个项目拿到所有的 key -> https://github.com/redphx/tuya-local-key-extractor
- 使用这个项目设置手指机器人的蓝牙并测试 https://github.com/redphx/poc-tuya-ble-fingerbot (可能需要改一定代码,如果你想复刻出现困难可以留 comment 我来帮忙
- 把 fingerbot 代码整合进 xiaogpt 并更改关键词
- 搞定
By the way
我还给 miservice 加了循环播放和列表播放,下面是一些技术细节。
- 需求来自这个 issue yihong0618/MiService#16
- 最困难的事如何拿到 remote url mp3 的时长,我还改写了个 js 项目 -> python https://github.com/yihong0618/remote_mp3_duration
- 后来发现并不完美,有些 ffmpeg 转换的 mp3 需要计算 samples
- 既然都是拿 header 去解析,但传统的 mutagen 不支持 url,那么我为啥不给支持了呢
- 具体参考这个 commit yihong0618/MiService@53f9262 我们只需要最多拿前 1000 个字节也就能完成解析,也就是只需要 temp file
- 搞定
效果:
e385e908071aeac3e6f00f63e2731b.mp4
你好,之前也研究過相同玩法,不過遇到問題無法克服卡關了,趁這個難得機會跟您請教
先前進度:
1.通過 tuya-local-key-extractor 已取得完整 LOCAL_KEY, MAC, UUID, DEV_ID等信息
2.finger_me.py 藍芽 scan 能獲取 device mac_address (下圖XXXX:6F:12),但無法 connect (timeout)
3.然後就卡關了,不知您是否遇過類似問題?
ps:我買的 fingerbot 是 smartlife 牌子的,不知道會不會有影響,雖然也是塗鴉生產的
能拿到 local 且手机能控制的话应该没问题,我晚上分享下你该怎么改
弄个米家蓝牙通断器比手指开关方便呀
弄个米家蓝牙通断器比手指开关方便呀
你没法自定义啊
你好,之前也研究過相同玩法,不過遇到問題無法克服卡關了,趁這個難得機會跟您請教
先前進度:
1.通過 tuya-local-key-extractor 已取得完整 LOCAL_KEY, MAC, UUID, DEV_ID等信息
2.finger_me.py 藍芽 scan 能獲取 device mac_address (下圖XXXX:6F:12),但無法 connect (timeout)
3.然後就卡關了,不知您是否遇過類似問題?
ps:我買的 fingerbot 是 smartlife 牌子的,不知道會不會有影響,雖然也是塗鴉生產的
能拿到 local 且手机能控制的话应该没问题,我晚上分享下你该怎么改
好的
你好,之前也研究過相同玩法,不過遇到問題無法克服卡關了,趁這個難得機會跟您請教
先前進度:
1.通過 tuya-local-key-extractor 已取得完整 LOCAL_KEY, MAC, UUID, DEV_ID等信息
2.finger_me.py 藍芽 scan 能獲取 device mac_address (下圖XXXX:6F:12),但無法 connect (timeout)
3.然後就卡關了,不知您是否遇過類似問題?
ps:我買的 fingerbot 是 smartlife 牌子的,不知道會不會有影響,雖然也是塗鴉生產的
能拿到 local 且手机能控制的话应该没问题,我晚上分享下你该怎么改
好的
得明天了。这两天有事儿不在家。。我的代码在家的机器里。。
你好,之前也研究過相同玩法,不過遇到問題無法克服卡關了,趁這個難得機會跟您請教
先前進度:
1.通過 tuya-local-key-extractor 已取得完整 LOCAL_KEY, MAC, UUID, DEV_ID等信息
2.finger_me.py 藍芽 scan 能獲取 device mac_address (下圖XXXX:6F:12),但無法 connect (timeout)
3.然後就卡關了,不知您是否遇過類似問題?
ps:我買的 fingerbot 是 smartlife 牌子的,不知道會不會有影響,雖然也是塗鴉生產的
能拿到 local 且手机能控制的话应该没问题,我晚上分享下你该怎么改
好的
@goodman3654
poc-tuya-ble-fingerbot 这个项目这么改试试
你好,之前也研究過相同玩法,不過遇到問題無法克服卡關了,趁這個難得機會跟您請教
先前進度:
1.通過 tuya-local-key-extractor 已取得完整 LOCAL_KEY, MAC, UUID, DEV_ID等信息
2.finger_me.py 藍芽 scan 能獲取 device mac_address (下圖XXXX:6F:12),但無法 connect (timeout)
3.然後就卡關了,不知您是否遇過類似問題?
ps:我買的 fingerbot 是 smartlife 牌子的,不知道會不會有影響,雖然也是塗鴉生產的
能拿到 local 且手机能控制的话应该没问题,我晚上分享下你该怎么改
好的
@goodman3654 poc-tuya-ble-fingerbot 这个项目这么改试试
你好,之前也研究過相同玩法,不過遇到問題無法克服卡關了,趁這個難得機會跟您請教
先前進度:
1.通過 tuya-local-key-extractor 已取得完整 LOCAL_KEY, MAC, UUID, DEV_ID等信息
2.finger_me.py 藍芽 scan 能獲取 device mac_address (下圖XXXX:6F:12),但無法 connect (timeout)
3.然後就卡關了,不知您是否遇過類似問題?
ps:我買的 fingerbot 是 smartlife 牌子的,不知道會不會有影響,雖然也是塗鴉生產的
能拿到 local 且手机能控制的话应该没问题,我晚上分享下你该怎么改
好的
@goodman3654 poc-tuya-ble-fingerbot 这个项目这么改试试
把手机的断开连接
@goodman3654 如果还不能解决可以邮件交流~
@goodman3654 如果还不能解决可以邮件交流~
試過斷開與與手機的藍芽連接,一樣不行
有人似乎跟我遇到一樣問題,不過後續沒下文
redphx/poc-tuya-ble-fingerbot#9
@yihong0618 請問你有從塗鴉雲端開發者後台把裝置移除嗎?
@goodman3654 如果还不能解决可以邮件交流~
試過斷開與與手機的藍芽連接,一樣不行 有人似乎跟我遇到一樣問題,不過後續沒下文 redphx/poc-tuya-ble-fingerbot#9
@yihong0618 請問你有從塗鴉雲端開發者後台把裝置移除嗎?
没有,理论上能获得 4 个 local 值应该没问题。你电脑能搜到手指机器人的蓝牙么
@goodman3654 如果还不能解决可以邮件交流~
試過斷開與與手機的藍芽連接,一樣不行 有人似乎跟我遇到一樣問題,不過後續沒下文 redphx/poc-tuya-ble-fingerbot#9
@yihong0618 請問你有從塗鴉雲端開發者後台把裝置移除嗎?没有,理论上能获得 4 个 local 值应该没问题。你电脑能搜到手指机器人的蓝牙么
能,圖裡的 "AD" 就是 fingerbot,搜的到,但無法建立連線
那你可能得换个电脑试试
那你可能得换个电脑试试
還真是,換了一台電腦跑相同代碼,一試就成了!
看來是藍芽相容性問題
總之感謝提供思路,解決卡關幾個月的難題
那你可能得换个电脑试试
還真是,換了一台電腦跑相同代碼,一試就成了! 看來是藍芽相容性問題 總之感謝提供思路,解決卡關幾個月的難題
不客气 enjoy it