『瀚思彼岸』» 智能家居技术论坛

标题: 小爱音箱自定义指令DIY实现交流 [打印本页]

作者: 子风    时间: 2022-7-18 10:54
标题: 小爱音箱自定义指令DIY实现交流
看了坛子里wdmywm3老哥的贴子,Xiaomi Miot Auto插件里集成的小爱音箱,里面conversation传感器可以拿到对小爱说的话,于是进行了以下操作

1.note-red订阅各个小爱conversation实体的事件
2.事件发生时调用我自己开发的后端api,主要逻辑是匹配关键字,并进行对应操作以及让小爱做出回复

例如:小爱同学,开启书房电脑--订阅到事件--调用api--后端发出wake on lan魔术包--驱动小爱进行回复(调用小爱播报指定内容api)

目前使用下来,发现有两个问题
1.node-red拿到事件有几秒的延迟,不知有没有办法改善
2.如果对小爱说同样的话,则conversation传感器变更事件不会被触发,后端api无法拿到消息并进行处理,尝试在每次调用后给conversation传感器赋值,没有成功,不知有没有什么办法.

我自己开发的webapi文档地址:http://api.service.zhimin.me:30005/
node-red截图
[attach]39467[/attach]

作者: silversucks    时间: 2022-7-18 12:07
用自动化,不存在这两个问题
作者: 秋雨轩    时间: 2022-7-18 14:20
本帖最后由 秋雨轩 于 2022-7-18 14:23 编辑

1.miot auto插件实现的原理是通过miot协议轮询米家服务器上的信息,这个是改变不了的,是受协议类型影响的原理性的,不能像zigbee协议那样本地实时更新。所以如果想降低延时,解决办法是缩短轮询间隔,miot auto插件本身支持更改轮询间隔。2.看你图片,你的NR触发节点用的是HA节点吧,没记错的话这个节点可以设置是否是“与上次信息不一致时才触发”,把这个取消掉,应该就能前后相同信息都触发了吧。

作者: 子风    时间: 2022-7-18 14:36
秋雨轩 发表于 2022-7-18 14:20
1.miot auto插件实现的原理是通过miot协议轮询米家服务器上的信息,这个是改变不了的,是受协议类型影响的 ...

感谢大佬的指导, 已经做出调整, 兴高采烈只等回家测试
作者: silversucks    时间: 2022-7-19 10:35
子风 发表于 2022-7-18 14:36
感谢大佬的指导, 已经做出调整, 兴高采烈只等回家测试

重启ha你会发现这个方案的问题,最好解决办法是自动化触发。
作者: sxrcm    时间: 2022-7-19 14:05
silversucks 发表于 2022-7-19 10:35
重启ha你会发现这个方案的问题,最好解决办法是自动化触发。

自动化的方案是啥?能否共享一下
作者: 子风    时间: 2022-7-20 09:29
silversucks 发表于 2022-7-19 10:35
重启ha你会发现这个方案的问题,最好解决办法是自动化触发。

确实有问题,node-red里面的events: state节点时不时的会产出重复事件,实际上并没有对小爱说话(还是上次说的内容).

自动化方案能分享一下不
作者: lamioiseng    时间: 2022-7-24 06:27
我的思路是: 我問音箱我手機電量,音箱根據HA數據TTS回答

  1. alias: 查詢手機電量
  2. description: ''
  3. trigger:
  4.   - platform: state
  5.     entity_id:
  6.       - sensor.xiaomi_lx5a_eb33_conversation
  7.     attribute: content
  8.     to: 查手机电量
  9. condition: []
  10. action:
  11.   - service: xiaomi_miot.intelligent_speaker
  12.     data:
  13.       text: 手机电量為{{ states("sensor.mi_9_battery_level") }}百分比
  14.       entity_id: media_player.xiaomi_lx5a_eb33_play_control
  15.       throw: true
  16.   - wait_template: '{{ states (''sensor.mi_9_battery_level'') }}'
  17.     continue_on_timeout: true
  18. mode: single
复制代码

作者: 子风    时间: 2022-9-15 17:53
lamioiseng 发表于 2022-7-24 06:27
我的思路是: 我問音箱我手機電量,音箱根據HA數據TTS回答

感谢老哥
作者: zelotoj    时间: 2022-9-22 03:14
lamioiseng 发表于 2022-7-24 06:27
我的思路是: 我問音箱我手機電量,音箱根據HA數據TTS回答

非常好用,感谢分享,试验成功
作者: 大胡子    时间: 2022-10-4 17:37
lamioiseng 发表于 2022-7-24 06:27
我的思路是: 我問音箱我手機電量,音箱根據HA數據TTS回答

感谢 感谢  完全没看懂  都不知道代码怎么用
作者: wanghere    时间: 2022-12-18 21:57
秋雨轩 发表于 2022-7-18 14:20
1.miot auto插件实现的原理是通过miot协议轮询米家服务器上的信息,这个是改变不了的,是受协议类型影响的 ...

没找到在哪里设置轮询时间,麻烦指点下,谢谢!
作者: kingwoo    时间: 2023-3-23 22:33
lamioiseng 发表于 2022-7-24 06:27
我的思路是: 我問音箱我手機電量,音箱根據HA數據TTS回答

请问action中的wait_template起什么作用?
我的理解是等待电量变化?如果是这样,在电量变化之前,是不是不会再响应(因为mode是single)语音查询?
另外,似乎也并没有解决重复查询不响应的问题吧?因为重复查询时,trigger并没有变化
但后面楼主又说"试验成功",我的理解有偏差?
@lamioiseng
作者: 13450224207    时间: 2024-3-8 13:16
lamioiseng 发表于 2022-7-24 06:27
我的思路是: 我問音箱我手機電量,音箱根據HA數據TTS回答

马克撒旦发射点发射点发射点发




欢迎光临 『瀚思彼岸』» 智能家居技术论坛 (https://bbs.hassbian.com/) Powered by Discuz! X3.5