计算机自动化的方向

    我认为,人类操纵各种设备的权利不言自明,这是软件/电气设备进化的必然结果。

    OK,我在吐槽什么?
    昨天,老婆用了一次家里的新自动洗衣机。很好用——晚上把衣服全丢进去,然后设定模式,倒进去洗衣粉,今早六点他会自动启动。早上就拿着半干的衣服去阳台晾晒,整个过程没有一点麻烦。外婆家里的那台老洗衣机,每次使用都需要搬进搬出,连接一堆管线,然后发出巨大的响声,再由人工把半湿的衣服拿去晾。
    ——如果要那样的话我们还得看着洗衣机,或者任由刚刚洗好的湿衣服在洗衣机里面闷六个小时。
    我觉得,这才是享受人生的方式。当然,老婆和我也是一样的观点——我们在父母家里可是受够了老式洗衣机的刁难。她在发现这玩意的好处后,脑筋动的可比我快多了。早上还没有睡醒,我就被她吵起来,然后问了一个问题。
    怎么远程遥控家里的微波炉和空调?
    OK,很得意的说,这是家居设计时我早就发现的一个问题,然后很遗憾,我告诉她——暂时不行。这个是我调查了很久后得出的结论。我不大不小好歹是个程序员,怎么说在控制电器上也是有点经验的,不过这个问题确实超出了我的能力范围。目前我所知道的,控制电器的方式基本有三种。
1.电器本身支持某种协议,例如wifi,或者蓝牙。我的电视机就支持eth网络,我可以通过手机遥控电视,或者直接在电视上观看某些节目,而不用打开电脑。
2.通过电源接口做。例如我看到房屋装修中卖的最多的,号称智能屋的系统。大部分都只能支持电灯的开关,或者电灯开关支持的最好。因为电灯的开关是一个只和电源有关的问题,我们只需要做一个很小的单片机系统,装置在开关面板上。当这个机器收到无线信号的时候,就打开或者关闭电灯开关。
3.通过红外线仿真做。这个适用于IrDA兼容的无线红外遥控设备。通过购买一个红外线装置,接收遥控发出的红外信号,再对着设备重发。
    而以上三种方案,都是有缺陷,而且是严重缺陷的。
    方案一,需要设备支持。通常来说,这样的设备都是相当昂贵的,而且不是每类别的设备都能买满意了。如果有一个很小的厂子生产一种空调,支持wifi。但是这个厂的空调机以不稳定而出名,你是否愿意为了遥控而冒常常要去修空调的麻烦呢?
    方案二,不是每个设备都能灵活控制。空调和微波炉接入电源后处于待机阶段,而不是启动——这是最有遥控价值的两台机器。即使能启动好了,我再如何通过电源告诉他,把里面的东西给我加热10分钟?而且单片机接收信号必须有相当复杂的加密,至少能对抗差分攻击。否则就会陷入汽车解锁遥控器同样的问题——被破解。
    方案三,更加糟糕。红外是一种指向性相当强的方案,所以当年的红外数据传输方案很快就被蓝牙替代了。也就是说,我要遥控三台空调,需要买三个红外设备,做固定指向。或者买两个电机来摇动红外设备。即使给我做出来了,不支持遥控的微波炉,自然也无法使用这个方案。
    然而你很容易的想到,如果一个完全不明白技术关键的外行,在接触程控的第一天,就把我摇起来问这个问题。那么这个问题,肯定是我们将来的目标。
    未来的设备,不但需要一套硬件界面(这个是必须的),而且还需要一套协议界面。为什么?你可以在家里的电脑里,通过符合协议的软件,一次性控制家里的所有设备,这就是所谓的“完全中控”。如果你觉得我是瞎说,鬼才会想要这种东西。请自己问问手里有一台ipad的同学,他们是否想在ipad上装个软件,直接遥控家里所有的电器?
    他们想死了。
    晚上的时候,把面包放进烤炉,执行一个good morning app。早上到时间了,闹钟会自动叫你起床,同时餐厅空调开始工作。当你确定起床后,面包就会自动开始烤,刷牙完毕正好出炉。出门的时候,所有设备都会自动关闭——整个房间里面没有任何一台中控设备了。晚上回家前,你的移动中控设备会通过3G自动唤醒灯光和空调。出门购物的时候,家里的冰箱会把缺什么东西传到你的手机上。

    这才是人生阿。

    睡觉前总是习惯要听点音乐,睡着后需要自动关闭么?装个app吧,亲。那个app不能连带关闭空调么?换这个app吧,亲。想要起床前空调就开始工作么?我们的app带定制功能,而且有默认配置模板提供修改哦,亲。Bill Gates在《未来之路》里面所幻想的美好未来,其实和我们只有一步之遥。
    这一步问题在哪里?协议。
    其实我们是可以做到的,这样美好的生活。问题是,我们缺少一个协议。
    有专业公司,提供装修服务。他们可以对你的家里进行改造,部分安装他们的外接设备,部分改为专用电器,并且在iphone上安装专用软件,实际上可以部分做到我刚刚说的。
    问题是,贵,而且不开放。
    开放的好处在于,如果这个系统不支持晚上睡觉前关闭空调,我可以自己写一个替换掉。而且如果某个电器坏了,我不需要高价问他们买一个新的专用电器,而是直接可以在商场里面买一个。而专用电器支持的问题则是,我必须持续使用他们的设备和服务,他们也不能关门。
    所以我才说,我们需要一个协议。

21 thoughts on “计算机自动化的方向

  1. 科技就是为懒人服务的 (+懒惰也是程序员的几条美德之一)

    P.S. 我倒是觉得早起用开灯作为闹钟时刻目前比较可行也比较有用的东西

    shell 回复:

    @yyc1992, ^_^。
    早起开灯对我没用的,我早上会梦游般的自动关掉手机闹钟,区区开灯,未必比得上外面天亮有用。

  2. @shell ~~还是可能有点用的~~(比如说阴天的时候啥的~~)

    P.S. 这回去华为参观了一圈, (感觉他们像个会做这种东西的公司) 最大的感觉时在存在竞争的地方, 即使技术有了, 想要有个/推行一个统一(开放)的标准是十分困难的~~~ 比如ipv6, 比如n网合一

    shell 回复:

    @yyc1992, 如果一个方案不能每天有效,那么用处就不大了。我总不能每天看天气预报估计第二天闹钟是否有效吧。
    标准的统一本身就是非常困难的,最可能发生的事情还有标准打架。但是神奇的是,目前一家做这个标准的都没有,这个和标准打架相比是另一个极端了。

  3. @shell 所以说不用外面的光用开灯嘛 =D LOL

    这~~ 我还以为有公司在做呢~~~

    shell 回复:

    @yyc1992, 可是每天要屏蔽外面的光,麻烦死了。

  4. 有现成的X10协议:http://en.wikipedia.org/wiki/X10_(industry_standard)

    shell 回复:

    @HgG, OK,多些补充。
    那现状就很好理解了,大家都不按照协议做。要么是协议实用性不大,要么是协议价值太大。
    有符合协议的产品么?这次家里装修,我们买的通用性产品都是无法控制的,除了电视。

  5. P.S. 统一成蓝牙是不是比较靠谱~~ (安全性不是很清楚但是应该问题不大~~) 从硬件上来说(这里指布线)至少比输电线和以太网简单的多~~~

    shell 回复:

    @yyc1992, 蓝牙有几个严重问题(当然,wifi也有)。首先,蓝牙是一个受保护的协议,因此蓝牙芯片是收权利金的。而wifi没这个问题。其次,蓝牙的接入和通讯需要选择对端,并且输入pin码,因此不是很好操作。当然,wifi也有类似问题。不过wifi比蓝牙功率大一些,无论是功耗还是环保都差一点。
    不过wifi有一点非常诱人的地方,当你接入后,任何一个人都可以使用网络接口对设备进行操作。这个对编程的难度降低很有帮助。而要操作蓝牙就必须让蓝牙接入特定的电脑设备(而非低功耗的AP),然后在电脑上对蓝牙进行编程,再开放服务给其他网络上的设备。

  6. 这么说的话想起来我们实验室在用的应该就是这种东西(用无线控制一个输电线模块, 然后那个模块再通过输电线控制电灯)

    shell 回复:

    @yyc1992, 那是单片机控制继电器的模式,上面讲了,不算很好,很难控制复杂设备。

  7. 不错不错~~ 前一段时间和一个老师讨论这个问题,我也同意他的说法,现在的主要问题是标准,等那几家公司争出个结果,推向市场就只是时间问题了。

  8. 我发现我家的微波炉还是那种老式机械定时器,这个可以用定时电源……

    shell 回复:

    @LTN, 这个等于把编程变成了一个开关。

  9. X11协议,查wikipedia去,别走到computer那个

    另外微波炉很简单,你买个旋钮式,定好模式,定好时间,设置一个定时开电的节电器,7点通电,自动结束,只是东西放在里面放那么久不太好吧,哈哈

  10. @Gene, 那就不叫中控了,而是定时器。
    看来微波炉的中控需求还是集中在定时上,不过也许真的出现网络控制,会催生一些有想法的人的创造力。

  11. X10太墨迹,一个指令居然要0.8秒,很难接受啊。
    PS,请博主删掉我回错地方的那个回复吧。

    shell 回复:

    @Alex, OK,虽然说我不觉得你这条回复对地方了。。。

  12. 机器人应该是解决这个问题的好帮手,虽然目前希望还不大。

    初次到这个地方,博主的文章挺有意思。

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>