本帖最后由 bugensui 于 2024-8-20 00:33 编辑
经常在论坛问问题,不好意思老是做伸手党,也想着分享点干货给大家,家里有台音响是蓝牙的,价格还不便宜,音质还凑合,毕竟现在赚钱也不容易,当时买音响也没有玩ha,也不知道什么wifi音响或者dlna,苹果协议之类的。现在就想着ha能统一管理,统一播放音乐,做全屋音乐方案,以下把步骤说下:
登录/注册后可看大图
微信图片_20240819224031.jpg (527.82 KB, 下载次数: 0)
下载附件
2024-8-19 22:41 上传
家里装修的时候,图便宜,就买了漫步者的回音壁,不是智能的,支持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 (88.14 KB, 下载次数: 0)
下载附件
2024-8-19 23:17 上传
登录/注册后可看大图
QQ截图20240819231403.jpg (111.5 KB, 下载次数: 0)
下载附件
2024-8-19 23:14 上传
二、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 (102.09 KB, 下载次数: 0)
下载附件
2024-8-19 23:28 上传
因为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 (125.83 KB, 下载次数: 0)
下载附件
2024-8-20 00:03 上传
- 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 (53.43 KB, 下载次数: 0)
下载附件
2024-8-20 00:13 上传
登录/注册后可看大图
QQ截图20240820001237.jpg (114.41 KB, 下载次数: 0)
下载附件
2024-8-20 00:13 上传
四、全屋音乐(不成熟尝试)
家里音响就2台,一台这个漫步者的回音壁(放在客厅),另外一台是支持dlna和苹果协议的wifi音响(放在书房),我利用ha—辅助元素-群组-媒体播放器组, 把2台音响组在一起,播放歌曲时,感觉2个音响不是很同步,wifi协议音响会慢3-4个字,我猜测应该是走的dlna,有延迟,蓝牙音响应该算本地接入,算正常。
结束语:
此方案用了3天,比较稳定,可能是ha跟音响很近,跟用光纤连接音响的效果,查不了多少,我是准备用这个回音壁蓝牙音箱专门放音乐,tts到时候搞个小喇叭,这样分开,以上步骤可能不完全适合大家,因为很多蓝牙音响不是红外开机的,有些可能是蓝牙音响通电就开机,拔电就是关机,或者有实体开关的,大家可以借鉴下用的到的步骤,毕竟每个人的设备情况不可能完全一样。