(12)香橙派+apache2与php+天猫精灵=自建平台语音支持--天猫精灵对接7

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/andylauren/article/details/84206091

导航链接

(1)香橙派+apache2与php+天猫精灵=自建平台语音支持--前言

(2)香橙派+apache2与php+天猫精灵=自建平台语音支持--香橙派操作系统安装

(3)香橙派+apache2与php+天猫精灵=自建平台语音支持--香橙派环境配置

(4)香橙派+apache2与php+天猫精灵=自建平台语音支持--apache2与php

(5)香橙派+apache2与php+天猫精灵=自建平台语音支持--MariaDB的安装

(6)香橙派+apache2与php+天猫精灵=自建平台语音支持--天猫精灵对接1

(7)香橙派+apache2与php+天猫精灵=自建平台语音支持--天猫精灵对接2

(8)香橙派+apache2与php+天猫精灵=自建平台语音支持--天猫精灵对接3

(9)香橙派+apache2与php+天猫精灵=自建平台语音支持--天猫精灵对接4

(10)香橙派+apache2与php+天猫精灵=自建平台语音支持--天猫精灵对接5

(11)香橙派+apache2与php+天猫精灵=自建平台语音支持--天猫精灵对接6

(12)香橙派+apache2与php+天猫精灵=自建平台语音支持--天猫精灵对接7

新加技能

其实这个地方就比较简单了,我们所有准备的东西都完事了之后,具体的流程信息如下图所示

首先你要进入阿里语音的开发者平台,给出如下链接地址https://open.bot.tmall.com/。
用淘宝账号登陆后,点击右上角的进入控制台
点击添加新技能

按照要求填写信息,这个是我的灯的信息

然后填写最重要的服务设置,服务器(二)也说了,这个是最重要的设置

授权连接指向你域名下的aligenies_authorize.php文件,Client ID 是让记住的添加的MySQL中的ID,Client Secret是在MySQL中添加的密码,Access Token URL用于指定域名下的aligenies_token.php文件,开发者网管地址,用于指定你域名下的aligenies_gate.php文件。到此我们所有的文件准备完成,配置完成,进行真机测试。

真机测试

点击测试验证界面,点击右侧的开启测试

点击后,然后再点击账户配置

然后点选yes进行授权

如果在这个阶段你点了账号配置,没有任何反应,可能是你在配置的过程中出现了问题,这个时候你可以使用F12查看错误信息,根据错误状态进行改正即可,争取后会出现如下所示界面,由于这个设备的信息都没更改,所以跟参考文章中差不多。

下面我总结一下我遇到的错误与解决方法。

错误1:Fatal error: Uncaught PDOException: could not find driver...

报错:由于无法找到数据库的驱动库

Fatal error: Uncaught PDOException: could not find driver in /var/www/html/oauth2-server-php/src/OAuth2/Storage/Pdo.php:67 Stack trace: #0 /var/www/html/oauth2-server-

php/src/OAuth2/Storage/Pdo.php(67): PDO->__construct('mysql:dbname=Ce...', 'root', '12345678', Array) #1 /var/www/html/server.php(14): OAuth2\Storage\Pdo->__construct(Array) 

#2 /var/www/html/authorize.php(2): require_once('/var/www/html/s...') #3 {main} thrown in /var/www/html/oauth2-server-php/src/OAuth2/Storage/Pdo.php on line 67

解决:安装php的数据库驱动

rtplay@orangepipcplus:/etc$ sudo apt-get install php7.0-mysql
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following NEW packages will be installed:
  php7.0-mysql
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 106 kB of archives.
After this operation, 296 kB of additional disk space will be used.
Get:1 http://cdn-fastly.deb.debian.org/debian stretch/main armhf php7.0-mysql armhf 7.0.27-0+deb9u1 [106 kB]
Fetched 106 kB in 11s (9,260 B/s)      
Selecting previously unselected package php7.0-mysql.
(Reading database ... 34669 files and directories currently installed.)
Preparing to unpack .../php7.0-mysql_7.0.27-0+deb9u1_armhf.deb ...
Unpacking php7.0-mysql (7.0.27-0+deb9u1) ...
Setting up php7.0-mysql (7.0.27-0+deb9u1) ...

Creating config file /etc/php/7.0/mods-available/mysqlnd.ini with new version

Creating config file /etc/php/7.0/mods-available/mysqli.ini with new version

Creating config file /etc/php/7.0/mods-available/pdo_mysql.ini with new version
Processing triggers for libapache2-mod-php7.0 (7.0.27-0+deb9u1) ...

报错2:Fatal error: Uncaught PDOException: SQLSTATE[HY000] [1698]...

报错:无法通过用户名和密码访问数据库

Fatal error: Uncaught PDOException: SQLSTATE[HY000] [1698] Access denied for user 'root'@'localhost' in /var/www/html/oauth2-server-php/src/OAuth2/Storage/Pdo.php:67 Stack 

trace: #0 /var/www/html/oauth2-server-php/src/OAuth2/Storage/Pdo.php(67): PDO->__construct('mysql:dbname=Ce...', 'root', '12345678', Array) #1 /var/www/html/server.php(14): 

OAuth2\Storage\Pdo->__construct(Array) #2 /var/www/html/authorize.php(2): require_once('/var/www/html/s...') #3 {main} thrown in /var/www/html/oauth2-server-

php/src/OAuth2/Storage/Pdo.php on line 67

解决:建议不要使用root用户,新建一个用户,并设置密码

新建用户

以root身份登录mysql

mysql -u root
创建一个用户带密码

CREATE USER 'tmalk'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'tmalk'@'localhost';
FLUSH PRIVILEGES;
绑定所有地址

在下列文件中修改

/etc/mysql/mariadb.conf.d/50-server.cnf

或/etc/mysql/mysql.conf.d/mysqld.cnf

#bind-address = 127.0.0.1 
退出mysql并重启服务器

exit
service mysql restart

错误3:Fatal error: Uncaught PDOException: SQLSTATE[HY000] [1045]...

你可能没有经历错误2,而是错误3,这里建议同错误2一样处理,或者单独处理错误3,错误3是由于没有设置密码导致的

报错:

Fatal error: Uncaught PDOException: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) in /var/www/html/oauth2-server-

php/src/OAuth2/Storage/Pdo.php:67 Stack trace: #0 /var/www/html/oauth2-server-php/src/OAuth2/Storage/Pdo.php(67): PDO->__construct('mysql:dbname=Ce...', 'root', '12345678', 

Array) #1 /var/www/html/server.php(14): OAuth2\Storage\Pdo->__construct(Array) #2 /var/www/html/authorize.php(2): require_once('/var/www/html/s...') #3 {main} thrown in 

/var/www/html/oauth2-server-php/src/OAuth2/Storage/Pdo.php on line 67

解决:

$sudo mysql -u root
[mysql] use mysql;
[mysql] SET PASSWORD FOR 'root'@'localhost' = PASSWORD('12345678');
[mysql] \q
$sudo service mysql restart

 

错误4:“3秒后返回开发者平台”

这里是我在2018年12月9日左右调试时发现的问题,这个问题特别的头大,因为只有在使用“新建窗口”时进行测试才会发生,我觉得这个是天猫精灵后台出了问题,而且好几天都没有改,这个效率也是醉了。

 

如果能正常刷出列表,恭喜你,距离成功已经很近了。

同时你会发现,你天猫精灵APP通账号目录下也会出现这个界面,如下图所示

这个时候你可以尝试使用语音控制你的天猫精灵,比如“天猫精灵,打开台灯”,如果天猫精灵响应你回答“正在为您打开台灯”,则证明协议对接完成。

最后

有人会说,你也没有真正的控制硬件啊,只不过在这里修改了个文件而已啊?

好吧,对于服务器来说只能看到文件,服务器名不会真正的看到硬件设备,看到的不过是数据库中的数据在变化。这个时候你可以自己去尝试将设备的网络访问你的域名,并在你的服务器上给一个设备的连接方式,随便是tcp还是udp,实现是http还是socket,只要你让你的设备访问到你的服务器就行了,然后就是让你的设备告诉你他的状态,服务器再把需要的状态给设备,这样就实现了控制。

而且也是由于我并没有实现这部分功能,所以就没有继续写,但是我觉得这些就已经够了。

 

展开阅读全文

没有更多推荐了,返回首页