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

 找回密码
 立即注册
查看: 53415|回复: 36

[进阶教程] 【号外】闲置手机+Linux deploy+Squeezelite+LMS打造廉价DSD播放系统

[复制链接]

5

主题

209

帖子

2012

积分

金牌会员

Rank: 6Rank: 6

积分
2012
金钱
1793
HASS币
45
发表于 2019-1-6 10:44:08 | 显示全部楼层 |阅读模式
本帖最后由 wudijushi 于 2021-2-10 11:48 编辑

前置条件:
1、已root安卓手机
2、安装 Linux deploy + ubuntu

参考:
[进阶教程] 闲置安卓手机安装HA变身智能家居中枢,及网关接入教程
[进阶教程] 用树莓派打通任督二脉控制你家里所有能发声音有wifi的设备
https://github.com/meefik/linuxdeploy/issues/223

目标:
使用罗技的Logitech Media Server系统集中控制各种能发声的设备并接入HA成为智能家居音乐子系统!虽然已经有不少现成的产品,目前知名度较高的就是sonos音箱,价格还算ok,但我们这次的目标是要利用闲置手机实现同样高大上的效果!!土豪可以绕路了...
我的另一篇文章:【docker】【Node-Red】【智能家居音乐系统】HA接入网易云音乐

正文:
1、root手机、安装Linux deploy和ubuntu的过程就跳过了,详细看上面给出的帖子链接就可以了。
2、安装 Squeezelite  ,sudo apt-get install squeezelite -y
3、参考上面链接三,执行下面脚本,外文好的可以看原贴,不想看的直接看我的使用步骤就好啦

                               
登录/注册后可看大图

最后出来这些信息:

                               
登录/注册后可看大图

然后我们组合一下脚本,复制 To Start:部分,每一行后面加 |,然后丢到SSH里运行命令(不再使用后请使用To Stop部分还原设置或重启手机)
amixer cset numid=407,iface=MIXER,name='RX1 MIX1 INP1' 5 |
amixer cset numid=406,iface=MIXER,name='RX1 MIX1 INP2' 10 |
amixer cset numid=404,iface=MIXER,name='RX2 MIX1 INP1' 6 |
amixer cset numid=403,iface=MIXER,name='RX2 MIX1 INP2' 11 |
amixer cset numid=26,iface=MIXER,name='HPHL Volume' 10 |
amixer cset numid=27,iface=MIXER,name='HPHR Volume' 10 |
amixer cset numid=371,iface=MIXER,name='SLIM TX3 MUX' 1 |
amixer cset numid=369,iface=MIXER,name='SLIM TX5 MUX' 2 |
amixer cset numid=28,iface=MIXER,name='RX1 Digital Volume' 84 |
amixer cset numid=29,iface=MIXER,name='RX2 Digital Volume' 84 |
amixer cset numid=304,iface=MIXER,name='SLIMBUS_0_RX Audio Mixer MultiMedia1' on
最后一步启动 : squeezelite -n  hello
一般来说就可以在LMS里看到并播放音乐啦!
如果还是不行的话,就要再指定一下输出设备,从上面执行的脚本开始处可以看到我手机的声卡信息如下:hw:0,0

                               
登录/注册后可看大图

接着 squeezelite -l  列出输出设备,有很多,但根据我直觉肯定是红色框框那个(不要问我为什么哈),再次启动 squeezelite -o hw:CARD=apq8064tablasnd,DEV=0  -n hello   试试!

                               
登录/注册后可看大图



后话:
1、squeezelite 能在很多设备上安装,比如树莓派,或者便宜点的香橙派,网上还有安装到openWRT 的文章,外接一个淘宝十多块的USB声卡就可以。
2、Logitech Media Server 支持安装的平台也很多,树莓派、Linux、window、Mac OS、群晖套件中心也有。
3、上面的方法针对使用环境不同,设置也不同,比如说用手机本身的扬声器发声和通过音频线连接音箱发声,运行脚本生成的设置信息是不同的。蓝牙连接还没测试,留待大家去尝试了。
4、Linux deploy下加入到rc.local做一个开机启动非常方便,稳定性正在测试....


脚本:
#!/bin/bash[indent]
sudo apt install alsa-utils

echo Play music or start recording and press enter.
read key

c=$(grep RUNNING /proc/asound/card*/pcm*/sub*/status | grep -o 'card[0-9]*' | grep -o [0-9]*) && echo "Card: $c"
p=$(grep RUNNING /proc/asound/card*/pcm*/sub*/status | grep -o 'pcm[0-9]*p' | grep -o [0-9]*) && { echo "Playback device: $p"; echo "i.e. alsa device is hw:$c,$p"; }
r=$(grep RUNNING /proc/asound/card*/pcm*/sub*/status | grep -o 'pcm[0-9]*c' | grep -o [0-9]*) && { echo "Recording device: $r"; echo "i.e. alsa device is hw:$c,$r"; }

echo
printf 'Stop playback / recording and press enter.'
read key

# alsactl doesn't seem to work when piped to grep
echo 'Start and stop playback / recording and observe values changes.'
sleep 3
echo 'Terminate when done.'
echo
trap 'pkill -1 alsactl' SIGINT
alsactl monitor

trap "kill $" SIGINT
echo
printf 'Write Control Identifier (nmuid) of changed values with space: '
read -a val

for v in ${val[@]}
do
        printf 'Play music / start recording and press enter.'
        read key
        v1="$(amixer cget "$(amixer controls | grep "numid=${v},")" | grep ': values=' | cut -d= -f2)"
        printf 'Stop playback / recording and press enter.'
        read key
        sleep 3
        v2="$(amixer cget "$(amixer controls | grep "numid=${v},")" | grep ': values=' | cut -d= -f2)"

        if [ "$v1" = "$v2" ]; then
                echo "ERROR: No change in values detected for Control Identifier $v."
                continue
        fi

        V1="$(printf '%s\n%s' "$V1" "amixer cset $(amixer controls | grep "numid=${v},") $v1")"
        V2="$(printf '%s\n%s' "$V2" "amixer cset $(amixer controls | grep "numid=${v},") $v2")"
done

[ -z "$V1" ] || { printf '\n To start:'; echo "$V1"; }
[ -z "$V2" ] || { printf '\n To stop:'; echo "$V2"; }

评分

参与人数 1金钱 +20 HASS币 +20 收起 理由
+ 20 + 20 膜拜大神!

查看全部评分

回复

使用道具 举报

123

主题

4626

帖子

1万

积分

管理员

囧死

Rank: 9Rank: 9Rank: 9

积分
16009
金钱
11298
HASS币
45
发表于 2019-1-6 11:14:03 | 显示全部楼层
楼主家宽带没有封443端口,好幸福啊!
回复

使用道具 举报

6

主题

179

帖子

4181

积分

论坛元老

Rank: 8Rank: 8

积分
4181
金钱
4002
HASS币
0
发表于 2019-1-6 11:52:50 来自手机 | 显示全部楼层
终于有教程了,等很久了!
回复

使用道具 举报

5

主题

209

帖子

2012

积分

金牌会员

Rank: 6Rank: 6

积分
2012
金钱
1793
HASS币
45
 楼主| 发表于 2019-1-6 13:14:29 | 显示全部楼层
Jones 发表于 2019-1-6 11:14
楼主家宽带没有封443端口,好幸福啊!

443应该还有很多地方没封的吧
回复

使用道具 举报

0

主题

50

帖子

284

积分

中级会员

Rank: 3Rank: 3

积分
284
金钱
234
HASS币
0
发表于 2019-1-6 14:05:31 | 显示全部楼层
虽然不知道在说些什么,但感觉好厉害的样子
回复

使用道具 举报

8

主题

863

帖子

5116

积分

论坛元老

Rank: 8Rank: 8

积分
5116
金钱
4253
HASS币
0
发表于 2019-1-6 17:29:18 | 显示全部楼层
楼主666666
回复

使用道具 举报

7

主题

1974

帖子

5657

积分

论坛元老

流水无味

Rank: 8Rank: 8

积分
5657
金钱
3683
HASS币
145

灌水之王

发表于 2019-1-6 18:12:18 | 显示全部楼层
学习下 看看
回复

使用道具 举报

74

主题

1942

帖子

7885

积分

元老级技术达人

积分
7885
金钱
5893
HASS币
430

活跃会员教程狂人

发表于 2019-1-6 21:59:49 | 显示全部楼层
不错,我一直没搞定插件里面的原生的airplay的播放问题。
CBBDCC37-BBE9-46DA-A783-E32711E2311C(20190105-173.jpg
所有过往,皆为序章。
回复

使用道具 举报

5

主题

209

帖子

2012

积分

金牌会员

Rank: 6Rank: 6

积分
2012
金钱
1793
HASS币
45
 楼主| 发表于 2019-1-7 10:37:46 | 显示全部楼层
咸味土豆 发表于 2019-1-6 21:59
不错,我一直没搞定插件里面的原生的airplay的播放问题。

哇,你这么多设备,顺便问下这个app是?
回复

使用道具 举报

9

主题

534

帖子

4418

积分

元老级技术达人

积分
4418
金钱
3874
HASS币
60
发表于 2019-1-7 13:12:45 | 显示全部楼层
没太看明白,squeezelite 这个用途。好像我安装shairport的也一样可以实现。我是通过shairport 和forked-daapd 实现多房间同步部分。可以ha控制。
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-4-20 23:33 , Processed in 0.059105 second(s), 35 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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