有很久没有写文章了。为google I/O在airbnb寻找硅谷附近的住所时无意间遇到了Paul,lockitron 的创始人。于是lockitron便吸引了我的注意力。他们的video很酷(需翻墙):
根据这个video及其主页的介绍,我用lean canvas大概总结了一下其要解决的问题和商业思路:Locitron lean canvas。接下来的问题是:如果要做这样一个产品,需要什么样的技术架构?
于是,我花了些时间,深入了解lockitron,思考其特性,及特性背后的feature。我会从硬件——门锁控制器(下称controller),软件——功能与服务(下称service)两个方面来看lockitron面临的技术挑战及解决方案。由于我手头没有一个lockitron供我测试和reverse engineering,所以接下来你看到的内容,臆想的成分很大。
我是硬件的门外汉,不懂PCB,但是controller的控制电路本身想来并不太难(please correct me),但是要能通过网络控制门锁门锁,则面临三个棘手的问题:
安全性是一个全局问题,我们最后讨论。
接受来自网络的信号从而控制机械进行开关的动作不算一件很难的事情,有线网络,WiFi,蓝牙,NFC等技术都可以做到。然而要从internet上接收控制信号,且不依赖第三个设备,可选的技术就只有有线和无线网络。有线网络不用考虑,没有易用性。所以Lockitron选择使用WiFi——感谢iPhone/iPad的普及,目前几乎有网络的家庭就会有WiFi。
但是,如何配置controller上的WiFi,使其接入到家里的WiFi网络,从而连接internet?这是我苦苦思索的一个问题。我想到以下solution:
这些解决方案中要我选的话,唯一能接受的是ethernet。除了稍稍SB些,安全性/成本比是最优的。
然而看Lockitron的外观图,并没发现其有ethernet接口(或USB口)。Lockitron是怎么解决这个问题的呢?我多番查证,终于在其官方博客3/23的一篇博文中找到了答案—— Electric Imp,又是一个NB创业公司做出来的天才硬件。看看video:
Imp是一个SD card大小的网络连接组件,为设备提供安全的互联网连接。Imp为设备制造商解决两个问题:
关于Imp更多的细节请自行访问其官网。也许下次我会尝试着思考Imp的技术架构。
总之,通过使用Imp,controller解决了前两个问题。
供电是另外一个棘手的问题。一般人家的门上不会走电线,也就不可能有电源插口。另外,外部电源并不可靠,你总不想在小区停电的晚上,一个人呆在门口里,绝望地刷微博等待电力恢复吧?所以,电池供电是最好的解决方案。但是,门锁不比iPhone,你不能每天晚上给它充电,然后祈祷它一天之内都能正常工作。最终问题指向了硬件和软件的电力消耗:如何设计足够省电的软硬件,让Lockitron能正常工作一年之久?
答案还是Imp。Imp帮助Lockitron offload了很多事情。由于它能够接收来自internet的信息,比如说一个json:
{
"action": "open"
}
通过编程,我们可以将这个消息转换成某个引脚的低电平/高电平信号,从而让controller驱动开关。所以我猜想controller的PCB比较简单,甚至用不到CPU。所以,耗电的压力主要集中在Imp上。看了下Imp的手册,idle状态下10mA以内,rx/tx状态会最高到250mA。10mA只能算是中庸,对于AA充电电池(一般2500mA左右)来说,能待机250小时,10天左右。然而Imp还支持deep sleep,在此状态下只需要6uA的电流,不考虑电池自放电,可以待机47年。在deep sleep状态下,当收到信号时,Imp会启动,连接WiFi,传输数据,然后再转回deep sleep,整个过程耗时1s左右。这对开关锁这样的非实时应用来说足够了,所以,在Imp的帮助下,Lockitron controller能够使用两节AA电池,待机至少1年。当电池电量到达某个阈值时,controller会通过led(猜测)提醒主人更换电池。
我们先看看Lockitron的软件都需要做哪些事情:
解决了以上问题,剩下的就是如何user friendly。在Video中Lockitron的控制器甚至能被各种各样的终端控制,不单单限制在手机上。但人人都有手机,所以Lockitron提供了iOS, Android甚至text message的支持。作为创业公司,Lockitron的做法很讨巧,就提供了一套手机端的html5页面。使用起来是否足够友好和流畅我不得而知,因为我只能打开login的页面。但Lockitron的控制目前还相对简单,所以WebUI足矣。
(未完待续)
如果您对本站的文章感兴趣,欢迎订阅我的微博公共账号:程序人生。每次博文发表时,您都能获得通知。此外,公共账号还会不定期推送一些短文,技术心得,供您参考。