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

接入流程

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

1、登录谷歌cloud

2、创建项目

image.png

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

image.png

创建客户端凭证

image.png

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

image.png

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

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

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

image.png

3、云对云设置

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

image.png
image.png
  • 集成名称 : 必填
  • 设备类型: 必选,选择需要接入的设备类型
  • 应用图标: 比上传,分辨率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账号密码 --> 登录 --> 重定向用户浏览器

image.png

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

{"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和值类型,不用在设备属性文档中低效来回往返查找还不确定是不是这个属性

image.png
image.png

部署服务

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

测试

1、添加测试用户

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

image.png

2、安装谷歌应用

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

3、谷歌home登录谷歌账号

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

4、谷歌home关联应用

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

image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png

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

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

image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png

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

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

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

Read more

使用飞算JavaAI快速搭建药房管理系统

使用飞算JavaAI快速搭建药房管理系统

使用飞算JavaAI快速搭建药房管理系统 飞算JavaAI炫技赛主题(毕设):使用飞算JavaAI快速搭建药房管理系统。 技术选型方案 采用Spring Boot + MyBatis Plus + MySQL + Redis的技术架构组合: 使用Spring Boot作为主框架提供快速开发和自动配置能力 集成Spring Security + JWT实现用户认证和细粒度权限控制 数据持久层采用MyBatis Plus简化药品、库存、处方的CRUD操作和复杂查询 MySQL 8.0作为主数据库存储药品信息、库存记录、处方数据、供应商信息等核心业务数据 Redis用于缓存热点数据(如药品目录、库存状态、用户会话)和实现分布式锁机制 同时整合Swagger生成API文档,使用Maven进行项目依赖管理 飞算JavaAI开发实录 接下来我会使用智能引导功能来一步一步的完成整个系统的搭建。 1.需求分析与规划 采用Spring Boot + MyBatis Plus + MySQL + Redis技术架构,实现药品库存管理、供应商管理、处方审核处理、药品销售管理和财务统计分析等核心功能

10分钟零代码!用OpenClaw搭建私人微信AI助理,彻底解放双手

10分钟零代码!用OpenClaw搭建私人微信AI助理,彻底解放双手

做了这么久AI应用落地,我被问得最多的问题就是:“能不能给我的微信整个AI助理,自动回消息、管日程、汇总群聊?” 说实话,这个需求我自己折腾了快两年,踩过的坑能绕开三圈: * 最早用itchat、wechaty写Python脚本,代码写了几百行,调试了半个月,结果用了不到3天,微信直接限制登录,差点把主号搞封了; * 后来用企业微信机器人,只能在企业群里用,个人微信、私域群完全用不了,局限性拉满; * 再后来试了市面上的第三方SaaS工具,要么是按月付费贵得离谱,要么是所有聊天数据都要传到人家服务器,客户信息、私人聊天全泄露了,根本不敢用; * 最头疼的是,所有方案都要写代码、调接口、搭环境,新手根本无从下手,就算是开发者,也要折腾好几天才能跑通。 直到我把OpenClaw部署落地后,这个问题被彻底解决了。不用写一行代码,不用研究微信协议,不用申请任何企业资质,10分钟就能搭好一个完全私有化的微信AI助理,消息自动回复、群聊汇总、日程提醒、待办管理全搞定,而且数据全在本地,大模型可以接本地开源的,完全不用担心隐私泄露,封号风险也降到了最低。 这篇文章,我就用保姆级的步骤

深度解析 MySQL 与 MCP 集成:从环境构建到 AI 驱动的数据交互全流程

深度解析 MySQL 与 MCP 集成:从环境构建到 AI 驱动的数据交互全流程

前言 在当前大语言模型(LLM)应用开发的浪潮中,MCP(Model Context Protocol)协议正在成为连接 AI 模型与本地数据设施的关键桥梁。本文将以 MySQL 数据库为例,详细拆解如何通过 MCP 协议让 AI 模型直接操作关系型数据库,涵盖从服务器发现、数据库架构设计、数据初始化、MCP 配置文件编写到复杂自然语言查询与写入的全过程。 第一部分:MCP 服务器的发现与配置获取 在进行任何数据交互之前,首要任务是确立连接协议与服务源。通过蓝耘 MCP 广场,开发者可以快速检索并获取所需的 MCP 服务器配置。 在搜索栏输入 mysql 关键字,系统会立即检索出相关的 MCP 服务器资源。如下图所示,搜索结果中清晰展示了 MySQL 对应的 MCP 服务卡片。 点击选中该 MCP 服务器后,

AI的提示词专栏:用 Prompt 生成正则表达式进行文本匹配

AI的提示词专栏:用 Prompt 生成正则表达式进行文本匹配

AI的提示词专栏:用 Prompt 生成正则表达式进行文本匹配 本文围绕 “用 Prompt 生成正则表达式” 展开,先阐述二者结合的价值,即降低正则使用门槛、提升效率并适配灵活场景;接着介绍正则核心基础,为精准描述 Prompt 打基础;随后详解 Prompt 设计的三大原则与四段式结构,确保模型生成精准正则;还通过匹配固定电话、提取 URL 域名等 5 个高频场景,提供完整 Prompt 示例、模型输出及验证分析;最后梳理常见问题与解决方案,并给出总结与扩展学习建议,整体为读者提供从需求描述到工具落地的完整指南,助力高效解决文本匹配问题。 人工智能专栏介绍     人工智能学习合集专栏是 AI 学习者的实用工具。它像一个全面的 AI 知识库,把提示词设计、AI 创作、智能绘图等多个细分领域的知识整合起来。无论你是刚接触 AI 的新手,还是有一定基础想提升的人,都能在这里找到合适的内容。