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

 找回密码
 立即注册
查看: 13045|回复: 7

[进阶教程] 小度音箱接入home assistant踩的坑

[复制链接]

1

主题

4

帖子

43

积分

论坛分享达人

积分
43
金钱
39
HASS币
0
发表于 2019-4-23 12:20:18 | 显示全部楼层 |阅读模式
本帖最后由 zhuangzi105 于 2019-4-23 16:32 编辑

首先感谢feversky,huex ,zhkufish分享的代码.和教程,教程链接https://bbs.hassbian.com/thread-5417-1-1.html

下面介绍操作过程中的各种坑,希望后面的同学引以为戒。。

首先是ssl 部分,
之前用的5元永久花生壳壳域名(因为贫穷),不带ssl。所以需要申请一个。
坑1:然而北京联通封了80和443端口,没办法验证,正好手头有个做酸酸乳的vultr的VPS,参考了这篇帖子
http://koolshare.cn/thread-111350-1-11.html
1.在vps上运行花生壳,软件请务必到官网上下,我就是点了个教程,下了个低版本的结果运行不了。。坑2
2.建服务器,把阿里云验证文件fileauth放到对应位置。
3.回到阿里云验证
4.审核完毕之后把公钥和私钥放到树莓派上去。。

坑3:home assistant 中配置ssl,因为home assistant是在docker里装的。configuration.yaml中ssl_certificate,ssl_key的地址需要是docker的地址。也就是说需要把公钥和私钥放到比如/config挂载的位置上去,我这边是/usr/share/homeassistant 。然后在configuration.yaml对应位置填上docker的地址,如下
http:
  base_url: https://********:8123
  ssl_certificate: /config/server.pem
  ssl_key: /config/server.key
  use_x_forwarded_for: true
  trusted_proxies:
    - 127.0.0.1
    - ::1
  ip_ban_enabled: true
  login_attempts_threshold: 5



然后nginx配置编辑,放置dueros.py什么的按照教程来就好。docker安装的home assistant,dueros.py要放在挂载的地方


然后顺利授权成功,但是模拟测试的时候坑来了。。
坑4:模拟测试时,home assistant可以收到信息。不过会报错。检查了下。DuerOS发过来的json文件和python代码里对不上啊。苦苦思索哪里不对,始终找不到。然后去查DuerOS的手册,发现智能家居发的就应该有header和payload,为啥我的没有呢。回去检查技能设置的时候看到了技能类型:自定义。。感觉怪怪的。回想起来当时创建技能的时候好像有别的选项啊 。。。。应该选智能家居啊。选自定义是什么鬼。 360截图16720404747180.png


2019-04-23 10:14:10 DEBUG (MainThread) [homeassistant.components.http.view] Serving /dueros_gate to 10.202.112.18 (auth: False)
2019-04-23 10:14:12 ERROR (MainThread) [custom_components.dueros] Traceback (most recent call last):
  File "/config/custom_components/dueros.py", line 97, in post
    response = await handleRequest(data)
  File "/config/custom_components/dueros.py", line 120, in handleRequest
    header = data['header']
KeyError: 'header'


在对应位置输出data的内容。发现data中没有header关键字。

data内容:


[custom_components.dueros]{"version": "v2.0","session": {"new":true, "sessionId":"2bf27c64-3d48-4ad2-8980-dddec189cf0a"},"context": {"System":{"user": {"userId":"9009298", "accessToken":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiI5NGVhNzhlNjMzNzA8YjZiM2ZkNTM3NjQxYWQ5ZCIsImlhdCI6MTU1NTk4NjI3MiwiZXhwIjoxNTU2NjM0MjcyfQ.Nc2_eb2cKP5PFSNbf7uHcaGAs4PNJUisoY37DOa6EY","userInfo": {"account":{}}}, "application": {"applicationId":"917baa19-c612-9a17-9f39-d48df768df061"},"device": {"deviceId":"77be6f9f9aa83634f7e08bef40a124","supportedInterfaces": {"VoiceInput":{}, "VoiceOutput": {}, "AudioPlayer":{}, "VideoPlayer": {"preferedBitrate":"", "preferedWidth":0, "preferedHeight":0}}, "TVControl":{"controlType": "DCSControl","controlStatus": 0},"originalDeviceSerialNumber": "91206/1B3F160053140"},"apiAccessToken": "+OKmo/6o7dAPXT/5IGAzhEOS/apTcnZzY+C5rVuWJNAQt+gVH+giijfT8q0MWcpXI/CSLCJnWY3D1/Cz7OWcWD1R9hFMF0hnyge8cFRqwnX6lrKixur3uYzUYr029vvnFt/bRYdXvPbf+cTAFh6gzKDlF/ZgYGXIOPWMlCQ/sxyskERNSpq9pSD2iWhBSEMYT9YgnpiEGYcoGinrFUV5YEXhT3w+eeJqcLvaXqBoZ2o74yLFKiGys+037gdyx1UGFUX1siwY0tErNl/fQSrEnQV+p+ac+2QFfONfRAzAlybPAF9l6g8/mINQywPFL6n27R0Q+HJIzlSp5Z5k6V+zGwVjmKUoS2+Fcjk+Jzag5CT1gwdX97rvoyH4/x+XQhZawGpUnWhGEVKMfkPOQ==","apiEndPoint": "https://xiaodu.baidu.com","avaliableApplicationIds": ["aries_general","audio_music", "audio_unicast","audio_live", "audio_news","speaker_hardware", "duer_weather","sysprofile_service", "ai.dueros.bot.vocal_joke","ai.dueros.bot.alarm", "ai.dueros.bot.timer","ai.dueros.bot.smarthome", "doudi_server","ai.dueros.bot.audio_museum", "ai.dueros.bot.puzzle","ai.dueros.bot.faq_didp", "audio_music_children","483c3ee4-0e37-e05a-0d95-efe1dc96dc44","audio_classic", "d4106ab2-4374-816e-322a-341fcc625e4b","fed5e9a3-32e0-a87c-9571-9c7d296b919d","ai.dueros.bot.oss", "0b082db2-fc64-6396-5744-1ffd84e83a32","409e98fd-e144-c39a-6c35-75d261683834","ai.dueros.ext.rus", "6402fc3a-7825-3147-b52e-c25911b6d03c","ca4585e2-3cc2-8605-4062-08f9931304db","ext_timer"]}, "AudioPlayer":{"token": "1","offsetInMilliSeconds": 1520773,"playActivity": "STOPPED","applicationId": "audio_live"},"SettingsState": {"childFriendlyMode":false}}, "request":{"type": "LaunchRequest","requestId": "c4349bc0-6574-18e9-b28b-d9f75472d902_DCSxukbcd8871_3#1_0","timestamp": "155508782","dialogRequestId": "45c90f3f-f9be-4937-9d20-6a6c9cbd2dc2"}}



重新创建技能之后,模拟测试顺利通过,完满收工。。
这东西,来来回回折腾了两三天。差点精神崩溃。不过最终还是结局完美。希望后续官方能出接口吧。这样就不用这么折腾了。。

题外话:
小度音箱终于可以控制家电了。不然感觉这东西就是个废物。。问个问题听不懂,一言不合就要给你播放音乐。。
比如我对他说:快来救我。他就给我播放名字是快来救我的音乐。。一点幽默细胞都没有。简直是人工智障




回复

使用道具 举报

123

主题

4661

帖子

1万

积分

管理员

囧死

Rank: 9Rank: 9Rank: 9

积分
16409
金钱
11663
HASS币
45
发表于 2019-4-23 14:38:29 | 显示全部楼层
楼主有点厉害,能力很强
回复

使用道具 举报

0

主题

71

帖子

310

积分

中级会员

Rank: 3Rank: 3

积分
310
金钱
239
HASS币
0
发表于 2019-4-23 15:07:06 | 显示全部楼层
楼主出个详细的教程,那样我就能把只能用控制一个设备的猫精扔掉了。
回复

使用道具 举报

1

主题

4

帖子

43

积分

论坛分享达人

积分
43
金钱
39
HASS币
0
 楼主| 发表于 2019-4-23 16:33:32 | 显示全部楼层
cooljeo 发表于 2019-4-23 15:07
楼主出个详细的教程,那样我就能把只能用控制一个设备的猫精扔掉了。

看zhkufish的教程,然后不懂的百度就好了。https://bbs.hassbian.com/thread-5417-1-1.html
回复

使用道具 举报

9

主题

251

帖子

4380

积分

元老级技术达人

积分
4380
金钱
4114
HASS币
100
发表于 2019-4-23 17:01:45 | 显示全部楼层
去年年底的时候搭建成功过。
这次准备用cnk700i大佬的整合插件。
楼主可以试试,
github:https://github.com/cnk700i/aihome
blog:https://ljr.im/articles/plugin-s ... istant-integration/
E5-2650L-V2+华南X79+16GB*2
回复

使用道具 举报

8

主题

2069

帖子

6033

积分

论坛元老

流水无味

Rank: 8Rank: 8

积分
6033
金钱
3964
HASS币
145

灌水之王

发表于 2019-4-24 12:31:21 | 显示全部楼层
xz0609 发表于 2019-4-23 17:01
去年年底的时候搭建成功过。
这次准备用cnk700i大佬的整合插件。
楼主可以试试,

这个不错 去试试
小度接入就是不想整 https 一直没接入
回复

使用道具 举报

13

主题

500

帖子

3422

积分

论坛元老

Rank: 8Rank: 8

积分
3422
金钱
2917
HASS币
20
发表于 2019-4-28 18:09:19 | 显示全部楼层
本帖最后由 yuqiuyi99 于 2019-4-30 02:44 编辑

能发现设备,就是控制不了哦
homeassistant.exceptions.ServiceNotFound: (ServiceNotFound(...), 'Service fan.turn_on_request not found')
自己找到原因,因为插件没开启fan支持。换成switch就好了
回复

使用道具 举报

15

主题

135

帖子

565

积分

高级会员

Rank: 4

积分
565
金钱
430
HASS币
0
发表于 2020-4-2 19:09:39 | 显示全部楼层
怎么隐藏不想让小度发现的设备呢?加了dueros_hidden参数没起作用
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-1 12:24 , Processed in 0.060851 second(s), 40 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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