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

标题: haos利用蓝牙音响播放音乐步骤(手拉手教程) [打印本页]

作者: bugensui    时间: 2024-8-19 17:04
标题: haos利用蓝牙音响播放音乐步骤(手拉手教程)
本帖最后由 bugensui 于 2024-8-20 00:33 编辑

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

[attach]62641[/attach]

家里装修的时候,图便宜,就买了漫步者的回音壁,不是智能的,支持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的第一个蓝牙适配器,其他的配置介绍,你们可以去官方文档看介绍,根据自己的需求修改也行,也可以先用我的测试,后期在慢慢完善。
  1. # You don't need to add the MQTT details for Home Assistant with the add-on installation, it will be auto-discovered!
  2. global:
  3.   instanceName: changeme
  4.   integrations:
  5.     - homeAssistant
  6.     - bluetoothClassic
  7. bluetoothClassic:
  8.   hciDeviceId: 0
  9.   scanTimeLimit: 6
  10.   timeoutCycles: 2
  11.   interval: 10
  12.   inquireFromStart: true
  13.   preserveState: true
  14.   minRssi:
  15.     'FC:*******:E3': -10
  16.     default: -20
  17.   addresses:
  18.     - 'FC:********:E3'
  19.   entityOverrides:
  20.     'FC:**************:E3':
  21.         id: edifier_bluetooth
  22.         name: edifier bluetooth
复制代码

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

[attach]62643[/attach]

[attach]62642[/attach]

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


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

  1. bluetoothctl
  2. # note no SUDO available on HA VM
  3. list
  4. # Controller XXXXXX mydevice [default]
  5. power on
  6. agent on
  7. default-agent
  8. scan on
  9. # [NEW] Device AA:BB:CC:DD:EE:FF XYZ
  10. # Now I Press the pairing button on the device (disabling bluetooth on any nearby devices)
  11. pair AA:BB:CC:DD:EE:FF
  12. connect AA:BB:CC:DD:EE:FF
  13. trust AA:BB:CC:DD:EE:FF
  14. exit
复制代码

[attach]62645[/attach]

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

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

[attach]62646[/attach]
  1. - action: shell_command.bt_speeker_connect
  2.     data: {}
  3.     response_variable: return_response
  4.   - if:
  5.       - condition: template
  6.         value_template: "{{ return_response['returncode'] == 1}}"
  7.     then:
  8.       - action: notify.persistent_notification
  9.         metadata: {}
  10.         data:
  11.           message: "{{ return_response['stdout'] }}"
  12.           title: 蓝牙音响连接异常
复制代码


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

[attach]62647[/attach]

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

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


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





作者: sanwangxiang    时间: 2024-8-19 21:10
等着了 继续写啊
作者: bugensui    时间: 2024-8-19 23:45
sanwangxiang 发表于 2024-8-19 21:10
等着了 继续写啊

快写完了。心累
作者: z741554038    时间: 2024-9-10 13:41
mark 下 感谢分享
作者: yun59t    时间: 2024-9-28 22:30
大神,按你的步骤弄,不懂哪里有问题,或者哪有跳过什么了。帮忙看看看看问题出在哪:
1、安装加载项,并修改yml文件后,在mqtt中只显示传感器,未见蓝牙那个,不过在mqtt消息里能看到lineon的字样。
[attach]63989[/attach][attach]63988[/attach]

2、连接蓝牙后,怎样在VLC中形成播发实体?
[attach]63986[/attach][attach]63987[/attach][attach]63990[/attach]

作者: bugensui    时间: 2024-9-28 22:43
yun59t 发表于 2024-9-28 22:30
大神,按你的步骤弄,不懂哪里有问题,或者哪有跳过什么了。帮忙看看看看问题出在哪:
1、安装加载项,并修 ...

可以尝试重启下,haos系统,另外保持蓝牙音响是开机状态,取消掉手机或者pad和这台蓝牙音响的连接,试试
作者: yun59t    时间: 2024-9-28 23:00
bugensui 发表于 2024-9-28 22:43
可以尝试重启下,haos系统,另外保持蓝牙音响是开机状态,取消掉手机或者pad和这台蓝牙音响的连接,试试 ...

hoss已经连上蓝牙音响了,最后一张图上显示那个X1就是,关键是,怎样让蓝牙音响在ha里形成播放实体
作者: bugensui    时间: 2024-9-28 23:19
yun59t 发表于 2024-9-28 23:00
hoss已经连上蓝牙音响了,最后一张图上显示那个X1就是,关键是,怎样让蓝牙音响在ha里形成播放实体 ...

vlc加载项,输出,重启后,一般有你蓝牙音响的名字,有的话,你就选,没有的话,你默认,然后在集成里,安装vlc播放器,选择1个音乐,正常情况下,蓝牙音响会出声音
作者: yun59t    时间: 2024-9-28 23:57
bugensui 发表于 2024-9-28 23:19
vlc加载项,输出,重启后,一般有你蓝牙音响的名字,有的话,你就选,没有的话,你默认,然后在集成里, ...

加载项里VLC输出出现音响了,但是ha的集成里,自动发现的点连接直接是失败,然后手动打开集成,一个需要输入密码,一个不支持配置,怎么弄?
[attach]63992[/attach][attach]63991[/attach]

作者: bugensui    时间: 2024-9-29 00:12
yun59t 发表于 2024-9-28 23:57
加载项里VLC输出出现音响了,但是ha的集成里,自动发现的点连接直接是失败,然后手动打开集成,一个需要 ...

截图这个是对的,我的是自动发现的,你在试试,不行就重启,等自动发现,应该是不用密码,我没有输入密码
作者: yun59t    时间: 2024-9-29 00:13
bugensui 发表于 2024-9-29 00:12
截图这个是对的,我的是自动发现的,你在试试,不行就重启,等自动发现,应该是不用密码,我没有输入密码 ...

我是重启一次发现一次,但点连接就是显示错误,不懂为啥
作者: bugensui    时间: 2024-9-29 01:12
yun59t 发表于 2024-9-29 00:13
我是重启一次发现一次,但点连接就是显示错误,不懂为啥

vlc加载项,你是安装的那个,能截图不,我用的是Official add-ons里的
作者: yun59t    时间: 2024-9-29 11:33
bugensui 发表于 2024-9-29 01:12
vlc加载项,你是安装的那个,能截图不,我用的是Official add-ons里的

我也是安装Official add-ons里的。现在改用MPD了,可以在输出口识别天猫精灵蓝牙音箱,也能在集成里添加播放器。唯一的问题是,点下播发,几秒钟又自动停止了,音箱没出声音,而且蓝牙好像不会一直连着,会自动断掉。
作者: bugensui    时间: 2024-9-29 11:53
yun59t 发表于 2024-9-29 11:33
我也是安装Official add-ons里的。现在改用MPD了,可以在输出口识别天猫精灵蓝牙音箱,也能在集成里添加 ...

不会,你是用的x86虚拟机,还是盒子,我是x86的。mpd和vlc都能播放,而且很稳定。效果还不错,
作者: yun59t    时间: 2024-9-29 15:37
bugensui 发表于 2024-9-29 11:53
不会,你是用的x86虚拟机,还是盒子,我是x86的。mpd和vlc都能播放,而且很稳定。效果还不错, ...

用盒子,重启后蓝牙不会自动连上,要手动连一遍,是不是有什么命令是让它自动重启后重连一遍的?
作者: bugensui    时间: 2024-9-29 16:49
yun59t 发表于 2024-9-29 15:37
用盒子,重启后蓝牙不会自动连上,要手动连一遍,是不是有什么命令是让它自动重启后重连一遍的? ...

要做个自动化,条件是,ha启动后,延时几秒钟,发那个shell_command
作者: yun59t    时间: 2024-9-29 22:08
bugensui 发表于 2024-9-29 16:49
要做个自动化,条件是,ha启动后,延时几秒钟,发那个shell_command

OK,我发现,应该是我那个盒子有个口有问题,经常会自己断,没救了
作者: bugensui    时间: 2024-9-29 22:45
yun59t 发表于 2024-9-29 22:08
OK,我发现,应该是我那个盒子有个口有问题,经常会自己断,没救了

可能是,我是x86的,2000多的nas,应该比较稳定,我猜测这种盒子可能不是很稳定,
作者: neqq3    时间: 2025-1-17 17:46
不知道楼主有没有试过用owntone来播放音乐,owntone能通过集成接入ha,文档页上写着支持dlna,airplay,蓝牙,本地声卡播放之类的。可以通过 PulseAudio 进行蓝牙播放,然后在配置文件中调整 PulseAudio 播放的延迟,这样也许可以解决全屋音乐不同音箱之间的延迟问题
作者: bugensui    时间: 2025-1-18 00:11
neqq3 发表于 2025-1-17 17:46
不知道楼主有没有试过用owntone来播放音乐,owntone能通过集成接入ha,文档页上写着支持dlna,airplay,蓝牙 ...

owntone没有研究过,全屋音响我研究过,其实挺麻烦,可能必须要同1个协议,这个音响是蓝牙,那个是dlna。另外1个又是其他协议,可能就有延迟了。另外功率,不同的功率组合在一起放,效果也不好,挺头疼
作者: yjl    时间: 2025-5-14 10:40
感谢分享
作者: yjl    时间: 2025-5-18 02:10
大佬,你的最后一张图,请教一下你是如何把"ediffer回音壁“这个开关也加入在VLC-TELNET的设备界面来的
作者: bugensui    时间: 2025-5-18 10:38
yjl 发表于 2025-5-18 02:10
大佬,你的最后一张图,请教一下你是如何把"ediffer回音壁“这个开关也加入在VLC-TELNET的设备界面来的 ...

这个开关,是通过辅助元素创建的,创建辅助元素的时候,可以选择关联相关设备实体,他就会出现对应的位置
作者: yjl    时间: 2025-5-18 11:21
好的,谢谢大佬,我这又有新问题了。
我是树莓派4中安装的HAOS 15.2,昨晚把小米的一个早期的蓝牙音箱连接好后,现在播放音乐或者TTS都是音质非常差,声音不丝滑断断续续还夹杂有大量噪音,就是以前那种村里大喇叭的感觉。
音箱我确定没问题,音质还不错,是树莓派的蓝牙模块不行吗?
作者: bugensui    时间: 2025-5-18 11:34
yjl 发表于 2025-5-18 11:21
好的,谢谢大佬,我这又有新问题了。
我是树莓派4中安装的HAOS 15.2,昨晚把小米的一个早期的蓝牙音箱连接 ...

应该是的,不知道能不能在买个蓝牙适配器专门连接蓝牙音响,能链接上,那说明木有问题,音质差可能是蓝牙信号干扰或者适配器比较差吧,这个我解决不 了,我的音质非常好。没有任何杂音,跟手机连接蓝牙音响播放音乐音质一样。
作者: yjl    时间: 2025-5-18 11:41
好的,谢谢大佬的指导和分享




欢迎光临 『瀚思彼岸』» 智能家居技术论坛 (https://bbs.hassbian.com/) Powered by Discuz! X3.5