天猫精灵接入HomeAssistant(智能家居技能接入)

天猫精灵最新动态&学习交流

Written by:

写在前面,方案有几个硬性要求:
1.homeassistant公网可以访问
2.搭建公网可访问的https的oauth2服务(个人认为这里难度对较高)
3.搭建公网可访问的网关服务器,将天猫开放平台的语义转换成HA的api,代理调用HA。
4.该方式目前只能自己搭自己用(技能只能在测试状态,无法发布)

我这里 2、3两个搭在一起,使用PHP完成,可以用任意语言替换。由于2、3难度较高,对没有代码能力且不理解oauth2的人来说属于修仙教程。 但是如果你跟我有一样的php+mysql环境,那就不会很复杂,直接复制我的代码,然后修改自己的设备列表即可!!

小白们如果上述条件都不具备,又想完美接入天猫精灵(飞利浦hue灯的方案只能把设备模拟成灯,控制命令不友好)。可以选择这个方案来接入 https://bbs.hassbian.com/thread-2919-1-1.html
当然,这么接入我认为也有一些好处:
1.以智能家居技能接入,不用在天猫精灵里另起技能名字,直接调用。
2.完完全全的接入,正规渠道,稳定可控。
3.能做到什么完全不受限制,全看天猫精灵的家居技能做到什么程度。

0.先发一张架构图

1.下载Oauth2和网关PHP代码

查看自己的php版本:
执行php -v
PHP 5.3.3 (cli) (built: Mar 22 2017 12:27:09)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
PHP 5.3.3即为你的php版本。根据版本选择下面对应的方案
php5.3.9以下版本可以直接执行:
php版本在5.3.9(包含5.3.9)以上的人请执行下列操作:

2.数据库建表

3.修改配置文件
请按照你自己的数据库配置修改 homeassistant_conf.php

4.在天猫开放平台新建技能
用你的淘宝账号在https://open.bot.tmall.com登陆,新建技能
技能类型选择智能家居,上传图片和一些描述(因为技能无法发布,这里叫什么你随意)

账户授权链接  https://yourhost.com/authorize.php
ClientID         XXXXXXclientid
Client Secret XXXXXXsecret
XXXXXXclientid、XXXXXXsecret为前面自己设置的)
Access Token URL  https://yourhost.com/token.php
开发者网关地址        https://yourhost.com/gate.php
(上面所有yourhost.com 替换成你自己网站的域名)

配置好了之后点击下一步,真机测试下面点开启真机测试,之后就可以在下放看到H5的配置页面。

到之前配置的账户授权连接
https://yourhost.com/authorize.php
当然,我这里写的非常简单,只做了一个确认按钮。

授权成功之后,如果没有报错,则天猫平台的页面会显示出你当前的设备列表(gate.php中配置的设备)。同时手机天猫精灵客户端也可以看到这些设备了。看到默认的设备列表说明这部ok了。
————————————————————————————————————————
这里如果出现:”Oauth token 返回不正确,请检查”或”参数值内容错误。,三秒后返回设备列表“

请修改Oauth2-PHP-Server的相关文件。
将oauth2-server-php/src/OAuth2中的Server.php中 ‘require_exact_redirect_uri’ => true,
修改为
‘require_exact_redirect_uri’ => false,
(require_exact_redirect_uri参数改为false)
————————————————————————————————————
凭借code获得token后即表示授权成功后你就可以看到你已经配置的设备列表

5.配置自己的设备列表

配置设备的方法现在已整合论坛的代码,支持多虚拟设备(传感器)
在这里修改你的hass地址和密码:你的域名/information.php
在这里管理你的设备列表:你的域名/discovery.php
因为将原有的账号体系去掉,所以第一次访问时看到登录按钮,点击即可通过。
完成hass域名密码配置后只要确认功能没问题,就可以把目录下的/information.php文件改成别的名字,比如information.php.back 这样避免外人通过这个页面拿到你的hass密码。

然后没有然后了,愉快的加你的设备吧!
添加设备请注意:
1.多个同一位置的传感器请使用虚拟设备。
 
2.关于设备类型和名称:
deviceType(设备类型)选择你实际操控时,想让天猫精灵控制的设备名。
比如你以‘冰箱’的形式操作这个设备,那这里就选择‘冰箱’,控制的时候叫  天猫精灵打开[位置]的冰箱。
deviceName(设备名称)这个位置虽然留空让你填写,但请一定填写成更设备类型一样的名字!!! 必须一样听明白没?这里不按要求写,天猫精灵不听指令不要来找我。这是天猫的要求
3.关于操作和属性

 

actions(支持的操作)
操作action
主要用于确定该设备支持哪些操作,可以根据ha里的功能进行判断后添加
设置音量             命令:把(客厅)的(电视的)音量调到80%【范围0-100】
设置颜色               命令:把(客厅)的(落地灯)调成(白色)
设置亮度               命令:把(客厅)的(吸顶灯)亮度调到(80)【范围0-100】
打开                      命令:打开(厨房)的(窗帘)
关闭                      命令:关闭(卫生间)的(吊灯)
声音按步长调小     命令: (客厅)的(电视)大点声 (仅media_player支持)
声音按步长调小     命令: (客厅)的(电视)小点声(仅media_player支持)
下一首或下一台   命令: (客厅)的(电视)下一台(仅media_player支持)
上一首或上一台   命令: (客厅)的(电视)上一台(仅media_player支持)
暂停、继续          命令:(餐厅)的(扫地机器人)暂停(media_player、vacuum)
查询温度
查询亮度
查询湿度
查询pm2.5
查询电源开关

 

properties(支持的属性状态)
主要用于传感器和设备状态,需要查询的设备请选择对应的属性
电源状态     (客厅)的(吸顶灯)开着呢嘛?
PM2.5        (客厅)的(传感器)的(PM2.5)是多少?
湿度         (客厅)的(传感器)的(湿度)是多少?
温度         (客厅)的(传感器)的(温度)是多少?
亮度         (客厅)的(传感器)的(亮度)是多少?

发表评论

电子邮件地址不会被公开。 必填项已用*标注