x-automate:使用 Linux 控制你的家居

作者:Stewart Benedict

自从我小时候看《杰森一家》开始,我就梦想着住在未来的家中,那里有智能家电和一个中央计算机控制房屋,与居住者的活动同步。

虽然我们还没有完全实现那个愿景,但它已经在地平线上出现一段时间了。家庭自动化行业的早期先驱之一是 X10 协议。Pico Electronics 是一家位于苏格兰法夫格伦罗西斯的小型设计公司,它基于之前的 X9 项目开发了 X10 项目,X9 项目是一个用于访问录音带上的音轨的随机访问方案(很像当今的 CD 技术)。Pico 还负责设计了一些最早的计算器芯片。虽然 X10 系统确实有其局限性(其中一些局限性已在最近的改进中得到解决),但它是一种相当廉价的方式来实现家庭自动化,而无需从头开始重新布线你的家。

X10 系统由控制器和模块组成。控制器通过现有的家庭布线向控制器发送“开启”/“关闭”消息,控制器要么抛掷继电器,要么使用双向可控硅电路(一种用于灯光调暗/电机速度控制应用的电子电路)来执行调光操作。每个模块都设置为一个地址 (1-16) 和一个房屋代码 (A-P),控制器设置为一个房屋代码。如果多个单元设置为相同的地址,它们都可以通过一条消息进行控制。如果您需要额外的覆盖范围,您可以按房屋代码将设施划分为区域。X10 模块和控制器,以及用于计算机控制的 CP-290 接口,可以从许多邮购供应商或 Radio Shack 购买。

X10 系统的一个局限性是单向通信——没有收到信号的确认返回。此外,该系统的范围有限,有时难以从 220V 线路的一侧到达另一侧(美国住宅通常将 220V 分割为 110V)。桥接模块有助于解决第二个问题,现在有新设备可用,它们实现了双向通信 (TW-523)。

这一切与 Linux 有什么关系呢?在玩了一段时间 Linux 并了解了 cron 之后,我开始考虑一直开着我的机器,并使用我现有的 X10 设备和 CP-290 接口来控制房屋周围的功能,我过去常常将 CP-290 接口插入我的旧 DOS 电脑来控制房屋灯光。CP-290 可以下载程序并自行控制房屋,但通过让 Linux 完成这项工作,我获得了额外的奖励,即让系统执行其他任务,例如上传/下载我的邮件、播报时间并给我口头提醒。

幸运的是,其他人也有同样的想法。Aaron Hightower (aaronh@acm.org) 编写了 x10-amh,这是一个命令行程序,它与 CP-290 通信,控制人们可能希望控制的房屋周围的物品。

x10-amh 就足以与 cron 协同工作并自动执行任务;你只需在你的 crontab 文件中编写适当的 x10-amh 命令,就可以开始了。以下是我的 crontab 文件中的一个示例

55 4 * * mon-fri exec /usr/local/bin/x10 -n 3,4,11
15 5 * * mon-fri exec /usr/local/bin/x10 -f 3,4,11
0 7 * * mon-fri exec /usr/local/bin/x10 -f 10,11,12
0 23 * * sun-thu exec /usr/local/bin/x10 -f 1,4,3,9,6,7
0 9 * * mon-fri exec /usr/local/bin/x10 -f 1,2,3,4,5,6,7,8,9,10,11,12

我是 Usenet 的常客,我关注的群组之一是 comp.home.automation。如果你在这个群组中阅读一段时间,你会看到大量的公告,宣传最新的、最棒的家庭自动化软件,以及为 MS Windows 编写的精美 GUI。作为一个公认的 Linux 倡导者,我开始认为 Linux 也应该拥有自己的精美家庭自动化 GUI。

图 1. x-automate 界面

x-automate 是一个 Tcl/Tk 前端,它与 Aaron 的 x10-amh 协同工作。它是完全可定制的,具有遥控器类型的界面(图 1)和各种图标,代表我家周围一些典型的家庭自动化候选设备。除了遥控界面外,你还可以设置你家的平面图(图 2),设备放置在其真实位置的合理表示中。进一步延续《杰森一家》的主题,我还编写了一个 C 程序 speak,它通过另一个串行端口向 bgmicro Digitalker 语音合成板发送 ASCII 文本,然后语音合成板“说出”系统正在做什么。这部分是可选的。你可以配置系统而不发出声音,或者实施另一种方法,例如使用适当的声音文件,使用 cat xxx.au > /dev/audio

图 2. 家庭平面图

程序及其相关文件应一起存储在一个目录中。(在我的情况下,它是 ~/x10。)你必须从其目录运行程序才能拾取位图文件。你的 X10 模块的配置存储在 ~/.x10rc 中,应该看起来像列表 1中所示的那个。

图 3. 配置界面

该程序包含一个表格输入部分,用于修改你的配置(图 3)。屏幕很像电子表格,带有单元格,用于编辑每个单元的各种参数。你需要指示单元所在的楼层(对于多层设施),平面图图标的 x,y 坐标(加载平面图后可以微调这一点),房屋代码和单元号。此外,你需要为图标前缀和设备分配一个描述性短语,说明它是否可调光,以及如果你配置了声音,则要说的短语。你可以在字段之间使用 Tab 键,以及插入和删除行。完成后,将设置存储在你的 .x10rc 文件中。

还有一个表格屏幕用于配置计划事件,这些事件可以上传到 CP290。x10-amh 以以下格式存储事件数据

event {
        devmap 2
        daymap 1,2,3,4,5,6,7
        housecode a
        mode today
        minute 39
        hour 23
        function dim
        dimlevel 5
        }

图 4. 事件表

x-automate 中的表格简化了编辑此数据的过程(图 4)。简而言之,你需要定义设备、事件的星期几、房屋代码、模式、分钟、小时、功能和调光级别(如果适用)。要从命令行上传此数据,请运行 x10-amh filename,其中 filename 包含上述格式的计划数据。

x-automate 还具有访问 x10-amh 的其他命令行选项的方法,主要通过菜单。你可以设置 CP-290 的日期/时间、查询 CP290 的状态并执行自检。

要创建你的平面图,我建议使用 xfig,将文件保存或转换为 “xbm” 文件,以便在 x-automate 中显示。在设计平面图时,请记住你的屏幕尺寸。可以为每个楼层或区域制作单独的图纸,文件名输入在 .x10rc 文件中。控制图标将显示在 x,y 坐标处,这些坐标在你的 .x10rc 文件中定义,并且可以用于以与“遥控器”相同的方式控制设备。单击图标的边缘并拖动将在平面图上移动图标,并更新配置中的 x,y 坐标,这些坐标可以重新保存到你的 .x10rc 文件中。发行版中包含一组大小尺寸不同的图标(用于平面图)。随意制作你自己的图标——如果你制作了一些漂亮的图标,请发送给我。现在,Linux 用户也可以拥有一个精美的家庭控制 GUI,就像那个“其他”操作系统一样。

资源

鸣谢

x-automate: Control Your Home with Linux
Stew Benedict 自 1983 年以来一直从事计算机黑客技术。大约两年前发现了 Linux 后,他茅塞顿开,现在在一家制造工厂的混合 UNIX/Microsoft 网络中担任系统管理员。当他不茫然地盯着 CRT 时,他喜欢和妻子、女儿、狗和四只鸟在家中度过时光。可以通过 stewb@earthlink.net 联系到他。
加载 Disqus 评论