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

 找回密码
 立即注册
查看: 281|回复: 4

[技术探讨] 回馈论坛,略表芹意:用ha命令行实体控制jriver音乐播放器

[复制链接]

4

主题

70

帖子

459

积分

中级会员

Rank: 3Rank: 3

积分
459
金钱
389
HASS币
0
发表于 2024-3-23 17:28:39 | 显示全部楼层 |阅读模式
本帖最后由 leozen 于 2024-3-23 20:35 编辑

从接触home assistant以来,在论坛学习(照抄)不少东西。这两天折腾music asistant发现可以在ha中控制播放jriver,还要什么自行车。
免责声明:我是外行,并不懂原理,只是分享我折腾的可行经验,也不是技术分享,只是我花了时间去折腾,让有同样需求的朋友少花时间。

一、为什么为什么是jriver?

foobar2000:win下foobar2000格式通吃,资源占用极少,可惜win不适合跑服务,foobar2000也没有linux版本。最初在nas中用virtual box安装个win10,运行foobar2000的dlna服务,
但总觉得有点亏,为了一个3m的软件,占用10g内存,50g硬盘。

kodi:自然是第一个想到的,但是我没有显示器,接投影的地方又没有线网络,kodi直接启动不了,后来折腾过各种headless kodi,
也在安卓、win中都试过,最后还是放弃:要安装各种插件,臃肿,动不动死机(可能我使用方法不对)。

达菲、罗技、daphile和volumio、roon:我是木耳,听个响,这些都太阳春,基本只认wav,mp3,flac单曲,而我要的是只要随便丢个文件到电脑里就能出声。

最后才发现这个jriver,相当于win下的foobar2000吧。网上的格式,比如真真假假的DSD iso,cue sheet、ape,sacd,
都能准确生成到音乐库,都能出声。

二、home assistant 没有jriver集成。

自从装了ha之后,就想把jriver 弄到ha里,用语音来控制。但是home assistant 没有jriver集成,找遍网络也没有找到。后来退而求其次,
试了music assistant,在运行ha的机器里丢几十首通常格式的单曲,也能通过语音实现随机播放几首和停止播放功能。
但是,这软件更新的太勤快,今天能调用服务随机播放歌曲,明天又可能报错。最后决定放弃它的是,有次把ha的机器内存挤爆了,8g内存的小机器直接无响应,ssh都登不上了,只能ping通,当时正好是发了我的外网域名给别人之后,半小时后机器没反应了,还以为被人入侵了,因为ha机器几个月都稳定运行没有重启过。
这肯定不能忍受,哪天ha被又弄宕机,啥东西都用不了。但是music assistant有一个亮点,可以播放网络广播,可以当收音机用。

三、命令行控制jriver

jriver(我是docker安装的31版,网上各种开心版应该也行——win、mac、linux)。home assistant论坛搜索到几条关于jriver的记录,一个是用rest 开关,试了下不成功,
好像说rest 是每隔几十秒会去获取源的状态,不适合做这个。
另一个说是用command line实现。我不懂什么是rest,也不懂command line,问了ai结合command line 、jriver web交互的帮助文档,勉强实现了我要的功能:

configuration.yaml中加入如下部分:
#------------yaml检查通不过时,检查缩进----------------
command_line:
#播放随机相当一张cdplaylist的开关,开是播放,关是暂停
    - switch:
         command_on: '/usr/bin/curl -X GET "http://你的jriverip:52199/MCWS/v1/Playback/PlayPlaylist?Zone=10001&ZoneType=ID&PlaylistType=ID&Playlist=1073599635"'
         command_off: '/usr/bin/curl -X GET "你的jriverip:52199/MCWS/v1/Playback/Pause?State=-1&Zone=10001&ZoneType=ID"'
        name: jrmc_playing_switch
#下一首
    - switch:        
         command_on: '/usr/bin/curl -X GET "http://你的jriverip:52199/MCWS/v1/Playback/Next?Zone=10001&ZoneType=ID"'
         name: jrmc_playing_next
#上一首
    - switch:        
         command_on: '/usr/bin/curl -X GET "http://你的jriverip:52199/MCWS/v1/Playback/Previous?Zone=10001&ZoneType=ID"'
         name: jrmc_playing_prev
#音量加10%
    - switch:        
         command_on: '/usr/bin/curl -X GET "http://你的jriverip:52199/MCWS/v1/Playback/Volume?Level=0.1&Relative=1&Zone=10001&ZoneType=ID"'
         name: jrmc_playing_volplus
#音量减10%
    - switch:        
         command_on: '/usr/bin/curl -X POST "http://你的jriverip:52199/MCWS/v1/Playback/Volume?Level=-0.1&Relative=1&Zone=10001&ZoneType=ID"'
         name: jrmc_playing_volminus
#------------yaml检查通不过时,检查缩进----------------
其中:
Zone=10001中10001是从 jriver的交互文档中获取,里面有示例链接,点击就能找到你的jriver所有的zone id,改成你打算播放的音箱的zone id
Playlist=1073599635中1073599635是播放列表的序列号,也是同样方法获取。

现在把链接在浏览器中输入,看是否执行成功,成功后写进configuration.yaml。
重启ha或在开发者工具中重载“命令行实体”。然后在配置-设备与服务-实体注册标 中搜索 jrmc 应该能看到5个开关,试下打开关闭是否实现控制jriver。
如果没有,查看 配置-系统-日志的报错。

有了这5个开关,就可以通过小爱音箱和nodered控制jriver了,或者automation自动化。比较不好的地方就是对小爱说语音命令,小爱总是要回答,影响体验;
还有就是语音命令与小爱自身混了,比如音量加,小爱会把自身音量也增加。最好是用论坛发的离线语音音箱。

参考来源:

1. 命令行参考:Command Line - Home Assistant (home-assistant.io)
2. jriver的交互文档:      http://你的jriverip:52199/MCWS/v1/doc
3. 我的参照:  Trying to create switch that sends REST command, but not working - Configuration - Home Assistant Community (home-assistant.io)
4. 这里rest说不适合做switch:  Trying to create switch that sends REST command, but not working - Configuration - Home Assistant Community (home-assistant.io)
5. 这个没试,好像只是获取状态:  Value template for xml response from Jriver - Configuration - Home Assistant Community (home-assistant.io)










评分

参与人数 1金钱 +12 收起 理由
隔壁的王叔叔 + 12 论坛有你更精彩!

查看全部评分

回复

使用道具 举报

0

主题

74

帖子

217

积分

中级会员

Rank: 3Rank: 3

积分
217
金钱
143
HASS币
0
发表于 2024-3-23 19:13:28 | 显示全部楼层
学习学习一下!感谢分享!
回复

使用道具 举报

7

主题

1072

帖子

3361

积分

论坛元老

Rank: 8Rank: 8

积分
3361
金钱
2289
HASS币
0
发表于 2024-3-23 22:10:13 | 显示全部楼层
感谢分享,加分
回复

使用道具 举报

0

主题

4

帖子

112

积分

注册会员

Rank: 2

积分
112
金钱
108
HASS币
0
发表于 2024-3-27 17:12:01 | 显示全部楼层
学习学习,楼主docker用的哪个镜像,没找到31
回复

使用道具 举报

4

主题

70

帖子

459

积分

中级会员

Rank: 3Rank: 3

积分
459
金钱
389
HASS币
0
 楼主| 发表于 2024-3-27 20:42:09 | 显示全部楼层
本帖最后由 leozen 于 2024-3-27 20:43 编辑
sandigger 发表于 2024-3-27 17:12
学习学习,楼主docker用的哪个镜像,没找到31

应该是官方镜像: image: shiomax/jrivermc:latest-31-amd64,需要激活。现在版本是32,还是用32吧,因为docker激活的版本并不能随时再次激活,就是说激活2周后,如果哪天容器删除后不能再用原来激活文件再次激活jriver dockerV--更不用说从31升级到32了。
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-4-27 14:25 , Processed in 0.162425 second(s), 27 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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