快捷导航
 
不想起床关灯 篇四:DC1 远程控制之路 - ha 与 小爱开放平台筑桥记
VIEW CONTENTS

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

2020-2-27 23:16| 发布者: xtyly| 查看: 204| 评论: 0
摘要: 不想起床关灯 篇四:DC1 远程控制之路 - ha 与 小爱开放平台筑桥记,由乐居居会员发布在智能家居论坛的真实分享,本文是作者亲身的购买使用感受以及中立消费见解,旨为在广大网友中传播更好的消费主张。
看完喜欢想买?就在这里搜一下!想要什么搜什么:

小编注:此篇文章来自#原创新人#活动,成功参与活动将获得额外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 支持多种操作,以及多个目标,包括只读的,还有开关,大家有兴趣的可以一起研究一下。至此,我睡觉就不用起来关灯了。

结语


  "小爱同学~“

 “我在~”

“让妈妈关闭灯”




   




Tab标签:

鲜花

握手

雷人

路过

鸡蛋

最新评论

推荐快讯更多

乐居居-让生活更智能!

  • 反馈建议:153890879@qq.com
  • 客服电话:
  • 工作时间:周一到周五

云服务支持

精彩文章,快速检索

关注我们

Copyright乐居居  Powered by©  备案号:湘ICP备15009499号-1