不想起床关灯 篇四:DC1 远程控制之路 – ha 与 小爱开放平台筑桥记

电子专业 徐 自远 843℃

不想起床关灯 篇四:DC1 远程控制之路 – ha 与 小爱开放平台筑桥记

2019-09-18 16:32:39 12点赞 144收藏 25评论

小编注:此篇文章来自#原创新人#活动,成功参与活动将获得额外100金币奖励。2020年新人计划正在进行,点击查看活动详情

如前篇所述,我们这一篇开始写ha与小爱开放平台之间的交互,我大致描述一下,有什么遗漏大家再一起讨论。

前期准备

  1.  需要一台装有homeassistant的设备A(我的是K3路由器
  2.  需要一台中转服务器S1,安装nginx,frps(frp的配置我这里不再赘述),miai.
  3.  在设备A安装frpc.并将ha的服务端口转发至中转服务器S1,服务器地址$s1ip
  4.  需要申请小爱平台开发者账号,并创建一个自定义技能
  5.  需要一个已备案的域名 your_domain,并申请ssl证书
  6.  一台小爱音响,并进入开发者模式(如果你家的宽带有外网,其实可以用小爱开放的函数计算这种方式来连接你的设备A,这样就可以省略中转服务器s1和ssl证书,有兴趣可以一起讨论一下)

数据流

将ha与小爱开放平台交互,我想到的方案是:

ha与小爱连接的拓扑图ha与小爱连接的拓扑图

配置

配置 ha外网访问的网址,并将$you_domin,$s1ip换成你具体的域名或地址

 #cat ha_your_domain.conf

server {

listen 80;

server_name ha.$your_domain;

location / {

proxy_pass http://$s1ip:8123/;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header Host $http_host;

}

location /api/websocket {

#端口写的和frpc.ini中一致

proxy_pass http://$s1ip:8123/api/websocket;

proxy_read_timeout 60s;

proxy_set_header Host $host;

proxy_set_header X-Real_IP $remote_addr;

proxy_set_header X-Forwarded-for $remote_addr;

proxy_http_version 1.1;

proxy_set_header Upgrade $http_upgrade;

proxy_set_header Connection ‘Upgrade’;

}

}

配置与开发者平台交互的服务网站

     #cat ai_your_domain.conf

这里18123是miai的监听端口

upstream ai.$your_domain {

server 127.0.0.1:18123 fail_timeout=0;

}

server {

listen 80;

listen [::]:80;

listen 443 ssl http2;

server_name  ai.$your_domain;

root /var/www/vhosts/ai;

access_log /var/www/vhosts/ai/access_log main;

error_log /var/www/vhosts/ai/error.log;

ssl_certificate   /etc/ssl/ai/1_$your_domain _bundle.crt;

ssl_certificate_key  /etc/ssl/ai/2_$your_domain .key;

client_max_body_size 4G;

keepalive_timeout 600;

# send all requests to the /validate endpoint for authorization

# auth_request /validate;

error_page 401 = @error401;

location @error401 {

return 302 https://ai.$your_domain/;

}

location / {

# forward authorized requests to your service protectedapp.yourdomain.com

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header Host $http_host;

proxy_pass http://127.0.0.1:18123;

}

if ($scheme != “https”) {

return 301 https://$host$request_uri;

}

location ~ /.well-known {

allow all;

}

}

安装miai. 我在github @liyumeng 的项目地址的基础上,融合另外一个项目@killingjacky xiaoai_hass_bridge 与ha的交互。修改了HA的交互方法,大家可以直接clone我修改好的项目,欢迎大家fork,或者star我

#git clone https://github.com/j1111011/MiAI.git

#cd MiAI

修改配置文件,先在HA界面生成一个长效访问令牌,

点击用户-创建令牌点击用户-创建令牌

修改mi_config.py,将ha的 端口、地址、技能名称、以及支持的操作、还有长效访问令牌修改成你对应的。

vi swagger_server/controllers/mi_config.py

mi_config配置说明mi_config配置说明

运行miai

python3 runserver.py

在小爱开放平台创建技能

我mi_config里配置的是“妈妈”,并将地址填入相应问题,如下图:

小爱开放平台配置链接小爱开放平台配置链接

让小爱音响进入开发者模式

进入开发者模式之后,现在你可以对小爱说,进入妈妈 (这是进入了技能,小爱比较坑,要通过唤醒词进入技能,也可以配置NLP。)。然后打开灯。至此我DC1对应的开关就通电了。

mi_config 支持多种操作,以及多个目标,包括只读的,还有开关,大家有兴趣的可以一起研究一下。至此,我睡觉就不用起来关灯了。

结语


“小爱同学~“

“我在~”

“让妈妈关闭灯”

转载请注明:徐自远的乱七八糟小站 » 不想起床关灯 篇四:DC1 远程控制之路 – ha 与 小爱开放平台筑桥记

喜欢 (1)

苏ICP备18041234号-1 bei_an 苏公网安备 32021402001397号