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

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

效果

https://github.com/yihong0618/gitblog/assets/15976103/bb8ec3ab-5229-4e3b-a305-b20b1b8a69f7

手指机器人选购

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

如何操作

By the way

我还给 miservice 加了循环播放和列表播放,下面是一些技术细节。

效果:

https://github.com/yihong0618/gitblog/assets/15976103/3ceb34fc-6a02-404b-b0da-63caf1f340c3

❤️ 4
goodman3654

你好,之前也研究過相同玩法,不過遇到問題無法克服卡關了,趁這個難得機會跟您請教 先前進度: 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](https://github.com/yihong0618/gitblog/assets/10626700/9f3aeb4a-331d-4393-b985-33ca131f2f33)

yihong0618

> 你好,之前也研究過相同玩法,不過遇到問題無法克服卡關了,趁這個難得機會跟您請教 > > > > 先前進度: > > 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](https://github.com/yihong0618/gitblog/assets/10626700/9f3aeb4a-331d-4393-b985-33ca131f2f33) > > > > 能拿到 local 且手机能控制的话应该没问题,我晚上分享下你该怎么改

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

yihong0618

> 弄个米家蓝牙通断器比手指开关方便呀 你没法自定义啊

goodman3654

> > 你好,之前也研究過相同玩法,不過遇到問題無法克服卡關了,趁這個難得機會跟您請教 > > 先前進度: > > 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](https://private-user-images.githubusercontent.com/10626700/300509729-9f3aeb4a-331d-4393-b985-33ca131f2f33.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MDY2MjM0NDYsIm5iZiI6MTcwNjYyMzE0NiwicGF0aCI6Ii8xMDYyNjcwMC8zMDA1MDk3MjktOWYzYWViNGEtMzMxZC00MzkzLWI5ODUtMzNjYTEzMWYyZjMzLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDAxMzAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwMTMwVDEzNTkwNlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTExZTQ5ZDJlYTUxZTBmNTZjNjVlNTE1YTBkZGUwODc3MmRlZTdhYTM3MmI0OWZkYTgyNGNkZTJhNzkwZDM3NGUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.j-ZNUWEJi2d8FSDjsWl2rAkOa6UxBXfgN_1KiSLe1b0) > > 能拿到 local 且手机能控制的话应该没问题,我晚上分享下你该怎么改 好的

yihong0618

> > > 你好,之前也研究過相同玩法,不過遇到問題無法克服卡關了,趁這個難得機會跟您請教 > > > 先前進度: > > > 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](https://private-user-images.githubusercontent.com/10626700/300509729-9f3aeb4a-331d-4393-b985-33ca131f2f33.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MDY2MjM0NDYsIm5iZiI6MTcwNjYyMzE0NiwicGF0aCI6Ii8xMDYyNjcwMC8zMDA1MDk3MjktOWYzYWViNGEtMzMxZC00MzkzLWI5ODUtMzNjYTEzMWYyZjMzLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDAxMzAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwMTMwVDEzNTkwNlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTExZTQ5ZDJlYTUxZTBmNTZjNjVlNTE1YTBkZGUwODc3MmRlZTdhYTM3MmI0OWZkYTgyNGNkZTJhNzkwZDM3NGUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.j-ZNUWEJi2d8FSDjsWl2rAkOa6UxBXfgN_1KiSLe1b0) > > > > > > 能拿到 local 且手机能控制的话应该没问题,我晚上分享下你该怎么改 > > 好的 得明天了。这两天有事儿不在家。。我的代码在家的机器里。。

yihong0618

> > > 你好,之前也研究過相同玩法,不過遇到問題無法克服卡關了,趁這個難得機會跟您請教 > > > 先前進度: > > > 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](https://private-user-images.githubusercontent.com/10626700/300509729-9f3aeb4a-331d-4393-b985-33ca131f2f33.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MDY2MjM0NDYsIm5iZiI6MTcwNjYyMzE0NiwicGF0aCI6Ii8xMDYyNjcwMC8zMDA1MDk3MjktOWYzYWViNGEtMzMxZC00MzkzLWI5ODUtMzNjYTEzMWYyZjMzLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDAxMzAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwMTMwVDEzNTkwNlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTExZTQ5ZDJlYTUxZTBmNTZjNjVlNTE1YTBkZGUwODc3MmRlZTdhYTM3MmI0OWZkYTgyNGNkZTJhNzkwZDM3NGUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.j-ZNUWEJi2d8FSDjsWl2rAkOa6UxBXfgN_1KiSLe1b0) > > > > > > 能拿到 local 且手机能控制的话应该没问题,我晚上分享下你该怎么改 > > 好的 @goodman3654 poc-tuya-ble-fingerbot 这个项目这么改试试 ![image](https://github.com/yihong0618/gitblog/assets/15976103/31ad5f56-2358-4f59-8431-4e29cf094ff6)

goodman3654

> > > > 你好,之前也研究過相同玩法,不過遇到問題無法克服卡關了,趁這個難得機會跟您請教 > > > > 先前進度: > > > > 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](https://private-user-images.githubusercontent.com/10626700/300509729-9f3aeb4a-331d-4393-b985-33ca131f2f33.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MDY2MjM0NDYsIm5iZiI6MTcwNjYyMzE0NiwicGF0aCI6Ii8xMDYyNjcwMC8zMDA1MDk3MjktOWYzYWViNGEtMzMxZC00MzkzLWI5ODUtMzNjYTEzMWYyZjMzLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDAxMzAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwMTMwVDEzNTkwNlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTExZTQ5ZDJlYTUxZTBmNTZjNjVlNTE1YTBkZGUwODc3MmRlZTdhYTM3MmI0OWZkYTgyNGNkZTJhNzkwZDM3NGUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.j-ZNUWEJi2d8FSDjsWl2rAkOa6UxBXfgN_1KiSLe1b0) > > > > > > > > > 能拿到 local 且手机能控制的话应该没问题,我晚上分享下你该怎么改 > > > > > > 好的 > > @goodman3654 poc-tuya-ble-fingerbot 这个项目这么改试试 ![image](https://private-user-images.githubusercontent.com/15976103/301206466-31ad5f56-2358-4f59-8431-4e29cf094ff6.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MDY3MTUwOTIsIm5iZiI6MTcwNjcxNDc5MiwicGF0aCI6Ii8xNTk3NjEwMy8zMDEyMDY0NjYtMzFhZDVmNTYtMjM1OC00ZjU5LTg0MzEtNGUyOWNmMDk0ZmY2LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDAxMzElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwMTMxVDE1MjYzMlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTdjODNhNDdiYmNkN2VhZmRlMzUzY2YwNTlhNDgyODgyNTk5MmQyOGNkODczZjljMTcwM2M3OWU1YTJjZjg5ZDImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.KGSZNuzsqyReqepOt4L_L2m0ehJSlMFTWJ38-0GtCMw) 試了,一樣 timeout 錯誤 ![image](https://github.com/yihong0618/gitblog/assets/10626700/0ad8a33e-56ca-4be7-abb1-fb40ea3a1733)

yihong0618

> > > > > 你好,之前也研究過相同玩法,不過遇到問題無法克服卡關了,趁這個難得機會跟您請教 > > > > > 先前進度: > > > > > 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](https://private-user-images.githubusercontent.com/10626700/300509729-9f3aeb4a-331d-4393-b985-33ca131f2f33.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MDY2MjM0NDYsIm5iZiI6MTcwNjYyMzE0NiwicGF0aCI6Ii8xMDYyNjcwMC8zMDA1MDk3MjktOWYzYWViNGEtMzMxZC00MzkzLWI5ODUtMzNjYTEzMWYyZjMzLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDAxMzAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwMTMwVDEzNTkwNlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTExZTQ5ZDJlYTUxZTBmNTZjNjVlNTE1YTBkZGUwODc3MmRlZTdhYTM3MmI0OWZkYTgyNGNkZTJhNzkwZDM3NGUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.j-ZNUWEJi2d8FSDjsWl2rAkOa6UxBXfgN_1KiSLe1b0) > > > > > > > > > > > > 能拿到 local 且手机能控制的话应该没问题,我晚上分享下你该怎么改 > > > > > > > > > 好的 > > > > > > @goodman3654 poc-tuya-ble-fingerbot 这个项目这么改试试 ![image](https://private-user-images.githubusercontent.com/15976103/301206466-31ad5f56-2358-4f59-8431-4e29cf094ff6.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MDY3MTUwOTIsIm5iZiI6MTcwNjcxNDc5MiwicGF0aCI6Ii8xNTk3NjEwMy8zMDEyMDY0NjYtMzFhZDVmNTYtMjM1OC00ZjU5LTg0MzEtNGUyOWNmMDk0ZmY2LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDAxMzElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwMTMxVDE1MjYzMlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTdjODNhNDdiYmNkN2VhZmRlMzUzY2YwNTlhNDgyODgyNTk5MmQyOGNkODczZjljMTcwM2M3OWU1YTJjZjg5ZDImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.KGSZNuzsqyReqepOt4L_L2m0ehJSlMFTWJ38-0GtCMw) > > 試了,一樣 timeout 錯誤 ![image](https://private-user-images.githubusercontent.com/10626700/301229072-0ad8a33e-56ca-4be7-abb1-fb40ea3a1733.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MDY3NTIxNzgsIm5iZiI6MTcwNjc1MTg3OCwicGF0aCI6Ii8xMDYyNjcwMC8zMDEyMjkwNzItMGFkOGEzM2UtNTZjYS00YmU3LWFiYjEtZmI0MGVhM2ExNzMzLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDAyMDElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwMjAxVDAxNDQzOFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWMxY2FkMTEwYjdiYzY2Y2ZhZDE0OWQ5NDYwMGE2ZDQwNGMzZWUxM2ZlNGQ4Y2JmZDY3NDAxOGU2YWQzM2QyOWQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.TBfRlsvEz653Kbkz95ZjbcblcsCaozlexlokVe_8RY0) 把手机的断开连接

yihong0618

@goodman3654 如果还不能解决可以邮件交流~

goodman3654

> @goodman3654 如果还不能解决可以邮件交流~ 試過斷開與與手機的藍芽連接,一樣不行 有人似乎跟我遇到一樣問題,不過後續沒下文 https://github.com/redphx/poc-tuya-ble-fingerbot/issues/9 @yihong0618 請問你有從塗鴉雲端開發者後台把裝置移除嗎?

yihong0618

> > @goodman3654 如果还不能解决可以邮件交流~ > > 試過斷開與與手機的藍芽連接,一樣不行 有人似乎跟我遇到一樣問題,不過後續沒下文 [redphx/poc-tuya-ble-fingerbot#9](https://github.com/redphx/poc-tuya-ble-fingerbot/issues/9) > > @yihong0618 請問你有從塗鴉雲端開發者後台把裝置移除嗎? 没有,理论上能获得 4 个 local 值应该没问题。你电脑能搜到手指机器人的蓝牙么

goodman3654

> > > @goodman3654 如果还不能解决可以邮件交流~ > > > > > > 試過斷開與與手機的藍芽連接,一樣不行 有人似乎跟我遇到一樣問題,不過後續沒下文 [redphx/poc-tuya-ble-fingerbot#9](https://github.com/redphx/poc-tuya-ble-fingerbot/issues/9) > > @yihong0618 請問你有從塗鴉雲端開發者後台把裝置移除嗎? > > 没有,理论上能获得 4 个 local 值应该没问题。你电脑能搜到手指机器人的蓝牙么 能,圖裡的 "AD" 就是 fingerbot,搜的到,但無法建立連線 ![image](https://github.com/yihong0618/gitblog/assets/10626700/4f319e6c-8e24-4d04-9712-a304d9970567) ![image](https://github.com/yihong0618/gitblog/assets/10626700/a2399040-489f-44ba-9ed3-3cc0363b45e6)

yihong0618

那你可能得换个电脑试试

goodman3654

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

yihong0618

> > 那你可能得换个电脑试试 > > 還真是,換了一台電腦跑相同代碼,一試就成了! 看來是藍芽相容性問題 總之感謝提供思路,解決卡關幾個月的難題 不客气 enjoy it