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

 找回密码
 立即注册
查看: 19956|回复: 31

[进阶教程] 使用aihome插件HTTP模式将叮咚mini2音箱接入HA

[复制链接]

9

主题

249

帖子

4138

积分

元老级技术达人

积分
4138
金钱
3874
HASS币
100
发表于 2019-6-4 01:44:41 | 显示全部楼层 |阅读模式
本帖最后由 xz0609 于 2019-8-23 23:09 编辑

修改日志

2019-06-04 初稿。
2019-08-23 增加1种更方便的方法来解决客户端ID不能填写https://的问题。PS:感谢19楼fengit大佬分享的方法。

前言

前面折腾好了天猫精灵和小度后,继续折腾叮咚mini2音箱。

前置条件

1.要有公网IP和域名。

2.小京鱼·Skill开放平台的开发者账号(自己去申请)。
申请完开发者账号后,还需要写邮件给官方人员来开启真机调试。

需要2样东西:1.你的叮咚mini2音箱产品序列号SN,app里可以查看到的。2.你的京东用户名。
把音箱序列号SN和京东用户名,发到 mailto:[email protected] 官方客服邮箱。
我是等了大概7天才回复通过,然后客服人员会让你加QQ,给你发1个沙箱版的叮咚音箱APP(里面可以添加查看测试技能),其实没什么用,不用APP也可以,直接在平台的测试技能网页上可以输入命令来操作。

叮咚音箱:aihome作者说由于小京鱼平台在配置服务端点的客户端ID不能填写https://这几个字符,需要修改HA的核心组件 所以就我放弃了。
经尝试,可以修改HA的auth组件,让HA不验证oauth格式,从而让客户端ID保存,具体怎么修改后面会说明。
19楼fengit大佬分享了更加方便的方法,具体方法请往下看。

接入流程

  • 1.HA平台配置
  • 2.修改HA的auth组件
  • 3.音箱平台配置
  • 4.HA - customize配置
  • 5.音箱测试

HA平台配置

音箱平台配置

下面是我的小京鱼·Skill开放平台,服务端点-配置,参考下:

*Https端点:https://你的域名:你的端口/aihome_service

*SSL证书:服务端点有受信任证书颁发机构的证书

*授权网址:https://你的域名:你的端口/auth/authorize

*客户端ID:https://alphadev.jd.com

*客户端密码:随便填

*访问令牌URL:https://你的域名:你的端口/aihome_auth

解决客户端ID不能填写https://的问题

使用Chrome浏览器打开小京鱼·Skill开放平台服务配置页面,
在 保存 按钮的旁边按鼠标右键,选择 审查元素 ,找到下面这段代码
<button type="button" class="ant-btn ant-btn-primary" disabled="">

删除掉disabled字段,保存按钮变亮就可以保存了。
小京鱼原.png
小京鱼改.png

HA - customize配置

    1. packages/master_bedroom_lihgt.yaml下主卧灯的配置,可以参考下:
homeassistant:
  customize:
    light.master_bedroom_pendant_light:
      friendly_name: "主卧吊灯"
      aihome_device: True
      aligenie_deviceName: 吊灯
      aligenie_zone: 主卧
      aligenie_deviceType: light
      aligenie_actions: ["TurnOn", "TurnOff"]
      dueros_deviceType: 'LIGHT'
      dueros_actions: ['turnOn', 'turnOff']
      jdwhale_deviceType: 'LIGHT'
      jdwhale_actions: ['TurnOn', 'TurnOff', 'Query', 'QueryPowerState']
    light.master_bedroom_down_light:
      friendly_name: "主卧筒灯"
      aihome_device: True
      aligenie_deviceName: 筒灯
      aligenie_zone: 主卧
      aligenie_deviceType: light
      aligenie_actions: ["TurnOn", "TurnOff"]
      dueros_deviceType: 'LIGHT'
      dueros_actions: ['turnOn', 'turnOff']
      jdwhale_deviceType: 'LIGHT'
      jdwhale_actions: ['TurnOn', 'TurnOff', 'Query', 'QueryPowerState']
    1. packages/living_room_cover.yaml下客厅窗帘的配置,可以参考下:
homeassistant:
  customize:
    cover.living_room_cover:
      friendly_name: "客厅窗帘"
      aihome_device: True
      aligenie_deviceName: 窗帘
      aligenie_zone: 客厅
      aligenie_deviceType: curtain
      aligenie_actions: ["TurnOn", "TurnOff"]
      dueros_deviceType: 'CURTAIN'
      dueros_actions: ["turnOn", "timingTurnOn", "turnOff", "timingTurnOff", "pause"]
      jdwhale_deviceType: 'CURTAIN'
      jdwhale_actions: ['TurnOn', 'TurnOff', 'Query', 'QueryPowerState']

音箱测试

以上配置好后,一定要重启下HA。
打开小京鱼·Skill开放平台测试技能选项,
点击启用按钮后,会弹出HA平台账号授权关联页面,填入你的HA账号和密码,完成验证。(我测试过,手机沙箱app不用绑定自己的技能名。)
完成后在下面的输入框里输入“发现设备”。
然后点击发送请求,左侧的设备列表会列出HA平台中customize自定义配置过的设备。(发送1次请求不成功的话,多尝试几次)

到此,可以测试一下是否成功。
对着叮咚mini2音箱说:叮咚叮咚,打开主卧筒灯。

PS:修改HA的auth组件

下面我们来讲下如何修改HA的auth组件。

需要修改2个文件,login_flow.py和indieauth.py
我这边安装的是hassio

  • 1.修改login_flow.py
# 进入homeassistant 容器
docker exec -it homeassistant /bin/bash

#cd到auth目录
cd /usr/local/lib/python3.7/site-packages/homeassistant/components/auth/

#备份login_flow.py文件,以防误修改
cp login_flow.py login_flow.py.bak

#修改login_flow.py
vi login_flow.py

#跳转到163行
:163 回车

把

    @log_invalid_auth
    async def post(self, request, data):
        """Create a new login flow."""
        if not await indieauth.verify_redirect_uri(
                request.app['hass'], data['client_id'], data['redirect_uri']):
            return self.json_message('invalid client id or redirect uri', 400)

        if isinstance(data['handler'], list):
            handler = tuple(data['handler'])

改为:

    @log_invalid_auth
    async def post(self, request, data):
        """Create a new login flow."""
        # if not await indieauth.verify_redirect_uri(
                # request.app['hass'], data['client_id'], data['redirect_uri']):
            # return self.json_message('invalid client id or redirect uri', 400)

        if isinstance(data['handler'], list):
            handler = tuple(data['handler'])
  • 2.修改indieauth.py
# 进入homeassistant 容器
docker exec -it homeassistant /bin/bash

#cd到auth目录
cd /usr/local/lib/python3.7/site-packages/homeassistant/components/auth/

#备份indieauth.py文件,以防误修改
cp indieauth.py indieauth.py.bak

#修改indieauth.py
vi indieauth.py

#跳转到111行
:111 回车

把

def verify_client_id(client_id):
    """Verify that the client id is valid."""
    try:
        _parse_client_id(client_id)
        return True
    except ValueError:
        return False

改为:

def verify_client_id(client_id):
    """Verify that the client id is valid."""
    try:
        # _parse_client_id(client_id)
        return True
    except ValueError:
        return False





评分

参与人数 2金钱 +27 HASS币 +10 收起 理由
fengit + 7 感谢楼主分享!
+ 20 + 10 感谢楼主分享!

查看全部评分

E5-2650L-V2+华南X79+16GB*2
回复

使用道具 举报

0

主题

40

帖子

170

积分

注册会员

Rank: 2

积分
170
金钱
130
HASS币
0
发表于 2019-6-4 09:20:55 | 显示全部楼层
家里有个叮咚MINI2,先MARK一下,看起来好复杂!膜拜大神!!
回复

使用道具 举报

9

主题

534

帖子

4432

积分

元老级技术达人

积分
4432
金钱
3888
HASS币
60
发表于 2019-6-4 09:56:11 | 显示全部楼层
感谢,问下小鲸鱼是网上申请完通过后,再发邮件吗?之前买了两个,一直不能接入,都送人了
回复

使用道具 举报

9

主题

249

帖子

4138

积分

元老级技术达人

积分
4138
金钱
3874
HASS币
100
 楼主| 发表于 2019-6-4 10:40:37 | 显示全部楼层
sangood 发表于 2019-6-4 09:56
感谢,问下小鲸鱼是网上申请完通过后,再发邮件吗?之前买了两个,一直不能接入,都送人了 ...

先去平台申请成为开发者,然后发邮件,邮件里最好写下你的理由。
如果手头没叮咚mini2还是建议入天猫精灵或者小度
E5-2650L-V2+华南X79+16GB*2
回复

使用道具 举报

6

主题

484

帖子

3982

积分

论坛元老

Rank: 8Rank: 8

积分
3982
金钱
3498
HASS币
0
发表于 2019-6-4 20:07:10 | 显示全部楼层
非常好的技能,但是第一:要有公网IP和域名,就把我挡在门外了,看来我的2个只能接着落灰了。
回复

使用道具 举报

9

主题

249

帖子

4138

积分

元老级技术达人

积分
4138
金钱
3874
HASS币
100
 楼主| 发表于 2019-6-4 20:18:22 | 显示全部楼层
robotxc 发表于 2019-6-4 20:07
非常好的技能,但是第一:要有公网IP和域名,就把我挡在门外了,看来我的2个只能接着落灰了。 ...

可以用插件作者的模式三skill模式,通过官方音箱APP技能接入,具体怎么操作,我没试过,可以去作者博客看看,
E5-2650L-V2+华南X79+16GB*2
回复

使用道具 举报

16

主题

324

帖子

2280

积分

金牌会员

Rank: 6Rank: 6

积分
2280
金钱
1956
HASS币
0
发表于 2019-6-4 23:39:35 来自手机 | 显示全部楼层
哪些设备可以用这个技能?叮咚Top已经用飞利浦hub智能灯实现控制了。。。还有个当时大价格买的Jbl horizon。。。本来还能点点歌,版权之战后就废了,只能手机dlna上去听歌了,也去Jbl和叮咚投诉过,反正都是踢皮球,一个说这是Jbl的智能音响我们不管,一个说系统是叮咚做的。。。估计这音响是没救了
239510B8-AF50-40C3-A7F0-AA5609E71684.png
回复

使用道具 举报

9

主题

249

帖子

4138

积分

元老级技术达人

积分
4138
金钱
3874
HASS币
100
 楼主| 发表于 2019-6-4 23:52:55 | 显示全部楼层
wyh260595711 发表于 2019-6-4 23:39
哪些设备可以用这个技能?叮咚Top已经用飞利浦hub智能灯实现控制了。。。还有个当时大价格买的Jbl horizon ...

你到APP里把音箱添加后,在智能家居里添加设备,看看有没有叫aihome的技能,没有就是不支持。
E5-2650L-V2+华南X79+16GB*2
回复

使用道具 举报

175

主题

2956

帖子

7555

积分

超级版主

我就是六神

Rank: 8Rank: 8

积分
7555
金钱
4574
HASS币
398

活跃会员教程狂人灌水之王

QQ
发表于 2019-6-5 05:23:30 来自手机 | 显示全部楼层
我的也在吃灰,但是看到京东这么不友好,想想还是继续吃灰吧。
回复

使用道具 举报

16

主题

324

帖子

2280

积分

金牌会员

Rank: 6Rank: 6

积分
2280
金钱
1956
HASS币
0
发表于 2019-6-5 19:18:23 来自手机 | 显示全部楼层
aihome插件0.84的HA能用不?
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-5-2 05:56 , Processed in 0.068322 second(s), 37 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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