请选择 进入手机版 | 继续访问电脑版

『瀚思彼岸』» 智能家居第一站

 找回密码
 立即注册
查看: 513|回复: 11

[基础教程] 完美实现蓝牙音箱TTS语音播报!mopidy 虚拟环境HA用户下安装HA

[复制链接]

7

主题

215

帖子

858

积分

高级会员

Rank: 4

积分
858
金钱
638
HASS币
20
发表于 2018-12-14 13:20:06 | 显示全部楼层 |阅读模式
本帖最后由 arrive 于 2018-12-14 13:22 编辑

#####################-------------运行环境-------------#####################
运行环境:
  • Lubuntu 18.04.1 LTS desktop-amd64,系统已更新到截止2018年12月14日最新版
  • 按照这个方法https://www.home-assistant.io/docs/installation/raspberry-pi/,在虚拟环境下以homeassistant用户安装homeassistant最新版本0.84.1
  • 运行mopidy版本:2.1.0
  • 运行PulseAudio版本:11.1
  • 蓝牙音箱:小度,小米AI



#####################------开机自动连接蓝牙音箱------#####################
LX终端执行
[Bash shell] 纯文本查看 复制代码
bluetoothctl


屏幕提示如下,列出所有蓝牙设备:
[Bash shell] 纯文本查看 复制代码
[NEW] Controller A0:88:69:E4:21:F4 计算机名称 [default]
[NEW] Device 88:2D:53:11:C3:D0 xiaodu-A1-5999
[NEW] Device 3C:BD:3E:9E:B7:W8 小米AI音箱-1999
Agent registered


小度小度,打开蓝牙

接着使用你的蓝牙音箱mac地址替换下面的88:2D:53:11:C30内容,首先连接它
[Bash shell] 纯文本查看 复制代码
connect 88:2D:53:11:C3:D0

执行成功音箱会语音提示:蓝牙已连接

接着执行下面命令,并信任这个蓝牙音箱
[Bash shell] 纯文本查看 复制代码
trust 88:2D:53:11:C3:D0


最后输入exit退出bluetoothctl命令。
上面这个过程终端屏幕会提示Connection successful和trust succeeded,说明已经完成配对并信任。

执行下面的命令,让系统启动时自动连接蓝牙音箱
[Bash shell] 纯文本查看 复制代码
sudo crontab -e

第一次运行这个命令系统会提示选择编辑器,我使用nano编辑器。

打开nano文件编辑界面,转到文件的最后,输入下面的内容
[Bash shell] 纯文本查看 复制代码
####XiaoDu-A1
@reboot sleep 15 && echo "connect 88:2D:53:11:C3:D0" | bluetoothctl

sleep 15,我设置系统启动后15秒,你可以根据自己的情况调整一下。

重启系统,关机时候提示蓝牙音箱断开,开机后稍等一会提示蓝牙音箱已链接。打开系统自带播放器例如:audacious播放一个音乐文件,系统已经自动从蓝牙音箱播放了。至此蓝牙音箱自动连接已经完成设置。



#####################--虚拟环境安装homeassistant 0.84.1运行环境--#####################
使用下面的这个方法安装
https://www.home-assistant.io/docs/installation/raspberry-pi/

[Bash shell] 纯文本查看 复制代码
$ sudo apt-get update
$ sudo apt-get upgrade -y

sudo apt-get install python3 python3-venv python3-pip


树莓派是这样:
sudo useradd -rm homeassistant -G dialout,gpio
我不是树莓派所以不附加-G dialout,gpio参数
[Bash shell] 纯文本查看 复制代码
sudo useradd -rm homeassistant


[Bash shell] 纯文本查看 复制代码
cd /srv
sudo mkdir homeassistant
sudo chown homeassistant:homeassistant homeassistant


[Bash shell] 纯文本查看 复制代码
sudo -u homeassistant -H -s
cd /srv/homeassistant
python3 -m venv .
source bin/activate



[Bash shell] 纯文本查看 复制代码
(homeassistant) homeassistant@raspberrypi:/srv/homeassistant $ python3 -m pip install wheel
(homeassistant) homeassistant@raspberrypi:/srv/homeassistant $ pip3 install homeassistant
(homeassistant) $ hass


上面的最后三个命令,如果执行时错误,请重新执行一遍。网络网络网络是否畅通非常重要。我用手机热点还比较好吧!
第一次执行hass命令启动时候要完成很多初始配置,同时会安装很多系统组件,所以网络不好也会出现很多错误,重新执行一遍就好。

基本上显示INFO (MainThread) [homeassistant.core] Timer:starting,就可以用浏览器打开web界面了。


更新
[Bash shell] 纯文本查看 复制代码
sudo -u homeassistant -H -s
cd /srv/homeassistant
source bin/activate
pip3 install --upgrade homeassistant



设置homeassistant开机自动启动
[Bash shell] 纯文本查看 复制代码
sudo nano -w /etc/systemd/system/homeassistant@homeassistant.service


输入如下内容,Ctrl+O,回车保存,然后Ctrl+X退出编辑。
[Bash shell] 纯文本查看 复制代码
[Unit]
Description=Home Assistant
After=network-online.target

[Service]
Type=simple
User=%i
ExecStart=/srv/homeassistant/bin/hass -c "/home/homeassistant/.homeassistant"

[Install]
WantedBy=multi-user.target


执行下面两条命令使其生效:
[Bash shell] 纯文本查看 复制代码
sudo systemctl --system daemon-reload
sudo systemctl enable homeassistant@homeassistant




#####################-----------配置samba,修改HA配置文件-- -----#####################
安装samba:
[Bash shell] 纯文本查看 复制代码
sudo apt-get install samba


编辑samba主配置文件:
[Bash shell] 纯文本查看 复制代码
sudo nano /etc/samba/smb.conf

在文件的结尾输入这些:
[Bash shell] 纯文本查看 复制代码
[Stick_homeassistant]
   path = /home/homeassistant/.homeassistant
   comment = No comment
   browsable = yes
   read only = no
   valid users =
   writable = yes
   guest ok = yes
   public = yes
   create mask = 0777
   directory mask = 0777
   force user = homeassistant
   force create mode = 0777
   force directory mode = 0777


通过samba访问修改homeassistant的配置文件

在homeassistant的配置文件configuration.yaml加入如下内容,请注意缩进:
[Bash shell] 纯文本查看 复制代码
media_player:
  - platform: mpd
    host: 127.0.0.1



homeassistant的配置文件automations.yaml加入如下内容,我没有规范的使用ID,另外请注意缩进:
[Bash shell] 纯文本查看 复制代码
- alias: Home Assistant Start
  trigger:
    platform: homeassistant
    event: start
  action:
    - delay: '00:00:10'
    - service: tts.baidu_say
      data:
        entity_id: media_player.mpd
message: 'Home Assistant 已经启动'




#####################------------安装mopidy,并完成配置-----------#####################
[Bash shell] 纯文本查看 复制代码
sudo apt-get install mopidy


配置mopidy.conf:
[Bash shell] 纯文本查看 复制代码
sudo nano /etc/mopidy/mopidy.conf


增加了如下内容:
[Bash shell] 纯文本查看 复制代码
[mpd]
hostname = ::

[audio]
mixer = software
mixer_volume =
output = pulsesink server=127.0.0.1
buffer_time =



将mopidy作为服务运行:
[Bash shell] 纯文本查看 复制代码
sudo systemctl enable mopidy



#####################-------------------配置pulseaudio--------------#####################
配置pulseaudio:
[Bash shell] 纯文本查看 复制代码
sudo nano /etc/pulse/default.pa


启用下列模块,并配置ip地址:
[Bash shell] 纯文本查看 复制代码
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1


加入位置,参考下面内容:
### Network access (may be configured with paprefs, so leave this commented
### here if you plan to use paprefs)
#load-module module-esound-protocol-tcp
#### homeassistant tts mopidy
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1
#load-module module-zeroconf-publish




终于完成了,没有坑,真的没有坑,我成功后又重新做了一遍,经典重现!
至此完美连接蓝牙音箱实现tts语音播报。


折腾了几个月,记不清了,可能有一年?爬了无数的国内外论坛,系统刷了无数次,之前一直使用vlc,但是vlc口吃,国外很多用户也反馈了这个问题。
最终还是使用mopidy,因为官方文档丰富,参数配置灵活。比mpd更小巧。其实之前从mopidy身边路过好几次,但是因为没有把所有文档看完,所以错过了最美好的部分,于是走入更多的坑。

最后非常感谢hassbian论坛,感谢我爬过的其他论坛和博客等等。

评分

参与人数 1金钱 +20 HASS币 +20 收起 理由
Jones + 20 + 20 楼主666,等待验证~

查看全部评分

回复

使用道具 举报

7

主题

215

帖子

858

积分

高级会员

Rank: 4

积分
858
金钱
638
HASS币
20
 楼主| 发表于 2018-12-14 13:22:30 | 显示全部楼层
占位占位占位占位占位
回复

使用道具 举报

0

主题

82

帖子

394

积分

中级会员

Rank: 3Rank: 3

积分
394
金钱
312
HASS币
0
发表于 2018-12-14 13:52:36 | 显示全部楼层
谢谢分享!
回复

使用道具 举报

2

主题

135

帖子

597

积分

高级会员

Rank: 4

积分
597
金钱
462
HASS币
10
发表于 2018-12-14 13:52:52 | 显示全部楼层
辛苦了.  真是造福人群.    我是在windows7下,  運行 Vmware,  再安裝centos7,  然後安裝HA的.
理論上, 買一個USB藍牙接收器插在電腦上.  在去找對應的linux下的藍牙驅動,  應該也可以成功的.

改天來試試.    非常棒的分享 !!!   
回复

使用道具 举报

11

主题

173

帖子

707

积分

高级会员

Rank: 4

积分
707
金钱
534
HASS币
0
发表于 2018-12-14 16:23:18 | 显示全部楼层
其他支出蓝牙的音箱都可以用?
回复

使用道具 举报

1

主题

14

帖子

73

积分

注册会员

Rank: 2

积分
73
金钱
59
HASS币
0
发表于 2018-12-14 16:38:33 | 显示全部楼层
问一下树莓派hassio  可以吗?非要•Lubuntu 18.04.1 LTS desktop-amd64吗
回复

使用道具 举报

6

主题

178

帖子

936

积分

高级会员

Rank: 4

积分
936
金钱
753
HASS币
30
发表于 2018-12-16 07:57:09 | 显示全部楼层
支持一下lz正好需要,改天试试天猫精灵
回复

使用道具 举报

6

主题

467

帖子

1774

积分

金牌会员

Rank: 6Rank: 6

积分
1774
金钱
1307
HASS币
87
发表于 2018-12-16 18:35:37 | 显示全部楼层
支持一下,试试天猫精灵
回复

使用道具 举报

7

主题

215

帖子

858

积分

高级会员

Rank: 4

积分
858
金钱
638
HASS币
20
 楼主| 发表于 2018-12-17 20:38:10 来自手机 | 显示全部楼层
33230 发表于 2018-12-14 16:38
问一下树莓派hassio  可以吗?非要•Lubuntu 18.04.1 LTS desktop-amd64吗

我的3b+,新版固件里面是bluealsa,没有pulseaudio。我还没试自己安装后是否好用。
回复

使用道具 举报

0

主题

24

帖子

90

积分

注册会员

Rank: 2

积分
90
金钱
66
HASS币
0
发表于 2018-12-26 19:29:10 | 显示全部楼层
连接很完美,可以tts播报语音了,但是天猫精灵本身的声音会被打断,只说几秒后面就 没了,不知道楼主是否有办法解决呢
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2019-1-17 15:38 , Processed in 0.215482 second(s), 37 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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