yihong0618/gitblog

用小爱加手指机器人实现传统开关语音关灯

yihong0618 opened this issue · 16 comments

最近做了一些折腾,花了点精力终于实现了晚上趟床上看书不用下地,直接跟小爱说一声关灯,手指机器人就能控制开关了。

效果

5ff47a26ceba3da409fa8c9b90bc69.mp4

手指机器人选购

  • 开始选用了一款射频开关的,控制不灵敏放弃
  • 之后找了款配合米家的,但是逆向蓝牙略麻烦,米家这块安全性做的不错
  • 最后选定了一款涂鸦的,可以无痛申请开发者,拿到 local token, 就它了(大家如果选用任意平台搜索涂鸦手指机器人就行)

如何操作

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 牌子的,不知道會不會有影響,雖然也是塗鴉生產的

image

你好,之前也研究過相同玩法,不過遇到問題無法克服卡關了,趁這個難得機會跟您請教

先前進度:

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 牌子的,不知道會不會有影響,雖然也是塗鴉生產的

image

能拿到 local 且手机能控制的话应该没问题,我晚上分享下你该怎么改

kunl commented

弄个米家蓝牙通断器比手指开关方便呀

弄个米家蓝牙通断器比手指开关方便呀

你没法自定义啊

你好,之前也研究過相同玩法,不過遇到問題無法克服卡關了,趁這個難得機會跟您請教
先前進度:
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 牌子的,不知道會不會有影響,雖然也是塗鴉生產的
image

能拿到 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 牌子的,不知道會不會有影響,雖然也是塗鴉生產的
image

能拿到 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 牌子的,不知道會不會有影響,雖然也是塗鴉生產的
image

能拿到 local 且手机能控制的话应该没问题,我晚上分享下你该怎么改

好的

@goodman3654
poc-tuya-ble-fingerbot 这个项目这么改试试
image

你好,之前也研究過相同玩法,不過遇到問題無法克服卡關了,趁這個難得機會跟您請教
先前進度:
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 牌子的,不知道會不會有影響,雖然也是塗鴉生產的
image

能拿到 local 且手机能控制的话应该没问题,我晚上分享下你该怎么改

好的

@goodman3654 poc-tuya-ble-fingerbot 这个项目这么改试试 image

試了,一樣 timeout 錯誤
image

你好,之前也研究過相同玩法,不過遇到問題無法克服卡關了,趁這個難得機會跟您請教
先前進度:
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 牌子的,不知道會不會有影響,雖然也是塗鴉生產的
image

能拿到 local 且手机能控制的话应该没问题,我晚上分享下你该怎么改

好的

@goodman3654 poc-tuya-ble-fingerbot 这个项目这么改试试 image

試了,一樣 timeout 錯誤 image

把手机的断开连接

@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,搜的到,但無法建立連線

image

image

那你可能得换个电脑试试

那你可能得换个电脑试试

還真是,換了一台電腦跑相同代碼,一試就成了!
看來是藍芽相容性問題
總之感謝提供思路,解決卡關幾個月的難題

那你可能得换个电脑试试

還真是,換了一台電腦跑相同代碼,一試就成了! 看來是藍芽相容性問題 總之感謝提供思路,解決卡關幾個月的難題

不客气 enjoy it