这是关于家庭自动化的7篇系列文章的最后一篇,从无到有。 它们中的每一个都标志着该项目的一个里程碑,并且它们中的任何一个都不应太长,以免在通勤时舒适地在地铁上阅读。
- 第1部分:现有的家庭自动化系统并选择合适的系统
- 第2部分:智能灯和插头
- 第3部分:智能加热
- 第4部分:设置场景和脚本
- 第5部分:通过自动化添加智能行为
- 第6部分:使用Amazon Echo与您的系统对话
- 第7部分:通过多房间音频开始聚会
在本文中,我们将介绍如何设置多房间同步音频系统,类似于使用一套Sonos扬声器或类似设备可以实现的系统。 如果您没有阅读前六部分,请考虑到我使用家庭助理作为家庭自动化软件。 我已经在Raspberry Pi 3上运行它,但是如果您只想尝试一下并且不想购买设备,则可以将其安装在台式机或笔记本电脑上。 我强烈建议在这种情况下使用其docker映像,因为这是尝试该映像的最快且较不麻烦的方式。
- [SETLIST] 2016年8月-LOVE FLIES(颜色在唱歌)
- 义隆的2018年11月Mixtape
- OMG Bill Gates拥有您的音乐职业??
- 音乐图书馆应用的问题
- Posicionamento das marcas:Spotify ea播放列表188(Setembro Amarelo)
在这篇文章的结尾,我们将能够:
- 在特定房间播放音轨
- 在多个房间播放音轨,并同步音频
- 每天早晨在给定的时间内自动播放Spotify播放列表
- 拥有一个派对播放列表,宾客可以对其进行编辑以适合自己的口味
都具有用户友好的界面。

作为昂贵的Sonos扬声器的替代产品,我们正在使用Chromecast Audio设备。 这些是微小的单元,它们通过Aux 3.5mm电缆连接到插座和现有的有源扬声器。 它们的价格仅为35美元/欧元,可以使您的任何老音箱变得聪明。
我的公寓中有3个连接到有源扬声器,蓝牙扬声器,或者在客厅连接Denon AV接收器。 与现有的品牌多房间音频系统相比,我估计通过此设置可以节省约500欧元。

节省电源插座插槽的另一个选择是购买支持Chromecast的扬声器。 在今年的Prime Day中,我以90欧元(而不是通常的200欧元)的价格购买了Sony SRS ZR5。 我真的很高兴尝试一下,因为我基本上可以将其置于24/7待机状态,并且当音频流传输到它时它会自动打开(并在闲置15分钟后关闭)。 我现在打算用类似的启用Chromecast的扬声器替换蓝牙扬声器和饭厅监听器(都连接到Chromecast Audio单元),这样我就不再需要手动打开/关闭它们了。 缺点是它们更贵(另一个“便宜”的替代品是JBL,价格为150欧元,比您可以获得的最便宜的“哑扬声器+ Chromecast音频”组合要贵得多,但仍比最便宜的Sonos Play便宜:1价格为230欧元)。
即使不执行我将在接下来的段落中概述的任何步骤,也可以仅通过Chromecast获得同步的多房间音频流。 使用“ Google Home”应用(iOS,Android)完成设备的设置,并按照应用中的详细说明添加设备。 然后,您可以创建多个设备的“组”,它们将显示为可流式传输的其他设备。 然后,通过Spotify之类的应用程序(您将需要一个高级帐户,否则您可以使用Google Chrome浏览器打开网络界面并从那里进行投射),您就可以将歌曲或播放列表流式传输到创建的群组,音频将在您为其配置的所有房间中播放。 您会惊讶于这听起来已经多么专业!
为了能够通过Home Assistant安装与Chromecast设备进行交互,我们不需要执行任何操作。 discovery
组件已经支持Chromecast设备的自动发现,并显示它们当前正在播放哪些歌曲。 此外,您可以直接从Home Assistant界面暂停/恢复/停止播放并更改音量。
但是,我们想要做的是在不打开Spotify的情况下播放歌曲,例如,让客人在不使用我们的笔记本电脑且根本不需要笔记本电脑的情况下播放歌曲或查看当前播放列表。
为此,我们需要一个称为MPD的软件,该软件还可以与Home Assistant集成在一起。

该软件的安装有点复杂,因为它涉及多个手动步骤,一个终端以及手动编辑配置文件。 尽管如此,请忍受我,因为结果值得您付出努力!
首先,我建议将MPD安装在其他设备上(我将其安装在单独的Raspberry Pi上)。 这是为了避免单个篮子里放太多鸡蛋,并且如果设备变砖,则Home Assistant和MPD都将失败。 您当然可以在运行Home Assistant的同一设备上安装MPD。
这些是执行安装MPD的初始步骤(官方安装文档在这里):
wget -q -O - https://apt.mopidy.com/mopidy.gpg | sudo apt-key add -
wget -q -O - https://apt.mopidy.com/mopidy.gpg | sudo apt-key add -
sudo apt-get install mopidy
sudo wget -q -O /etc/apt/sources.list.d/mopidy.list https://apt.mopidy.com/jessie.list
sudo apt-get update
sudo apt-get install mopidy
这会在设备上安装Mopidy(MPD)软件包。
现在,我们需要一些插件,以使安装更容易使用,并且看起来更漂亮!
首先,一个插件,使我们可以像播放歌曲一样播放YouTube视频中的音频。
# This plugin is to play audio from YouTube videos, for instance sudo apt-get install gstreamer1.0-plugins-bad
然后,最重要的插件:允许MPD与Spotify交互的插件。 这需要一个Spotify高级帐户 。 我以前没有一个,但是一旦意识到自己可以完成的工作,我很高兴地决定每月花费9,99欧元。
该插件的官方文档在这里。 我强烈建议您阅读它,因为它说明了如何设置您可以仅用于MPD安装的特定密码。
sudo apt-get install mopidy-spotify
现在,我们将安装pip,该软件可让我们轻松安装Python软件包。
wget https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py
下一个插件允许我们的MPD安装与Last.fm交互,并草绘我们通过MPD收听的曲目。 如果您没有Last.fm或对该功能不感兴趣,则可以跳过此行。
该插件的官方文档在这里。
sudo pip install Mopidy-Scrobbler
最后但并非最不重要的一点,我们将为MPD安装安装漂亮的Iris界面。
这些是我的虹膜安装的图片,以及您的外观:



该界面也很灵敏,在您的智能手机和平板电脑上看起来都很漂亮。
sudo pip install Mopidy-Iris
现在,我们可以使mopidy
进程在系统启动时启动。
sudo systemctl enable mopidy
完成上述步骤后,您应该可以通过http://[YOUR_IP_ADDRESS]:6680/iris
访问iris界面。
但是,在进行任何有用的事情之前,我们还需要两件事:安装IceCast并配置我们的MPD安装。

IceCast是(用自己的话)
当前支持Ogg(Vorbis和Theora),Opus,WebM和MP3流的流媒体(音频/视频)服务器。 它可用于创建Internet广播电台或私人运行的自动点唱机,以及介于两者之间的许多内容。
我们该怎么办?
Chromecast单元通过流式传输来自URL的音频来工作。 Home Assistant使我们可以通过指定URL通过Chromecast播放自己的音频。 因此,我们需要一个URL,首先可以在其中传输音频,这样我们就可以将其依次传递给Home Assistant和Chromecast,并通过它们收听轨道。

IceCast让我们可以做到这一点。 我们会将MPD播放的音频流路由到IceCast,并将通过URL获得。

sudo apt-get install icecast2
有关如何安装IceCast的官方文档,请参见此处。
这就是安装IceCast要做的所有事情,现在让我们配置整个系统,让聚会开始!
以下是我的配置文件,解释如下:
# Default installation parameters [core] cache_dir = /var/cache/mopidy config_dir = /etc/mopidy data_dir = /var/lib/mopidy
# Default installation parameters [core] cache_dir = /var/cache/mopidy config_dir = /etc/mopidy data_dir = /var/lib/mopidy
[logging] config_file = /etc/mopidy/logging.conf debug_file = /var/log/mopidy/mopidy-debug.log
[logging] config_file = /etc/mopidy/logging.conf debug_file = /var/log/mopidy/mopidy-debug.log
[logging] config_file = /etc/mopidy/logging.conf debug_file = /var/log/mopidy/mopidy-debug.log
[m3u] enabled = true playlists_dir = /var/lib/mopidy/playlists
[m3u] enabled = true playlists_dir = /var/lib/mopidy/playlists
[m3u] enabled = true playlists_dir = /var/lib/mopidy/playlists
# This is the essential step! # We tell MPD to route its output to an mp3 encoder and then to icecast # The port and password values depend on your icecast installation! mixer = software output = lamemp3enc ! shout2send mount=mopidy.mp3 ip=127.0.0.1 port=[YOUR_PORT] password=[YOUR_PASSWORD]
# This is the essential step! # We tell MPD to route its output to an mp3 encoder and then to icecast # The port and password values depend on your icecast installation! mixer = software output = lamemp3enc ! shout2send mount=mopidy.mp3 ip=127.0.0.1 port=[YOUR_PORT] password=[YOUR_PASSWORD]
# This is the essential step! # We tell MPD to route its output to an mp3 encoder and then to icecast # The port and password values depend on your icecast installation! mixer = software output = lamemp3enc ! shout2send mount=mopidy.mp3 ip=127.0.0.1 port=[YOUR_PORT] password=[YOUR_PASSWORD]
[proxy]
[mpd] hostname = 0.0.0.0
[mpd] hostname = 0.0.0.0
[mpd] hostname = 0.0.0.0
[http] hostname = 0.0.0.0
[http] hostname = 0.0.0.0
[http] hostname = 0.0.0.0
[stream] enabled = true protocols = http https mms rtmp rtmps rtsp timeout = 5000
[stream] enabled = true protocols = http https mms rtmp rtmps rtsp timeout = 5000
[stream] enabled = true protocols = http https mms rtmp rtmps rtsp timeout = 5000
[softwaremixer]
# This is in case you installed the Last.fm plugin # Username and password are your Last.fm credentials [scrobbler] username = [YOUR_LASTFM_USERNAME] password = [YOUR_LASTFM_PASSWORD]
# This is in case you installed the Last.fm plugin # Username and password are your Last.fm credentials [scrobbler] username = [YOUR_LASTFM_USERNAME] password = [YOUR_LASTFM_PASSWORD]
# This is in case you installed the Last.fm plugin # Username and password are your Last.fm credentials [scrobbler] username = [YOUR_LASTFM_USERNAME] password = [YOUR_LASTFM_PASSWORD]
# This is for the Spotify integration [spotify] username = [YOUR_SPOTIFY_USERNAME] password = [YOUR_SPOTIFY_APP_PASSWORD]
# This is for the Spotify integration [spotify] username = [YOUR_SPOTIFY_USERNAME] password = [YOUR_SPOTIFY_APP_PASSWORD]
让我们通过sudo reboot
启动来重新启动MPD主机,我们应该能够在Spotify上进行搜索,查看播放列表并通过Iris界面在上面提到的地址播放一些曲目。
当然,除非从浏览器打开此URL,否则您将听不到任何声音: http://[YOUR_IP_ADDRESS]:[YOUR_ICECAST_PORT]/mopidy.mp3
。 按下播放键后,您应该可以通过Iris听到正在播放的歌曲!
最后一步是Home Assistant集成。 有了它,我们就可以在播放曲目后立即自动流式传输到我们的Chromecast,并在我们停止播放后立即关闭我们的Chromecast。

首先,让我们在media_player
部分的Home Assistant中添加MPD设置:
- alias: 'Music Pi' platform: mpd name: 'Music Pi' host: [YOUR_IP_ADDRESS]
然后,我们添加一个脚本,将音频流传输到Chromecast
stream_mopidy_to_cc: alias: Start streaming sequence: - delay: '00:00:05' - service: media_player.play_media data: entity_id: media_player.home media_content_id: 'http://[YOUR_IP_ADDRESS]:[YOUR_ICECAST_PORT]/mopidy.mp3' media_content_type: 'audio/mp4'
使用上面的脚本,我们告诉home
媒体播放器(这是我们要流式传输的Chromecast组的名称)播放我之前提到的URL。 也就是说,IceCast通过来自MPD和Iris接口的音频公开的URL。 我们将脚本延迟5秒钟,以使IceCast有时间缓冲。
最后一步是使此行为自动化:
- alias: Cast music when playing from MPD trigger: platform: state entity_id: media_player.music_pi to: 'playing' action: - service: script.turn_on entity_id: script.stream_mopidy_to_cc
这意味着每次MPD更改为playing
(例如,当我们启动播放列表时), stream_mopidy_to_cc
脚本都会启动,并将音频流传输到我们的Chromecast。 很整洁吧?
通过这篇文章,我们能够配置一个多房间音频系统,可以通过移动设备和诸如Spotify(甚至从您的个人计算机)之类的应用程序,我们的家庭自动化软件以及您和您的访客可以使用的用户友好界面来使用轻松访问。

我希望您喜欢这个关于家庭自动化的系列,并且了解了如何仅通过开源或免费软件以及非常便宜的组件轻松实现复杂的智能家居系统。 如果您想了解任何其他特定的系统或功能,请通过评论让我知道,我将尝试写更多文章!
玩弄智能家居自动化系统,玩得开心!
最初于 2017 年8月2日 发布在 www.vittoriomonaco.de 上。