找回密码
 立即注册
搜索
查看: 3697|回复: 25

[技术探讨] haos利用蓝牙音响播放音乐步骤(手拉手教程)

[复制链接]

176

主题

2666

回帖

8933

积分

元老级技术达人

积分
8933
金钱
6081
HASS币
50
发表于 2024-8-19 17:04:57 | 显示全部楼层 |阅读模式
本帖最后由 bugensui 于 2024-8-20 00:33 编辑

经常在论坛问问题,不好意思老是做伸手党,也想着分享点干货给大家,家里有台音响是蓝牙的,价格还不便宜,音质还凑合,毕竟现在赚钱也不容易,当时买音响也没有玩ha,也不知道什么wifi音响或者dlna,苹果协议之类的。现在就想着ha能统一管理,统一播放音乐,做全屋音乐方案,以下把步骤说下:

微信图片_20240819224031.jpg

家里装修的时候,图便宜,就买了漫步者的回音壁,不是智能的,支持3.5,光纤,同轴,蓝牙等,大概700左右,扔了可惜,之前已经用博联红外学习了红外编码,已经用ha能控制音响开关机、调整音量、切换音频接口了,就是不能获取到音响的状态,以及播放音乐,电视柜两幅画下面就放着威联通nas,haos系统就装在这台设备上,ha设备虽然离很音响很近,也可以用音频线连接音响,但是线材裸露也不好看,还是想用蓝牙接入,一直在找简单方法,直到前2天,看到一位论坛大佬分享([插件集成] 【小白专用】通过手机蓝牙判断人员是否在家(room-assistant)),这个工具的作用是(利用ha的usb蓝牙适配器检测经典蓝牙设备是否存在),比如传统的蓝牙音响,这种是bt协议,也就是经典蓝牙,一般的esp32都是ble低功耗蓝牙,esphome官方目前是不支持查询经典蓝牙。

我的ha情况:我是安装在威联通nas虚拟机里的haos系统,支持加载项的,根据ha官方文档,买了usb蓝牙适配器。是免驱的,需要在haos虚拟机管理里,直通这个usb蓝牙。起初是为了给ha读取家里的一些蓝牙协议的温湿度传感器,比如小米的温湿度计,利用这个usb蓝牙适配器可以读取到。


需要用到的加载项有:mqtt,vlc,room-assistant(跟踪经典蓝牙设备,自动同步到mqtt集成),需要用到的集成有:官方Bluetooth集成,mqtt,VLC Telnet(一般vlc加载项安装好,会自动发现集成)



一、利用room-assistant加载项,判断蓝牙音响是否存在
在HomeAssistant的加载项商店里,通过https://github.com/mKeRix/hassio-repo新增仓库,然后安装“room-assistant”加载项。ha里要配置好mqtt加载项和mqtt集成,这个room-assistant插件发现的蓝牙设备存在传感器,会自动出现mqtt集成里,安装好room-assistant插件后,会自动在ha的目录文件里生成配置文件,路径是:config\room_assistant\local.yml ,你需要修改local.yml配置文件,以下是我的配置文件,带*号的是需要追踪的蓝牙设备mac地址(蓝牙音响的mac地址自己想办法去找,并且取消要家里的手机、电脑、pad等跟这台蓝牙音响的配对,这台蓝牙音响以后就专属给ha用,因为如果不取消配对,一旦蓝牙音响跟手机/PC/PAD连上了。这个插件可能就扫描不到,获取不到正确的状态),id和name是显示在mqtt里的实体id和名字,自己随便取,interval是查询蓝牙音响状态的时间间隔,我设置了10秒一次,hciDeviceId: 0是ha的第一个蓝牙适配器,其他的配置介绍,你们可以去官方文档看介绍,根据自己的需求修改也行,也可以先用我的测试,后期在慢慢完善。
# You don't need to add the MQTT details for Home Assistant with the add-on installation, it will be auto-discovered!
global:
  instanceName: changeme
  integrations:
    - homeAssistant
    - bluetoothClassic
bluetoothClassic:
  hciDeviceId: 0
  scanTimeLimit: 6
  timeoutCycles: 2
  interval: 10
  inquireFromStart: true
  preserveState: true
  minRssi:
    'FC:*******:E3': -10
    default: -20
  addresses:
    - 'FC:********:E3'
  entityOverrides:
    'FC:**************:E3':
        id: edifier_bluetooth
        name: edifier bluetooth

配置文件配置好以后,重启下“room-assistant”加载项,如果顺利的话,mqtt里会多出2个实体,1个是控制实体(好像是开启扫描的开关和查询设备的数量,不想扫描了。关了就行),另外1个是蓝牙音响的存在追踪传感器(我们要用这个),如下图这样,有个“edifier bluetooth Tracker”传感器实体,以后我们用这个传感器实体,就可以判定蓝牙音响有没有开机,离家就是关机,在家就是开机,但是有个延迟,因为“room-assistant”加载项10秒扫描1次,可能开机了15-20秒才会有状态反馈,但是影响不大。

QQ截图20240819231740.jpg

QQ截图20240819231403.jpg

二、haos虚拟机通过usb蓝牙适配器连接蓝牙音响


登录虚拟机控制台,输入相关命令连接蓝牙音响,具体步骤:在 ha 提示符下键入 login 命令以进入 shell 提示符,然后输入bluetoothctl蓝牙命令,haos会扫描附近蓝牙设备,反正你已经知道了mac的地址了,你可以直接输入以下3次命令,pair AA:****:FF  connect AA:*****:FF    trust AA:****:FF  分别是:配对 、连接、信任、mac地址换成自己蓝牙音响的,以下是相关命令的介绍。最后输入exit命令退出当前进程,正常如果连接蓝牙音响成功的话,虚拟机控制台命令行会有设备的提示。

bluetoothctl
# note no SUDO available on HA VM
list
# Controller XXXXXX mydevice [default]
power on
agent on
default-agent
scan on
# [NEW] Device AA:BB:CC:DD:EE:FF XYZ
# Now I Press the pairing button on the device (disabling bluetooth on any nearby devices)
pair AA:BB:CC:DD:EE:FF
connect AA:BB:CC:DD:EE:FF
trust AA:BB:CC:DD:EE:FF
exit

QQ截图20240819232636.jpg

因为haos的蓝牙已经信任了这台蓝牙音响,后期的再连接蓝牙就很简单了,不需要这些配置操作了,需要在configuration.yaml 配置文件里,增加shell_command命令,配置这条代码,带*号的mac地址换成自己蓝牙音响地址就行,以后就可以在ha的服务里调用bt_speeker_connect服务,就会触发连接蓝牙音响,配置好后,重启haos系统。
shell_command:
bt_speeker_connect: bluetoothctl connect AB:*******:EF

可以的话,最好配置一条自动化,“room-assistant”加载项通过mqtt生成的蓝牙设备存在传感器,如果在家(代表开机)持续几秒以上,时间自己定,就执行这条shell_command命令,自动连接蓝牙音响,如果不在家了,就代表蓝牙音响已经关机了,就自动断开连接了,可以不用执行任何操作,自动化如下:shell_command命令是可以查看执行结果的,returncode一般是0是代表成功,如果returncode是1.可能就出错,比如蓝牙音响关机了,所以连接不上,在自动化里回调下,如果连接出错,就回调报错内容,发送通知到ha系统里,方便自己查看。

QQ截图20240820000249.jpg
- action: shell_command.bt_speeker_connect
    data: {}
    response_variable: return_response
  - if:
      - condition: template
        value_template: "{{ return_response['returncode'] == 1}}"
    then:
      - action: notify.persistent_notification
        metadata: {}
        data:
          message: "{{ return_response['stdout'] }}"
          title: 蓝牙音响连接异常


三、VLC播放器用蓝牙音响播放音乐
在vlc加载项,配置,音频输出,选择自己的蓝牙音响,然后保存重启vlc加载项即可。然后在VLC Telnet集成里的播放器,播放本地音乐,蓝牙音响就会出声音了。也可以用vlc来播放tts,都支持,就是不知道怎么让vlc支持dlna投屏,还没有研究出来。
QQ截图20240820001206.jpg

QQ截图20240820001237.jpg

四、全屋音乐(不成熟尝试)

家里音响就2台,一台这个漫步者的回音壁(放在客厅),另外一台是支持dlna和苹果协议的wifi音响(放在书房),我利用ha—辅助元素-群组-媒体播放器组, 把2台音响组在一起,播放歌曲时,感觉2个音响不是很同步,wifi协议音响会慢3-4个字,我猜测应该是走的dlna,有延迟,蓝牙音响应该算本地接入,算正常。


结束语:
此方案用了3天,比较稳定,可能是ha跟音响很近,跟用光纤连接音响的效果,查不了多少,我是准备用这个回音壁蓝牙音箱专门放音乐,tts到时候搞个小喇叭,这样分开,以上步骤可能不完全适合大家,因为很多蓝牙音响不是红外开机的,有些可能是蓝牙音响通电就开机,拔电就是关机,或者有实体开关的,大家可以借鉴下用的到的步骤,毕竟每个人的设备情况不可能完全一样。




回复

使用道具 举报

yjl 手机认证

8

主题

190

回帖

861

积分

高级会员

积分
861
金钱
663
HASS币
0
发表于 2025-5-18 11:41:50 | 显示全部楼层
好的,谢谢大佬的指导和分享
总为浮云能避日,长安不见使人愁
回复

使用道具 举报

176

主题

2666

回帖

8933

积分

元老级技术达人

积分
8933
金钱
6081
HASS币
50
 楼主| 发表于 2025-5-18 11:34:53 | 显示全部楼层
yjl 发表于 2025-5-18 11:21
好的,谢谢大佬,我这又有新问题了。
我是树莓派4中安装的HAOS 15.2,昨晚把小米的一个早期的蓝牙音箱连接 ...

应该是的,不知道能不能在买个蓝牙适配器专门连接蓝牙音响,能链接上,那说明木有问题,音质差可能是蓝牙信号干扰或者适配器比较差吧,这个我解决不 了,我的音质非常好。没有任何杂音,跟手机连接蓝牙音响播放音乐音质一样。
回复

使用道具 举报

yjl 手机认证

8

主题

190

回帖

861

积分

高级会员

积分
861
金钱
663
HASS币
0
发表于 2025-5-18 11:21:36 | 显示全部楼层
好的,谢谢大佬,我这又有新问题了。
我是树莓派4中安装的HAOS 15.2,昨晚把小米的一个早期的蓝牙音箱连接好后,现在播放音乐或者TTS都是音质非常差,声音不丝滑断断续续还夹杂有大量噪音,就是以前那种村里大喇叭的感觉。
音箱我确定没问题,音质还不错,是树莓派的蓝牙模块不行吗?
总为浮云能避日,长安不见使人愁
回复

使用道具 举报

176

主题

2666

回帖

8933

积分

元老级技术达人

积分
8933
金钱
6081
HASS币
50
 楼主| 发表于 2025-5-18 10:38:12 | 显示全部楼层
yjl 发表于 2025-5-18 02:10
大佬,你的最后一张图,请教一下你是如何把"ediffer回音壁“这个开关也加入在VLC-TELNET的设备界面来的 ...

这个开关,是通过辅助元素创建的,创建辅助元素的时候,可以选择关联相关设备实体,他就会出现对应的位置
回复

使用道具 举报

yjl 手机认证

8

主题

190

回帖

861

积分

高级会员

积分
861
金钱
663
HASS币
0
发表于 2025-5-18 02:10:20 | 显示全部楼层
大佬,你的最后一张图,请教一下你是如何把"ediffer回音壁“这个开关也加入在VLC-TELNET的设备界面来的
总为浮云能避日,长安不见使人愁
回复

使用道具 举报

yjl 手机认证

8

主题

190

回帖

861

积分

高级会员

积分
861
金钱
663
HASS币
0
发表于 2025-5-14 10:40:15 | 显示全部楼层
感谢分享
总为浮云能避日,长安不见使人愁
回复

使用道具 举报

176

主题

2666

回帖

8933

积分

元老级技术达人

积分
8933
金钱
6081
HASS币
50
 楼主| 发表于 2025-1-18 00:11:54 | 显示全部楼层
neqq3 发表于 2025-1-17 17:46
不知道楼主有没有试过用owntone来播放音乐,owntone能通过集成接入ha,文档页上写着支持dlna,airplay,蓝牙 ...

owntone没有研究过,全屋音响我研究过,其实挺麻烦,可能必须要同1个协议,这个音响是蓝牙,那个是dlna。另外1个又是其他协议,可能就有延迟了。另外功率,不同的功率组合在一起放,效果也不好,挺头疼
回复

使用道具 举报

0

主题

6

回帖

114

积分

注册会员

积分
114
金钱
108
HASS币
0
发表于 2025-1-17 17:46:43 | 显示全部楼层
不知道楼主有没有试过用owntone来播放音乐,owntone能通过集成接入ha,文档页上写着支持dlna,airplay,蓝牙,本地声卡播放之类的。可以通过 PulseAudio 进行蓝牙播放,然后在配置文件中调整 PulseAudio 播放的延迟,这样也许可以解决全屋音乐不同音箱之间的延迟问题
回复

使用道具 举报

176

主题

2666

回帖

8933

积分

元老级技术达人

积分
8933
金钱
6081
HASS币
50
 楼主| 发表于 2024-9-29 22:45:31 | 显示全部楼层
yun59t 发表于 2024-9-29 22:08
OK,我发现,应该是我那个盒子有个口有问题,经常会自己断,没救了

可能是,我是x86的,2000多的nas,应该比较稳定,我猜测这种盒子可能不是很稳定,
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian ( 晋ICP备17001384号-1 )

GMT+8, 2025-6-30 20:45 , Processed in 0.057197 second(s), 12 queries , MemCached On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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