Linux-和树莓派智能家庭自动化教程-二-

14 阅读1小时+

Linux 和树莓派智能家庭自动化教程(二)

原文:Smart Home Automation with Linux and Raspberry Pi

协议:CC BY-NC-SA 4.0

三、媒体系统:整合电视和高保真音响

Abstract

任何家庭环境中最明显的部分是媒体系统。自从真正的壁炉不再流行,电视或立体声系统已经成为大多数客厅的焦点。电视和立体声系统也是我们花费最多时间与之互动的设备。因此,你必须了解这些设备的可能性。

任何家庭环境中最明显的部分是媒体系统。自从真正的壁炉不再流行,电视或立体声系统已经成为大多数客厅的焦点。电视和立体声系统也是我们花费最多时间与之互动的设备。因此,你必须了解这些设备的可能性。

与所有消费电子产品一样,功能集和价格每天都在变化。因此,我将主要关注这些机器的必要特征和内部工作原理,而不详述具体的品牌和型号,因为当你读到这篇文章时,其他的机器已经上市了。

数据链

简单的“播放专辑”行为在家庭自动化领域发生了重大变化。不仅媒体本身的位置不受限制,而且它还是你可以听它的地方。最近的例子是 iTunes,它允许你在几台不同的电脑上播放音乐,还有 Spotify,它提供音乐流媒体服务,允许你从家用电脑或手机上访问各种音乐曲目。 1 如果你对音乐的兴趣是随意的,或者是基于图表的,那么这些服务往往就足够了。但是许多人收藏的专辑要么很稀有,要么很模糊,不会出现在任何商业网站上。有些人可能更喜欢将他们的音乐数据存储在自己的电脑上,以免公司倒闭、改变服务条款或以其他方式失去连接。在这种情况下,我们需要提供一种方法将音乐从硬盘传到人耳中。这是数据链。

这个链条有四个步骤。第一步是数据本身。这是代表你收藏的音乐(或其他媒体)的 wav、MP3 或 ogg 的目录结构。该数据然后由服务器读取(这是第二步),然后被分发给(第三步)室内的一个或多个扬声器。第四步也是最后一步是当人类听到(或看到)媒体时。在便携式音乐播放器或台式电脑上播放音乐时,这种模式仍然适用,尽管对于台式电脑来说,所有的逻辑单元都放在一个物理盒中。

提取数据

通常称为翻录,这是将通常存储在 DVD 或 CD 上的媒体转换为计算机友好的数据格式,以备回放的过程。许多软件都是可用的,所以我将用一个例子来介绍它们。

光盘

到目前为止,CD 是最简单快捷的格式,因为大多数组成部分都可以在 Linux 中找到。一个工具,如abcde,可以自动执行以下操作:

  • 将音频提取为 WAV 文件
  • 把它转换成 OGG·沃尔比斯
  • 确定艺术家和专辑
  • 自动下载并应用标签
  • 相应地命名文件

接下来需要做的就是将文件复制到您的文件系统中。出于速度原因,我个人总是将我的 CD 解压到一个单独的(本地)文件夹中——在本地写入,然后一起复制会更快,因为这意味着当我可能想要传输其他内容时,我的服务器不会处理大量的小写入请求。这也给了我一个手动更改文件的机会,以防出现问题,因为有时专辑会超过标准的 74 分钟。 2

对于批量翻录,您可以编写一个简短的脚本,通过自动打开和关闭 CD 抽屉来节省时间。这听起来可能不多,但提取你的音乐收藏的最初障碍是心理上的;交换数百张 CD 并给每个文件重新命名和标记的想法令人望而生畏。因为音频是以 CD 或 DVD 驱动器的速度进行翻录的(与专辑的时间长度无关),所以您可以在大约 5 到 10 分钟内提取整张光盘。通过在线曲目列表数据库(CDDB,它将每个曲目的开始时间和持续时间组合成一个整体的光盘 ID),标记过程也是自动的。有时会有重复的 id,这需要手动干预,但大多数光盘可以使用-N标志自动处理,如下面的脚本所示。abcde脚本还支持参数,允许您指定文件名的格式(如果这对您很重要),以及用于处理多位艺术家的专辑的布局信息。

#!/bin/bash

while :

do

echo Insert next disc...

read x

cdcd close

abcde -N

cdcd eject

done

数字影碟

随着 DVD 格式越来越复杂,业界一直坚持加密是必要的,DVD 的翻录有了额外的要求, 3libdvdcss2。这是一个绕过加密光盘复制保护的库,大多数商业电影都使用加密光盘。它的合法性是不确定的,所以主要的 Linux 发行版在谨慎方面犯了错误,没有包含这个包。相反,该库必须单独下载,要么从另一个存储库下载,要么从编译源下载。当然,我必须采取同样的“安全”方法,并且只能告诉你如何安装它,如果你在某个网站上找到这些文件的话。

例如,在 Debian 上,通过在/etc/apt/sources.list文件中放置一行代码来添加一个额外的存储库:

debhttp://www.debian-multimedia.org

接下来是以下传统流程:

apt-get update

apt-get install libdvdcss2

有时你必须手动下载并安装软件包。命令行调用如下所示:

dpkg -i libdvdcss2_1.2.10-1_i386.deb

或者,源安装将按照INSTALL文件进行,可能类似于以下三位一体:

./configure

make

make install # as root

一旦您可以使用 VLC 播放 DVD,您就知道该库已成功安装,因此可用于所有主要的媒体播放器应用程序,如mplayertotemxine等。

当翻录 DVD 时,您必须考虑您要用于收藏的硬盘空间量,您是否想要(或需要)DVD 菜单,以及它们在什么设备上播放。最终,有两个选择。

按 ISO 格式翻录

Rip As ISO 制作整个光盘的原始副本,并将其存储为文件。这是最容易启动的过程,因为您只需调用以下内容:

dd if=/dev/dvd of=TheOffice-series1.iso bs=1024

这通常需要 4GB 到 8GB 的空间,包括所有的 DVD 菜单、标题、章节和字幕。像 VLC 这样的电影播放器将能够处理像菜单这样的交互式组件,但其他的则不行。对于不支持 DVD 徽标的设备尤其如此,因为它们没有 CSS 代码,对于较小的低功耗设备(如 MediaMVP)也是如此。在后一种情况下,您可以通过使用 VLC 远程转码电影来部分解决问题,但它仍然无法处理 DVD 菜单。

与所有磁盘映像一样,Linux 能够将它们挂载到一个目录中,这样就可以读取它们,也可以正常查询它们的文件。这可以通过桌面或以下方式自动完成:

mount -t udf –o loop TheOffice-series1.iso dvdimage

请注意,您不能将映像挂载到您通常的 DVD 位置(如/dev/dvd),因为那是一个块设备,您只能将映像挂载到一个目录。

翻录为电影文件

这种方法占据了“DVD 抓轨”软件的大部分,命令行和 GUI 都有许多可用的版本。尽管 GUI 版本提供了标题和章节的截图以及一系列可配置的选项,但它们(几乎毫无例外)只是一组标准后端工具的前端,比如mencoder。你可以通过直接找到金属来去除这个中间人所利用的资源和时间。

UnDVD ( http://sourceforge.net/projects/undvd/ )是一个 Perl 脚本,它提供了一个简单的命令行方法来将 DVD 拆分成它们的组件标题,同时采用您想要的任何语言或字幕。使用英语音频翻录前三首曲目的典型调用可能如下:

undvd -t 1,2,3 -a en

可用轨迹的数量可通过相关工具scandvd确定。因为大多数家庭会说一种共同的语言,所以减少了完全 ISO 的必要性,使这成为一个一致的过程。以下脚本将光盘完整地翻录到它自己的子目录中。例如,它甚至可以通过家庭网页上的链接来触发。

#!/usr/bin/perl

my $language = "en";

my $subtitles = "off";

my $output = lsdvd;

$output =∼ /Disc Title\:\s+(.*?)\n/s;

my $title = lc $1;

$title =∼ s/\b(\w)/\U$1/g;

$title =∼ s/_(\w)/ \U$1/g;

my $cmd = "undvd -t 1";

my $count = $output=∼s/\nTitle\://g;

foreach(2..$count) {

$cmd .= ",$_";

}

mkdir($title);

chdir($title);

$cmd .= " -a $language -s $subtitles -e 2";

system($cmd);

chdir("..");

电影的问题

有这么多可用的编解码器和播放器,您不可避免地会偶尔发现其中一个有问题,例如无法播放电影、中途崩溃、视频和音频之间失去同步、无法快进等等。即使是商业产品也有这些问题,所以它们不是开源社区独有的。事实上,因为我们主要使用基于软件的解决方案,我们有一个更好的交易,因为问题可以很快得到解决。以下是一些建议:

  • 有时,您可以通过暂停和取消暂停视频来解决同步问题。
  • 不会快进的电影往往没有组块索引,可以在用mplayer -idx开始电影的时候建立。
  • 其他问题通常需要重新编码(或代码转换)。这可以通过较大的工具来处理,比如 VLC。

蓝光(Blu-ray)

自 2006 年发布以来,蓝光一直是 Linux 的眼中钉,最近又是树莓派用户的眼中钉。这是因为没有官方的软件播放工具发布,使用的加密方法也比较苛刻。第一种情况之所以存在,是因为适用专利的许可由 One-Blue 控制,One-Blue 不能(不会?)许可给 Linux 开发者。因此,播放蓝光光盘(BD)的唯一方法是分离解码和回放部分,并将原始光盘转码为另一种格式。我们将很快找到解决方案。

第二种情况更麻烦,尤其是因为蓝光设计的一部分允许加密密钥在被破解时被更改。到目前为止,已经有几个密钥在网上发布了,但是不久之后,一系列新的密钥被引入以保持格式的封闭。这表明这个行业还没有从女权运动中吸取同样的教训,因此在可预见的未来,我们将陷入这种无休止的猫捉老鼠的游戏。

最简单的答案是完全放弃蓝光。但是,尽管很容易认为将 DVD 电影升级为蓝光电影没有什么意义,但新电影通常具有高质量和额外功能,值得购买。而且,对许多人来说,忽视所有面向 DRM 的媒体的基本观点是不切实际的(特别是因为这也包括许多在线音乐和 DVD)。因此,实用的观点是对所有 BD 进行代码转换,并将物理副本归档到某个安全的地方。

翻录为 ISO 文件

一句话——不要!因为没有东西播放它们,所以它们只对创建一个稍后可以被翻录的 ISO 有用。因为你无论如何都要阅读光盘内容,所以你现在没有节省时间。由于单层 BD 大约需要 25GB(双层需要 50GB),存储成本明显高于 DVD。如果你想知道有多少,一个 1TB 的驱动器可以容纳 40 个单层图像。如果驱动器成本为 100 美元,则该映像的成本为 2.50 美元。与价格约为 5 美分的转码版本相比,差异非常明显。

翻录为电影文件

最直接的方法是利用“模拟洞”(但在数字意义上,即“数字洞”)。这需要一个带 HDMI 输出的播放器和一个带 HDMI 的显卡。第一个的输出被输入到第二个的输入中,并进行实时记录。尽管这种方法肯定有效,但我们知道更好的解决方案。

这里的首选是“MakeMKV”,可从 http://www.makemkv.com 的论坛部分下载,这是一个实用的抓轨软件选择。也就是说,它既不自由,也不开放。但鉴于选择有限,我们将使用它。幸运的是,当它处于测试阶段时,如果你使用 http://www.makemkv.com/forum2/viewtopic.php?f=5&t=1053 的下载密钥,费用已经被移除。幸运的是,它自 2010 年以来一直处于测试阶段,尽管在这本书的制作期间将发布一个新的密钥副本,但人们希望新的测试密钥将允许该程序免费使用(如在啤酒中)。

按照论坛下载页面上的说明,你可以像翻录其他光盘一样翻录你的光盘。有些人注意到如果你打字

touch tmp/eula_accepted

在运行 make 程序之前,您可以安装软件,而不必阅读并同意 EULA。

一旦进入 MKV 格式,你可以自由地转换成任何其他格式。这可能是必要的,因为高清视频需要高清播放器,而一些(旧的)媒体流盒可能不支持它。然而,请注意,高清视频需要高清转码器,所以你需要最新的工具(如手刹),因为许多旧的重型程序尚未升级以应对它。

盒式磁带和乙烯基

是的,真的!有许多人拥有这些心爱的技术遗物,他们希望用电子方式保存它们。这些是速度最慢的媒体形式,因为它们必须实时完成。最显而易见的方法是将你的走带设备(磁带或唱片)的唱机输出连接到你声卡的线路输入。信号链中的元件应该尽可能少,如果你的转盘有前置放大器,那就更好了。否则,考虑你的声卡和走带设备的相对优点,让高质量的单元执行前置放大阶段。乙烯特别需要一个前置级 RIAA 均衡,以避免微小的声音。

一旦你连接了走带设备,找到音乐中最响的部分,在录音程序中监控音量,比如 Audacity。应该尽量大声,不削波。这可确保您充分利用 16 位分辨率,即最大可能的动态范围。然而,如果可能的话,这个音量应该来自前置放大器,因为功率放大器会引入噪声。

为了确保录制期间的最高质量,您还需要注意外部硬件元件。因此,不要在录音时使用微波炉,因为这会引入可能影响它的电噪声,不要摆弄连接器,等等。这也是一个好主意,将甲板插入高质量的 UPS 或电源平滑器,以限制电源电压波动引起的 wow 和颤振的数量。

同样的方法也适用于磁带,尽管大多数磁带播放器都有内置前置放大器,所以你别无选择。

目前市场上有一些一体化设备,它们将磁带或录音座与所有必要的放大器和转换器结合在一起,通过 USB 电缆为您提供数字输入。这些对于临时用户来说是理想的,但是因为它们是按价格制作的,而不是按质量制作的,所以你不会得到和手动设置一样好的结果。

一旦你将录音数字化,接下来的事情就是从名为side_1.wav的文件中提取单个的音轨,并对它们进行相应的编码。有一些工具可以自动做到这一点。Audacity 有自己的静音查找功能(在“分析”菜单中),它会在录音中寻找合适的长间隔,并在它们旁边放置标记。然后,您可以根据需要调整这些标记,并选择“导出多个”以将这些标记之间的数据保存为单个文件。

然后,您可以对它们进行适当的编码。这里有一个例子:

#!/bin/bash

LIST="$(ls *.wav)"

for FILE in "$LIST"; do

flac $FILE

done

或使用以下内容:

oggenc $FILE

根据音乐和您对高保真音频的个人意见,您可以选择以一种或多种格式保存该音乐。最直接的方法是只保留 OGG 的文件,因为它们适合于随意的室内监听和一些相当复杂的批判性监听。对于更有眼光的发烧友来说,免费无损音频编解码器(FLAC)提供了与 WAV 相同的质量,但占用空间更小。有些人会将 FLAC 版本存储在单独的(离线)硬盘上,而日常使用 OGG 文件。这允许在以后有更好质量的编解码器可用时重新编码高质量的录音,而不需要重新剪辑数据。

真正的音响发烧友永远不会对电脑声卡感到满意,也不应该一开始就翻录音乐!

仓库

所有数据都必须存储在某个地方。在桌面计算中,这是一个内部硬盘。在家庭自动化领域,我们希望该硬盘在其他任何地方都可以使用。这通常意味着它必须在网络上,并由 Samba 之类的网络服务控制。

独立的 NAS 系统

实际上,网络可寻址存储(NAS)是一种通过网络电缆和 IP 地址而不是 ide、SCSI 或 SATA 电缆连接到外部世界的硬盘驱动器。这种方法有两个主要优点。首先,通过天生的网络感知能力,您可以在世界上任何地方使用这些文件,只需很少甚至不需要额外的配置。这包括你的办公室、你伴侣的办公室、卧室,甚至是花园里或火车上无线连接的笔记本电脑。第二,通过与主计算机分离,您可以将 NAS 驱动器藏在橱柜或阁楼中,从而整理您的主要工作区域。这有一个安全上的好处:任何偷你电脑的窃贼也没有偷你的数据。

自然,如果没有计算机来控制硬盘驱动器,就必须在数据链的某个地方有一个驱动程序来决定光盘格式、容量和网络连接。这可以存在于 NAS 单元本身中,也可以来自想要读取驱动器的服务器。有许多不同的版本可供选择。

硬盘注意事项

任何 NAS 的主要卖点都是其存储能力。目前,少于 1TB 的硬盘很少见,幸运的是,由于逻辑块寻址(LBA)的 28 位寻址模式,许多老式 IDE 硬盘的容量限制为 137.4GB。如果制造商正在使用旧硬件,即使它支持外部 USB 驱动器,也要避免小于 137.4GB 的容量,因为这总是受到相同的限制。

伴随着磁盘空间的争论的是磁盘格式的概念。这通常以 FAT、FAT32、NTFS 或 ext2 给出,并限制可能的最大文件大小(如表 3-1 所示)。如果您需要在另一台机器上安装驱动器,该格式还决定了您能够恢复它的可能性。

表 3-1。

Filesystem Functionality

| 文件系统 | 最大文件大小 | 最大卷大小 | | --- | --- | --- | | FAT16 | 2GB | 2GB | | FAT32 | 4GB | 2tb 或 8TiB * | | Windows NT 文件系统(NT File System) | 16EiB | 16EiB | | ext2/ext3 | 16GB 至 2tb | 2tb 至 32TiB * | | ZFS | 16EiB | 16EiB |
  • Variation depends on cluster size when formatted.

因此,很明显,如果您希望 NAS 存储 DVD 映像,您将需要一个能够支持 4.7GB 文件的文件系统。这通常意味着基于 FAT 的系统是不够的,或者你将不得不删除 DVD 菜单,并将电影重新编码成另一种(更小的)格式。

恢复问题稍微复杂一些。如果您必须从 NAS 安装中取出硬盘,并将其放入标准 PC 中以恢复数据,您将需要一台能够读取 NAS 使用的任何文件系统的 PC。

NTFS 在 Linux 兼容性方面稍微好一点,但也差不了多少。虽然在 Linux 下可以读取 NTFS 分区,但是写回它们被认为是危险的,尽管有两个开源驱动程序(强制 NTFS 和 NTFS-3G)支持它。此外,有一个商业驱动程序(NTFS for Linux,Paragon)可以解决同样的问题。对于基本恢复,只读光盘就可以了,尽管在大多数情况下,不重新格式化就无法修复光盘。

自然的解决方案是对任何和所有 NAS 驱动器使用 ext2,因为这在 Linux 世界中得到最广泛的支持。许多 NAS 设备现在都支持这一点,所以多花一点钱买一个还是值得的,因为它符合所有的条件。如果你家里的主要台式机是 Windows,那么甚至还有 Windows 的 ext2 恢复工具比如 Linux Recovery from DiskInternals。

您存储的数据类型将决定您需要的备份计划的类型。如果是个人数据,如信件或照片,那么可以考虑内置 RAID 功能的 NAS。当插入第二个驱动器时,它们通常会自动配置自己,所以如果你插入一个用过的驱动器,以为会获得额外的空间,就要小心了!有几种类型的 RAID 配置可用,但在这种情况下最常见的是 RAID-1,它使用第二个驱动器来制作写入第一个驱动器的任何内容的相同副本。它自动且对用户透明地执行此操作,因此如果其中一个驱动器出现故障,另一个可以用来恢复数据。但是,您应该始终记住,RAID 不是备份!这只是降低了因磁盘故障而丢失数据的可能性。它不能防止控制器故障、火灾、洪水或盗窃造成的损坏。

Note

对于一些系统管理员来说,使用硬件 RAID 解决方案是一把双刃剑。它们无缝地工作,不需要任何设置和维护工作。但是,如果 RAID 系统出现问题并使用自定义磁盘格式,则可能无法恢复磁盘上的数据。您可以通过购买两个硬件来解决这个问题,并在将磁盘投入使用之前验证您可以交换磁盘而不会出现问题。或者,您可以向制造商核实所使用的磁盘格式是已知的还是附带了合适的软件恢复工具。

备份数据,如 DVD 或音乐片段,不需要(也不应该)RAID 尽管有一个没有坏处。因为这种类型的数据更改频率较低,所以您可以将外部 USB 硬盘插入您的台式机。然后,您可以运行您选择的备份软件(参见第六章了解此处的一些可能性),仅复制那些已更改的文件,然后拔出并存储驱动器。这延长了驱动器的寿命,值得付出额外的努力。

与所有备份一样,除非定期测试,否则它们毫无用处,所以请确保您确实测试了它们。有些人会每隔 6 到 12 个月将他们的备份拷贝到一个新的驱动器来测试它们。与花在抓取和组织数据上的大量时间相比,成本可以忽略不计。此外,每千兆字节的价格每年都在下降,使您可以在更小的尺寸中存储更多的数据。如果您迫切需要额外的空间,那么您可以在系统的其他地方重用旧的驱动器。虽然磁带备份系统是大多数企业的最爱,但 USB 硬盘驱动器的成本和便利性使它们在家庭市场上没有必要。

Note

硬盘要么在头几周出现故障,要么在你记得备份的前一天出现故障。所以买盘的时候,一定要在不同的厂家,不同的时间买,所以如果你拿到一个不良批次的盘(IBM 死星,挂你头!),你就最小化了自己得到两个的机会。

网络注意事项

在大多数情况下,NAS 的网络设置非常简单。通常,它会通过 DHCP 获得自己的 IP,并通过 CIFS/桑巴的服务提供对磁盘的访问。有时您需要一台 Microsoft Windows 机器来运行安装软件,但这种情况越来越少,因为配置是通过在 n as 上运行的网页来完成的。这里的主要警告是要注意那些没有 Samba 服务,而是依赖于诸如 ZFS 之类的东西的机器。

ZFS 是一个起源于 Sun Microsystems 的文件系统,是 Netgear SC-101 等 NAS 系统的特色。但是,尽管 ZFS 规范及其在大型商业系统中的使用,它还没有一个合适的内核驱动程序(因为许可证不兼容)。目前它只能与用户空间中的文件系统(FUSE)项目或提供的封闭 Windows 驱动程序一起运行。因此,如果只提供 ZFS 服务(例如前面提到的 SC-101),则需要在每个想要从 NAS 读取数据的设备上安装特定的驱动程序。这使得它对 PC 用户来说很烦人,对 Squeezebox 等其他硬件来说是不可能的。

通过 Windows Vista 5 控制 NAS 可能会有问题,因为一些 NAS 系统使用备用身份验证系统。这个问题可以通过以下注册表修改来解决:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa

通过设置此选项:

LmCompatibilityLevel = 1

额外功能

由于许多 NAS 驱动器比嵌入式 Linux 机器大不了多少,所以添加额外的软件是微不足道的...对于制造商来说。典型应用包括以下内容:

  • 打印机服务器
  • BitTorrent 客户端
  • 备份支持
  • iTunes 服务器

如果你想添加自己的软件,那么你通常是不走运的,除非你有一个已经被黑客攻击的变种,如 NSLU2,或者你有很多时间自己发现黑客!当计划一个大得多的家庭安装时,您可能只需要一个非常基本的 NAS 驱动器,因为您很可能很快就会升级到一个定制的 Linux 服务器,该服务器将支持您可能向它提供的所有额外功能,并且 NAS 服务是免费的。

当您购买第一个 NAS 时,不要担心额外的功能,而是担心它支持的存储空间,因为您可能没有足够的可用空间来保证在其上运行 BitTorrent 客户端。如此多的 NAS 机器以相当便宜的价格提供,以至于您不需要担心将所有东西都放在一个盒子里。将一个具有数 TB 空间的 NAS 用作 DVD 和 CD rips 的主要媒体存储区域,而将另一个用作辅助存储和功能服务器,这种情况并不少见。然后,第二个 NAS 充当您的台式 PC 和打印机服务器的每日备份。这些角色允许您在不需要时关闭一个 NAS(也许通过 X10)。

带媒体播放的 NAS

对某些人来说,这只是一个背面带有电视输出插座的 NAS。对其他人来说,它构成了一个范式的转变,因为它允许你把这个单元当作一个便携式录像机和视频库。和所有东西一样,它的价值取决于你打算如何使用它。

这些设备的一大卖点是它们可以从一个房间移动到另一个房间,甚至从一个房子移动到另一个房子,而不需要网络。这使得向您的家人和朋友展示您的照片和家庭视频变得更加容易,因为您只需将支持媒体的 NAS 设备插入任何电视,它就会工作。这也是一种引入(小级别)控制孩子们能看什么的方式,因为他们将被限制在硬件的内容上。

Note

有许多应用程序会阻止儿童安全观看内容。但正如育儿书籍告诉你的(或者,任何父母都知道的),你不能完全靠技术来解决这些问题,因为这不是真正的技术问题。

如果您想将您的媒体扩展到一个房间之外,您需要一个支持以太网的版本,如 Freecom 的 MediaPlayer II 或 cineDISK NAS。这些是组合的 NAS 驱动器,通过 Samba 支持文件共享,以及向电视或 HiFi 播放文件的媒体流。它们的优势在于能够从本地磁盘进行流式传输,从而消除了任何网络延迟,并限制了独立媒体单元(如 MediaMVP)的成本。此外,通过在这些设备之间分发您的媒体,如果一个未备份的硬盘出现故障,您不会丢失所有东西。只需很少的努力,你就可以将文件分发到那些更有可能播放它们的机器上,比如客厅里的电影、卧室里的电视剧、书房里的 MP3,以及孩子房间里的动画片。如果您以这种方式分离介质,请注意潜在的存储升级。一些设备为外部硬盘驱动器或记忆棒提供了 USB 端口(尽管一些较便宜的机器只打算为记忆棒提供 USB 端口,不支持大磁盘大小),因此请将这些机器放置在最有可能增加其磁盘占用空间的房间中。从个人经验来看,存储电视节目的磁盘填充得最快。

与所有嵌入式硬件一样,这类设备的问题来自于它们的升级路径,并非所有公司都会添加或发布带有最新编解码器的新固件或对旧固件的修复;许多设备太新,没有黑客社区来帮助。此外,与 MVPMC 不同,在这种情况下通常没有办法使用外部代码转换器。

此外,请仔细检查每个设备的规格,因为尽管包装盒上有“NAS”的名称,但并非所有设备都提供网络插座。一些制造商将声称它是“高清就绪”,而他们的意思是它将解码文件...但是只能以标准清晰度观看。此外,许多播放器没有硬盘,但需要硬盘,即使您只想通过网络传输媒体,如 Emprex 多媒体播放器。

然而,关注这些设备的市场总是值得的,它们通常会提供可以在软件中实现的新想法,例如“在电视上观看 YouTube”功能。

配置 Linux 机器

到目前为止,最灵活的 NAS 服务器是您为自己构建的服务器。任何机器都是合适的,因为处理能力不需要很大,所以它可以是一台旧的笔记本电脑,迷你 ITX 盒,或 NSLU2。唯一的要求就是要有网络兼容性。可选功能包括 USB 端口(用于附加驱动器)和带有 48 位 LBA 的现代 BIOS,因此它支持大于 137.4GB 的磁盘。这不仅仅适用于内部磁盘;如果您使用外部 USB 硬件,这也是必要的,因为它们通常依赖于机器来控制磁盘。

与以往一样,没有必要将所有媒体存储在一台机器上,也没有必要将一台机器仅用作文件服务器。如果您要将媒体分布在不同的物理磁盘上,那么最好将需要较高比特率的媒体(如电影)存储在内部驱动器上,将低比特率的媒体(如卡通或音乐)存储在外部驱动器或较慢的服务器上。

每台机器都需要按照你在第一章中看到的那样进行设置,但是如果有多台服务器或者你可能要移动这些单元,你需要注意你的命名约定。

准备机器

由于每台机器都是基于 Linux 的,它们已经有了自己的文件系统(包括基于文件系统的商业设备),所以这里您唯一的任务就是为您的文件提供一个位置。

对于内部硬盘,总是为您的媒体创建一个单独的 ext3 分区。使用了一个单独的分区,这样就可以单独安装它(这样在崩溃或断电的情况下更容易恢复),ext3 提供了一个日志文件系统。此外,因为媒体分区很可能是第一个被填满的分区,所以如果您的 Linux 机器发现没有剩余的磁盘空间,它也不会遇到问题。通过向/etc/fstab添加一个文件来提供一个挂载点:

/dev/sda7 /mnt/mediadisk auto user,noauto  0    0

并从更方便的地方创建硬链接;我在服务器上使用一个名为/media的根文件夹:

ln /mnt/mediadisk/media/tv /media/tv

请注意,我没有将文件存储在sda7分区的根目录中,而是存储在media/tv文件夹中。如果磁盘的用途扩展到包括额外的功能,如备份,这种传统的目录结构将使我受益。

外部 USB 硬盘的工作方式相同,但在/etc/fstab中使用了不同的线路:

/dev/sdb1    /mnt/usbdisk0 auto user,noauto   0    0

在这两种情况下,磁盘都不会自动装载。这是个人偏好,因为它要求——也要求我——在重大电源故障或崩溃后检查磁盘,其他人可能会忽略或跳过这一步,从而损害文件系统。

外部 USB 设备的另一个变化是,由于目录位于不同的物理磁盘上,因此需要使用符号链接:

ln -s /mnt/usbdisk0/media/tv /media/tv

这些驱动器的一个额外功能是记录哪个物理硬盘用于存储内容。这是在驱动器损坏或即将损坏,并且您需要移除正确的驱动器时使用的。在以相反顺序安装两个 USB 驱动器的情况下,这也很有帮助。

为此,我只需切换到相关驱动器的根目录,并键入以下内容:

touch THIS_IS_THE_SILVER_LACIE_500G_DRIVE

touch THIS_SHOULD_BE_MOUNTED_UNDER_SDB1

这证明了不污染根部的另一个原因。如果你遵循了从不同制造商购买硬盘的建议,这些名字很容易挑选。

准备文件系统

一旦机器准备就绪,就必须考虑媒体文件系统;你必须从全局的角度来考虑这个问题,包括每台服务器和整个房子。存储链有三个要素需要考虑:

  • 机器名称
  • 机器的物理位置
  • 存储在该计算机上的媒体的共享文件夹名称

把这些整理一下,机器名称往往会由厂商提供,比如cineDISK。如果你有能力,将其重命名为cineDISK1,并在设备背面添加一个粘性标签来表明这一点。如果可能,请始终为设备添加一个递增的数字,因为这将使扫描、备份和维护脚本更容易编写,因为每个名称都是按逻辑创建的,没有任意的限制。

您可能想在不提及制造商的情况下命名设备,如media_nas1所示。这也很好,但是建议您注意这指的是哪个设备。我在家里的内部 wiki 上使用一个页面,其中包含所有连接到我的网络的硬件的设备、型号、MAC 地址、固件版本、网络论坛等等。我还用它来记录每台机器的物理位置。

共享文件夹的名称应该都遵循一个约定,比如media_moviesmedia_tv等等。如果你有孩子,并为他们提供网络访问,那么提供单独的文件夹,如media_kids可能是个好主意。将所有介质拆分到单独的共享文件夹中的原因是,每个介质都可以有不同的 Samba 访问权限(每个介质都有或没有密码),并且可以自行卸载,而不会影响系统的其余部分。如果只有根media文件夹是共享的,那么控制一个media/movies目录将会更加困难。

准备主服务器

到目前为止,我们有许多服务器,有大量的技术信息和元数据。这些名字都是出于维护的目的。没有用户会想要或者需要知道这些卡通片在备用卧室的media_children下面的media_nas2上。家庭成员也不应该对你将movies文件夹分割成两个独立的磁盘 6 感兴趣,因为对于旧的驱动器来说太多了。为此,您应该指定一个主服务器。它可以是媒体服务器之一,也可以是完全不同的机器。建议这台主服务器运行家中最重要的服务,也是 24/7 全天候运行的服务。这允许它被用作 Node0,你将在第四章中了解到。

然后,这个 Node0 机器将每个共享文件夹从每个服务器挂载到它自己的目录结构中。正是这种共享的目录结构使得每个媒体流设备都可以访问媒体。

Note

乍一看,NAS1 连接到 Node0,然后再连接回 NAS1 似乎有些浪费,但要有效地向上扩展,在统一的环境中提供所有媒体,并支持媒体架构的动态变化,这是最好的方法。

我使用的目录结构将所有 Samba 共享放在一起,如下所示:

/net/homenet/slug1/media_tv

像这样的本地磁盘:

/net/homenet/mediapc1/usb2/media/movies

/net/homenet下面的层次结构中,作为一些链接或 Samba 挂载。这将成为一份关于家庭媒体服务器布局的自记录报告。然后,我在/net/media目录下创建一系列链接来隐藏结构:

ln -s /net/homenet/mediapc1/usb1/media/tv   /net/media/tv

ln -s /net/homenet/mediapc1/usb2/media/movies /net/media/movies

ln -s /net/homenet/itx1/usb1/media/mp3    /net/media/music

ln -s /net/homenet/slug1/usb1/media/videos  /net/media/videos

然后,为每个目录添加 Samba 共享就很简单了:

[media_tv]

comment = Media (TV)

path = /net/media/tv

browseable = yes

public = yes

writable = no

read only = yes

guest ok = yes

如第一章中的所示,我为家庭创建了只读的基本 Samba 共享,并为我创建了单独的受密码保护的读写共享。

还要注意,我使用了我家的子域(homenet)作为与目录其余部分的分隔符,而不是将所有内容都放在/net中。作为一名软件开发人员,它允许我创建自己的子网,它不是一般家庭自动化网络的一部分,以防我需要做一些冒险或实验!

媒体扩展器

一旦你有了一个文件服务器来提供对你的媒体的访问,你就需要某种方式来将媒体以听觉或视觉的方式呈现给世界。这可能涉及独立的硬件、基于 Linux 的机器或两者的组合。

独立硬件

要符合这一类别,硬件必须连接网络,使用 DHCP 来确定其 IP 地址,然后将数据从文件服务器传输到物理连接的电视或扬声器。这些设备总是使用 Samba 作为文件服务器,因为安装特定的驱动程序(比如 ZFS)在现实世界中是不可能的。

Hauppauge MediaMVP

尽管该设备可追溯到 2002 年,但它可以通过网络传输音乐、标清视频和图片,并在电视上显示。零售单元相当便宜、小巧、安静,是理想的主机单元。它只有三个插座:电源、RJ-45 以太网和 SCART。(美国版本将最后一个插座扩展到 S-Video、复合视频和立体声音频。)

为了工作,MediaMVP 需要三个独立的服务: 7 DHCP,用于启动过程的 TFTP,以及用于数据的 Samba,因为它没有自己的存储设备。开箱即用,这些服务是由一个 Windows 软件提供的,该软件有许多限制,如缓慢的菜单系统。这台机器还会阻止你观看任何非 MPEG1 或 MPEG2 编码的视频。这是因为视频信号是由 MediaMVP 内部的自定义芯片解码的,该芯片仅支持这些早期的编解码器。幸运的是,MediaMVP 启动时使用的协议是标准的,这使得您可以将 Linux 用作服务器。然后,你可以通过替换在实际设备上运行的固件,让它连接到 VLC,将你的文件实时转码为 MPEG2,从而更进一步。

创建服务器

MediaMVP 的启动过程是双重的。首先,它发送一个 DHCP 请求,请求它自己的 IP 地址和 TFTP 服务器的地址。其次,它使用这个 TFTP 服务器下载固件,固件最终在 MediaMVP 上运行,成为媒体设备。

首先将配置添加到/etc/dhcpd.conf:

group {

next-server 192.168.1.2;     # IP address of your TFTP server

host mvp {

hardware ethernet 00:0d:fe:00:15:8D; # of the MediaMVP

fixed-address 192.168.1.98;

filename "dongle.bin";

}

}

地址不必是固定的;然而,我在我的网络上采用了一种约定,表明我的子网上地址小于 100 的任何机器都是“内部设备”,如服务器或嵌入式硬件,不容易改变或移动,因此总是可用的。所有 100 或更大的都是一台随时可能从网络中移除或关闭的计算机。

从这里,控制被传递到 TFTP 服务器,以便 MediaMVP 可以请求固件,由文件名dongle.bin给出。

TFTP 代表普通文件传输协议,它是通常用于在机器之间复制文件的 FTP 的一个非常简化的版本。它按正常方式安装:

apt-get install atftpd

这将在/etc/inetd.conf/etc/default/atftp中添加适当的行,指示文件传输的目录(通常是/var/lib/tftpboot)。在我看来,与 TFTP 的主要区别在于 TFTP 不能使用用户名和密码。虽然这可能会使程序员的原始工作变得非常简单,但这是以安全性为代价的,这意味着您不应该向世界开放 TFTP 端口(UDP 69)。

然后,您可以将dongle.bin文件复制到/tftpboot文件夹,并打开 MediaMVP。从这里开始,将dongle.bin替换为 MediaMVP 可用的其他固件(如 MVPMC)是一件简单的事情,以提供改进的功能,如实时视频代码转换或与 MythTV 连接。

MediaMVP 媒体中心

这可能是目前可用的功能最全的替代固件;可以从 http://www.mvpmc.org 下载。它包括一个替换文件dongle.bin和一个配置文件。因为 MediaMVP 本身运行的是一个小版本的 Linux,所以这个配置文件只是一个包含 shell 命令的脚本,这使得修改固件映像而不重新构建它变得非常简单。至少,它应该包含将目录装入文件系统并调用主mvpmc程序的命令:

mkdir /media

mount.cifs "//192.168.1.110/media" /media -o user=mvp,pass=mvppass,rsize=34000;

mvpmc &

然后,您可以根据想要引入的额外功能向该命令添加参数。我现在将介绍其中的一些。

Note

在 MediaMVP 中也不能使用来自mount.cifs命令的匿名登录,所以在运行文件服务器的计算机上创建一个单独的 Linux 帐户(在本例中为 192.168.1.110)。因为此用户名/密码在配置文件中可见,并且此配置文件对任何具有 TFTP 访问权限的人都可见,所以您应该加倍确保它在您的网络之外不可见。

天气预报

这些数据是从 Yahoo!天气服务,并通过图形从屏幕上的一个菜单选项中呈现。它需要知道你在世界上的什么地方,并且你可以访问互联网。对我来说,在伦敦,这需要以下替代路线:

mvpmc --weather-location UKXX0085 &

您可以通过访问 http://weather.yahoo.com ,搜索您所在的城镇或城市,并抓取 RSS 提要来确定此代码。这将引导您进入如下 URL:

http://weather.yahooapis.com/forecastrss?p=UKXX0085&u=c

您会注意到城市代码(p=UKXX0085)和单位(u=c),允许您以摄氏度或华氏度来表示数据。

视频转码

硬件解决方案的最大问题是缺乏升级途径。虽然 MediaMVP 提供了一种改变固件的方法,但是 MVP 硬件没有使用足够强大的处理器来允许固件实时解压缩视频。不要将您过去的所有 DVD 片段转换成合适的格式,而是可以在您观看它们时即时转换格式(称为转码)。这需要配置 MediaMVPMC 和运行 VLC 的代码转换服务器。

首先,您需要添加适当的参数,告诉 MVPMC 代码转换服务器的地址。

mvpmc --vlc 192.168.1.110 --vlc-vopts dvd &

自然,就像我们见过的其他服务器一样,服务器只涉及软件,可以与 DHCP 或 TFTP 服务器存在于同一台物理机器上。但是,由于需要增加处理能力,您可能希望在单独的机器或桌面上运行转码软件。这允许你有一个小的,低功耗的服务器来运行你家的主要系统,只有在必要的时候才使用“大铁”。

Tip

代码转换服务器只需要一个具有合理规格的 CPU,这意味着一个旧的精简版 P3 或 P4 就足够快了。利用你的桌面通常是一个好主意,因为转码不会降低你的工作速度,因为那时你正在看电影!

根据转码服务器的速度,您可能无法管理最高质量的图像。通过将–vlc-vopts修改为 SVCD 或 VCD,您可以将合成质量分别降低到超级视频 CD 格式或标准视频 CD 格式。

Note

MediaMVP 设备本身只有输出标清图像的硬件。如果你一直将蓝光光盘翻录为高清文件,那么你需要使用 VLC 将它们转码为标清格式。

还建议您使用--use-mplayer命令行开关,如果 VLC 不能正确理解文件格式,它将切换到mplayer转码。

使用代码转换服务器的最大注意事项是,MVPMC 客户端软件播放的文件名必须与 VLC 在服务器上看到的完全相同。这可以通过小心使用符号链接来安排,因为我的媒体安装在磁盘的其他地方,我不想改变它。因此,我在我的服务器根目录下创建了一个特殊的文件夹,其中包含适当的链接:

mkdir /mvpmc_media

ln -s /media/mp3 /mvpmc_media/mp3

ln -s /media/movies /mvpmc_media/movies

ln -s /media/videos /mvpmc_media/videos

然后,我在 MediaMVPMC 上复制了这些文件,创建了自己的mvpmc_media目录,并通过网络挂载这些文件夹:

mkdir /mediamount

mkdir /mvpmc_media

mount.cifs "//192.168.1.110/media" /mediamount -o user=mvp,pass=mvppass,rsize=34000;

ln -s /mediamount/videos /mvpmc_media/mp3

ln -s /mediamount/videos /mvpmc_media/movies

ln -s /mediamount/videos /mvpmc_media/videos

如果您愿意,您可以在 MVPMC 运行时通过动态应用挂载指令来测试它们,因为您可以telnet进入 MediaMVP 硬件(用户名:root,无密码)并直接发出命令。

这个过程还有另一个好处,因为 MVPMC 上的文件系统浏览器非常简单;一个名为vids的目录对于创建它的极客来说可能已经足够好了,但一个更具描述性的标题,比如充满大写字母和空格的Music Videos,会受到其他家庭成员的欢迎。因此,您可以使用全名重复前面的过程来实现这个目标,而不违背您的 Linux 命名约定。

Note

虽然 DVD VOB 文件可以在此系统上播放,但不支持 DVD 菜单。

其他功能

MVPMC 中可用的其他功能包括:

  • 从 MythTV 或 ReplayTV 获取数据
  • VNC 观察报
  • 流媒体直播网络电台

它们的设置要求非常简单,在线文档中也有介绍,所以我不会在这里介绍。

极端

这是通过电视或 HiFi 系统播放媒体文件的几种设备之一。它的低价位和包含的 HDMI 使它成为进军媒体流的好机会。它是一个很好的测试单元,因为它支持从其内部磁盘、外部驱动器或网络(有线和无线)播放媒体。这使得它适合尝试不同的配置,而无需购买额外的盒子。除了音乐和电影,它还支持图像预览、天气预报以及来自 YouTube、Picasa 和 Flickr 的直播。

手风琴

该设备于 2003 年推出,是 MediaMVP 的纯音频版本之一,具有类似的“黑客能力”它也适用于客户机/服务器结构。本例中的服务器是一组运行在 Linux、Mac OS X 和 Windows 上的开源 Perl 脚本,名为 SqueezeCenter(以前的 SlimServer)。这为客户端提供了本地存储音乐的音频数据,并提供了一种连接到外部源(如互联网收音机或 MP3tunes music locker)的方式。它还能够通过向客户机发送命令来控制它们。服务器本身不播放音频,尽管您可以在同一台物理机器上运行软件客户端来透明地实现相同的结果。

然后,您需要一台或多台客户机(即主机)在远程房间播放音乐,通过有线或无线网络连接。该头单元可以如下:

  • Squeezebox Classic,带显示和输出到 HiFi 放大器
  • Squeezebox 接收器,无显示器,遥控
  • Squeezebox 吊杆,带显示器、内置放大器和扬声器
  • Transporter,据报道是一个更高质量的播放引擎
  • 软件客户端

使用适当的遥控器,您可以将 Squeezebox 实例链接在一起,以便它们都能播放相同的音乐,从而提供完整的全屋音频系统。

服务器软件

Linux 下的安装非常简单,通过使用软件客户端,您可以测试环境,而无需购买任何硬件。首先,转到/etc/apt/sources.list,在文件的任意位置添加以下内容:

debhttp://debian.slimdevices.com

接下来,执行以下操作:

apt-get update

apt-get remove --purge slimserver  # in case of an old install

apt-get install squeezeboxserver

并且,在确保您的音乐收藏为(新)SqueezeCenter 用户设置了适当的读取和执行权限后,您可以连接到它的 web 服务器(在端口 9000 上)并配置服务器。

其他软件

SoftSqueeze 是 Squeezebox 硬件的软件仿真,可从 http://softsqueeze.sourceforge.net 获得;它支持 Linux、Mac OS X、Windows 和大多数具有良好 Java 实现的平台。这对于测试新服务器和用作标准媒体播放器来说是很好的;但是,由于过分热衷于模拟双线 LCD 仿真,导航有点令人厌倦。然而,如果你愿意,你可以使用 SqueezeCenter 软件——通过其网络界面——来控制播放列表。当然,通过打开适当的端口,您可以远程完成这项工作。

Videobox ( http://videobox.sf.net )是一种使用(硬件)Squeezebox 将其红外信号传回服务器的方法,因此它可以触发外部脚本和代码。给出的一个例子是在服务器上开始电影回放,以便可以在屏幕上观看。

霸王龙 ME1

这款现代设备诞生于 2007 年,是目前可用的几种媒体播放设备之一。它声称支持高清输出,但缺少 HDMI 端口;因此,它通过 720 便士或 1080 英镑的高档 via YPbPr 提供其最高品质。它也可以作为一个 AV 记录器,但只能通过复合输入。该单元使大多数用户受益的地方在于它的低成本和本地存储支持。这可以通过 IDE 硬盘(或 SATA 硬盘,最新版本也可以将存储空间从 500GB 增加到 750GB)或 USB 进行,无论是记忆棒还是 USB 硬盘。

与许多技术一样,建议使用最新的固件;它现在支持 NTFS(默认文件系统是选择不当的 FAT32,它限制了最大文件大小),并且内部硬盘也存在稳定性问题。幸运的是,在后来的固件上,内置磁盘是可选的,允许你使用一个连接到 USB 的磁盘。

当然,该设备也可以从网络上读取电影文件,你也可以用它来删除 ME1 的本地存储上录制的电影,以便在其他地方存档。这个方法在(非常)低流量的网页 http://emprex-me1.blogspot.com 上有详细介绍,还有他们的谷歌群列表。

只有 Linux

这些年来,GNU/Linux 操作系统出现在如此多的发行版中,很难跟上它们的步伐。许多人在职业生涯早期就接受了一个,并且从未改变。当使用 Linux 机器作为媒体播放器的基础时,这些规则需要重新考虑,因为对桌面有好处的不一定对媒体播放有好处。因此,我将考虑一个合适的 Linux 发行版的必要的好处和特性,并且只提到细节作为例子,因为在硬件的情况下,这个领域发展得太快,不能给出明确的“最佳”答案。

操作系统

从真正的意义上来说,操作系统由内核、驱动程序、模块和相关软件组成。这些组件打包在发行版中,以便于安装。因此,在选择合适的分布时,需要考虑的变量很少。

首先,也是最显而易见的,您需要获得为所提供的内核构建的健康的驱动程序。硬件,尤其是图形等高端领域,需要高性能和特定的驱动程序来确保其得到有效利用。虽然大多数显卡没有加速板载视频解压缩,但它们有许多其他功能的硬件加速,这将显示视频性能的显著改善。

第二,你应该考虑启动时间。例如,xPUD 需要大约 10 秒钟,使它看起来像一个真正的机顶盒,而不是一台小型计算机。XBMC,正如你在第二章中看到的,也在这个范围内。

最后,需要确定分布的总大小。这总是最后一个考虑因素,因为它可以不费吹灰之力解决,也就是说,在更大的硬盘或固态存储卡上多花几分钱。后者对于大多数媒体流机器来说是更好的,因为你可以更快地从它们启动,它们持续更长时间(因为更多的操作是内存读取,而不是内存写入,并且没有移动部件),并且它们允许更小的外形尺寸。如果您正在构建自己的专门用于媒体流的 Linux 机器,那么请确保它能够支持从压缩闪存或 USB 记忆棒启动。

软件

一个好的媒体播放器发行版主要不是取决于操作系统,而是取决于软件。毕竟,它是你将要与之互动的软件。大多数媒体流开始时都是媒体播放器。这些对于一个流光来说是完全错误的。考虑这样一个基本场景:你坐在椅子上看着 2 到 3 英尺外的显示器,桌面上有一个由鼠标和键盘控制的媒体播放器。唉,大多数软件都是在台式电脑上开发和测试的,细微的差别可能会被忽略。请记住考虑以下几点:

  • 视觉效果:你通常会坐在舒适的椅子上从很远的地方使用这个界面。因此,按钮和字体需要大而清晰,放在一个整洁的屏幕上,对比度适中,有抗锯齿功能。
  • 屏幕:除非你的客厅里有最新的 LCD 技术,否则你的电视质量通常会比你的显示器低得多,所以小细节(尤其是细水平线)会丢失或在屏幕上无法分辨。
  • 控制:毫无例外,任何没有远程控制选项的家庭影院电脑都会失败。没有人会离开舒适的椅子去按机器上的按钮,或者想要一个键盘或鼠标放在他们的腿上。
  • 可导航的界面:与控件一起,必须有一个清晰的方式在菜单选项之间移动。只有在初始化期间,才可以用键盘输入服务器 IP。

所有这些点都被归类为一种被称为“10 英尺用户界面”的方法这并不是说这些规则是金科玉律或不可改变的,但是在一个软件中发现几个违背这些规则的地方可能是一个线索,表明这个项目还不是特别成熟,在现实世界中很少使用。

神话电视

在所有的 Linux PVRs 中,最著名的可能是 MythTV ( http://www.mythtv.org )。这由两部分组成——后端(mythback)允许你将电视卡上的节目录制到本地硬盘上,前端从mythback服务器上播放媒体文件。通过这种方式,您可以拥有一个功能强大的单一服务器,其中包含许多电视卡和软件,这些软件可以协调用这些电视卡录制频道的最佳方式,还有许多放置在房间各个角落的小型前端设备,它们都从服务器获取数据。这也提供了一种在房子周围流式直播电视的方式。

除了媒体播放,MythTV 还支持替代皮肤和插件模块,允许前端单元显示天气、显示照片库、玩游戏和上网冲浪。

如果你正在寻找一个 PVR 独立的外形,你可以将mythbackmythfront整合到同一台机器中,只要它足够强大。带有硬件编码的电视卡(如较新的 Hauppauges)有助于减小该机器的尺寸和功耗,让您可以使用无风扇系统。

PVR 的软件方法总是胜过硬件,因为可以更有效地添加新功能,并且可以迎合编解码器的变化。我现在将简要介绍一些例子。

弗利普

Freevo ( http://freevo.sourceforge.net )是一款以恶名昭彰的硬件 PVR 的名字命名的名为 TiVo 的游戏。 8 它是一种一体化的方法,在同一个软件中实现视频捕捉、录制和回放。(但在引擎盖下,它有一个单独的电视服务器部分。)这使得它更接近于 Xtreamer 类型的设备,尤其适合于更受控制的安装。

像 MythTV(和大多数软件 PVR,如果我诚实的话)一样,它也可以支持皮肤界面和插件,尽管大多数已经被折叠到软件的稳定版本freevo1中,所以任何改变都需要比平时更大的重新编译。这使得临时开发人员更难做出更改。这些插件包括常见的天气预报、X10 控制(通过heyu)、Skype 和 Flickr。

它也有 LiveCD 版本的图像(老实说,和大多数软件 PVR 一样),所以你不用在你的硬件上安装就可以测试它。

播放器

这是提醒跳过第二章的人回去看一下!XBMC 支持和运行的非 Xbox 平台比 Xbox 平台多。它支持常见的插件阵列,并有一个 LiveCD 版本。

视频磁盘记录器项目

http://www.tvdr.de 的项目是为大多数动手开发者准备的,因为它还包括一个建议的硬件组件。这个硬件是这个项目的主要吸引力,因为它基于 DVB-S 卫星接收器(它的主要关注点,因为模拟和数字电视是由插件提供的)和使用 PIC 芯片的定制遥控器。尽管在当今世界,这种级别的定制硬件很大程度上是不必要的,但它工作得很好,给了用户一个额外的理由来对他们的 VDR 充满热情。它使用的规格也低于当前大多数系统。软件方面,它有一个像样的(如果稍微有点小)界面,看起来像星际迷航:下一代 LCARS 系统和比大多数 PVR 更广泛的插件,包括游戏,电子邮件和网页浏览。

远程控制和 UPnP

在很大程度上,媒体流及其类似物是非常本地化的服务。您可以通过网络传输数据,但是控制器和显示器的物理位置很近。即使你有一个应用程序来控制设备(如 WDRemote 应用程序,或许多 VLC 变种之一),它也只是取代了你通常使用的红外遥控器。你还在把流光和它的遥控器绑在一起。进化的下一步是正式分离这些单元,并建立允许它们通信的开放协议,以及可以随意替换的单个组件。正如你可能猜到的,从标题到这一节,这是可用的 UPnP。

UPnP 简史

通用即插即用(UPnP)于 2008 年 12 月随着覆盖网络设备的 ISO/IEC 29341 标准的发布而正式开始。主导原则是,支持 UpnP 的设备可以在没有任何人工干预的情况下进行连接——更重要的是,进行配置。通过消除对设备驱动程序的需求,将逻辑转移到协议中,然后将这些协议视为阶段,每个阶段都有围绕每个阶段的限制的规则,这才成为可能。基本堆栈分为六个区域。

网络寻址

正如在第一章的寻址部分所述,网络最好使用由 DHCP 分配的动态 IP 地址。所有的 UPnP 设备都使用 DHCP 来确定其本地地址,因此准备这样一个网络的(短)时间投资被认为是非常值得的。在这种服务不可用的情况下,UPnP 应该退回到链接本地地址,这可能不在您的预期范围内。(它将始终位于一个私有的内部网地址上,但可以与您设置的其他地址不同,因为 169.254/16 范围是首选,这意味着设备将不可见。)

有了路由器提供的开箱即用功能,即使是偶尔涉猎 HA 的人也可以确保轻松的 UPnP 体验。自然,当 UPnP 设备是软件设备时,IP 由主机提供。

发现

与其他服务(如蓝牙)能够发现其网络上的兼容设备一样,它通过简单服务发现协议(SSDP)工作,其行为类似于 DHCP 或 DNS。因此,端口 1900 充满了寻找这些设备的流量。您不太可能想要(或需要)本地 intranet 之外的发现服务,因此没有必要向外界开放这个端口。此外,由于这是一个多播请求,您将无法通过 wifi 使用它,因为默认情况下,大多数 wifi 路由器禁用多播。

描述

这是一个 XML 文件,通过 HTTP 返回,描述整个设备。它不控制设备本身,但它解释了如何这样做。该文件的一个示例如下:

<?xml version="1.0" encoding="utf-8"?>

<root >

<specVersion>

<major>1</major>

<minor>0</minor>

</specVersion>

<device>

<deviceType>urn:schemas-upnp-org:device:BinaryLight:1</deviceType>

<friendlyName>Kitchen Lights</friendlyName>

<manufacturer>OpenedHand</manufacturer>

<modelName>Virtual Light</modelName>

<UDN>uuid:cc93d8e6-6b8b-4f60-87ca-228c36b5b0e8</UDN>

<serviceList>

<service>

<serviceType>urn:schemas-upnp-org:service:SwitchPower:1</serviceType>

<serviceId>urn:upnp-org:serviceId:SwitchPower:1</serviceId>

<SCPDURL>/SwitchPower1.xml</SCPDURL>

<controlURL>/SwitchPower/Control</controlURL>

<eventSubURL>/SwitchPower/Event</eventSubURL>

</service>

</serviceList>

</device>

</root>

(来自 http://developer.gnome.org/gupnp/unstable/server-tutorial.html )

控制

描述了该设备将响应的控制之后,远程控制应用程序就有可能向该设备发送消息。这些都用简单对象访问协议(SOAP)包装,这意味着您将看到大量的 XML!

事件通知

控制层用于接收传入的消息,只有 even notify 层能够发送它们才有意义。当设备上的状态改变时,就会发生这种情况。这些事件的细节因设备而异,因此当“控制点”第一次订阅设备时,会发回一个列表(同样是 XML 格式的),其中详细列出了控制点可以监听的事件。然后,它请求订阅这些事件,从而启动设备和控制器之间的推送机制。

陈述

最终,有一个层,其中两个设备同意在特定 URL 的媒体想要被播放,并且它应该在特定设备上被播放。在规范中没有给出表示层应该支持哪些媒体格式,因此哪些文件是兼容的。这是“有意为之”,这是数字生活网络联盟已经解决的问题。(有关这方面的更多信息,请参阅本书后面的内容。)

因为表示层与控件和服务器是分离的,所以该架构为我们提供了一个非常巧妙的内置优势!也就是说,很容易将一个信号流式传输到两个不同的表示组件。从表面上看,这提供了一个基本的“全屋音频”系统,或者说是一种在客厅观看同一节目并在厨房继续观看的手段。的确,这是可能的。但是由于演示组件在功能上不需要匹配,这意味着您可以在休息室拥有一台支持 UPnP 的电视,但在厨房只有一组合适的扬声器。通过这种方式,你可以继续听节目,而不会被画面分散注意力——如果你在厨房工作,这可能是有益的。

证明

这是我们六层堆栈中的第七层。即...没有认证!尽管这说明了我们不开放端口和使用本地网络地址的决定,但它确实引入了一个问题。在这种情况下,这不是一个技术问题,而是一个管理问题。如果本地网络上的任何人都可以访问您的媒体,您能信任网络上的人吗?在大多数情况下,这些是你的家庭成员,他们(应该)遵守必要的社会规范和强制措施,以阻止他们滥用这种权利。但是,您只有一个大的粒度控制机制,也就是说,如果这个机制失败,就完全删除他们的网络访问。

有对 UPnP 的扩展(例如设备安全服务和 UPnP-UP(用户配置文件))和协议仍然没有得到广泛支持。

但是,如果您需要身份验证,并且您不能确定您的小孩是否会对您的证书 15/18/X 级电影感兴趣,那么您可能需要借助 Samba,在您的媒体分发中使用密码保护区。与 UPnP 相比,它没有得到很好的支持,也没有那么灵活,但它会让人安心。

UPnP 的高级分离

鉴于内部协议基于堆栈的安排,最终用户也了解这一概念也就不足为奇了,因为系统各部分的功能是分离的。这种分离非常自然,包括:

  • 服务器—向网络上的其他设备提供媒体
  • 控制器—在任何给定设备上启动/停止媒体
  • 渲染器—显示媒体,可以是视频、图片或音频流

这种分离意味着您可以在任何给定的设备上实现任何(或所有)功能层。如果他们生活在一个单一的设备,你有一个标准的媒体播放器。当服务器分离时,典型的媒体流设置是 NAS 扮演服务器的角色,而流媒体工具是控制器和呈现器的组合。当它们都独立时,您可以从任何地方使用任何媒体控制任何设备。这进一步扩展,以便您可以在一个设备(或渲染器)上开始观看节目,使用控制器,并向不同的渲染器发送命令以继续观看。

这也意味着你需要安装三个软件。

计算机网络服务器

这里有几个选项,选择哪一个取决于运行它的机器的大小。

迷你 DNA

对于微型需求,如树莓派,我们有恰当命名的 minidlna。这是一个微型的尺寸和外观,但是它提供了标准的音频、视频、字幕和图片功能。最大的缺点是缺乏代码转换,但是对于基于 Linux 的 HA 解决方案,媒体呈现器能够处理几乎任何格式,这是对 CPU 周期的不必要消耗。

它可以从 http://sourceforge.net/projects/minidlna/ 下载,或者,对于那些使用 ArchLinux 的用户,在 https://www.archlinux.org/packages/?name=minidlna .作为一个包检索。大多数其他发行版还没有包含它,所以你通常需要编译它。您将始终需要包含它所依赖的 AV 库的开发版本:

  • libavcodec 公司
  • libavformat
  • 滑鹌
  • 利贝西夫

此外,根据版本的不同,您可能需要修改 metadata.c 来处理 AV 头文件中的更改。具体来说,转到第 715 行附近,显式添加:

#define AV_DICT_IGNORE_SUFFIX 2

因此它在函数定义之前:

#define AV_DICT_IGNORE_SUFFIX 2

sqlite_int64

GetVideoMetadata(const char * path, char * name)

{

配置服务器需要您编辑基本配置文件,以指示端口、媒体文件的适当位置以及日志文件。该文件为 minidlna.conf,应修改为:

# port for HTTP (descriptions, SOAP, media transfer) traffic

port=8200

# set this to the directory you want scanned.

media_dir=A,/net/media/mp3

media_dir=/net/media/movies

# set this if you would like to specify the directory where you want MiniDLNA to store its log file

log_dir=/var/log

多行 media_dir 是完全可以接受的,“A”标志确保只包含音频文件。这很方便,因为一些较新的专辑包括数字曲目和音乐视频以及它们的音频对应物。

在这里,您可以使用以下用户帐户将服务器作为守护程序启动:

minidlna -f minidlna.conf

此时,它将扫描所有文件的指定媒体目录,尽管服务器将在扫描完成前开始。因此,随着扫描过程的继续,一些媒体播放器将需要刷新(或者,在最坏的情况下,重新启动)来拾取文件。它还将在内核中安装一个 inode 通知程序,以自动在媒体目录中查找新文件,尽管为引入新媒体而对配置文件进行的任何更改都需要您重新启动守护程序。有一个命令可以强制进行这样的刷新:

minidlna -R

尽管这种选择的成功程度变化很大。

如果您打算在/etc/init.d中的启动脚本中包含 minidlna(或任何其他 UPnP 服务器),那么在序列的末尾包含它,以确保 RAID 等文件系统服务完全启动。

默认情况下,媒体文件的缓存存储在/tmp中。如果您希望这种情况更持久,例如,在重新引导之间,则在配置文件中添加一行以实现这种效果:

db_dir=/var/cache/minidlna

虽然没有 web 管理工具,但您可以通过将 web 浏览器指向端口 8200 或安装 webmin 来检索基本统计信息。然而,在现实中,几乎不需要管理,因为它旨在通过像 VLC 这样的控制者来实现无头运行。

格里利

作为一个媒体服务器,Rygel ( https://live.gnome.org/Rygel )在 minidlna 概念功能的基础上加入了它的主要遗漏——代码转换。自然,这需要一台比 minidlna 性能更高的机器,但该软件仍然保留了其在无头机器上使用的重点。

与 minidlna 一样,Rygel 可以由本地用户运行,并通过指定媒体的 URL 进行配置:

# In ∼/.config/rygel.conf

uris=/net/media/movies,/net/media/mp3

然而,与 minidlna 不同,Rygel 似乎要等到扫描完整个目录后才开始。所以在执行之后:

rygel

有的是时间去喝杯咖啡!

XBMC(外部网路)

自然,像 XBMC 这样的巨型媒体系统既可以作为服务器,也可以作为呈现器。如果您有一个主媒体盒,而其他媒体盒被视为不能同时访问的从属(或从属)单元,这是一个理想的解决方案。当 XBMC 服务器为其他渲染器提供数据时,它可能没有足够的处理能力来支持自己的本地渲染器以及其他请求,因此使用单独的从服务器是一个可行的解决方案。

向其他设备共享 XBMC 内容非常简单,只需要在“通过 UPnP 共享视频和音乐库”标题下启用它根据 XBMC 的版本,这是在设置➤网络➤服务(版本 11,又名伊甸园),或设置➤服务➤ UPnP(版本 12,又名弗罗多)。然后,您可以像往常一样从控制器中发现媒体。

Note

XBMC 是一个非免费的包,所以一些发行版(比如 Debian)的用户需要添加额外的库来通过他们的标准包管理器使用它。

在 Raspberry Pi 上,XMBC 可以通过使用自定义安装(目前有三个)或将其添加为 Raspbian 发行版的标准包( www.raspbian.org/RaspbianXBMC )来安装。

安装程序可在:找到,更多信息见第九章。尽管 XBMC 和 Raspberry Pi 的这种组合在与任何连接到 USB 的设备(例如,外部驱动器,尤其是 DVD)配合时并不是最完美的匹配,但在这一领域已经做了很多工作,因此人们期待着改进!

with more information given in

渲染器

几乎所有的传统媒体播放器都可以被认为是渲染。虽然最初它们仅限于从本地驱动器重放媒体,但这慢慢扩展到通过网络(通过 Samba)处理文件,现在扩展到 UPnP。由于篇幅有限,我有机会简要介绍其中的几个。

可见光通讯

作为媒体播放的坚定支持者,VLC 几乎拥抱了每一项新技术。UPnP 也不例外,在验证新配置的 UPnP 服务器时,它是最容易使用的。

首先,打开工具➤首选项菜单。从这里,选择“全部”以获得配置选项的完整树形视图。然后,您可以打开播放列表分支,并勾选“服务和发现”部分中的“通用播放”选项。您现在已经在 VLC 上启用了 UPnP。

要播放 UPnP 内容,您需要选择本地网络分支,然后它会显示包含 UPnP 的网络上的各种可用服务。过一会儿,就会收到发现消息,您可以像平常一样浏览树。

图腾

Totem 是许多 Linux 发行版的默认媒体,由于 Coherence 插件和控制器的缘故,它在大多数发行版上提供没有配置的 UPnP。要确保可以找到 UPnP 服务器,只需使用“编辑➤Plugins”菜单项,并确保 Coherence DLNA/UPnP 客户端已启用。然后可以从包含“播放列表”的同一个下拉列表中使用它

Note

Coherence 也可以作为一个独立的应用程序,能够充当媒体服务器。

XBMC(外部网路)

当作为一个媒体渲染器时,XBMC 按照最初的设想,播放音乐和视频。XBMC 不需要特定的配置,所以你可以直接进入视频➤文件➤添加视频并浏览到相关的 UPnP 服务器。

真实硬件

由于 UpnP 支持 DLNA(见本书后面),并且 DLNA 得到许多现实生活中的制造商的支持,找到支持 UPnP 的硬件相对容易。这包括索尼、三星和其他公司的电视、Playstation 3、Xbox 360 以及各种智能手机。

此外,大多数配备 Windows 7 或 Windows 8 的电脑将自动运行 UPnP 服务器,提供对用户媒体和一般机器媒体的访问。

控制点

非正式地称为控制器,控制点浏览服务器上的数据,并命令渲染器显示数据。与 UPnP 控制器采用的“一刀切”的方法不同,通过控制点访问媒体具有自动解析元数据的优势,因此您可以按流派、专辑、艺术家或播放列表自动浏览您的收藏。

控制点分为两大类:

  • 与现有玩家或控制器通信的那些
  • 需要中间服务器的应用程序

在第一个类别中,你有一系列 iOS 和 Android 控制应用程序,如 XBMC 命令、VLC 远程等等。这些有时需要您在服务器上打开特定的 HTTP 端口。

其他的,比如 jfcontrol ( www.digitalsirup.com/jfcontrol/index.html )和 Minerva 应用,都需要一个连接 wifi 的机器上的中介服务器。然后,控制点连接到服务器,服务器在传递消息之前对消息进行适当的格式化。虽然严格来说不是 UPnP 控制点,但它们经常被用来控制它们,因此在这里值得一提。

对于命令行爱好者来说,可以通过以下请求来控制 XBMC:

curl -i -X POST -H "Content-Type: application/json" -d '{"jsonrpc": "2.0", "method": "Player.GetActivePlayers", "id": 1}' http://xbmc:www@192.168.0.21:8080/jsonrpc

这将返回正在播放的媒体流(音频、视频、图片)列表。URL 照常分解为[用户名]:www @[IP 地址]:[端口]。更多命令可在 http://wiki.xbmc.org 找到,强烈推荐,因为 XBMC 的 v11 和 v12 之间的结构已经改变。

开发新的 UPnP 应用

由于 UPnP 是一个影响如此深远的标准,人们很想转换现有的应用程序来利用它的功能,并将其扩展到当前可用的许多设备中。编写这种应用程序的范围超出了本书的范围,所以我将把您引向一些使任务变得更容易的资源。

GUPnP 是一个构建 UPnP 应用程序的框架。它的意图很简单,只提供框架元素,排除任何 DLNA 细节,并要求您实现任何类似高级媒体服务器的功能( http://gitorious.org/gupnp/pages/Home )。

dLeyna 是一个相对较新的项目,旨在为 UPnP 应用提供伞式服务,在 https://01.org/dleyna 中有详细介绍。

如果你有兴趣从头开始编写自己的 UPnP 设备,而不使用中间件或助手库,那么前往 http://upnp.org 并从 http://upnp.org/specs/arch/UPnP-arch-DeviceArchitecture-v1.1.pdf 访问基本规范。

www.upnp-hacks.org/upnp.html 也可以找到好的信息。

UPnP—封闭版本

自然,对于任何好的技术,一个(或多个)公司都会在其上构建自己的专有版本。两个著名的是 DLNA(数字生活网络联盟)和 AirPlay。

dlna!dlna!dlna

作为索尼 2003 年的一项倡议,它已经被纳入一个非盈利的贸易组织,现在有 200 多家不同的成员公司,每个公司都加入了自己的观点。因此,有超过 9000 种不同的设备符合 DLNA,使其成为可用的最普遍的媒体分发技术之一,特别是在计算对资深技术极客和 SWMBO 都有吸引力的硬件设备数量时。

尽管 DLNA 和 UPnP 的协议非常接近,但当涉及到内容呈现时,它们的规范是分开的,因为 DLNA 对可以分发的媒体进行了限制。这些限制以文件格式、编码和屏幕分辨率的形式出现。尽管这确保了任何 DLNA 将“正常工作”,并真正实现 UpnP 的“零配置”梦想,但是,因为 DLNA 是许多年前开始的,并且电影编解码器(相对而言)经常改变和升级,这意味着 DLNA 不支持今天广泛使用的许多格式(如 MKV)。要解决这个问题,您可以在服务器或渲染器上解决问题。在服务器端,您可以在流式传输之前将电影转码为可接受的 DLNA 格式。尽管这很昂贵,但在大多数相当强大的桌面系统上实时完成是可能的。(但是,如果涉及多个流和/或一个 Raspberry Pi,您还不如将文件复制到 USB 记忆棒,然后带着它走到您的设备上!)从呈现器方面来说,许多现成的媒体流将支持规范中没有包括的格式,以消除兼容性和代码转换的问题。

根据你的观点,DLNA 要么是“UPnP 做错了”,要么是“UPnP 做对了”我将把争论留给你去决定!

DLNA 遵循 UPnP 的理念,将不同的媒体功能分成不同的类型。就 DLNA 而言,它们是:

  • 数字媒体服务器。DMS 的作用类似于 NAS,它存储内容并使网络上的其他设备可以使用这些内容。
  • 数字媒体播放器。DMP 从 DMS 中提取内容,以便回放和显示。
  • 数字媒体控制器。DMC 列举 DMS 上的内容,并向媒体呈现器发送“播放”请求。
  • 数字媒体呈现器。DMR 按照控制器(DMC)的指示,接受由 DMS 推送给它的内容。
  • 数字媒体打印机。DMPr 在 DLNA 相当于一台自我标榜的网络打印机。它可以被认为是一个“只写”DMR,工作到 DMC 或 DMP 的控制。

与 UPnP 一样,一些设备将两个或多个功能组合在同一个物理盒中。

大多数基于软件的 UPnP 设备也是 DLNA 兼容的,但还没有支付许可费来获得正式许可。

空中播放

最初在 2004 年被称为 AirTunes,这是苹果公司开发的 UPnP 和 DLNA 的等价物,允许所有兼容设备之间的媒体流。然而,作为苹果公司,只有当你拥有苹果设备和软件或者进入市场的少数第三方授权产品之一时,这样的流媒体才有可能。因此,它在开源世界中很少被采用,甚至像 ShairPort 这样试图模仿机场快线的项目也失败了。

在基于 Linux 的家庭中使用 AirPlay 的唯一好处是为孩子们提供了一个访问媒体的封闭网络。你可以为主卧室和客厅提供一个开放的 UPnP 环境(观看习惯可以受到社会监督),为孩子们提供一个 AirPlay 环境。

分配

这是我们数据链的第三步。一旦我们提供并解码了媒体数据,我们就剩下一个 AV 信号,可以随时插入电视或高保真音响。但是我们还有选择。

本地处理与远程处理

前面提到的设备都是本地加工的。也就是说,我们在与电视或 HiFi 物理连接的位置解码数据。这种情况很常见,因为它为我们提供了更高的保真度,并意味着控制该单元更容易,但在某些情况下,远程处理更好,只发送合成的 AV 信号。

AV 发行

几乎所有媒体播放设备的输出都是我们的第一站。这通常包括用于立体声音频或复合视频、S-Video、EIA 接口、SCART 等的 RCA 唱机插座。这可以将低功耗的模拟信号短距离传输到放大器,无论是电视还是高保真音响。因为这些信号总是需要一个功率放大器,我们称之为主动分配。

以这种方式提供分布需要各种互连和许多电缆。这些电缆的长度没有上限,因此扩展和配电箱是可能的,允许在多个地方观看同一图像。自然地,作为一个模拟信号,音频(或图像)会随着远离信号源而变得更柔和。只有你能决定什么样的质量损失是你可以接受的。

如果你想在你的房子周围分发高清图像,那么你目前必须考虑更昂贵的选择,如矩阵切换器,因为目前的作物主要集中在 RCA 插座上。

转换

最便宜的必要设备是一个 AV 开关盒,或 AV 源选择盒。这为您的各种设备(DVD、PVR、VCR 等)提供了多个输入,并将其中一个路由到电视输出。大多数设备让你选择使用 S-Video、RCA 或 SCART 输入。这自然要求电视始终设置为接收来自机顶盒的输入,而不是其内部调谐器。有许多开关盒可用,因此需要考虑的特性包括:

  • 红外遥控:这是必需品,真的。因为这个盒子代替了你的电视频道转换器,它必须具有你所期望的电视功能...它至少是一个遥控器。
  • 有源或无源设备:有源设备中有一个小放大器,因此需要电源。这些确保了强信号,但代价是廉价机型的质量较低,因为它们的内部放大器不如 DVD 播放器或电视上的放大器好。无源设备没有这种放大功能,更有可能缺少红外遥控器。
  • 输入连接:虽然有些盒子为每个输入提供 S-Video、RCA 和 SCART,但它们可能不会互连。也就是说,RCA 输入插座可能只连接到 RCA 输出插座,而不连接到 S-Video 或 SCART。因为您只有一个输出到电视,所以这需要您进行补偿,以使您的互连适应最常见的外形,并将所有其他输入转换为相同类型的插头(大多数电子商店都有转换器)。然后使用等效的输出。规范的这一部分通常没有很好的记录,所以先检查商店的退货政策。
  • 输入的数量:数一数你拥有的设备,加上你想购买的设备的数量,再加两个更好的衡量!一旦超过这个限制,你就别无选择,只能买一个更大的开关盒。您可以将它们链接起来,这很麻烦,会降低质量,或者您可以在电视上为每个开关盒使用单独的 EXT 输入,这同样很烦人,但信号链中的电子元件较少。

入门级开关盒上最大的遗漏是在立体声音频和 5.1 环绕声之间切换的功能。因此,您需要一套单独的电缆,将 DVD 的 5.1 输出(控制 5.1 扬声器)和 DVD 的立体声输出连接到您的开关盒。

拆分和合并

一旦您准备好 AV 信号,您可能需要将其分离,以便信号的视频部分进入电视,而音频进入 HiFi 的线路输入。有两种主要方法可以实现这一点。第一种是简单的方法,如果您的电视有自己的立体声输出插座,就可以使用,因为它们可以从电视直接连接到 HiFi,没有任何问题。另一种方法是将开关盒输出的信号分成两路(或更多路)输出,一路用于电视,一路用于高保真音响。这种方法意味着您将无法使用 HiFi 来放大使用电视内置调谐器选择的任何电台,但这可以通过仅通过接收器(如有线调谐器或 digibox)或 VCR 观看电视来纠正,该接收器已插入开关盒。这可以通过多种方式实现。最便宜的是使用两根 Y 形电缆(也称为 Y 形适配器),左右音频信号各一根。这些从一个输入提供两个相同的输出,不需要电源。这些在分离音频信号时工作良好,但在用于视频信号时由于阻抗问题可能不太令人满意。如果质量不够好,那么你需要一个更复杂的分线盒。

分线盒的作用类似于 Y 形电缆,但通常有一个放大器来阻止信号衰减。这也使它能够以很少的额外成本提供更多的输出,允许您将一对单独的电缆接入厨房和餐厅。

如果这两种方法都不适用,您可以通过布设多条扬声器电缆,在放大级之后分离输出。

布线织机

布线织机携带强大的信号(双关语!)通过电缆来驱动你房子周围的各种无源扬声器。因此,我们称之为被动分配。您应该为房子中可能听到相同音频内容的每个区域创建一个织布机,因为这里的本地控制更困难(除非您有带音量控制的扬声器或想要自己黑一个)。在如图 3-1 所示的房间布局中,你在客厅和餐厅之间几乎没有隐私,所以它们会和厨房在同一个织布机上,因为你可能想在不错过音乐或电视输出的情况下进出。相比之下,如果像阳光房或书房这样的扩展被添加到房子的后部,它会被认为是一个具有不同生活方式目的的独立区域,不会在同一个织机上。相反,任何音乐都应该通过 IP 提供。

A978-1-4302-5888-9_3_Fig1_HTML.jpg

图 3-1。

A standard downstairs plan

布线机中的第一个组件是主功率放大器,它的输入来自我们之前讨论过的配电盘。通常,这将驱动一组扬声器,尽管一些放大器为其他组提供额外的输出。在同一台织布机上很少有两个以上的房间,甚至更少有两个以上的房间,所以你通常不需要更多的设备。

在需要更多输出的情况下,您可以在链中添加扬声器控制盒。这需要一个单一的扬声器输出,并分成许多。这些额外的扬声器电缆可以延伸到其他房间,并直接连接到其他扬声器,无需电源。这是这种方法的主要优点;也就是说,电缆更容易铺设(孔更小,因为末端没有笨重的插头),附近也不需要电源插座,使你能够在媒体播放器不实用或不可能的浴室中添加音乐。

Note

浴室使用的特殊防水扬声器是必要的,它们有密封的锥体和篮子,因此可以应对水和湿度。有各种型号,包括可以安装在天花板上的嵌入式。

如果您使用质量合理的扬声器电缆,信号将不会在所涉及的距离上消散。

Note

如果您的放大器有两个输出,但想要控制三组扬声器,那么将控制盒连接到第二个输出,将主扬声器(您更有可能在第一个输出上进行挑剔聆听)连接到第二个输出。如果你不需要这样做,那么在链条中增加一个步骤是没有意义的。

无线 AV 分发

铺设电缆并不困难,但应小心操作,避免钻穿电力电缆、水管和煤气管。考虑到这一点,现在有一些硬件可用,比如你在第一章中看到的 AV 视频发送器,用于无线分发音频信号。

在很大程度上,它们提供了一个方便的解决方案,但景观扬声器,这是建立在外面,看起来像岩石(例如),提供了唯一实用的解决方案。它们也必须由电池供电。

矩阵开关

对于大多数家庭应用,一个标准的开关盒足以控制您的 AV 设置。如果您有蓝光播放器或其他高清设备,您通常会使用 HDMI 将其直接插入电视,因为这消除了信号链中的所有其他组件。唉,我见过的价格合理的开关盒都不支持 HDMI。 9

此外,如果你想把你的两个输入设备(如 PVR 或 DVD)分配到两个不同的地方,那么你会发现你不能,因为交换机只提供单一输出。

这两种限制都可以用矩阵开关来克服。它们具有更宽的输入范围(通常包括 VGA ),可以将输入信号从(比如)八个输入中的任何一个发送到任何(或所有)输出,输出通常为四个或更多。这使得最强大的 AV 控制方法成为可能,所有的硬件都位于一个地方,结果通过电缆传送到房子的每个房间。还有,因为这是专业级的设备,一般都自带串口,便于电脑直接控制。

在您的设置中使用矩阵切换器是一个巨大的进步,不仅仅是经济上的。为了充分利用设备,您需要将您的 AV 设备放在切换器附近。此外,你不仅会有通常的混乱的电缆进入切换器,而且你还会有额外的混乱的电缆离开它——每个房间一套。而且,在大多数情况下,矩阵开关并不小。因此,把它们放在客厅是不切实际的。相反,你需要考虑一个房间或一个隐藏的橱柜,可以放置切换器和 AV 设备。现在设备被隐藏起来,购买一个红外继电器或网关来转发红外信号到机柜内的设备是必不可少的。这将是矩阵切换器所需要的,并可能成为软件包的一部分,所以第二次购买!

矩阵开关的输出连接器各不相同。有些以 AV 信号的形式提供输出,如 S-Video 或其他家用格式,使将其他接收器连接到您的家庭并使其工作变得非常简单。另一些则是为酒店和会议中心设计的,将每个输入编码成专有协议,以便输出可以通过以太网传输。在这种情况下,每个房间都需要一个额外的接收器单元,从而节省了在您的房子周围铺设特定 AV 电缆的工作量。由于数据通过现有的 Cat5 电缆传输,您通常可以用同样的方式发送红外线控制数据,从而节省了经常需要的红外线继电器。

Note

如果您的大部分源媒体存储在硬盘上,那么您可能根本不需要矩阵切换器,因为它可以通过 Cat5 传输到使用软件流解决方案(如 VLC)的小型 Linux 主机。

对于那些生活在地下火山的邪恶天才来说,矩阵切换器提供了一个任务控制室的场景,只需要很少的额外费用!毕竟,你可以将一组输出连接到一排小型廉价的电视机上,同时观看多个信号源。

控制

拥有在每个房间播放音乐的能力是一回事。能够控制每个房间的音乐是另一回事。这是链条中的下一步,但并不总是必要的。再看图 3-1 中的房屋布局。这不需要复杂的控制系统,因为客厅是本地控制的,厨房音频流通常在你开始准备晚餐时打开,在你吃完后关闭。因此,被迫从客厅控制 AV 不成问题。

用扬声器控制盒将几个房间(例如,主卧室、浴室和书房)连接在一起并让它们一直开着也不是什么难事。在这种情况下,很可能尽管三个房间中的两个在一天的大部分时间里可能是空闲的,但是当其中一个房间被使用时,其他房间被排除在外,使得没有必要花费成本或精力来为每个房间提供单独的控制。

本地控制

能够从设备本身控制设备(如扬声器或立体声放大器)是最合理的解决方案,幸运的是,大多数主机都自动提供了这一功能。例如,一个本地放大器或一组有源扬声器的前面有一个音量控制和一个改变源输入的装置。因此,任何使用 AV 或 Cat5 电缆的配电系统都将内置控制。

为了影响无源扬声器(可能是从远程扬声器控制盒馈电的扬声器)的音量,您需要一个与扬声器串联的衰减器。对于低功率解决方案,可以将双对数电位计直接安装到扬声器支架上。(您需要对数,因为这是音量的工作方式,并且您需要双对数来控制立体声音量。)这不会给你特别好的保真度,因为设备内部的两个轨道不会很好地相互匹配,并且产生的一些频率会丢失,但它会很便宜。一个更好的解决方案是,在一个基本的墙壁单元中提供定制的衰减器,并提供一个更好看的质量更好的控制机制。如果您的扬声器不是壁挂式的,那么您将不得不在墙壁空腔内或外部轨道中布设一套额外的电缆。因此,电缆从扬声器控制箱连接到开关,然后连接到扬声器。最好在铺设其他电缆之前考虑这种方法。除了浴室(这种衰减器需要防水),这种控制方法通常是不切实际的,最好使用主动式头部装置或根本没有任何形式的局部控制。

遥控方法

你的房子会随着音乐的声音而活跃起来。除非你生活在每个房间都有音乐的环境中,否则你无法想象这有什么不同。能够改变音量很好,但不是必须的,因为每张专辑都被标准化为内部一致。然而,如果你随机播放音轨,音量会有很大的变化,这就需要本地音量控制。如果你要引入这样的功能,你通常会想要更多的本地控制来跳过那些你不想听的随机音轨。这样的功能需要更多的硬件。

直接控制

标准 HiFi 设备总是配有红外遥控器,因此可以在每个房间放置一个红外中继接收器,并将其发射器与设备上的接收器眼对齐。小型接收器可以安装在墙内,与电灯开关并排,或者代替电灯开关,由电池供电。富有冒险精神的开发人员可以利用廉价的一体化遥控器,将其工作原理与红外继电器和替换开关一起集成到他们自己的墙壁单元中。

继电器控制

虽然很少有消费类产品不附带 IR,但这并不意味着你必须用 IR 来控制它,只要在两者之间有某种东西理解这两种协议。

例如,蓝牙在所有当前的移动电话上都可以找到,尽管它有点耗电,但有许多免费或几乎免费的应用程序可以与适当配置的 PC 接口。因为许多人总是随身携带手机,这提供了一种非常容易实现的控制方式。

所有蓝牙通信都需要蓝牙地址。这看起来像传统网络场景中的 MAC 地址,可以通过以下方式发现:

hcitool scan

请注意,在扫描该区域的设备时会有轻微的延迟,当它消失时,会有进一步的延迟!因此,虽然这个程序可以用来确定蓝牙信号何时回到范围内(因此当你回家时),但最好使用bluemon对单个手机进行定向扫描。

蓝牙控制应用分为两部分,一部分用于 PC,一部分用于移动设备。移动端通常是基于 Java 的,但是,尽管有“写一次就可以在任何地方运行”的口号,由于移动开发的不确定性,通常需要一个特定于你的手机的版本。发送的消息通常采用接收 PC 应用程序可以处理的协议。然后将其配置为向相关设备发送合适的红外信号,该信号可能用于控制当前在 PC 上运行的媒体播放器,或者在蓝牙信号超出范围时锁定桌面屏幕。 10 Vectir 为 Windows 用户提供了这样的功能,而 Linux 社区的用户可以选择软件包 11 如 Remuco、Amarok 或 RemoteJ。还有其他允许在手机和 PC 之间传输文件的包,比如obexftp,但是这些包适合同步应用程序,因此不在本书的讨论范围之内。

X10 为中继控制提供了类似的机制。利用手持发射机模块(如 HR10U),您可以向 RF-to-X10 网关发送 X10 消息(如灯 E10 打开),该网关将数据放在电力线上。然后,您的电脑可以通过重新发送红外信号或影响基于电脑的软件来监听此特定消息并控制媒体播放器。我将在第七章中讲述 Cosmic 的具体机制,它支持所有的附加功能。

服务器控件

涵盖的所有中继方法也可用于控制运行软件的服务器,如媒体播放器。事实上,这通常是更可取的,因为它限制了可能出现问题的地方的数量,并且通常在大多数媒体以数字形式存储在硬盘上的情况下使用。

当服务器向外部位置提供介质时,所有设备都应配置为客户端/服务器。这提供了比以前更明显的分离,以前播放的音乐由远程放大器控制,但扬声器音量由本地控制。采用完整的客户机/服务器方法有许多好处,尤其是因为它统一了系统。这里,每条消息(如“暂停音轨”或“提高音量”)都是由客户端使用任何合适的协议(X10 或蓝牙)发送的。然后,服务器监听所有这些消息,并将它们翻译成正确的 Linux 命令。无论其输出连接到哪里,都可以听到这些命令的效果。此外,当全尺寸 PC 可用于服务器处理时,可以使用更复杂的协议。

网络界面

传统的 LAMP (Linux、Apache、MySQL、PHP/Perl)安装提供了一种很好的方法,通过现代最普遍的界面 web 浏览器来控制你的房子。几乎每个设备,包括游戏机、手机和嵌入式触摸屏,都内置了某种网络浏览器。

构建或破解自己的触摸屏也不再是问题。您可以从当前包含触摸屏的笔记本电脑和笔记本电脑系列(如 Eee PC T91)开始,或者对旧笔记本电脑进行改造(如 Acer Aspire 或 Dell Inspiron Mini)。这些套件包括一个触摸屏膜,从外部连接到显示器屏幕和一个 USB 插头,使屏幕像外部鼠标一样工作。

这些机器体积小,功能强大,可以放在任何地方,包括冰箱上,但你可以通过使用一部旧手机(如诺基亚 7710)并自己安装它来进一步减少占地面积。

软件自然是 Linux。一些精简的发行版提供了浏览器作为其唯一的软件,如 Webconverger。这些是可以形成压缩闪存的实时系统,被称为 kiosk 系统。由于零安装和非常短的启动时间,这些非常适合偶尔使用的家庭终端。

短信

SMS 是所有手机都可以使用的短消息系统,是标准基础设施的一部分。智能家居可以通过两种方式利用它。第一种是将移动电话连接到 Linux 机器上,并使用 Gnokii、SMS 服务器工具或一些类似的软件与之接口。这个软件现在支持很多手机,尽管最初它只支持诺基亚手机。Gnokii 为 SMS 消息提供双向通信,允许您的 PC 阅读和解释它们,或者发送提醒或状态更新。

Note

如果可能的话,当大部分通信是向外的时候,使用预付费电话,以免软件错误或黑客造成大量的发送消息和非常大的电话账单。然而,这并不总是入站通信的最佳选择,因为一些运营商(特别是在北美)也对预付费手机上的入站短信收费!

第二种方法是订阅 SMS 服务提供商,比如 mBlox,它会为您提供电话号码、登录凭证和 API 这允许与任何机器进行双向通信,就像它是移动电话一样。你应该向服务提供商咨询是否有可能在出现问题时限制账户上的花费金额。

随着 G3 网络接入成本的下降,SMS 解决方案最近已经失宠,但它仍然为那些将旧手机传给孩子的家庭提供了一种相当廉价的控制手段。

结论

尽管家庭自动化系统有许多组件,但您已经看到它们都不是特别复杂或者超出了标准 Linux 机器的范围。只有你的极客欲望需要(不,要求!)更多设备。但即使这样,一个稳定的服务器也是一个基础,尽管随着家庭自动化系统的发展,包含更多的定制硬件变得不太合适。尽管 DVD 播放器和 PVR 的成本正在下降,但在每个房间更换每件套件的体积/费用是很麻烦的。此外,你不能在家里分享媒体,还会不断地问,“谁最后拿到了星球大战的 DVD?”大多数系统的目标是将一台非常强大的计算机藏在某个地方,并在不同的房间里安装许多较小的(低功率、低成本)主机,能够播放所有类型的媒体。包含这台功能强大的计算机的区域被称为节点零,我将在下一篇文章中介绍它。

Footnotes 1

通过手机访问需要付费的高级服务。

  2

您必须终止挂起的进程并手动标记文件。

  3

您可能还需要 Win32 编解码器包(w32codecs)。

  4

从技术上来说,以更高的速度播放磁带和唱片是可能的(使用高速配音磁带播放器或将录音机切换到 45 rpm),并通过软件中的音高变换来补偿。但是不值得为此付出努力或损失质量。

  5

这同样适用于 Windows XP SP3、Windows 7、Windows 2003 Server 和 Windows 2008 Server。

  6

如果您是一个热心的系统管理员,可以使用逻辑卷管理(LVM) 2 来动态增加 Linux 系统上分区的大小。

  7

在此上下文中,服务器一词用于表示一个物理硬件,而服务则是指提供对服务器上的数据或资源的访问的软件元素。令人困惑的是,这些服务最常见的名称是电子邮件服务器、web 服务器等等。

  8

它甚至创造了自己的术语“tivoization ”,来涵盖任何使用自由软件运行的设备,但阻止你通过硬件欺骗来行使修改和重用它的权利。

  9

现在市场上出现了一些 HDMI 开关盒,但这些开关盒只包含 HDMI 开关,如在 http: / / www。电视电缆。co . uk/CGI-bin/TV cables/HDMI-matrix-switch-4x 2html 。它们仍然非常昂贵,所以现在现实的选择是要么在本地处理数据,要么只在家里分发标准清晰度的照片。

  10

这是bluemon一揽子计划的预定目标之一。

  11

这里不可能列出一个完整的清单,但备选方案包括 http://tuxmobil.org/bluetooth_cell_apps.html.

四、家就是家:物理实用性

Abstract

经营自己的家是一种很棒的感觉。让它在您自己的 Linux 服务器上运行就更好了。仅仅是能够告诉人们你的主页就是你的主页,就能让你的极客证书更上一层楼。但是让一台机器 24/7 全天候运行会带来来自风扇和硬盘驱动器的永久噪音、闪烁的灯和额外的热量。能够从一台机器控制另一台机器需要布线。在这一章中,我将讲述家庭自动化设置的一些基础知识。

经营自己的家是一种很棒的感觉。让它在您自己的 Linux 服务器上运行就更好了。仅仅是能够告诉人们你的主页就是你的主页,就能让你的极客证书更上一层楼。但是让一台机器 24/7 全天候运行会带来来自风扇和硬盘驱动器的永久噪音、闪烁的灯和额外的热量。能够从一台机器控制另一台机器需要布线。在这一章中,我将讲述家庭自动化设置的一些基础知识。

节点 0

节点 0 是房子中所有电缆的终点,或者说是“本垒打”这意味着 Cat5 以太网、AV 电缆、IR 继电器,甚至 X10 无线收发器都可能位于同一个位置。也是外界的入口,所以调制解调器和路由器也会住在这里。

功能和目的

使用单一节点 0 的想法是让一切都远离日常生活。这意味着,无论服务器有多大、多吵,都可以将其放置在对试图睡觉或学习的人影响最小的地方。它还允许将大量电缆和昂贵的硬件放在某个地方,也许用一把钥匙锁起来,以最大限度地减少涉及洒出饮料和年幼儿童的不小心事故。

尽管这引入了单点故障(一般系统管理中的大忌),但在家中涉及的风险要小得多,并且不会影响已经存在的单点故障,即进出房屋的唯一调制解调器电缆。

服务器本身还提供所有与房屋相关的数据和信息的中央存储库,包括主网站和电子邮件服务,以及可能存在于其他机器上的各种媒体存储库的抽象。通过这种方式,每个非技术人员都可以连接到//server/media,并透明地连接到任何硬盘(在任何机器上)。这样就可以在磁盘变满时进行升级和移动,而无需您的家人打来支持电话!

拥有一台主服务器通常要求它保持全天候开启。将任务集中到一个位置,并将所有服务统一到一台机器上,这意味着只有 Node0 机器需要断电保护(通过 UPS)或防盗保护(通过强锁)。事实上,风险最大的数据通常在独立的笔记本电脑上,所以我稍后也会介绍它们的备份计划。

确定最佳房间

即使是最简陋的住所也有几个适合作为节点 0 的位置。大多数人选择楼梯下的壁橱(因为它在中央,因此需要较少的布线),但不止于此!事实上,在阅读下一部分时,当每个问题或解决方案出现时,您应该在心里将服务器从一个房间移到另一个房间。此外,在某些情况下,实际上不可能找到一个房间来解决所有特定问题,在这种情况下,您可能必须放弃令人不快的功能或在单独的位置使用第二台服务器。

合法的考虑

法律因国家而异,并随着时间的推移而变化,因此在开始工作之前听取必要的建议并获得任何许可是很重要的。实际上,这只会影响极少数人,比如那些在自己的土地上建造新建筑(如阳光房)或改造已获得“评级”或“上市”资格的建筑的人。

必要的考虑

本节中的必要考虑涵盖了特定硬件及其互连的限制。因为主服务器需要完全不受限制地访问您的所有设备,所以这些考虑是最重要的。

X10 信号可能会消散,并被放置在房子周围的各种设备完全吞噬,如第一章中提到的。将 Computer-X10 网关(CM11)移动到另一个插座会大大改变其覆盖范围,因此需要进行大量测试。唉,也许不可能把这种装置放在任何一个地方,让信息在房子里双向传递。这将随后需要两台服务器或两台网关。

电力以太网(EoP 不要与以太网供电混淆)是使用现有电力线增加双向网络功能的一种方式,与 X10 引入电器控制的方式相同。像 X10 一样,它也受电力线上其他设备的支配,所以如果你家里的部分地方无法接入 WiFi,这种方法也应该进行测试。

宽带和电缆调制解调器通常只能在一些预先确定的点进入室内,从而限制了可用的房间。然而,除非你的 Linux 机器是你家其他地方的网关,否则很少需要把你的服务器本地连接到调制解调器。在大多数情况下,一个好的路由器可以有效地隔离内部和外部网络流量,并具有足够的控制能力,从而不必使用成熟的 PC。

WiFi 信号和 X10 一样,会消散。此外,由于所使用的频带是许多其他协议所共有的,这可能会导致连接质量显著下降或完全消失。这些设备包括一些无线接入点(如英国的 BT Homehub)、无线电话、电视发送器和微波炉。此外,因为它们通过空气传播,它们更容易受到你控制之外的外部影响,比如邻居。您可以通过执行以下操作来限制这些其他设备的影响:

  • 切换 WiFi 频道。根据国家的不同,WiFi 被分为 14 个(日本)或 13 个(其他地方)不同的频段,每个频道占用其中的 4 或 5 个频段。这将频道置于频道 1、6 和 11(美国)的中点,而在大多数其他地方则置于频道 1、5、9 和 13 的中点。
  • 添加更多的 WiFi 基站,以最大限度地缩短每个信号传输所需的距离。设置时,将所有单元设置为相同的 SSID,并连接到有线以太网的相同部分。
  • 切换到违规设备的有线版本。要确定违规设备,只需按顺序关闭它们,和/或在每个方向指向一个频谱分析仪,以确定传输源。
  • 干扰违规设备的信号(特别是如果它来自其他人)。
  • 使用定向发射器。

当使用 AV 分配引入全屋音频时,从主服务器为扬声器或放大器供电的电缆会影响服务器的位置,因为每米电缆都会增加外部噪声影响音频质量的机会。此外,由于这是一个模拟信号,如果它必须传播更远,它的功率会变得更小。高质量的电缆可以最大限度地减少这种情况。

Cat5 电缆是在整个房子中实现快速以太网的最佳方法,因为它不受 WiFi 或 EoP 等外部因素的影响。但是,您需要确保您可以从 Node0 位置有效地到达房子的大部分地方。必须考虑混凝土和结构墙,因为电缆可能无法穿过它们。您还希望服务器和客户端之间的网络交换机尽可能少,因此阁楼可能不是最佳解决方案,尤其是如果您计划将大量视频传输到楼下的电视室。

电力是系统中不可或缺的一部分,因此任何房间都必须有足够的电力(并连接到合适的保险丝),以允许台式电脑、笔记本电脑、电灯和电视消耗数百瓦的电力。对于老房子来说,这更是一个问题。

消极效果

电脑,即使是基于 Linux 的电脑,也不能对一切免疫,有些房间自然比其他房间对电子设备更不友好。

厨房、温室、地窖和杂物间比其他地方更容易受潮。湿气会对机器造成不可估量的损害。)它进入电脑机箱并与电子设备发生反应。应该注意的是,虽然湿度对机器本身来说不是一个特别的问题,但它会使它变得很粘,导致它成为灰尘颗粒的磁铁,这些灰尘颗粒反过来会堵塞 PC 的一个风扇(大多数台式机通常有三个风扇:CPU、PSU 和显卡)。灰尘还会沉积在电路板之间的各种间隙中,如 PCI/AGP 卡,使它们无法工作。

此外,灰尘会携带水分,与水蒸气中存在的水分结合,会导致各种部件生锈和退化,从而导致短路和一般损坏。45%到 60%的相对湿度通常被认为是一个合适的范围,可以用湿度计测量。

Note

当温度突然变化时,也会出现湿度问题,例如当机器从寒冷的地方搬来时。在这种情况下,让它自然达到室温后再打开。

温度对电脑的影响和湿气一样严重,但方式不同。虽然大多数机器可以在低温下生存(当然比大多数人类乐于生活的温度还要冷!),他们不喜欢炎热的温度——在场的风扇数量将证明这一点——如果板载温度传感器超过限制,计算机通常会自动关闭。这通常可以消除杂物间,有时阁楼或阁楼,作为一个合适的位置。

因为电脑中唯一的活动部件(除了风扇)是硬盘,所以有必要考虑它们的工作温度。这可能因驱动器而异,但大约在 5 到 55 摄氏度的范围内。

人的考虑

计算机正在进入你的生活空间,而不是相反,所以一旦你知道你选择的位置的物理限制,你就可以考虑生活在那里的机器对生活方式的影响。电脑行为的反社会因素包括噪音、光线和热量。

标准台式电脑的噪音来自各种风扇以及硬盘的咔哒声和呼呼声。虽然风扇产生持续的嗡嗡声,很快就消失在你家周围的背景噪音中,但磁盘偶尔会发出噪音,可能会更烦人。如果你习惯了和电脑睡在同一个房间,那么你会发现风扇经常成为一个舒适的床伴,没有它的陪伴你很难入睡。

硬盘发出的噪音虽然轻微,但却有着有趣的双重属性。虽然你(或你的伴侣)可能会被房子里某个地方的硬盘发出的噪音干扰,但如果你突然听到(通常)安静的硬盘在半夜突然着火,它可以提供一个非常好的声音警报系统。

正如您稍后在查看服务器类型时将看到的那样,一些机器是无风扇的(从而消除了大部分噪音),一些机器可以通过固态设备而不是硬盘工作(消除了所有噪音)。自然,Node0 的定位和/或隔音可能会使噪音的概念变得没有实际意义(静音?)点!

大多数电脑上的灯是最简单的输出接口。标准的前面板包含用于电源和硬盘活动的灯,而背面具有用于网络活动的等效灯,以及主板上通过后部冷却孔发光的其他可见光源。外置硬盘、调制解调器和路由器上也有类似的指示灯。以前的灯给 Node0 一种独特的网络酷的光芒(通常是因为现在更多的技术采用蓝色 led!),而后者产生令人讨厌的闪烁,在夜深人静时,在隔壁房间也能看到。虽然所有这些灯都可以用黑色胶带隐藏起来,但通常最好将这些设备藏在盒子、橱柜或抽屉中,以便在需要时可以查看诊断灯。

除了受到热量的影响,计算机(尤其是台式计算机)也会产生热量。一周 7 天 24 小时开一次空调可以让室温提高 1 到 2 度。因此,你将不得不考虑其他的家庭取暖设备,并考虑将节点 0 放在你房子的底层,让热量上升 1 是否能为你的账单提供合理的节省。这种多余热量的负面影响是,如果在一个每秒钟都在升温的封闭空间中,在 Node0 中的机器上工作可能会非常不舒服。因此,在这里只安装低能灯或荧光灯,以防止它在你工作时进一步升温。

确定最佳房间

鉴于前面的可能性,大多数人会考虑以下房间之一:

  • 客厅:由于靠近电视和主立体声系统,客厅为 HA 安装的所有媒体元素提供了良好的通道。这消除了对红外发射器和大量额外电缆的需要。如果您计划使用实体 DVD,它很容易访问,如果服务器直接连接到电视和立体声系统,您可以获得最高质量的 AV。然而,不利的一面是,将您的服务器放在这里会干扰家庭生活(尤其是当您调整物理连接器时),并且您不能使用任何需要风扇的服务器,因为噪音通常会掩盖电影和电视剧中较安静的音乐和对话。
  • 卧室:这是你每天呆的第一个也是最后一个地方,所以把机器放在手边,显示新闻、视频、电子邮件等等,可能是非常理想的,尽管有时会有点令人不安。它也有客厅的许多好处,因为(主)卧室通常是家中第二重要的电视。因此,除了那些与夜间随机闪烁的灯光和增加的热量相关的问题之外,它还会遭受同样的噪音问题。 2
  • 楼梯下:这是很好的隐藏视线和封闭,这意味着大多数噪音和光污染是隐藏的,因此可以接受。它也是房子的中心,这意味着有线协议(Cat5、X10、音频等)的电缆更短,无线协议受到干扰的可能性更小。然而,在大多数情况下,在不明显的情况下,很难看出如何以及在哪里将电缆(尤其是电源)进出楼梯下的橱柜。此外,它通常是一个非常小的空间,这使得它容易温度上升,并且很难在其中工作——对于机器和进行节点 0 维护时的您来说都是如此。
  • 阁楼:这是一个很好的、隐蔽的、安全的地方,不太可能被盗。将线缆引入上层的所有房间也非常容易。(但反过来,对于一楼的房间来说就不那么容易了,除非你决定在一楼的天花板上铺设一条大型线槽。)如前所述,为阁楼提供适量的电力可能很棘手,温度控制也是如此。

构建机架

家庭自动化机架中的设备种类繁多,因此通常不具备适合机架的正确外形(披萨盒大小的单元)。尽管您可能不会使用传统意义上的机架,但您应该为您的设备考虑某种堆叠机制。毕竟,您应该能够单独访问每一个套件,因为您不会想要拔下并滑出路由器、调制解调器和交换机,只是为了将一些新玩具插入 PC 背面的 USB 插座中!

Note

您可以通过不使用技术填充整个 Node0 空间来确保良好的访问。这也确保了在你获得新装备时有足够的空间来放置它们。

如果你有机会去附近的厨房 DIY 商店,你有时会发现抽屉和橱柜可以在门打开时旋转 90 度,这可以被挪用为一个很好的机架安装。或者,如果 Node0 房间和下一个房间之间有一堵隔墙,您可以在这两个房间之间安装一个出入舱口(类似于厨房服务舱口)。对于戏剧读者来说,你可以用一个秘密铰链把它藏在一幅画后面!

节点 0 机架中常见的设备可能包括:

  • 调制解调器
  • 路由器
  • 无线路由器
  • 家庭报警系统
  • iphone 交换
  • 网络交换机
  • 主服务器 PC 或 Raspberry Pi(低功耗 24/7)
  • 媒体服务器 PC(装有电视采集卡)
  • 显示器、键盘和鼠标(通过 KVM 交换机连接到服务器)
  • 外置硬盘(比内置硬盘更容易更换/升级,不太可能发生磁头崩溃)
  • 音频功率放大器
  • 电视天线放大器

它通过 Cat5 以太网电缆、电力线通信、WiFi 和 AV 电缆的组合连接到房屋的其他部分,其中数据由以下设备拾取:

  • 媒体播放头盒
  • 附加扬声器
  • 辅助音频放大器
  • 个人笔记本电脑和台式电脑
  • 辅助电视,使用天线输入

服务器

要成为一个真正有效的智能自动化家庭,你需要一台全天候的服务器。虽然你见过的许多设备(如第一章第一章中的 CM11U)可以被编程为离线工作,但只有当有东西准备好、愿意并且能够在白天或晚上的任何时间做出决定时,你才会感受到权力。定时灯开关不算。

在家庭环境中有如此多的酷和有趣的技术,很容易让想法脱离自己,让你开始订购你负担不起的最大和最强大的服务器!实际上,如果总费用只有一台服务器,就没有必要只有一台服务器。

服务器容量

服务器的容量分为三个部分:

  • CPU 处理能力
  • 磁盘空间
  • 带宽能力

我将按顺序介绍这些。

CPU 能力

除了少数例外,家庭自动化软件耗电很少。所有的标准任务,如网络服务器、电子邮件、闹钟、短信处理、信息例行程序和音乐播放几乎不需要任何处理,最低的迷你 ITX 能够处理一切,而不需要一点硅汗。

将媒体从一种格式(如储存在服务器上的高清晰度 DVD rip)转码为另一种格式(适用于低端硬件(如 MVP)或在便携式设备上回放的较小版本)会大大增加处理器的负担。因此,拥有两个主服务器并不罕见,每个主服务器都专用于这两个主要任务。

磁盘空间

同样,大多数 HA 任务不需要大量的硬盘空间,所以如果您的操作系统合适的话(最近它们的大小接近 1 GB),那么控制软件所需的额外 25 MB 不会倾家荡产。只有媒体服务器需要额外的空间,为此,您需要尽可能多的空间。外置 USB 驱动器是一种廉价(方便)增加磁盘空间的好方法,而且它们足够快,可以将电影传输到服务器,然后通过网络传输。

你可以考虑一个单独的文件服务器,它唯一的工作就是为房子的其他部分提供文件。通过这种方式,它可以存储在物理上安全的位置(隐藏在看不见的地方,可能在阁楼或阁楼),以防止珍贵的数据被意外破坏或窃取。将服务器固定在坚固的机架中也有助于防止被盗,因为没有人可以轻易拿走 Backblaze Pod ( http://blog.backblaze.com/2009/09/01/petabytes-on-a-budget-how-to-build-cheap-cloud-storage/ )!

带宽能力

这通常是毫无疑问的,因为目前的网卡都支持至少 100 Mbs(大多数都支持 1000 Mbps,毫不费力),这足以在家里分发几个电影流。调制解调器速度通常会限制您的外部流能力,但许多其他因素也会限制您的能力,例如您所在区域的宽带争用、当前的网络流量以及目标计算机及其局域网。

与公司服务器不同,大多数家庭服务器只需要一个网络端口就足够了,因为一个像样的独立路由器可以执行大多数必要的过滤和配置任务,这些任务通常需要两个以太网插槽。但是,将来对您的机器进行任何升级(例如将防火墙软件移到服务器上)或家庭变化(为孩子引入单独的受限内部网)都需要第二个端口。

还要注意,购买集线器而不是网络交换机不再有任何成本优势,因此交换机应该是唯一的选择,因为它允许网络上的每个端口、每台机器都有 100 Mb 的带宽。您应该将所有网络电缆布线回位于 Node0 服务器旁边的单个交换机,以最大限度地减少维护。在一个标准的三居室或四居室的房子里,这种交换机应该至少有 16 个端口。

服务器扩展性

在企业界,改善服务器的设施通常意味着更多的内存或更多的磁盘空间。对我们来说,它还包括新的硬件。虽然不是所有的 HA 应用程序或服务器都需要新的硬件,但是最好考虑一下服务器还能处理什么。

电视卡是显而易见的,因为一个高性能的服务器可以同时录制几个电视台的节目,或者将一个频道转换成适合流媒体播放的格式。PromiseTV ( www.promise.tv )等项目将这一点发挥到了极致,但这是一个可行的选择。

同样,额外的声卡可以提供额外的功能。虽然在 Linux 中的设置可能有点痛苦,但有两个声卡可以让你直接控制其他房间的音频。这可以消除本地控制面板的必要性,因为您可以使用任何连接到计算机的设备,如网络浏览器、电话或通过 Cosmic 连接的 HR10U。此外,记住每个声卡都有输入和输出。这允许你为房子里的每个房间建立一个大规模的婴儿监控器。如果你有一个语音识别系统(在第五章中有所介绍),那么你就可以在每个房间进行即时控制。过去曾有项目将支持 6.1 的声卡引入三个独立的立体声声卡,但最近它们并没有得到很好的维护。

服务器的类型

很自然,根据这本书的标题,服务器将运行 Linux。Linux 能够在几乎任何设备上运行并非偶然,因此这不再是硬件兼容性的问题,而是物理大小、功耗和 CPU 能力之间的折衷问题。硬件没有什么特别的。现成的机器很好。您将熟悉这里列出的大多数(如果不是全部)设备。我们需要考虑它们在 HA 领域的具体相对优势。在大多数情况下,服务器总是连接有鼠标、键盘和显示器(不像商务中心中的那些),以允许更简单的软件维护,并且如果服务器位于可访问的地方,显示器可以显示网页,呈现当前的“房屋报告状态”,几乎实现零处理周期。当这些外围设备不是永久连接时,您可能需要调整 BIOS 以允许机器在没有它们的情况下启动。对于台式机来说尤其如此,当没有显示器时,它们会发出三声哔哔声,并经常发出臭名昭著的“没有连接键盘-按 F1 继续”错误。

机架固定件

这些产品有多种型号,包括配备冗余或双电源以及标准四核处理器的产品。因此,这些强大的处理能力可以同时处理几个用户的代码转换需求,并有足够的周期来处理所有其他服务(web、电子邮件等),而不会影响任何其他用户。它们是商业应用程序的行业标准是有原因的,因为它们可以处理任何负载,任何时间长度,并且可以愉快地运行许多年而没有变化。

不幸的是,只有当你能把它们放在远离生活区的地方,它们才适合家庭使用,因为它们通常有很大的噪音风扇,并散发大量热量。虽然可以通过将机器放在橱柜中来降低噪音,但通常情况下,用低噪音的等效部件替换组件无法达到相同的效果,因为它们通常不是标准的 PC 设计。

热量也是你需要有效处理的东西。空调是办公室的标准配置,但在家里却不是,在家里通常打开窗户就能达到同样的效果。在家里运行机架式服务器通常至少需要某种排风扇。

当考虑其升级状态时,非 PC-ness 也将击中要害。您将无法将 PCI TV 卡安装到许多机架式机器上,因为连接形式和尺寸会受到限制。您还需要购买一个物理机架或半机架来安装设备。这些都是为商业安装而设计和定价的,尽管你总是需要为前面提到的所有设备安装一些支架,但有更便宜的 DIY 搁架方式。

桌上型电脑

这是最受欢迎的选择,因为所有显而易见的原因:它们是可以理解的,常见的,便宜的,并且是为家庭使用而建造的。它们也可以通过额外的卡轻松升级,磨损(或噪音过大)部件的替代品可以在当地的实体店买到。目前的机器速度足够快,可以为家里的几个媒体主机执行代码转换,以及处理所有其他标准任务。

遗憾的是,家用机是打算当家用机用的,也就是晚上几个小时查邮件,玩游戏。将它用作服务器,24/7 全天候运行,会使机器的物理组件(主要是风扇和磁盘)紧张,并增加破坏机器完整性的风险。与机架不同,这些机器是根据价格而不是质量因素制造的,因此将使用允许价格达到神奇的 299 数字或其他数字的组件。因此,这些组件可能对温度变化的容忍度较低(如果机器全天工作,就会出现这种情况),或者平均无故障时间(MTBF)较短。当机器不断访问数据时,无论是从内存还是从硬盘,发生这种情况的几率自然会增加。

我的个人设置使用台式 PC 作为媒体转码服务器,大部分时间都在运行。我买了比传统台式机更高的价格,比标准的风扇更安静,部件更好。我还同时为风扇买了备件,这样如果我需要更换机器的运动部件,我就有一些可用的。RAM 芯片(诚然,随着时间的推移,也可能变坏)通常在机器发布后的许多年内都可用,而特定尺寸的 CPU 风扇则不可用。这是因为任何持续几年的服务器都将比当前设计的处理器和主板寿命长,因此很难获得这些组件的备件。我也承认,当(而不是如果)这些组件最终报废时,我可能无法购买替代品,因此将不得不忍受安装全新机器的痛苦。

迷你 ITX

迷你 ITX 是基于 170×170 毫米 ITX 主板的一系列机器。在该规格中,有许多不同的选项,包括不同的处理器、图形芯片和冷却方法。这包括许多没有风扇的机器,仅依靠散热器进行冷却。这使得它们比台式机更加节能,并且适合放置在更多的公共区域,例如它们经常被用作媒体播放器的客厅。

像台式机一样,ITX 机器有许多可配置的选项,包括电视(S-Video)和 DVI 输出、用于无盘操作的紧凑型闪存(CF)适配器、无线网络等等。它们还有用于其他卡的标准 PCI 端口。这种可配置性既是他们的桎梏,也是恶魔的魅力,因为当你购买机器时,并不一定知道任何特定设备的可使用性。尽管任何 ITX 都足够强大,可以运行 HA 设置的所有基本服务,但大多数机器都不能足够快地转码媒体,并且旧的机器不能播放现代格式(如 DivX,它对 CPU 的要求相当高)。此外,除了 SVGA 之外,Linux 驱动程序支持的输出也有一些问题,这使得将它们用作投影仪之外的任何设备的头箱都有问题。ITX 的新组合会定期发布,同时还会更新驱动程序,因此请随时向您的经销商寻求支持,以及最新的网络论坛。

ITX 机器的另一个配置考虑是这样的,因为它不是机器附带的,你必须单独购买。此外,由于空间是如此珍贵,你应该购买任何和所有的外围设备,你打算保持在这个时候的情况下。您不应该期望能够更新或添加组件,并且仍然让它适合同一个案例。即使组件之间有 3 毫米的间隙,也可能是一个良好的工作系统和一个过热的系统之间的差异。所以,考虑一下你是想要一个硬盘还是 CF 卡,以及一开始是否需要一个(超薄的)DVD 播放器。

Note

请始终从机器的同一经销商处购买机箱,这样您就可以确保它们能够装配在一起。这些机箱比台式机机箱贵得多,因此是一个代价高昂的错误。

当然,有这么多的箱子可供选择,你完全有机会得到你想要的尺寸。它们有四种基本类型,大多数高可用性服务器是立方体或机架,而媒体设备中使用的 ITX 主板通常选择 book。

  • Book,70 × 270 × 320mm 左右,最多两个驱动器托架;并非所有都支持 PCI 卡
  • 立方体,大约 180×220×280 毫米,最多有四个驱动器托架,通常有一个 PCI 卡
  • 机架,1U (482.6 × 44.45 × 381),最多四个驱动器托架和最多两个 PCI 卡
  • 车辆,大小在 210×254×56 毫米左右,有一个或两个驱动器托架,偶尔有一个 PCI 卡

车辆安装箱用于安装在诸如汽车或车库的恶劣环境中,在那里它可以用作儿童娱乐中心或网络终端。所有四种型号都有不同的尺寸,驱动器托架有 2.5 英寸和 3.5 英寸两种。应该注意,不是所有 ITX Shell 都与所有类型的主板兼容。在 ITX 世界,一种尺寸肯定不能适合所有人。所以,检查和再检查你的规格。

ITX 已经生了两个弟弟,一个是配有 100×72 毫米主板的微型 ITX,另一个是配有 120×120 毫米主板的纳米 ITX。虽然如果你仍然必须购买一个更大的 Shell 来安装 DVD 驱动器,那么尺寸的减小不值得价格的增加,但这种尺寸的机器几乎可以藏在任何地方,这使得它非常适合媒体主机或厨房中的控制面板。

迷你电脑

迷你电脑是一种高功率、预构建的电脑,外形非常小(通常约为 80×50×30 毫米),通常功耗也很低。这导致它们有时被称为绿色 PC,但尽管迷你 PC 通常具有低功耗,绿色 PC 必须具有低功耗,其制造过程也是如此。这种类型的典型机器包括 Zonbu、Intense PC 和 Fit-PC3。

在功能上,它们是笔记本电脑(因为它们是预建的,因此不能升级,并且操作系统确实需要预装以确保一套完整的驱动程序)、台式机(具有高机器规格和单个网络端口)和迷你 ITX 机(当放在电视下时,作为主机使用时看起来很好)的混合体。因此,许多人将把它们作为更加以客户为中心的机器,用于网页浏览和媒体播放。但是,正如我前面提到的,大多数 HA 任务所需的 CPU 非常少,非常适合它。在建筑物本身不允许 Node0 中的单台机器到达整个房子的情况下,它们也是很好的辅助服务器,例如 X10 消息和无线通信。此外,因为这些设备的功率使用通常为 10 瓦或更少,所以它们是高效的,并且对现有设置增加非常少的开销。

这些机器的规格大相径庭,因为许多都包括定制的硬件来改善表面上的功能。例如,Fit-PC2 只包含一个低功耗的 Atom 处理器,但能够通过集成硬件加速来播放 HD 1080p H.264 视频。 3

然而,这些机器最大的缺点是在向朋友演示您的 HA 设置时缺乏勇气。在展示了如何给你的电灯开关发电子邮件、给你的视频发短信、拥有自己的家庭网络服务器之后,打开橱柜展示一个可以放在你手里的小盒子通常会让男性自我失望!

定制嵌入式

这一组既有片上系统(SoC)机器,也有单板计算机(SBC),其中有很多,包括你之前看到的迷你 ITX 机器和第二章中的 NSLU2。设备的组合和机器的用途一样多,所以每种组合都需要根据其自身的优点来考虑,因为人们通常认为是 PC 标准的各种组件,如键盘、鼠标和显示器,并不是所有的 SBC 都有,如 Gumstick。 4

此外,一些机器,如 NSLU2,看似正常的外围设备,如 USB 集线器,可能会出现问题,并拒绝使用它们。因此,这些类型的设备通常更适合室内有限区域的客户机,而不是服务器,因为服务器将运行各种软件,硬件不兼容的烦恼通常会超过尺寸的好处。

树莓派

尽管 Raspberry Pi 在概念上与您可能从上一节中发现的任何定制嵌入式设备没有什么不同,但它并不完全相同。首先,Pi 的知名度和市场接受度确保了其他平台无法管理的坚实用户基础。现在已经在市场上达到临界质量,这意味着你可能发现的任何问题都将由不止一个人来解决,并且将有(至少)一个网页或论坛线程专门用于解决问题。

如此大规模的用户也意味着使用 Pi 作为服务器的主要物理问题已经解决了——就是这样!这是可能的购买几种不同类型和风格的情况下从不同的网站在互联网上。这包括在 http://elinux.org/RPi_Cases 的列表,也详细列出了一些你可以用乐高、木头和 3D 打印机建造的东西。

功率消耗

对于许多人来说,家庭自动化可能是你第一次需要考虑机器的总拥有成本(TCO ),将它的功耗考虑在内。这可以通过使用一个用电量监控器来进行经验计算,比如 Kill-A-Watt ( www.p3international.com/products/special/P4400/P4400-CE.html )。这种设备可以一端插入墙上,另一端插入电脑,以确定它在任何特定时间使用的电量。这将取决于它是否处于以下状态:

  • 闲置的
  • 播放光学媒体
  • 处理媒体(回放、录制和转码都不同)
  • 被用作台式机

了解这些信息可以帮助您计算其运行成本,方法是将显示的瓦特数乘以 8.76(一年中的小时数除以 1,000),得出千瓦时数。然后乘以每千瓦时的成本(通常显示在您的电费账单上),得出总拥有成本。

Note

你甚至可以通过一个简单的名为 Tweet-a-Watt 的软件,从 www.ladyada.net/make/tweetawatt 发布你家的电力使用情况。也有替代解决方案,如 Owl、AlertMe、Wattson 和 Enistic。

除非服务器制造商向您提供完整的功耗数据(请记住,这因任务而异),否则您只能猜测其 TCO。表 4-1 显示了一些大概的数字。它们是从各种经验测试中挑选出来的,尽管只有它们的相对值应该被考虑,并且只有在那时才作为指导。

表 4-1。

Approximate Power Consumption

| 设备 | 使用的大致瓦特数 | | --- | --- | | 台式机器 | 60–250 | | 台式计算机(睡眠) | 1–5 | | 笔记本电脑 | 15–50 | | 迷你电脑 | 6–10 | | 迷你 ITX5 | 8–20 | | 树莓派(B 型) | One point six five | | 树莓派(A 型) | Zero point seven one five | | 带 HDMI 和 USB 驱动器的 RPi (B) | 2.0–2.45 | | 带 HDMI 和 WiFi 的 RPi (B) | 2.175–2.4 | | 阴极射线管监控器 | Eighty | | 液晶监控器 | Thirty-five | | DVD/CD-ROM(台式机) | Twenty | | DVD/CD-ROM(笔记本电脑) | five | | 硬盘(桌面) | Fourteen | | 硬盘(笔记本电脑) | four | | USB 供电设备 | 2 个(每个) |

要计算每台设备的成本,您需要知道您的公用事业公司向您收取的每千瓦时的成本,并将其代入公式:

Total_cost = (Wattage_of_device × hours_used × kilowatt_hour_charge) ÷ 1000

为了降低消费成本,您可以为电脑和其他连接到电脑的家庭硬件做几件小事。

首先,关掉它。这主要适用于显示器和电视等消费电子产品,它们在待机模式下的功耗几乎与正常模式下一样高,有时据说你每年 16%的能源账单都花在待机模式下的电器上。市场上的各种产品通过监控用电量的下降或通过捕捉红外信号来关闭电视并因此隔离设备的所有电源来检测待机模式。然而,在这种模式下,不可能自动将其重新打开。您可以使用 X10 或 C-Bus 自动管理这一点。请记住,重新打开设备时,如果设备返回待机模式,而不是完全打开,您可能还需要发送红外信号。

第二,停止硬盘旋转。这将它们的功耗从 7W 降低到 1W 左右,具体取决于设备。您可以通过如下配置使用hdparm工具来实现这一点:

# /etc/hdparm.conf

/dev/sda {

spindown_time = 60 # this means 5 minutes, since each spindown unit is 5 seconds

}

Note

据报道,这只有在 BIOS 支持 AHCI 时才有效。在所有其他情况下,应使用sg3-utils包控制 SATA 驱动器。

然而,从寿命的角度来看,硬盘不应该不停地旋转,因为滚珠轴承会磨损更多,最终会磨损。此外,让它们重新旋转起来的成本非常高,所以你真的需要让它们旋转 20 分钟左右,这样节省的成本才是值得的。

切换到待机、挂起到 RAM 或休眠到磁盘模式,每种模式都比前一种模式更省电。高级电源管理(APM)守护程序和工具处理进程本身,而sleepd守护程序可用于在特定条件下自动触发 APM 工具,例如缺少活动或输入。

使用替代部件。随着绿色游说团体影响大多数公司,你可以买到比以往任何时候都更节能的设备。更好的电源 6 可以在中等负载(90W)下提供超过 80%的效率,一般来说,功能较弱的显卡耗电较少(通常不需要风扇),LCD 显示器比 CRT 显示器更高效,CPU 的功耗差异很大,因此可以考虑更换它们。

拔下任何未使用的设备,例如安装时使用过一次(但不会再次使用)的光驱、USB 设备等。这可以通过在整个系统中使用外部硬盘来扩展(引导设备除外),在卸载后可以通过 X10 断电。

尽可能使用更多固态硬盘和/或笔记本电脑硬件。两者都打算用电池工作,因此内部有更合适的 CPU 和硬件。对于主控制服务器,这些已经足够了。

使用虚拟机(例如,运行在 VMware 上)而不是使用完全独立的机器。当特定设备需要特定版本或操作系统时,这可以提供真正的好处。用于处理虚拟机的额外功率远远低于物理机。

在尽可能多的情况下,都应该考虑减少负载,因为虽然你可能只节省了一瓦特,但一年下来,这可以累积起来,达到合理的节省。

服务器协调

有多台服务器来控制你的房子没问题。但是,如果它们一直都开着,你的电费将会与所获得的收益不成比例地增加。这还没有考虑各种机器因为主服务器离线而无法通信的情况。

协调如何打开和关闭特定的机器以节省电力是一个简单的问题....对于一个人类来说。但是对于一台机器来说,要实现自动化是非常困难的!您需要知道哪些服务在哪些机器上运行,在其他硬件上存在哪些依赖关系,等等。这些信息需要在所有机器之间同步,以防其中一台离线(因为断电或网络连接中断)。

因此,最好不要尝试或执行以下操作之一:

  • 每台机器都有人工指定的时间周期
  • 预计电费会比平时多

例如,当运行一个单独的媒体服务器将流代码转换到 MVPMC 时,您会知道机器需要从每个工作日的下午 6 点开始工作,例如整个周末。如果机器还负责录制电视节目,您将需要编写自定义代码来防止它在录制过程中关闭。

相反的时间表对一台打算作为下载服务器的机器来说是正确的,当你只希望它在你不太可能上网或在家工作的早晨几个小时里消耗你的带宽。

虽然机器有可能自我终止(通过 Linux 命令shutdown -h now),但是你一般不能强迫它在特定的时间醒来。因此,您将始终需要一台 24/7 全天候工作的机器(如您拥有的最低功耗设备)来协调所有其他机器。

让机器自动开机需要一种叫做局域网唤醒(WOL)的技术。WOL 在许多机器上是启用的(尽管有时在 BIOS 中默认为关闭),由此主板监控包含直接发送到有问题的机器的“神奇数据包”的特殊格式化的网络消息。由于关机的机器没有 IP 地址,因此必须始终使用 MAC 地址。(它被标记为来自ifconfig命令的HWaddr。)

启动这个魔术的命令和程序包如下:

etherwake 00:1d:33:a5:63:16

请注意,这仅在“软”断电时有效,并且需要它以及发送机器和目标之间的任何路由器可用的电源。这是停电时要记住的重要一点!此外,请注意,Raspberry Pi 没有软掉电选项,它没有开/关开关,所以它要么开,要么关。然而,它的电流消耗很低,不值得担心。

Note

有时,接受 WOL 命令需要密码。这在特定机器的 BIOS 中设置,并作为参数传递给etherwake

关闭特定的机器更容易,因为这是大多数桌面用户每天都要做的事情,所以我在这里只花一点时间。在传统的调用中,您可以用一个命令启动关机,从发出命令到使用您选择的任何控制台警告消息执行操作有一个给定的延迟。您也可以用-c标志取消任何未执行的关机命令。

所有关机命令必须由机器的 root 用户执行,因为默认情况下 root 用户不允许通过ssh连接到机器,所以如何关闭远程机器并不总是显而易见的。

标准方法是使用sudo,让一个非特权用户连接到机器,然后将他们自己临时升级到 root,用以下命令关闭机器:

sudo shutdown -h now

虽然sudo通常需要一个密码,但可以通过修改/etc/sudoers文件来取消,如下所示:

steev localhost=NOPASSWD: /sbin/shutdown

这可以通过从一个脚本发出命令来进一步自动化,该脚本依赖于ssh的一个很少使用的特性,即登录、执行命令然后退出的能力:

ssh steev@myhomemachine.homelinux.net 'sudo shutdown -h now'

因为 shutdown 命令是在所有用户都在控制台上工作时创建的,所以大多数家庭用户通常看不到警报消息,所以您可能希望创建一个 shutdown 脚本,使用语音合成或音乐来指示服务器正在关闭。然而,由于在 Linux 中重启和关机很少发生,而且您可能就在“用户”的隔壁,所以这就不那么重要了。

关闭网络上的任何 Windows 机器可能会更加困难,因为关闭的方法还不太明确。如下所示的命令:

net rpc shutdown -I 192.168.1.100 -U windows_username%their_password

可以在许多情况下工作,但依赖于防火墙、文件共享选项,甚至 Windows 版本。

给定这些命令来启动和关闭您家中的大多数机器,您可以在您的主服务器上使用一个简单的 crontab 来有效地协调它们,以确保最佳的用电场景来满足您的需求。

不间断电源

不间断电源(UPS)对于任何依赖中高成本技术的人来说都是必不可少的工具。因为您的房子现在是高成本技术的高成本外围设备,所以它成为您的高可用性设置的重要组成部分,不仅可以消除短期断电和停电的影响,还可以防止电涌造成的损害。

大多数不间断电源装置的工作原理相同;也就是说,一个看起来像超大的多联电源板的设备将电源和电池连接在一起,为四个或更多的插座提供稳定的电源。在更便宜和最常见的设备中,该设备监控主电源,如果它出现故障或低于指定阈值,则切换到电池。第二种类型的 UPS 始终提供来自电池的输出,并使用主电源为电池充电。输出波形的形状也各不相同,通常由设备成本决定。廉价设备的输出通常是方波,而昂贵设备的输出是正弦波。这对于电脑来说没什么大不了的,但是当给一个音乐发烧友的唱机提供动力时,就像在第三章中提到的那样。每当注意到电源下降时,警报就会响起,并周期性地重复声音警告。当电池电量极低时,将通过 USB(或串行)电缆启动关机程序,以便连接到 UPS 的机器可以安全关机。每个单元都有不同的 VAs 值,表明当它从电源上断开时,你可以从中提取多少。你通常需要比瓦数更高的伏安。所需的 VA 是瓦特数除以所连接设备的功率因数。保护的持续时间从几分钟到一刻钟不等,具体取决于连接到它的机器以及这些机器上运行的任务。您可以参考表 4-1 获得粗略的指导。对于购买,总是得到尽可能高的额定功率。

Note

对于大多数 UPS 装置,电源插座将被分为断电时供电的插座和断电的插座。所有插座通常都有防浪涌保护。

假设有四个电源插座,你必须决定哪些设备将使用它。自然,你的服务器应该是已知的。接下来是家庭内部路由器或交换机,这样 UPS 上的其他机器就可以发送和处理“关机”消息。(这只是为了计算机的利益,因为任何人都会注意到灯灭了,并且会立即惊慌失措,因为他们知道他们没有点击应用程序上的保存按钮。)您可能还想在 UPS 上保留宽带路由器,以便发送警告信息(例如通过电子邮件)。这通常是一个次要的考虑因素,但是如果您远程操作机器,这将促使您减轻任何处理器繁重的任务,以便 UPS 可以持续更长时间。

Note

首次安装 UPS 时,使用断路器进行测试,但不要拔出插头,因为拔出插头会引入对电子设备有危险的浮动接地。

这里再次出现了关于多服务器的讨论,因为在 UPS 上安装一个低功耗的主服务器是有益的,媒体代码转换机安装在它自己的 UPS 上,可以延长主服务器的寿命,甚至可以完成在断电期间可能会错过的《神秘博士》的重要一集的录制!

如果两台服务器的功率都相当高,而您只有一台 UPS,那么通常值得将两台服务器合并到一个机箱中,以限制设备的功耗。

您也可以考虑为显示器保留一个电源插座,也许连接到第二个媒体服务器 UPS 装置。如果您保持关闭,它将从 UPS 汲取非常少的电力,但在出现问题时,您可以看到机器运行其关闭程序,并且您可以确保其关闭程序有效工作。否则,您将不得不相信 UPS 软件守护程序正在工作,或者在手边准备一台充满电的笔记本电脑。

Tip

每天晚上使用 crontab 打开 X10 模块至少一个小时,可以确保您的笔记本电脑充满电。

一旦硬件 UPS 就位,您就需要一种方法来检测电源是否已断开,并开始关机过程。

大多数 UPS 都带有 USB 电缆(有时一端带有专用连接器,所以不要弄丢了!)允许 PC 查询单元的状态。那些没有的一般不值得买。当然,它们更便宜,并且您的数据可能在您已经安装的日志文件系统中是安全的,但是额外的成本和放心地知道您将获得干净的关机是值得的。

Note

可以通过使用heyu监控电源线来模拟 UPS 的关机功能,如果发现两个(或更多)灯同时熄灭,则触发关机。但是这种方法容易产生假阳性,而且在白天也不起作用。

有三种主要包装可用于处理 UPS,如果一起使用,所有这些包装都会发生冲突。他们是apcupsdnut-hal-driversnut。我将讨论后者,因为它是最新的、灵活的、积极开发的。

首先,执行传统安装:

apt-get install nut

设置过程包括在您的/etc/nut目录中创建四个配置文件:

# /etc/nut/ups.conf

[apc]

driver = usbhid-ups

port = auto

这引用了适合您的 UPS 单元的驱动程序, 7 ,我在这里称之为apc:

# /etc/nut/upsd.conf

ACL all 0.0.0.0/0

ACL localhost 127.0.0.1/32

ACCEPT localhost

REJECT all

这表明只有本地机器应该对 UPS 消息作出反应,这消除了黑客假冒 UPS 故障并导致您的机器关机的可能性。然后通过以下操作设置一个可以访问守护程序的基本用户:

# /etc/nut/upsd.users

[local_mon]

password = mypasswordhere

allowfrom = localhost

upsmon master

然后,您可以通过指定进程命令来配置守护程序:

# /etc/nut/upsmon.conf

MONITOR apc@localhost 1 local_mon mypasswordhere master

POWERDOWNFLAG /etc/killpower

SHUTDOWNCMD "/sbin/shutdown -h now"

如果您将从备用机器监控 UPS,您可以设置多个用户,但这不是必需的,因为您可能会创建一个保存此信息的网页。

然后,您可以修改文件的权限(因为其中有一个密码,您可能不希望外界看到):

sudo chown root:nut /etc/nut/*

sudo chmod 640 /etc/nut/*

并启动守护程序运行,如下所示:

upsdrvctl start

/etc/init.d/nut start

这可以通过编辑/etc/default/nut文件在每次启动时启动。然后,您可以通过发出以下命令来查询给定 UPS 的状态并检查它是否在工作,其中apc是前面给出的名称:

upsc apc

输出是这样的:

battery.charge: 100

battery.charge.low: 10

battery.charge.warning: 50

battery.date: not set

battery.mfr.date: 2009/01/21

battery.runtime: 705

battery.runtime.low: 120

battery.type: PbAc

battery.voltage: 13.5

battery.voltage.nominal: 12.0

driver.name: usbhid-ups

driver.parameter.pollfreq: 30

driver.parameter.pollinterval: 2

driver.parameter.port: auto

driver.version: 2.2.2

driver.version.data: APC HID 0.92

driver.version.internal: 0.33

input.transfer.high: 266

input.transfer.low: 180

input.voltage: 242.0

input.voltage.nominal: 230

ups.beeper.status: enabled

ups.delay.shutdown: 20

ups.delay.start: 30

ups.firmware: 829.D2 .I

ups.firmware.aux: D2

ups.load: 49

ups.mfr: APC

ups.mfr.date: 2009/01/21

ups.model: Back-UPS ES 700

ups.productid: 0002

ups.serial: 5B0904T46000

ups.status: OL

ups.timer.reboot: 0

ups.timer.shutdown: -1

ups.vendorid: 051d

一台服务器可以控制多个 UPS 装置。这通常是有益的,因为它允许您的主服务器处理所有的系统管理任务,为家庭网络提供了一个单一的入口点,可以根据需要进行强化。

让机器关机后,你需要一种方法让它在电力恢复时再次启动。这变成了一个硬件问题,成功与否取决于 BIOS 中是否有一个通电启动的选项或类似选项。在 NSLU2 的情况下,你可以物理地破解电路板来执行相同的任务。理论上也有可能以类似的方式黑掉标准 PC 中的交换机,但不建议这样做。

前面提到的 WOL 技巧通常不适用于互联网,因为它是一种局域网唤醒功能。即使你的机器不在过滤这种数据包的路由器或调制解调器后面,其他东西通常也会在后面。如果你的家用机器需要尽可能长时间通电,而你的机器在通电时无法启动,那么你可以使用一个 NSLU(如第二章第一节所示)作为引导程序,向你的各种服务器发出 WOL 命令。

备份

关于备份,只有两点很重要:

  • 做吧。
  • 测试他们。

其他一切都只是细节。

第一个细节是,这些数据是应该保存在现场,即家中,还是保存在异地的远程位置,如托管服务器或租用的虚拟机。在一个理想的世界里,你会两者都采用。将它们保存在异地有助于最大限度地减少本地问题造成的损失,而现场备份对于无法存储在其他地方的数据非常有用,例如在出现重大故障时重建 HA 系统所需的配置脚本和网络计划。

下一个细节是什么数据实际上需要备份。同样,在理想情况下,这将包括家中每台机器上的所有内容。实际上,您必须考虑替换数据的成本和执行备份所需的时间。这通常可以归结为您个人创造的任何东西,例如:

  • 照片
  • 程序代码
  • 艺术品
  • 数字视频
  • 音乐

每个家庭成员都有自己负责的清单。作为 HA 管理员,您还需要备份服务器配置。

从这里你可以决定执行这项任务所需的技术。程序员将已经知道源代码控制工具,如 Subversion ( http://subversion.tigris.org/ )或 Git ( http://www.git-scm.org ),并将提倡使用它们。对于门外汉来说,这些工具不只是保存最新版本的副本;他们保存数据来重新创建你曾经创建过的所有版本的副本,让你及时回到过去,看看你上周写了什么,以及为什么这样做(或不)有效!在很大程度上,对于代码和系统配置来说,这是一个很好的选择,因为作为一名开发人员,您有必要的心态来在每个接合点执行必要的更新-合并-提交循环。然而,通过一些哄骗,大多数家庭成员会变得熟悉它。访问这些文件需要一个 Subversion 客户端,有几个也有 Windows 版本的客户端可供选择(比如 TortoiseSVN 或 SmartSVN ),消除了令人头疼的支持问题。这也使家庭成员能够从家外访问他们的文件,而无需额外的努力或软件。然而,不利的一面是,你必须教育家人,文字处理文档通常以二进制格式存储,因此,如果他们在家里和学校改变同一个文件,几乎不可能合并在一起。对经常更改的大文件(如原始 Adobe Photoshop 图像)使用源代码管理也不是特别有效。

Note

Subversion 将自己的工作文件存储在当前目录中,这意味着它们将被分散在.svn文件夹中。这对最终用户来说只是一个轻微的麻烦,但是当它们出现在系统配置文件夹中,比如/etc时,可能会引起更大的问题。

要将一组文件从一个目录直接复制到另一个目录,您可以在每天结束时使用cp。但是,这样会浪费地复制没有改变的文件,于是rsync诞生了。rsync是一个非常老的拷贝和备份程序,但仍然是一个受人尊敬的老黄牛。例如,我用下面这行代码备份了我的代码目录:

rsync -a code steev@remote-backup-host.com:∼/backup/daily

我用这个恢复它们(为了测试 8 ):

rsync -a steev@remote-backup-host.com:∼/backup/daily code

这里的选项执行递归更新,同时保持所有的符号链接、权限和用户设置,这是最典型的家庭情况。手册页详细介绍了其他可能性。

然而,确实有两个问题。首先,它主要适用于面向 Unix 的平台。Windows 版本是可用的(比如 DeltaCopy 和 Cygwin 版本),但是它们需要一点时间来设置,并且可能很复杂。

第二个问题是,为了登录到远程站点,需要交互地给出密码。这是一件令人讨厌的事情,它阻止了任何类型的自动备份。对于允许用户在没有密码的情况下连接的远程站点,他们必须首先建立另一种形式的信任——在本例中是公钥交换。要从机器 A 复制到机器 B,B 必须有 A 的公钥的副本。要从机器 B 复制到机器 A,A 必须有 B 的公钥的副本。在我们的例子中,机器 A 在家保存我们的文件,而 B 是一台远程机器进行备份。

因此,我们的家用机器必须为将要进行复制的用户生成一个密钥。

ssh-keygen -t rsa

默认情况下可以在∼/.ssh/id_rsa.pub中找到。然后将其复制到远程机器(可能使用密码控制的rsync)并附加到远程用户将接受的授权密钥列表中:

cat id_rsa.pub >> ∼/.ssh/authorized_keys

完成后,您应该能够rsync无需密码:

rsync -a --bwlimit=100 steev@remote-backup-host.com:∼/backup/daily code

请注意,这将带宽(使用bwlimit参数)限制为每秒 100 千字节,以便其他应用程序可以使用互联网,因为rsyncssh在合作时相当贪婪。

这里可能存在的一个潜在管理问题是家庭用户被拒绝连接,因为他们连接的地址与密钥中使用的地址不匹配。当主机名简单地类似于linuxbox1但在远程机器上显示为 netpc-london-isproute-isp.com 或类似的无用名称时,就会发生这种情况。相比之下,目标机器通常有一个固定的名称,因为它必须可以从外部世界进行寻址。因为家用机器的名称可能会改变(由于 ISP 的突发奇想),最简单的解决方案是颠倒这里给出的所有说明!也就是说,使用远程服务器连接到家庭服务器,只为远程服务器生成一个密钥,并反转rsync命令的参数,以便远程服务器从家庭机器中提取数据来执行备份。奇怪的是,需要身份验证的是连接的方向,而不是复制过程的方向。

Note

默认情况下,root 用户不能通过ssh连接。尽管有可能覆盖它,但不建议这样做,因此创建一个新用户,为他们创建ssh键,并使用他们的 crontab 启动每日备份。

虽然这解决了 Linux 和 MacOS 用户的问题,但仍然需要一个针对 Windows 的解决方案。如果你有时间,在 Windows 上准备rsync是值得的。或者,您可能希望通过引入手动备份解决方案向家庭灌输最佳实践,该解决方案要求他们做一些事情来备份他们的工作。这是 Subversion 得分较高的一个领域,因为工作流自动鼓励这样做。相反,可以做的是在网络上创建一个可写的 SMB 共享区域,每个人都可以访问,并且他们有责任在每晚睡觉前将他们的文件添加到其中。然后,您可以使用 rsync 远程备份该网络文件夹。有几个用于 Windows 的免费共享软件工具,它们提供了第一步所需的基于拷贝的备份。

当然,我所说的一切都是假设你将数据存储在家中。在大多数情况下,这是正确的,但现在购买远程服务器上的空间比以往任何时候都容易(例如,通过亚马逊的 S3,用虚拟机),这意味着你永远不需要备份。当然,备份仍在进行中(由服务器提供商的自动化工具和支持人员完成),但它们对您是透明的。 9

在外部存储的情况下,您可能只希望存储相当小的数据,因为从远程服务器上流式传输完整的电影是不可观看的,并且必须等到它下载完毕也同样令人烦恼,并且违背了目的。这些情况在某些情况下是有益的,因为它们意味着家里不会存储任何个人数据。因此,如果窃贼偷走了你的笔记本电脑,你还没有丢失你正在写的小说。

一些人喜欢在公共场合保护他们的私人数据,通过使用像 Dropbox 这样的服务。com 、Flickr、Google Docs、Google Drive(可能通过 Grive 客户端)和 YouTube。除了免费服务之外,情况和以前一样,对数据丢失的担保更少。事实上,谷歌邮件的个人存储空间限制刚刚超过 10GB,这允许你通过将数据作为附件保存在你的邮件帐户中来备份数据!或者通过使用gmailfs

也有可能备份您家中的物理项目,即您的媒体。虽然 CD 和 DVD 的重要性在于包装,但是通过将它们(正如我们在第三章中所介绍的)翻录到外部硬盘上,并将驱动器本身存放在存储器中,或者由朋友、家人保管,或者存放在专业的保险箱中,也可以保存内容。你或许可以安排一个配对计划,让有合适技术的朋友来保管你的光盘收藏,作为回报,你可以保管他们的光盘。例如,如果你在网络流量安静的时候,比如在晚上,两个人都向对方发送你的媒体,同样的配对思想也是有效的。

隐藏你的家

拥有一个连接到互联网的家庭提供了一种在外出时使用您的媒体、远程配置您的机器以及检查您是否确实关灯的方式。它还提供了很大的吹牛的权利!然而,将它连接到这里自然会引起一些人的关注。即使有我将在第五章中讨论的技术安全问题,也有一些额外的空间来隐藏你的自动化家庭,就像你停车时在车里的贵重物品上盖一张毯子一样。

一种方法是为你的家用机器设置两个域名。第一个应该被认为是公共网站,它提供了一个障眼法,可能包含一个以你的猫为特色的网站和博客!作为默认网站,只要单独使用 IP 地址,就会使用它。(我将在第五章讨论虚拟主机时介绍该方法。)然后,您可以另外设置第二个域来访问您的家庭自动化网页。当然,您仍将保护这些页面,但这是一个良好的开端。

虽然注册域名很容易,但在处理家用机器时,它不一定是最佳选择,因为当 DHCP 租约不是由 ISP 随意更新时,您的 IP 可能会改变,并且您必须再等 24 小时,DNS 信息才能通过各种 DNS 服务器重新传播。尽管这不太可能,但即使您决定每天晚上关闭服务器,使用动态 DNS 也是更好的解决方案。该方法将已知主域中的任意子域分配给给定的 IP。因为子域名在使用之前不需要通过 DNS 进行传播,所以它们具有更直接的效果,并且只需很少的钱就可以注册——在大多数情况下是零。

dyndns.org开始就有一项这样的服务。注册后(也免费!),可以创建自己的子域,指向自己的家庭服务器。这个子域可以从几个主域中的一个扩展而来,如homelinux.netmine.nudnsalias.com。T & C 要求你定期更新这个记录,以确保它仍然有效,但这可以通过适当的路由器或通过一个包如ddclient自动完成。这应该定期运行,要么以守护模式运行,要么从 crontab 运行,以保持记录最新。该配置只需要您的 DynDNS 登录凭证和您想要更新的子域名。

# /etc/ddclient.conf

daemon=600

use=web, web=checkip.dyndns.com/, web-skip='IP Address'

login=your-username

password=your-password

protocol=dyndns2

server=members.dyndns.org

my.homelinux.net

因为这是 DNS 记录,所以只注册名称。支持这些服务仍然取决于您。但这是您想要的,因为它允许您为电子邮件、Web、SSH 等运行自己的服务器。

您可以通过只提供外部代理的访问来隐藏在更多的窗帘后面,该代理的存在和登录只有您知道。第一步是用以下内容准备hosts.allow文件:

sshd: LOCAL myhidden.privateserver.com

并将偏执逆加到hosts.deny:

sshd: ALL

正如您所猜测的,当结合使用时,这会将所有 SSH 连接限制在来自本地(192.168.x.x)网络的连接和来自外部服务器的连接,外部服务器可能是位于同一位置的服务器、工作机器或 shell 帐户。

Note

通过将前面例子中的sshd改为ALL,这些规则可以应用于所有协议,而不仅仅是 SSH。

然而,这种方法并非没有风险,因为如果您的服务器由于任何原因变得不可访问,您将只能从指定的机器连接到它(从而解决问题),如果您正在度假,这可能会很困难。

Note

如果您的私有服务器支持多个域,这里指定给sshd的名称必须是规范名称。

您可以扩展这一思想,通过一个替代协议(如简单对象访问协议(SOAP ))从远程服务器控制您的房子,尽管这确实会带来两个潜在的攻击点。

为您的家添彩

将自动化融入家庭的最简单方式是通过无线——或者至少是不使用新线路的自动化。第二种方法覆盖的范围大得惊人,包括通过 WiFi 和以太网供电的网络、电器控制(利用现有电源线上的 X10)和媒体分发(利用电视发送器)。)

但即便如此,由于如此多的设备占据了 2.4GHz 的范围,这一范围的可能性和扩展程度将会受到限制。因此,自然地,有线方式将开始赢得青睐,这将需要一些钻孔和电缆运行。

在接下来的所有建议中,记住你必须总是提前计划,考虑每个房间会有什么,明年会有什么,以及如何使用。敷设电缆是一个耗时的过程,不希望重复进行,所以当你试图插入一个新的小工具并发现你首先需要购买一个扩展单元时,最好铺设太多并有未使用的插座,而不是用完。毕竟,与安装或维护成本相比,电缆相对便宜。在以下所有示例中,如果有足够的空间容纳两根电缆,那么这也是一种有用的冗余措施。

总则

除了在非常深奥的情况下,Node0 将始终处于 HA 安装的中心。即使它实际上并不靠近房子的中心,所有的电缆都应该穿过它。这被称为星形配置。

将电缆从一个位置铺设到另一个位置的过程称为拉电缆,因为它涉及将电缆从一组孔拉到另一组孔的动作。如图 4-1 所示,当您在现有房屋上进行扩建时,通常需要在天花板上钻孔,并通过壁挂式线槽拉下电缆。通过自建,您可能有机会将电缆放置在墙壁内部,使其除了踢脚板旁边的墙板之外不可见。当然,如果你正在做一些重大的重新装修,那么你可能会决定值得拆除墙壁,重新铺设,使电缆看不见。

A978-1-4302-5888-9_4_Fig1_HTML.jpg

图 4-1。

Trunking to hide the cables and a volute to (try to) hide the join

无论你采取哪种方法,最好同时拉所有的电缆:音频、5 类和同轴电缆。如果有必要,买四卷网线,这样你就可以同时拉多根 5 类电缆了。这样会省很多力气。

Note

如果您计划在任何房间安装投影仪,那么您通常需要在天花板内部布线,这涉及到抬起上面房间的地板。当这种情况可能发生时,早点做,因为你以后不想再做了,可能没有投影仪也活不下去;此外,你可以利用这个机会在相同的空间里铺设比平时多得多的电缆。

请记住,所有电缆都有不同的柔韧性,所以在拉电缆时,最好尽可能小心,好像它们都很脆弱。作为指导,Cat5 电缆通常比立体声 AV 更硬,因此在拉动电缆时,尽量不要弯曲或扭结电缆,并以缓慢有序的方式进行。不要猛拉电缆,因为这会在护套上产生摩擦。你可能会发现使用一段排水管或暴露的线槽来提供电缆可以移动和放置的通道是有益的。排水管的使用也确保了尽可能少的拐角,而尖角是最严重的问题。

拉电缆并没有什么诀窍,尽管和同伴一起拉可以节省一半以上的时间。你应该把它们捆在一起,用两倍于电缆长度的绳子把两端绑在一起。将线缆末端系在细绳中间,这样你就可以一起拉动它们。然后你会剩下一半的绳子沿着电缆运行,绳子的两端都是可见的。(跑的一端会有半串,另一端会有少量,不过也可以。)使用这种方法,您可以将绳子留在原位,并将其系在新的电缆上,以便在需要添加新电缆时拉动。

Note

您总是需要添加新的电缆。

接下来我有两个关于文档的词——做一些!最好给所有东西贴上标签:电缆、导管、插头、插座,所有东西。这也适用于你的客厅和电视机,因为你的录像机、PVR、DVD 和电视机通常都配有相同的黑色插头!在两端各用几条彩色带子区分,如红-红-绿-蓝。(使用最接近电缆末端的颜色开始标记。)您应该记录这些颜色代码,并通过拍摄描述每个盒子内的电缆、连接和布线的设置照片来参考它们。尽管它们看起来并不十分有趣,但如果你需要改变或修理任何东西,它们将变得必不可少。

有线网络

房子里的每个房间都应该至少有两条 Cat5 电缆,直接从 Node0 连接到房间。客厅至少要有四个,主卧也是。如果你足够幸运有一个独立的电视室,那么这个也应该有。如果可能的话,你还应该在阁楼上放两个 Cat5,因为这为你的个人存储设备提供了一个非常安全的位置。如果你有足够的空间和耐心,在每个电灯开关上安装两根 Cat5 电缆也是一个很好的未来规划。确定必要插座的数量通常是通过将您认为需要的数量翻倍来计算的。然后再翻一倍!简而言之,端口越多越好。

Note

购买(或借用)一个 IDC 工具,将 Cat5 电缆固定到它们的插座中。它将简化这个过程,并且有这么多套接字要做,及时收回成本。

如前所述,拥有双插座不仅仅是为了冗余,也是为了调试等许多其他实际用途,因为任何插入 Cat5 的单元都可能(会吗?!)在未来的某个时刻出问题。解决这个问题的最简单的方法是拿着笔记本电脑坐在有问题的设备旁边来诊断问题。拥有第二个 Cat5 插座使这变得更容易,因为你不依赖于无线网络,而且它让你同时双重检查网络插座。

Cat5 也应该大量布线,因为它可以有效地应用于非网络问题。也就是说,该电缆可以重复使用,以通过以太网供电系统供电,提供 HDMI 信号、1010 或向平板电脑等低功率墙壁单元供电。这就是为什么我之前建议灯开关使用 Cat5,因为你可以用配置可能性更大的高科技触摸面板取代旧开关。如果您想使用 Cat5 电缆,也可以将 X10 模块升级到 C-Bus。

除了电源,Cat5 插座还可以安装廉价的适配器,使其与 ISDN 或标准座机电话兼容,如果你想以这种方式扩展你的标准电话。

如果您可以看到大量 Cat5 重新分配的可能性,那么将每个房间的两个端口升级到四个端口是值得的。通过这种方式,您可以保留其中两个作为传统的网络插座,通过为其中一个添加网络开关,您可以随时进一步扩展这些插座,并为另外两个插座提供电话或电源等备用用途。

Cat5 插座的位置通常由安装它们的墙壁决定。这通常是在角落附近,如果你使用外墙线槽,从美学角度来说是很好的。这也很实用,因为你会想把它们放在每个房间的电源插座附近,这样使用两个插座的设备就可以使用更短(因此更整洁)的电缆。这些设备通常包括媒体主机、打印机、笔记本电脑和触摸屏。

Note

保持网络电缆和电源电缆之间的合理距离,以最大限度地降低电气噪音。这自然适用于任何类型的数据电缆。

如果您阅读硬件目录,您会看到列出了两种类型的 5 类电缆:实芯电缆和绞合电缆,其中实芯电缆用于墙内安装,绞合电缆用于跳线,因为它更灵活。然而,实际上,自己制作跳线很少有人做,因为它们太便宜了,而且比它们的价值更麻烦。

Note

首先从电缆盘上拉出最长的电缆。剩下的将足够机器和路由器之间的短距离运行。

一旦电缆铺设完毕,你应该用一个插座在每一端进行端接,如图 4-2 所示。

A978-1-4302-5888-9_4_Fig2_HTML.jpg

图 4-2。

A typical network point. I needed to make a separate hole in this one to eliminate a sharp cable bend

然后,您可以使用跳线从插座连接到设备。(将墙内电缆直接连接到插头上是自找麻烦,因为它可能会移动并经常被拉动,这可能会破坏另一端的插头连接。)

在我的安装中,从每个插座引出的电缆颜色编码如下:

  • 蓝色:从墙上插座连接到交换机或路由器的任何电缆
  • 灰色:用于连接本地设备,如电脑、媒体设备等
  • 红色:临时设备,如笔记本电脑

您可能会决定采用不同的配色方案,但这个想法仍然有效,因为它让您知道,如果您需要重新布线或借用电缆,是否可以安全地移除电缆。

无线点

无线是有线网络的补充,而不是替代,因此 WiFi 路由器和中继器应该主要在有线网络不可用的地方提供接入。这通常包括厨房、门廊和棚屋。此外,当公共区域过于繁忙或嘈杂而无法工作时,在主要生活空间使用无线接入可以更方便地四处走动。因此,最好将接入点放在房子后面的房间里。它不需要位于 Node0,因为它是无线的;因此,只要它在某个点连接到有线网络,您就不会有事。如前所述,在某些情况下,Node0 无法为房屋的必要区域提供物理 WiFi 覆盖。

然而,接入点的位置并不是一个明显的选择,因为它的范围会受到干扰和障碍物以及距离的影响。这些只能凭经验确定。首先将接入点放在房屋中央部分的天花板附近,因为这样可以提供与大部分建筑的最佳“视线”连接,然后测试信号强度。你可以为此购买特定的设备,但除非你能借一台,否则带着笔记本电脑在房子里走来走去更便宜,也不会更困难。

WiFi 信号通过两种方法丢失,吸收和反射,尽管在一个家庭中墙是不可避免的,但隔墙的吸收效果不如砖制成的结构墙。还应避免玻璃、镜子和金属等光亮表面,因为信号反射会导致更多的内部协议冲突,从而降低带宽,增加掉线率。

我已经提到了一些工作在 WiFi 2.4GHz 范围内的设备,如电视发送器、无绳电话、微波炉和婴儿监控器,它们也会产生干扰,但你不应该忘记其他电气设备,如电机、风扇加热器和荧光灯,也会产生负面影响。

代替 WiFi,您可以通过使用以太网供电来限制这些问题,从而实现伪无线连接。市场上有几种 EoP 设备(如 MicroLink dLAN ),其中每个单元都可以插入墙壁插座和联网设备。由于这与 X10 使用相同的概念,信号隐藏在电源上,因此容易受到相同的噪声和干扰。

音频电缆

第三章讲述了远程处理的概念,音乐在电脑上解码,产生的信号通过标准音频电缆传输到其他扬声器或放大器。添加这种布线的过程相当简单,因为与 Cat5 相比,电缆数量更少、更细、更灵活,cat 5 需要的孔更小,每端的安装也更少。一个标准的立体声对只有四根线,左右两端各有两个连接器。你可以使用任何你喜欢的连接器,但是唱机插座质量很好,容易安装,而且便宜。

AV 面板比你想象的要贵,尤其是与(更复杂的)Cat5 插座的成本相比,但它们通常带有额外的 SVGA 监控器和复合视频插座。然而,使用钻孔机,你可以使用标准的空白面板来建造你自己的,如图 4-3 所示。

A978-1-4302-5888-9_4_Fig3_HTML.jpg

图 4-3。

An AV connection for stereo and composite video. The top row sends the local AV signal upstairs, and the bottom row receives an AV signal to downstairs. Note the trunking on the left and the exit for network cables on the right, which is simply passed through from the trunking

音频电缆的类型和质量是一个重要的决定,尽管没有音响发烧友让你相信的那么重要!这些电缆可能有几米长,并与一些相当标准的连接器一起使用,因此任何超过 42 股的电缆通常都会被浪费掉。事实上,对于一些单元,例如放置在厨房中的单元,环境中的额外环境噪声将使得任何关键的收听都是不可能的。在这些情况下,你可以用简单的铃线。在任何情况下,都值得购买屏蔽立体声电缆,因为它是成对捆绑的,其中一根电缆上有标记,这样就可以清楚地看到哪根电缆的两端需要接地。

音频电缆的另一面是无源扬声器分配系统的连接,其中一组扬声器的输出被路由到其他几个扬声器,无需额外的放大器。如前所述,同样的规则也适用。您也可以重复使用网络电缆的颜色编码概念,将一种颜色用于电源线(进入和离开放大器),另一种颜色用于将信号分配给其他扬声器。您可以在图 4-4 中看到这一点,您还可以注意到白色电缆上的黑线,表示接地。

A978-1-4302-5888-9_4_Fig4_HTML.jpg

图 4-4。

The speaker distribution bay. This model also support push-button switches to turn each speaker pair on or off (not shown)

如果你能确保线缆不会移动太多,你可以将线缆直接从扬声器开关盒接入墙壁,沿着扬声器,而不需要像我对唱机那样使用单独的连接器。这样做是为了获得更好的保真度,可以通过将线缆直接焊接到扬声器端子本身来提高保真度。

其他接入点?

随着 Cat5 成为如此普遍的布线方法,对布线范围的要求也比以前少了。但它们仍然值得考虑。

例如,电话可以通过廉价的适配器使用 Cat5 插座,所以没有必要明确地为它们布线,特别是随着移动电话和 VoIP 的增加,所以只有在你认为你会需要它们的时候才添加电话专用插座。

红外信号可以通过无线传输(但这增加了已经过度拥挤的频谱),也可以通过带有红外分配放大器的电缆传输(这是阻止已经很弱的信号进一步扩散所必需的)。但是一般来说,从第一章开始,使用网关设备,如 Keene IR Anywhere,通过 Cat5 发送会更好。

根据 CCTV 安装的规模,您可能还需要为每个摄像机将单独的电缆连接到摄像机开关设备。你可以在第一章中找到关于这些的信息。

在 HA 安装中,电源始终是一个问题,因为在您需要的地方永远不会有足够的电源。除非你能够自建,否则你没有选择插座的位置或数量。你总是可以通过将任何现有的插座转换成多联单元或者从楼上的灯增加一个支线来在阁楼上提供几个插座来解决这个问题。这不仅让您有机会在阁楼中添加一个小型安全文件系统,还意味着您可以使用该空间来存储 X10 DIN 导轨设备,它们不会碍事,并且不会增加 Node0 本身的热量。

Note

不要将 DIN 导轨彼此靠得太近,因为热量会导致操作问题。建议最小间距为 20 毫米。

额外的电力导管也可用于车道照明和电动车库门供电。在前一种情况下,您只需要一个低功率(约 12v)电源,它也可以用于喷泉,泛光灯,户外圣诞树,相机和 PIR。它们还可以帮助传感器供电,如 VAL-1 车辆警报,它可以指示汽车何时接近车库或车道。你甚至可以安装两个来正确确定行进方向,就像我们在第二章中为 Arduino 门垫建议的那样。

Note

例如,如果你的电动车库门需要 10 秒钟才能打开,但你的传感器只有在你离门 5 秒钟的时候才在范围内,你就需要采用定制的 RF 网关电路来提前触发门。

还有大功率设备,如车库门,以及车棚或车库中电动工具的电源插座。这些通常涂有橡胶,以隔离自然环境。在任何情况下,在室外安装电气设备之前,请咨询电工和您所在国家的法律!

Note

你也可以使用车道传感器打开门廊灯,为你的到来做好准备。

结论

家庭网络安装显然不仅仅是几根电缆和一块网卡。通过提前仔细考虑家里所有可能的功能,你可以确保你在房子的每个房间都铺设了足够的正确类型的电缆。即使那样,你可能还是会用完。此外,通过将尽可能多的技术聚集在一个地方,可以创建一个名为 Node0 的中心枢纽。这种物理上的接近使您可以在设备之间放置红外发射器和控制电缆,并确保可以从一个区域控制一切。同样,规划该区域的用途和功能,以便所有东西都适合,并且(重要的是)有一个接近机器面板、插头、插座和电源的方法。

Footnotes 1

从技术上讲,热空气密度较小,导致其上升。

  2

人们通常建议卧室温度比其他房间低 2 度左右,以帮助你的身体更容易入睡。

  3

这个驱动程序是闭源的,但是可以在 Linux 上使用。

  4

这些不可思议的小机器的体积还不到一片口香糖。 www.gumstix.com

  5

你可以在 www.mini-box.com/site/mb/Power_MB.htm 找到更完整的迷你 ITX 机功耗计算器。

  6

这个名为 www.80plus.org 的 80 Plus 项目旨在促进电源效率超过 80%的制造商。PSU 的平均值大约是 60%。

  7

兼容性列表可在 www.networkupstools.org/compat/stable.html 获得。

  8

记住,除非经过测试,否则所有备份都是无用的!

  9

作为一个偏执的极客,除了别人做的备份之外,我会自己定期做备份。

  10

为此,您需要两根电缆,建议使用 6 类电缆,而不是 5 类电缆,因为 HDMI 对信号的时序非常挑剔。