接入谷歌home/assistant/智能音箱

接入流程

登录谷歌cloud,创建并设置项目

1、登录谷歌cloud

2、创建项目

3、设置项目OAuth2.0鉴权凭证

创建客户端凭证

填写客户端名称(客户端密钥只在首次创建成功页面可以下载,记得下载)

登录开发者控制台,云到云设置

1、登录谷歌开发者控制台Developer

2、添加在google cloud创建的项目

3、云对云设置

云到云-->开发-->创建集成项目

  • **集成名称 :**必填

  • **设备类型:**必选,选择需要接入的设备类型

  • **应用图标:**比上传,分辨率144 x 144 像素

  • **OAuth 客户端 ID :**谷歌cloud创建项目客户端凭证的客户端id

  • **客户端密钥:**谷歌cloud创建项目客户端凭证的客户端密钥

  • **授权网址:**谷歌账号跟halo用户账号关联时,谷歌home App跳转到halo用户授权登录页(如:halo授权登录页,登录成功后就可以访问halo app接口相关接口)

  • **令牌网址:**用户刷新halo授权token

  • **云端执行网址:**谷歌home执行syncqueryexecutedisconnect意图的入口

halo服务实现OAuth2鉴权

实现OAuth2.0服务器谷歌官方文档

1、在授权代码流程中,需要两个端点

  • 授权 端点,用于向尚未登录的用户显示登录界面。授权端点还会创建一个短期授权代码,用于记录用户对所请求访问权限的同意情况。

  • 令牌交换 端点,负责处理两种类型的交换:

    1. 使用授权代码换取长期刷新令牌和短期访问令牌。当用户完成账号关联流程时,系统会进行此交换。

    2. 用长期有效的刷新令牌换取短期有效的访问令牌。 当 Google 需要新的访问令牌(因为之前的令牌已过期)时,就会发生此交换。

2、注意点

处理授权请求文档中提到,用户从谷歌home App --> 跳转到halo 授权登录页 --> 用户输入halo账号密码 --> 登录 --> 重定向用户浏览器

:::

从文档描述来看,好像是我们接口要重定向,其实,我们授权端点接口只需返回code即可,无需将用户浏览器重定向,返回code后,谷歌会自动处理跳转问题。

shell 复制代码
{
    "code": 200,
    "data": {
        "code": "ad4f10becfe24354a32e504e62b02087"
    }
}

:::

实现意图

我们halo服务需要实现谷歌home的syncqueryexecutedisconnect意图,详细查看官方文档实现意图。

控制设备:谷歌home --> 谷歌云 --> halo云平台 --> 处理意图(属性转换、控制设备)--> 意图处理结果返回谷歌云 --> 谷歌云返回给谷歌home

:::
主要工作量:

执行意图:谷歌云-->halo云,需要把谷歌云设备类型、设备特性(属性)转换为halo云设备类型、设备特性(属性)

返回意图:halo云-->谷歌云,需要把halo云设备类型、设备特性(属性)转换为姑姑云设备类型、设备特性(属性)

对接属性转换的时候,光看设备属性文档,是很难知道某设备某型号某属性值是什么,值需不需要进行转换数据之类的(比如色温灯的开/关、亮度、色温值属性id分别是什么,值是什么类型),**如何快速高效对接属性:**设备上电重置接入网关-->根据设备id查看该设备属性表device_attrs有哪些属性和值-->MQTTX订阅该网关上/下行消息-->在halo App控制设备-->查看MQTTX订阅消息+设备属性表属性值变化-->快速定位属性和属性值(如设置色温,MQTTX发送什么属性消息给网关,根据该属性id查询属性表该属性值的变化)

例如:设置D628-ZG设备色温,MQTTX订阅可以看到下发给网关的数据,其中属性id:ColTempMir,val:307,根据设备id查找属性表,属性id和值能对应上的,从而快速定位调整色温的属性id和值类型,不用在设备属性文档中低效来回往返查找还不确定是不是这个属性

:::

部署服务

当我们halo云实现了OAuth2.0+意图后,把服务部署到服务器,需要外网能访问,且是https,通过postman或apifox测试接口,没问题接着就是集成测试,测试谷歌home能否控制设备

测试

1、添加测试用户

测试用户添加登录谷歌cloud的账号(我添加其他谷歌账号A,测试时候在谷歌home登录A账号中找不到 **hzc-halo-dev100**项目,不清楚具体什么原因,添加登录谷歌cloud的账号到测试用户组,在谷歌home中也登录谷歌cloud账号,就能找到项目

2、安装谷歌应用

一台安卓手机,需要连接翻墙网络,安装谷歌play、谷歌浏览器、谷歌home、谷歌assistant助理

3、谷歌home登录谷歌账号

谷歌home登录谷歌账号(账号必须跟登录谷歌cloud创建项目的账号相同且账号已添加到测试用户组中

4、谷歌home关联应用

谷歌home关联在谷歌cloud创建的项目hzc-halo-dev,同步设备列表、控制设备

5、谷歌Assistant助理App控制设备

手机安装谷歌助理App-->打开谷歌App对谷歌助理进行常规设置-->打开谷歌助理App-->语音或者文字输入-->控制设备

6、谷歌智能音箱控制设备

重置谷歌智能音箱-->谷歌home绑定音箱-->绑定成功-->ok goole唤醒智能音箱-->打开灯-->智能音箱播报执行结果

:::

谷歌home绑定谷歌智能音箱类似于国内智能音箱绑定操作,如米家app绑定小爱智能音箱、天猫精灵app绑定天猫精灵

:::

相关推荐
REDcker6 小时前
RTSP 直播技术详解
linux·服务器·网络·音视频·实时音视频·直播·rtsp
m0_737302587 小时前
云服务器安全核心痛点与防护框架
服务器
phltxy7 小时前
Vue3入门指南:从环境搭建到数据响应式,开启高效前端开发之旅
前端·javascript·vue.js
小飞大王6667 小时前
CSS基础知识
前端·css
Charlie_lll7 小时前
学习Three.js–风车星系
前端·three.js
代码游侠7 小时前
学习笔记——Linux内核与嵌入式开发1
linux·运维·前端·arm开发·单片机·嵌入式硬件·学习
阿猿收手吧!7 小时前
【C++】异常处理:catch块执行后程序如何继续
服务器·网络·c++
腾讯蓝鲸智云7 小时前
【运维自动化-节点管理】节点管理跟配置平台的联动关系
运维·服务器·经验分享·自动化·sass·paas
玩电脑的辣条哥7 小时前
幽灵回复AI已回复但前端不显示的排查与修复
前端·人工智能
FLGB7 小时前
Docker网段和服务器内部网段172.17 网段冲突导致网络不通
服务器·网络·docker