『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 39281|回复: 28

[进阶教程] 从零开始把小度(dueros)接入hass

[复制链接]

40

主题

393

帖子

1764

积分

金牌会员

Rank: 6Rank: 6

积分
1764
金钱
1366
HASS币
0
发表于 2018-6-24 00:12:26 | 显示全部楼层 |阅读模式
本帖最后由 pcping 于 2018-6-24 22:20 编辑

本文参考了大神的帖子,自己填了点坑,然后目标人群是纯纯的小白,站在巨人的肩膀上看世界挺美。
原创大神的网页:https://xiaozhuo1314.github.io/


正文
一、前置条件:
公网ip

二、域名:
1、 申请域名:这里我选择的是阿里的域名
自己摸索下买个域名(这个自己买啊),然后设置云解析,方法论坛里有阿里ddns的方法可以用hass来实现,也可以用路由器,我用的是newwifi,然后刷了老毛子的固件,自带阿里云解析
1.png

然后在路由器中端口转发*****.8123就可以外网访问hass了(端口转发内部端口填8123,外部端口填8123就可以了,因为8123是不封的)。为了让小白看的懂,以下我就用域名:www.哈哈哈.com来进行讲解。
当我们在浏览器中输入http://www.哈哈哈.com:8123可以进入hass页面后就成功了。

2、申请ssl,前面我们访问hass用的是http,要用小度和天猫一样要有ssl,因此要申请个证书,进入阿里云的控制台,点击左侧的ssl证书
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.png
然后点右上角的购买证书
2.png
3.png
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image003.jpg
先点品牌的symantec,这时免费域名是不会跳出来的,我们点保护类型的1个域名,这时免费域名就出来了,哈哈哈,然后按提示认证注册就行了
4.png 5.png 6.png
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image009.jpg
之后我们返回到ssl证书,找到下载,然后下载apache的证书
8.png


7.png

file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image011.jpg
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image012.png
证书保存在电脑上等下用,这步先停一停,我们开始搭建环境。

二:搭建环境:
         Lamp就是服务器的环境,意思就是:Linux+Apache+Mysql/MariaDB+Perl/PHP/Python,常用的就是Linux(ubuntu)+Apache+Mysql+PHP。论坛里各种修仙教程,仙言仙语,不适合小白,我这里来一个最笨的也是最简单的方法,以树莓派为介质。

1、树莓派一个,下载树莓派3的ubuntu16.04系统,我用的是https://www.finnie.org/software/raspberrypi/ubuntu-rpi3/ubuntu-16.04-preinstalled-server-armhf+raspi3.img.xz,也可以自己装,这个就是方便,烧录好就行了,默认账号密码都是ubuntu
2、用etcher将系统烧录到SD卡内,SD卡插入树莓派,树莓派连上网线插在路由器上,然后开机,找到树莓的ip,然后用putty.exe软件ssh登陆(ssh是什么我就不说了,论坛里有,要不文章太TM长了),这个系统进入后默认要求你修改密码,修改好它就直接退出了,我们再重新登陆一次就行。
然后,开root:
sudo passwd root
输入新建的root密码,之后输入su,输入刚才设置的密码进入root账户,然后cd回车到根目录
1.png
3、Lamp中的L我们安装好了,接下去安装amp,这里我们用一个软件叫宝塔面板,具体百度搜索
命令:
wget -O install.sh http://download.bt.cn/install/install-ubuntu.sh && sudo bash install.sh
然后输入y 回车,接着就是一个字等,两个字(看电视)。。。。。。。。。。。。。。。。。大约10分钟左右。
安装完成后在浏览器输入树莓派的Ip:8888(比如192.168.1.11:8888,具体一自己的树莓派ip为准),账户名密码注意安装完成时告诉你了,千万别关了。
2.png

进去后直接跳出选择安装环境选项:按如下版本选择,为什么选这些版本?我哪知道,论坛里都这么说的,装来就行了,然后一个字灯,两个字(看一部电影,还不一定装的完),大约3个小时
3.png

之后安装完了,在面板设置这里设置一下账户密码,在左侧边栏软件管理里面安装一下phpmyadmin(这个是图形化数据库管理工具,很有用,一定装一下。4.4以上版本)
4.png

在左边侧边栏点击网站--添加站点--域名填写www.哈哈哈.com(上文说了,就拿这个域名做教程了),这里注意一下,因为大多数433端口都是被封的,所以路由器里映射一下,内部433,外部,随便,这里随便写一个8089,就是www.哈哈哈.com:8089,其他默认不管。
1.png

之后我们点击该网站右边的设置

2.png
然后点击弹出框左侧的ssl,再点击其他证书,将之前在阿里云上下载下来的证书里面key和pem文件内的内容复制到对应的左右两个框里(证书有4个文件,有两个是一串数字开头,就是这个两个,用文本文档打开全选复制即可)。
3.png
保存成功后在浏览器输入https://www.哈哈哈.com:8089,返回页面说明成功了。
4.png


三、建立数据库
以上环境搭载好以后说明可以使用https访问了,然后我们开始建立数据库
这里用到一个软件winscp,可视化操作lunix,
进入软件新建会话,主机名输入树莓派ip,和ssh是一样的,点击高级,选择左边环境内的SFTP,然后在右边SFTP服务器内输入sudo /usr/lib/openssh/sftp-server,这样就可以自由的复制粘贴了。
5.png
登陆后我们看到sd卡的根目录有一个www的文件夹,这个就是网站的目录。然后从https://github.com/Deschanel/DuerSmartHome下载,解压后把里面的8个文件全部拖动网站根目录里面,目录地址就是/www/wwwroot/www.哈哈哈.com(前面自己建的网站)
1.jpg 2.jpg

然后通过putty软件root用户下输入cd /www/wwwroot/www.哈哈哈.com   进入网站根目录
然后执行
我们看到oauth2-server-php已经下载并解压到了网站根目录了。
3.jpg

(1)先在winscp中修改文件server.php
mysql:dbname=数据库的名字,自己取,等下要和数据库一样的,username  用root,password自己设置一个。保存
5.jpg
(2)修改homeassistant_conf.php,这里注意,在winscp双击打开时编码选一下UTF-8.域名端口填自己的hass域名,比如http://www.哈哈哈.com:8123

(3)进入数据库,新建一个数据库,名字就是刚才填在server.php里mysql:dbname的名字,记得数据库的root密码改成和server.php输入的一样。
6.jpg
创建完后点管理进入phpmyadmin,选中刚才创建的数据库,点SQL,开始建表,复制粘贴,记得点一下sql下面的格式按钮,然后点执行

CREATE TABLE oauth_clients (
  client_id             VARCHAR(80)   NOT NULL,
  client_secret         VARCHAR(80),
  redirect_uri          VARCHAR(2000),
  grant_types           VARCHAR(80),
  scope                 VARCHAR(4000),
  user_id               VARCHAR(80),
  PRIMARY KEY (client_id)
);

CREATE TABLE oauth_access_tokens (
  access_token         VARCHAR(40)    NOT NULL,
  client_id            VARCHAR(80)    NOT NULL,
  user_id              VARCHAR(80),
  expires              TIMESTAMP      NOT NULL,
  scope                VARCHAR(4000),
  PRIMARY KEY (access_token)
);

CREATE TABLE oauth_authorization_codes (
  authorization_code  VARCHAR(40)     NOT NULL,
  client_id           VARCHAR(80)     NOT NULL,
  user_id             VARCHAR(80),
  redirect_uri        VARCHAR(2000),
  expires             TIMESTAMP       NOT NULL,
  scope               VARCHAR(4000),
  id_token            VARCHAR(1000),
  PRIMARY KEY (authorization_code)
);

CREATE TABLE oauth_refresh_tokens (
  refresh_token       VARCHAR(40)     NOT NULL,
  client_id           VARCHAR(80)     NOT NULL,
  user_id             VARCHAR(80),
  expires             TIMESTAMP       NOT NULL,
  scope               VARCHAR(4000),
  PRIMARY KEY (refresh_token)
);

CREATE TABLE oauth_users (
  username            VARCHAR(80),
  password            VARCHAR(80),
  first_name          VARCHAR(80),
  last_name           VARCHAR(80),
  email               VARCHAR(80),
  email_verified      BOOLEAN,
  scope               VARCHAR(4000),
  PRIMARY KEY (username)
);

CREATE TABLE oauth_scopes (
  scope               VARCHAR(80)     NOT NULL,
  is_default          BOOLEAN,
  PRIMARY KEY (scope)
);

CREATE TABLE oauth_jwt (
  client_id           VARCHAR(80)     NOT NULL,
  subject             VARCHAR(80),
  public_key          VARCHAR(2000)   NOT NULL
);


这里停一停,然后进入百度技能平台https://dueros.baidu.com/dbp/main/console,注册进入后创建新技能,选择智能家居,创建后就看到一个回调地址

3.jpg


然后返回phpmyadmin,继续插入SQL
insert into oauth_clients (client_id, client_secret, redirect_uri) VALUES ("your clientid", "your secret", "your callback address");


your clientid和your secret随便编,但是要记住,your callback address就是上面的回调地址,然后替换后点格式,然后执行

然后回到技能页面按图填写 4.jpg

点击保存,然后授权,然后跳出来 do you什么什么的,点yes,就出现了success页面表示成功了。
5.jpg 6.jpg

接着我们还是用winscp到网站根目录,修改gate.php,其中applianceId就是hass里的设备id,friendlyName就是显示的名字,自己摸索吧,保存刷新。

11.jpg


然后进入模拟测试,输入发现设备,客厅吸顶灯就出来了,输入打开客厅吸顶灯,灯就亮了,成功!!!!!! 9.jpg

在小度里默认设备就添加了,感觉比天猫好,还能自定义名称,希望能有大神拓展开发,收工

5.png
7.jpg

评分

参与人数 3金钱 +50 收起 理由
咸味土豆 + 10 在下对你的景仰犹如滔滔长江之水,连绵不绝.
Milo + 20 谢谢分享!
+ 20 膜拜大神!

查看全部评分

回复

使用道具 举报

24

主题

884

帖子

5055

积分

论坛元老

Rank: 8Rank: 8

积分
5055
金钱
4166
HASS币
20
发表于 2018-6-24 01:37:02 来自手机 | 显示全部楼层
这才是教程该有的样子!够详细
回复

使用道具 举报

40

主题

3056

帖子

1万

积分

超级版主

Nero

Rank: 8Rank: 8

积分
11149
金钱
8042
HASS币
182
发表于 2018-6-24 07:17:00 | 显示全部楼层
我在等大佬们合并到天猫精灵网关或者到出一个天猫精灵网关的前端,毕竟小度还没到手。
Nero
回复

使用道具 举报

14

主题

266

帖子

1640

积分

论坛技术达人

积分
1640
金钱
1354
HASS币
40

教程狂人

发表于 2018-6-24 22:08:13 | 显示全部楼层
neroxps 发表于 2018-6-24 07:17
我在等大佬们合并到天猫精灵网关或者到出一个天猫精灵网关的前端,毕竟小度还没到手。 ...

竟然还没到手....
回复

使用道具 举报

0

主题

94

帖子

340

积分

中级会员

Rank: 3Rank: 3

积分
340
金钱
246
HASS币
0
发表于 2018-6-26 11:55:29 | 显示全部楼层
感谢楼主分享
回复

使用道具 举报

40

主题

3056

帖子

1万

积分

超级版主

Nero

Rank: 8Rank: 8

积分
11149
金钱
8042
HASS币
182
发表于 2018-6-26 14:05:01 | 显示全部楼层
huex 发表于 2018-6-24 22:08
竟然还没到手....

没空买啊,老婆又抢不到。
Nero
回复

使用道具 举报

75

主题

1976

帖子

8183

积分

元老级技术达人

积分
8183
金钱
6157
HASS币
430

活跃会员教程狂人

发表于 2018-6-27 17:53:57 | 显示全部楼层
本帖最后由 咸味土豆 于 2018-6-27 17:58 编辑
neroxps 发表于 2018-6-26 14:05
没空买啊,老婆又抢不到。

,是那个小度音响吗?
所有过往,皆为序章。
回复

使用道具 举报

75

主题

1976

帖子

8183

积分

元老级技术达人

积分
8183
金钱
6157
HASS币
430

活跃会员教程狂人

发表于 2018-6-27 17:55:58 | 显示全部楼层
谢谢分享,很详细,看来可以用L大天猫精灵搭建环境的帖子实现,docker+Lamp,有空了赶紧试一试,用。
想偷懒等N大的插件
所有过往,皆为序章。
回复

使用道具 举报

40

主题

3056

帖子

1万

积分

超级版主

Nero

Rank: 8Rank: 8

积分
11149
金钱
8042
HASS币
182
发表于 2018-6-28 08:31:35 | 显示全部楼层
咸味土豆 发表于 2018-6-27 17:53
,是那个小度音响吗?

是的,老婆抢了几个星期都说一点进去没货。那么多人买?
Nero
回复

使用道具 举报

75

主题

1976

帖子

8183

积分

元老级技术达人

积分
8183
金钱
6157
HASS币
430

活跃会员教程狂人

发表于 2018-6-28 16:28:12 | 显示全部楼层
neroxps 发表于 2018-6-28 08:31
是的,老婆抢了几个星期都说一点进去没货。那么多人买?

可能有套路吧,我的是小度在家,带屏幕的那个。还没时间尝试了。
所有过往,皆为序章。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-26 12:44 , Processed in 0.079165 second(s), 36 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表