请选择 进入手机版 | 继续访问电脑版

『瀚思彼岸』» 智能家居第一站

 找回密码
 立即注册
查看: 591|回复: 56

[插件发布] 【测试】使用插件实现无公网IP接入天猫精灵和小度的方案

  [复制链接]

16

主题

240

帖子

1347

积分

论坛技术达人

积分
1347
金钱
1097
HASS币
40

活跃会员

发表于 2019-2-2 15:51:59 | 显示全部楼层 |阅读模式
本帖最后由 cnk700i 于 2019-2-15 13:46 编辑

内容概要

  1. 注意事项
    • 每人需要获取一个账号插件才能用的,获取后论坛qq群@ljr,因为需要重启一下服务才能生效。
    • 测试版本,估计很多问题,做好心理准备。
  2. 插件地址

游客,如果您要查看本帖隐藏内容请回复

  1. 用途
    为没有公网IP环境,但又想使用论坛插件版天猫精灵插件版小度音箱的朋友,提供一个比较简单的解决方案。

正文

上次打算整个通用的智能音箱接入平台,结果自定义技能不给做智能家居控制,翻车了。后来改用智能家居技能实现,虽然基础功能是没问题,但想要统一语音控制命令,不论是实现的成本还是使用的学习成本都太大,只得先搁浅了。目前瀚思彼岸论坛中已经有天猫精灵、小度音箱两个实现度比较高的插件了,将上个项目的成果改造下,提供一个免公网IP与智能音箱平台对接的新方法吧。


<!-- more -->

0.插件说明

技术架构

  • 智能音箱技能平台(自建skill)<=http=>插件中转服务<=mqtt=>本地插件<=http=>HA智能音箱服务/HA Oauth服务

效果

  • 外网访问https://ai-home.ljr.im/h2m2h/{app_key}/ABC,将通过mqtt将请求发给本地插件,由本地插件代理访问https://localhost:8123/ABC

    INFO:只支持小量文本格式内容页面,比如json。

处理流程

  1. 音箱skill平台将指令发送给插件中转服务(http服务)
  2. 中转服务通过url区分用户,将指令加密后分发给相应的本地插件(用户)
  3. 本地插件生成本地http请求与HA智能音箱服务/HA Oauth服务进行通信
  4. 得到的处理结果原路返回给音箱skill平台

多用户安全性保障

  • mqtt启用TLS
  • acl来隔离不同用户的主题
  • 对mqtt消息进行加密

注意事项

  • 需要相应的智能音箱插件(使用HA自带oauth认证的)使用,本插件只提供代理通道
  • 授权页面仍需要在本地环境进行访问
  • 天猫精灵测试偶尔无法授权,感觉天猫精灵服务器间歇抽风
  • 多用户使用环境下稳定性待测试

1.环境

2.使用说明

2.1本地智能音箱服务

参考相应插件介绍进行搭建

2.2http2mqtt2hass插件

  • 获取账号
    前往账号获取页面,获取app_key,app_secret
  • 插件配置
    #{HA配置目录}/configuration.yaml
    http2mqtt2hass:
        broker: mqtt.ljr.im     # MQTT Broker
        port: 28883             # MQTT Port
        app_key: xxx            # 获取的app_key
        app_secret: xxx         # 获取的app_secret
        certificate: xxx        # 插件目录内ca.crt的全路径
        tls_insecure: true      # 不变
        allowed_uri:            # 允许本地访问的路径
            - /auth/token       # HA的Oauth服务地址
            - /dueros_gate      # 小度音箱插件服务
            - /ali_genie_gate   # 天猫精灵插件服务

    INFO:音箱插件的服务地址见插件代码中继承了HomeAssistantView类的类所定义的url变量。

  • 平台配置
    #前往音箱技能平台进行设置
    #授权地址
    https://{本地HA访问地址}/auth/authorize
    #Client_Id,回调地址域名那一串即可
    小度:https://xiaodu.baidu.com
    天猫:https://open.bot.tmall.com
    #Token地址
    https://ai-home.ljr.im/h2m2h/{app_key}/auth/token
    #WebService地址(服务网关)
    小度:https://ai-home.ljr.im/h2m2h/{app_key}/dueros_gate
    天猫:https://ai-home.ljr.im/h2m2h/{app_key}/ali_genie_gate

    __INFO:{本地HA访问地址}、{app_key}替换成相应的字符串。__

3.小结

  • 尝试将授权页面也通过mqtt代理访问,但mqtt消息传200k长的消息就获取不全导致错误,分次传输处理又太麻烦,不折腾了。
  • 智能音箱插件将汉字处理成'\uxxxx'字符串,返回给小度音箱平台无法识别。




未命名图片.jpg
博客 https://ljr.im
回复

使用道具 举报

0

主题

94

帖子

585

积分

高级会员

Rank: 4

积分
585
金钱
491
HASS币
0
发表于 2019-2-2 16:11:37 | 显示全部楼层
谢谢分享
回复

使用道具 举报

4

主题

118

帖子

604

积分

论坛积极会员

积分
604
金钱
486
HASS币
0
发表于 2019-2-2 16:27:46 | 显示全部楼层
感谢分享
回复

使用道具 举报

0

主题

9

帖子

106

积分

注册会员

Rank: 2

积分
106
金钱
97
HASS币
0
发表于 2019-2-2 16:38:38 来自手机 | 显示全部楼层
谢谢分享!!!
回复

使用道具 举报

95

主题

2908

帖子

9433

积分

管理员

囧死

Rank: 9Rank: 9Rank: 9

积分
9433
金钱
6460
HASS币
44
发表于 2019-2-2 16:46:45 | 显示全部楼层
又是截图党
回复

使用道具 举报

2

主题

270

帖子

1100

积分

金牌会员

Rank: 6Rank: 6

积分
1100
金钱
830
HASS币
0
发表于 2019-2-2 17:00:47 | 显示全部楼层

谢谢分享
回复

使用道具 举报

16

主题

240

帖子

1347

积分

论坛技术达人

积分
1347
金钱
1097
HASS币
40

活跃会员

 楼主| 发表于 2019-2-2 18:50:07 | 显示全部楼层

省事
博客 https://ljr.im
回复

使用道具 举报

0

主题

5

帖子

28

积分

新手上路

Rank: 1

积分
28
金钱
23
HASS币
0
发表于 2019-2-2 19:05:44 | 显示全部楼层
感谢分享,虚心学习
回复

使用道具 举报

0

主题

59

帖子

470

积分

中级会员

Rank: 3Rank: 3

积分
470
金钱
411
HASS币
0
发表于 2019-2-2 19:39:16 | 显示全部楼层
看看怎么样搞,学习一下
回复

使用道具 举报

4

主题

51

帖子

556

积分

高级会员

Rank: 4

积分
556
金钱
505
HASS币
0
发表于 2019-2-2 19:46:27 来自手机 | 显示全部楼层
see see      
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2019-2-17 07:33 , Processed in 0.236595 second(s), 39 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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