DC1 远程控制之路 - ha 与 小爱开放平台筑桥记

2019-09-18 16:32:39 12点赞 139收藏 24评论

如前篇所述,我们这一篇开始写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 支持多种操作,以及多个目标,包括只读的,还有开关,大家有兴趣的可以一起研究一下。至此,我睡觉就不用起来关灯了。

结语


"小爱同学~“

“我在~”

“让妈妈关闭灯”




展开 收起
24评论

  • 精彩
  • 最新
  • 整的那么复杂。实现一个小爱关灯的功能?会不会大材小用?还是说你来抛砖引玉?

    校验提示文案

    提交
    这个方法算是直接对接了ha和小爱开放平台,后续可以继续搞事情

    校验提示文案

    提交
    收起所有回复
  • DC1可以改易微联 直接接入第三方就好了

    校验提示文案

    提交
    改易微联要硬改吧,觉得要焊接什么的就头大,手残

    校验提示文案

    提交
    拆开来换主控板即可 [赞一个] [赞一个]

    校验提示文案

    提交
    收起所有回复
  • 看起来好像好难啊

    校验提示文案

    提交
    对接小爱开放平台有些麻烦,可以先从ha控制设备开始,这个东西还是有点乐趣的,

    校验提示文案

    提交
    收起所有回复
  • 这中间延时高吗?中转服务器用哪个好点呢?

    校验提示文案

    提交
    通信的数据不多,选个离家近点的服务器,延迟不高。我用的都是鹅厂廉价VPS

    校验提示文案

    提交
    收起所有回复
  • 太麻烦(ノ=Д=)ノ┻━┻,直接小米全家桶 [装大款]

    校验提示文案

    提交
    [装大款] 全家桶真香

    校验提示文案

    提交
    收起所有回复
  • 感觉这是装修少了个双联开关啊

    校验提示文案

    提交
    出租房的开关太老了,改不了。

    校验提示文案

    提交
    收起所有回复
  • 太复杂了,折腾啥

    校验提示文案

    提交
    生命不息,折腾不止。

    校验提示文案

    提交
    收起所有回复
  • 两年多懒得搞了 当时买的树莓派、nuc、闲置中。。。。

    校验提示文案

    提交
    接着搞起来,日新月异,现在的玩法多多,

    校验提示文案

    提交
    收起所有回复
  • 搞那么复杂,直接把小爱和DC1都接入HA不就行了嘛,还不用外网周转

    校验提示文案

    提交
    怎么弄?小爱现在不能直接接ha.吧,看网上是要硬改的,

    校验提示文案

    提交
    收起所有回复
  • 已经快1年没去管ha了,懒得搞…

    校验提示文案

    提交
    我也一年不理了,没添加硬件,基本功能满足需求,版本升级大,很多设置肯定需要大改

    校验提示文案

    提交
    HA更新是灾难,刚开始玩,稳定了就不更新了

    校验提示文案

    提交
    收起所有回复
  • 咩意思- -?
    一脸懵逼.jpg
    这个操作最终能实现到什么样的功能?

    校验提示文案

    提交
    用ha控制所有设备,无论是支持ha的还是支持米家的

    校验提示文案

    提交
    收起所有回复
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
139
扫一下,分享更方便,购买更轻松