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

 找回密码
 立即注册
查看: 25795|回复: 23

[基础教程] 新版系统使用官方DLNA

  [复制链接]

11

主题

134

帖子

631

积分

论坛技术达人

积分
631
金钱
491
HASS币
20
发表于 2019-5-6 18:05:30 | 显示全部楼层 |阅读模式
本帖最后由 小灰 于 2019-5-6 18:24 编辑

上一次折腾homeassistant之后,由于比较忙,就没管过了,最近再来折腾,系统已经由0.8+变成0.9+了,很多都用不了,折腾了好几天,插件陆陆续续开始用起来,DLNA音箱一直无法接入,直到看到huex在一个贴子里的回复,但是有点简略,看了一些博客资料,才把这个弄清楚,并成功的把斐讯R1接入hass,先把它放出来供大家参考,理论上是可用于大部分的DLNA设备吧。需要用抓包的方法解决。
前言:官方DLNA使用方法
通常情况下,在configuration.yaml配置文件中加入如下代码就可以发现一部分的DLNA设备,详情见官方文档
discovery:
  enable:
    - dlna_dmr

当有的设备发现不了,可以通过增加dlna_dmr的方式解决:
media_player:
  - platform: dlna_dmr
    url: http://192.168.0.10:9197/description.xml

其中的url我尝试过使用ip加端口,但是只成功一次,过一会儿就没了,就像huex说的那样,url通常是不固定的,需要的是DLNA的通告地址,这个是固定的,所以,下边的教程都是关于获取DLNA的通告地址的。

第一步:抓包
首先确认DLNA设备IP地址,在路由器里将其固定,例如我给它设定的IP是 222.222.222.6  ,抓包工具挺多的,我用的是路由器抓包,使用tcpdump,putty进入路由器系统,输入指令:  tcpdump host 222.222.222.6 -w r1.pcap    其中 222.222.222.6替换成你自己的DLNA设备ip,r1.pcap中r1为你保存的包的名字,后缀为pcap。输入指令过了一段时间就可以通过  Ctrl 加 C  结束,我大概是十多二十秒就结束这个了,这样抓包就完成了。(tcpdump功能很强大,我只会简单的使用,大神可以自定义,可以获取指定端口,指定大小的包等等)

第二步:wireshark分析包文件
首先使用winscp等工具从路由器里把保存的r1.pcap文件拷出来,也可以通过其他途径,自己整。
然后直接把r1.pcap文件拖到wireshark就可以了。
r1.jpg
从中可以看到各种通信协议,选择其中一个SSDP协议的,选中后下边的框框中选择Simple Service Discovery Protocol,往下可以看到Location,那个就是通信地址。
r1.1.jpg
另外还可以在SSDP那一条右键,选择追踪流,UDP流,然后就可以看到通告地址,即Location。


r1.2.jpg
所以,我的DLNA设备通告地址为:  http://222.222.222.6:39620/description.xml
我的配置文件如下:
discovery:


media_player:
  - platform: dlna_dmr
    url: http://222.222.222.6:39620/description.xml

因为我直接使用通告地址,没开启自动发现,所以,discovery那里不用配置。
这次时间不够,写的有点乱,大家将就看看,后边再整理,我做实验去了。。。。。。






评分

参与人数 2金钱 +22 收起 理由
coregeek + 2 厉害了word楼主!
+ 20 这哪是基础教程,简直是修仙教程~.

查看全部评分

回复

使用道具 举报

11

主题

134

帖子

631

积分

论坛技术达人

积分
631
金钱
491
HASS币
20
 楼主| 发表于 2019-5-6 18:14:57 | 显示全部楼层
谁能告诉我那个代码嵌入咋整?改了好多遍,有链接的那个最后都会变啊
回复

使用道具 举报

7

主题

1975

帖子

5663

积分

论坛元老

流水无味

Rank: 8Rank: 8

积分
5663
金钱
3688
HASS币
145

灌水之王

发表于 2019-5-6 18:46:36 | 显示全部楼层
帮顶 让其他人看到
回复

使用道具 举报

13

主题

152

帖子

811

积分

高级会员

Rank: 4

积分
811
金钱
649
HASS币
0
发表于 2019-5-6 21:34:23 | 显示全部楼层
也可以不用抓包那么麻烦,找个uPnp Analyzer之类的就行了。可参考我写的教您用好Home Assistant各种插件系列之媒体播放器插件DLNA_DMR
回复

使用道具 举报

39

主题

2050

帖子

7701

积分

元老级技术达人

积分
7701
金钱
5636
HASS币
110
发表于 2019-5-6 21:43:41 | 显示全部楼层
退不了的R1貌似可以用了.....也不用折腾TTS 蓝牙音箱了?
回复

使用道具 举报

123

主题

4626

帖子

1万

积分

管理员

囧死

Rank: 9Rank: 9Rank: 9

积分
16015
金钱
11304
HASS币
45
发表于 2019-5-6 22:46:32 | 显示全部楼层
小灰 发表于 2019-5-6 18:14
谁能告诉我那个代码嵌入咋整?改了好多遍,有链接的那个最后都会变啊

最简单的就是加个[code]标签
回复

使用道具 举报

11

主题

134

帖子

631

积分

论坛技术达人

积分
631
金钱
491
HASS币
20
 楼主| 发表于 2019-5-7 00:29:21 | 显示全部楼层
hugo 发表于 2019-5-6 21:34
也可以不用抓包那么麻烦,找个uPnp Analyzer之类的就行了。可参考我写的教您用好Home Assistant各种插件系 ...

你好,非常感谢提供了一个更加高效的方法,我能把这个方法添加到我的帖子里吗?我会添加引用的
回复

使用道具 举报

11

主题

324

帖子

1332

积分

金牌会员

Rank: 6Rank: 6

积分
1332
金钱
1008
HASS币
0
发表于 2019-5-7 08:58:50 | 显示全部楼层
我的经验,不需要抓包,只需要配置文件里写入:
discovery:
  enable:
    - dlna_dmr
家里的小度和r1都没问题。
回复

使用道具 举报

13

主题

333

帖子

1418

积分

金牌会员

Rank: 6Rank: 6

积分
1418
金钱
1085
HASS币
0
发表于 2019-5-7 09:52:48 | 显示全部楼层
一般来说,如果能用uPnp Analyzer的,也不需要填地址了。
回复

使用道具 举报

7

主题

348

帖子

1078

积分

金牌会员

Rank: 6Rank: 6

积分
1078
金钱
730
HASS币
0
发表于 2019-5-7 12:09:40 | 显示全部楼层
感谢分享,学习学习……
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-4-29 12:34 , Processed in 0.079473 second(s), 36 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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