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

 找回密码
 立即注册
查看: 1776|回复: 5

[智能音箱] HA发送指令直接控制小度音箱,详细设置分享

[复制链接]

2

主题

58

帖子

395

积分

论坛技术达人

积分
395
金钱
337
HASS币
10
发表于 2024-8-9 23:43:40 | 显示全部楼层 |阅读模式
本帖最后由 ganguotu 于 2024-8-9 23:47 编辑

说到homeassistant和小度智能家居平台的联动,论坛里的很多小伙伴会提到“接入”、“反向接入”的字眼,实际上实现的效果大多是:通过小度音箱来语音控制 HA里的设备。
今天我来分享一个从HA发送语音命令,来控制小度智能音箱的方法(单指能连接wifi的小度智能音箱,蓝牙音箱未测试)。

首先安利一下小度家的智能音箱,作为小度智能平台的入口,它可以:
一、语音控制接入小度平台的众多第三方智能家居平台的设备
二、语音调用接入小度平台的众多媒体资源,播放流媒体音乐,带屏音箱可以语音操控看视频、看电视、换台
三、作为日常生活助手,日程管理、播报天气和新闻咨询
特别是小度带屏智能音箱的媒体控制能力,国内智能音箱无出其右,只要HA能操控小度智能音箱,就能尽情使用这些资源。
而接入HA平台,大家主要使用的也就是第一个功能,小度自己家的设备很少,但是它云云对接的智能家居平台是真的多。
我想三大运营商,也就是考虑到小度平台的这些优势,才会在宽带领域,纷纷和小度联合,推出超多数量的带屏智能音箱吧。
也正由于小度和三大运营商合作推出的大量智能音箱,现在二手平台的小度带屏智能音箱运营商版本,已经到了极低门槛,喜欢折腾的同学可以刷刷看。

下面直接开始操作:

一、获取控制参数。
1. 登录:首先要登录小度智能家居平台的网页版:
https://xiaodu.baidu.com/saiya/smarthome/index.html
2. 访问:按照提示扫码登录,登录绑定你小度音响的百度账号,接着浏览器访问
https://xiaodu.baidu.com/saiya/device/list
3. 获取参数:可以获取该账号下所有的的小度智能音箱终端信息,得到要控制的音箱的两个关键信息:client_id 和 cuid

获取智能音箱的两个关键信息

获取智能音箱的两个关键信息

4. 获取cookie:f12打开开发者选项,到网络选项,刷新当前页面,可以得到cookie:bduss=xxxxx(很长的字符,都要复制下来)

获取Cookie

获取Cookie

5. 发送控制请求:至此,得到了3个控制参数,可以发送post命令来控制你的小度智能音箱啦,试一下你的音箱能不能回应吧

记得修改对应的headers,其中,
client_id: client_id
dueros-device-id: cuid
):
curl --location --request POST 'https://dueros-h2.baidu.com/dlp/controller/send_to_server' \
--header 'client_id: 32位client_id' \
--header 'dueros-device-id: 16位cuid' \
--header 'content-type: application/json; charset=UTF-8' \
--header 'Cookie: BDUSS=yourbdussAAAAAAAAAAAAAAAAAAAAAABDUSSTEST' \
--data-raw '{
    "to_server": {
        "header": {
            "dialogRequestId": "",
            "messageId": "",
            "name": "LinkClicked",
            "namespace": "dlp.screen"
        },
        "payload": {
            "initiator": {
                "type": "USER_CLICK"
            },
            "token": "",
            "url": "dueros://server.dueros.ai/query?q=几点了"
        }
    },
    "uuid": ""
}'
6. 控制原理:来源见: https://mp.weixin.qq.com/s/0D4X6oL60vv7oiJvJiorkg
感谢该作者的贡献!但是注意了,新的小度APP好像已经换了websocket并且加密了,因为我已经抓不到这个接口了,也就是说这个接口,说不定哪一天就会被ban掉,且用且珍惜。

二、使用homeassistant控制小度音箱的详细设置:
1. configuration.yaml 添加:
rest_command:
  xiaodu_command:
    url: "https://dueros-h2.baidu.com/dlp/controller/send_to_server"
    method: post
    content_type: "application/json; charset=UTF-8"
    headers: 
      client_id: your-client-id-here
      dueros-device-id: your-cuid-here
      Cookie: BDUSS=your-BDUSS-here
    payload: '{"to_server": {
      "header": {"dialogRequestId": "","messageId": "","name": "LinkClicked","namespace": "dlp.screen"},
      "payload": {"initiator": {"type": "USER_CLICK"},"token": "",
      "url": "dueros://server.dueros.ai/query?q={{ text|default("几点了") }}"}},"uuid": ""}'
input_text:
  xiaodu_command_text :
    name: 发给小度命令
    initial: ''
2. automations.yaml 添加:
- id: '1234426292007'
  alias: "发送小度命令"
  trigger:
    - platform: state
      entity_id: input_text.xiaodu_command_text
      not_to: ''
  condition:
    - condition: template
      value_template: '{{ states(''input_text.xiaodu_command_text'') | trim | length > 0 }}'
  action:
    - service: rest_command.xiaodu_command
      data:
        text: '{{ states(''input_text.xiaodu_command_text'') | trim }}'
    - service: input_text.set_value
      target:
        entity_id: input_text.xiaodu_command_text
      data:
        value: ''
  mode: single
3. 添加实体卡片 输入文本命令 或 直接调用服务:
service: input_text.set_value
target:
  entity_id: input_text.xiaodu_command_text
data:
  value: 播放炸雷
完毕,可以尽情使用了,欢迎讨论反馈。


回复

使用道具 举报

1

主题

46

帖子

530

积分

高级会员

Rank: 4

积分
530
金钱
484
HASS币
0
发表于 2024-8-10 08:08:07 | 显示全部楼层
感谢分享,按照楼主方法成功
回复

使用道具 举报

20

主题

485

帖子

3204

积分

论坛元老

Rank: 8Rank: 8

积分
3204
金钱
2719
HASS币
8
发表于 2024-8-10 11:12:22 | 显示全部楼层
感谢分享,测试成功了,有个问题:Cookie的有效期虽然有一个多月,过期后有没有办法能自动刷新呢?
回复

使用道具 举报

2

主题

58

帖子

395

积分

论坛技术达人

积分
395
金钱
337
HASS币
10
 楼主| 发表于 2024-8-10 15:06:15 | 显示全部楼层
cjnt007 发表于 2024-8-10 11:12
感谢分享,测试成功了,有个问题:Cookie的有效期虽然有一个多月,过期后有没有办法能自动刷新呢? ...

或许可以写一个自定义组件,但是有时候账号密码登陆还需要输入验证码呢,所以对我来说挺困难的,欢迎来个大佬搞定一下
回复

使用道具 举报

0

主题

4

帖子

28

积分

新手上路

Rank: 1

积分
28
金钱
24
HASS币
0
发表于 2024-12-6 09:41:09 | 显示全部楼层
登陆后,https://xiaodu.baidu.com/saiya/device/list这个链接获取不到list信息 (返回:{"status":0,"msg":"","logid":"1733449169xxxxx","data":{"list":[]}}),cookie复制出来也登录不了是什么原因?
回复

使用道具 举报

1

主题

36

帖子

314

积分

中级会员

Rank: 3Rank: 3

积分
314
金钱
278
HASS币
0
发表于 昨天 15:26 | 显示全部楼层
如果能够拦截替换小度回复,可玩性就高了,可惜只抓到了小度历史聊天记录,延迟太高,无法实时拦截
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-12-22 11:46 , Processed in 0.057683 second(s), 30 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表