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

 找回密码
 立即注册
查看: 1606|回复: 17

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

[复制链接]

153

主题

2390

帖子

7423

积分

元老级技术达人

积分
7423
金钱
5028
HASS币
30
发表于 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到时候搞个小喇叭,这样分开,以上步骤可能不完全适合大家,因为很多蓝牙音响不是红外开机的,有些可能是蓝牙音响通电就开机,拔电就是关机,或者有实体开关的,大家可以借鉴下用的到的步骤,毕竟每个人的设备情况不可能完全一样。




回复

使用道具 举报

3

主题

51

帖子

679

积分

高级会员

Rank: 4

积分
679
金钱
628
HASS币
0
发表于 2024-8-19 21:10:49 | 显示全部楼层
等着了 继续写啊
回复

使用道具 举报

153

主题

2390

帖子

7423

积分

元老级技术达人

积分
7423
金钱
5028
HASS币
30
 楼主| 发表于 2024-8-19 23:45:42 | 显示全部楼层

快写完了。心累
回复

使用道具 举报

6

主题

256

帖子

1757

积分

金牌会员

Rank: 6Rank: 6

积分
1757
金钱
1501
HASS币
0
发表于 2024-9-10 13:41:53 | 显示全部楼层
mark 下 感谢分享
回复

使用道具 举报

34

主题

189

帖子

898

积分

高级会员

Rank: 4

积分
898
金钱
709
HASS币
0
发表于 2024-9-28 22:30:46 | 显示全部楼层
大神,按你的步骤弄,不懂哪里有问题,或者哪有跳过什么了。帮忙看看看看问题出在哪:
1、安装加载项,并修改yml文件后,在mqtt中只显示传感器,未见蓝牙那个,不过在mqtt消息里能看到lineon的字样。
Snipaste_2024-09-28_22-13-13.png Snipaste_2024-09-28_22-13-08.png

2、连接蓝牙后,怎样在VLC中形成播发实体?
Snipaste_2024-09-28_22-10-36.png Snipaste_2024-09-28_22-11-27.png Snipaste_2024-09-28_22-16-19.png
回复

使用道具 举报

153

主题

2390

帖子

7423

积分

元老级技术达人

积分
7423
金钱
5028
HASS币
30
 楼主| 发表于 2024-9-28 22:43:39 | 显示全部楼层
yun59t 发表于 2024-9-28 22:30
大神,按你的步骤弄,不懂哪里有问题,或者哪有跳过什么了。帮忙看看看看问题出在哪:
1、安装加载项,并修 ...

可以尝试重启下,haos系统,另外保持蓝牙音响是开机状态,取消掉手机或者pad和这台蓝牙音响的连接,试试
回复

使用道具 举报

34

主题

189

帖子

898

积分

高级会员

Rank: 4

积分
898
金钱
709
HASS币
0
发表于 2024-9-28 23:00:33 | 显示全部楼层
bugensui 发表于 2024-9-28 22:43
可以尝试重启下,haos系统,另外保持蓝牙音响是开机状态,取消掉手机或者pad和这台蓝牙音响的连接,试试 ...

hoss已经连上蓝牙音响了,最后一张图上显示那个X1就是,关键是,怎样让蓝牙音响在ha里形成播放实体
回复

使用道具 举报

153

主题

2390

帖子

7423

积分

元老级技术达人

积分
7423
金钱
5028
HASS币
30
 楼主| 发表于 2024-9-28 23:19:21 | 显示全部楼层
yun59t 发表于 2024-9-28 23:00
hoss已经连上蓝牙音响了,最后一张图上显示那个X1就是,关键是,怎样让蓝牙音响在ha里形成播放实体 ...

vlc加载项,输出,重启后,一般有你蓝牙音响的名字,有的话,你就选,没有的话,你默认,然后在集成里,安装vlc播放器,选择1个音乐,正常情况下,蓝牙音响会出声音
回复

使用道具 举报

34

主题

189

帖子

898

积分

高级会员

Rank: 4

积分
898
金钱
709
HASS币
0
发表于 2024-9-28 23:57:34 | 显示全部楼层
bugensui 发表于 2024-9-28 23:19
vlc加载项,输出,重启后,一般有你蓝牙音响的名字,有的话,你就选,没有的话,你默认,然后在集成里, ...

加载项里VLC输出出现音响了,但是ha的集成里,自动发现的点连接直接是失败,然后手动打开集成,一个需要输入密码,一个不支持配置,怎么弄?
Snipaste_2024-09-28_23-55-33.png Snipaste_2024-09-28_23-55-02.png
回复

使用道具 举报

153

主题

2390

帖子

7423

积分

元老级技术达人

积分
7423
金钱
5028
HASS币
30
 楼主| 发表于 2024-9-29 00:12:27 | 显示全部楼层
yun59t 发表于 2024-9-28 23:57
加载项里VLC输出出现音响了,但是ha的集成里,自动发现的点连接直接是失败,然后手动打开集成,一个需要 ...

截图这个是对的,我的是自动发现的,你在试试,不行就重启,等自动发现,应该是不用密码,我没有输入密码
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2025-1-10 12:45 , Processed in 0.261228 second(s), 34 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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