home assistant 接入天猫精灵填坑版
背景
网上关于homeassistant 接入天猫精灵的文章很多,也有论坛接入版本,考虑到隐私和网络链接速度问题,最终还是选择自建技能和配置插件来实现天猫精灵接入。
使用的homeassistant版本103
本文写于2020/04/24
参考
步骤
1.首先下载插件
https://github.com/cnk700i/havcs
插件有三种模式:
-
模式一 音箱组件http网关:通过自建测试技能
接入,适合家庭宽带有公网ip或实现内网穿透
场景下使用。
-
模式二 mqtt中转+音箱组件http网关:通过自建测试技能
接入,适合家庭宽带无公网ip
场景下使用。
-
模式三 mqtt中转+音箱组件直接处理:通过官方音箱APP技能
接入,适合普遍
场景(无需公网ip)使用。
本文采用 模式一
插件安装很简单,把插件放置到HA自定义插件目录,最终路径结构为{HA配置目录}/custom_components/havcs
其中havcs
就是你下载的那个插件文件夹
2.实现homeassitant 公网https访问
我是开启的全局https访问,虽然囧大大也说了这种不是特别好,受限制比较多,但是我只是天猫精灵控制家电,自动化直接用的脚本,如果用node-red,获取有其他需求还是用其他方式实现比较好。
具体实现方式参考下文
https://bbs.hassbian.com/thread-9506-1-1.html
3.配置天猫精灵自建技能
在 https://www.aligenie.com/ 网站登陆,就用淘宝账号,天猫精灵也用淘宝账号登陆。这样自建技能不需要发布也可以在本地使用。
在内容和&IOT技能新建技能,关键在于服务设置页面
里面需要设置以下内容
- 账户授权连接
- Client ID
- Client Secret
- Access Token URL
- 开发者网关地址
根据 cnk700i 大大文章说明有两种方式实现oAuth2 认证
方案一
使用HA自带的授权页面 (这里大大的授权地址教程路径写错了,注意更改为下面内容)
#账户授权连接
https://{你的域名:端口}/auth/authorize
#Client ID,填回调地址域名那一串即可(HA要求格式)
天猫:https://open.bot.tmall.com
#Client Secret
随便填写,不做校验
#Access Token URL (v3版)
https://{你的域名:端口}/auth/token
#开发者网关地址 (v3版)
https://{你的域名:端口}/havcs/service
方案二
我没测试成功,有没有大大可以测试一下
(v3 2020.04.05后版本增加)
#账户授权连接
https://{你的域名及端口}/havcs/auth/authorize
#Client Id,在插件配置文件定义
与插件(配置文件)所设置的一致
#Client Secret,在插件配置文件定义
与插件(配置文件)所设置的一致
#Access Token URL
https://{你的域名及端口}/havcs/auth/token
#开发者网关地址
https://{你的域名及端口}/havcs/service
参考截图
4 配置HAVCS
我采用的是步骤3中的方案一 因此只需要配置如下
havcs:
platform: # 音箱平台服务网关,至少启用一个
- aligenie # 天猫精灵
http:
clients:
aligenie123456: adofadfadfpadofa # 官方认证随便写
ha_url: http://localhost:8123 # 配置了base_url需要这样写
device_config: ui #开启图像界面 很好用墙裂推荐
配置好了重启HA就可以了,重启后你会在HA侧栏发现插件HAVCS设备,然后就可以通过图像界面关联你需要同步到天猫精灵的设备,图形化操作很强大
添加设备的时候需要设置以下参数
配置所有设备以后,建议同步一下,可以用服务havcs.reload也可以点HAVCS设备同步按钮,或者重启HA。
5返回天猫精灵技能
点击自建技能中的测试验证
按照步骤做下来就能在天猫精灵技能内获取到HA的设备,在天猫精灵app中也能看见相应设备
问题处理
1、使用HA自带的认证模式存在授权过期问题
处理方法:
更换为步骤3中方案二 插件版的授权方式,可以设置授权超时。
本来我一直都没有验证成功,在大大LJR的指导下终于发现问题,原来我配置了插件的集成环境,当时自动配置了client ID
和 Client Secret
使用上述参数配置进去就可以了。
在 HAVCS设备管理页面工具栏,最后可以看见配置