扫地机器人接入Google Assistant

date
Oct 28, 2022
slug
扫地机器人接入Google-Assistant
status
Published
tags
智能家居
summary
type
Post

背景

购入的追觅的扫地机器人无法跟家里的Google Home mini只能音箱联动,但是机器人能接入Homeassistant,于是尝试Google Home与Homeassistant联动。

构思方案

首先Google的智能家居平台的接入,Google这方面很开放,个人开发者也可以接入,官网在这。这里我选择的是Cloud-To-Cloud方案,根据接入文档的描述,自己开发的设备平台需要实现OAuth 2.0,这样Google Home才能接入。Device是Google Home平台支持的设备类型,Traits是设备的能力。
Traits是开发者自己实现的,可玩性很高,只要Google Home触发我想要的动作就可以了,我这里使用MQTT使Google Home与HomeAssistant联动,整个流程动作是这样:
语音唤醒Google Home音箱说出任务→Google Assistant解析语音请求触发Google Home动作→Google Home 平台触发开发者平台设备动作→发送MQTT→Home Assistant接收到MQTT时间触发设备动作
上面红字部分才是需要我们自己实现的。

接入

Google Home 平台的接入

接入流程:
  1. 实现OAuth 2.0 服务
  1. Action Console后台配置OAuth 2.0接入
  1. Intent fulfillment实现
    1. Sync 请求实现,这里告诉Google Home平台有什么设备,每个设备有什么能力(Triats)
    2. Query 和 Execute请求实现
      1. Query请求由Google Home平台发起,用于查询设备状态显示在Google Home App 、带显示屏的语音音箱或者Google Assistant语音交互(通过Google Assistant询问设备状态)
      2. Execute请求也是由Google Home发起,告诉开发者平台请求设备动作,也就是Traits的实现,具体的设备动作实现由开发者平台自定义。
    3. Disconnect 请求实现,Google Home平台与开发者平台断开
    4. Request Sync,当开发者平台新增或者修改设备需要告知Google Home平台重新发送Sync请求同步设备
    5. Implement Report State,设备状态上报(没用上)
    6. Send Notification,发送通知,通知会在Google Home App上显示或者带显示屏的语音音响上显示(没用上)

MQTT Broker搭建

MQTT Broker的选型很多,有国人EMQX,RabbitMQ(要安装相应插件),HiveMQ等。由于是自用,我这里直接公有云上搭建Eclipse Mosquitto 免费够用,一切配置保留默认。

开发者平台搭建

  • 使用Java Spring Boot开发
  • 数据库使用Google的Firestore,这里主要是存设备相关的信息,主要因为不同设备的数据结构都不一样,难以使用关系型数据库统一管理
  • CI/CD使用Github Action,每次Git Push自动构建最新镜像并推送到Docker Hub个人仓库并且自动部署,所以只需一次commit and push 就可以自动化部署到服务器了
  • 部署使用Docker-Compose,配置好docker-compose.yml,只要每次pull镜像就可以了
  • 日志查看直接tail -f log 吧,logstash+ES那套大材小用了

Action Console后台配置

配置非常简单,只需要填好红框部分的内容就行了
notion image
notion image

Google Home App配置

添加设备→设置设备→与Google服务兼容→选择[test]我的测试应用程式
这里有[test]是因为我没有Deploy,如果Deploy所有的Google Home App用户都可以见到我的开发平台(虽然他们不知道密码没法登录),由于是自用,所以一直停留在Test阶段就可以了
notion image
notion image
notion image
 

Home Assistant配置

  • 添加MIOT集成,选择账号集成不用单个配置token
notion image
notion image
  • 添加完成后就可以在HomeAssistant上看到扫地机器人了,机器人是可以接入米家的,但我没有小爱同学音箱
  • 同样添加集成里面选择MQTT
notion image
notion image
  • 设置自动化,设置MQTT监听主题以及收到出发设备动作的消息内容
notion image
 

测试

Google Home 有个Test Suite里面有很多测试用例,根据你的设备能力可以跑一遍自动化测试,所有测试用例通过后就可以正常使用量
notion image

效果展示

notion image
 

© Ryan Tang 2021 - 2025