第 2 章 联网装置的设计原则

第 2 章 联网装置的设计原则

本书的原书名包含设计两字,这是不是意味着我们应该认为:在构建联网装置的过程中,设计起着十分重要的作用?

某些应用乍一看,你会觉得设计没什么重要的。谁会介意工厂里生产线上放置传感器的盒子的外观?功能决定形式,对吧?

和准备放在壁炉架上的物品相比,一般的联网装置的结构设计也许没那么重要。但其他功能性方面的设计却不能草草应付了事,装置的结构和它的控制系统、和工厂中的其他设备之间怎样相互作用,都是应该要仔细考虑清楚的。

你也许觉得设计仅仅是关注物品的形状和外观,做一些装饰性的事情,让物品看起来赏心悦目。如果你未曾花太多时间和设计师们交流,有这种想法可以理解。但实际情况是,设计所涉及的领域比你想象的要广泛得多。

工业设计(也称为产品设计)除了关心物品的形状和装饰,也涵盖了一些功能性的方面。例如,搞清楚产品应该怎样构造,确保操纵装置易懂好用,等等。

物品的用户接口(屏幕上的控件或传统的按钮和开关)也是体验设计学科感兴趣的内容。该学科从最终用户的视角观察设计,寻求建立符合用户需求的最佳解决方案。显然“最佳”是一个主观的目标,是令设备尽可能地有趣还是让设备尽可能有效地被使用,这要看设计师及其团队优先考虑的目标是什么了。

数字服务的兴起,特别是那些利用因特网以及由此产生的网络效应的服务,要求设计专家们能对整个系统的设计有一个更开阔的视角。服务设计是从整体上以最广阔的视野研究服务,而交互设计也研究系统的不同部分是怎样互相关联的,特别是用户在交互过程中扮演什么角色。

上述设计相关的各个学科之间没有明确的界限。我们认为这些学科的设计师们都会同意,设计可不仅仅是对产品外观的美化装饰。

本章将介绍几个在设计物联网系统时可以应用的非常重要的原则,并且讨论几个有助于探索问题域和最终形成好产品的技术。这些技术未必适用于所有的情况,但它们可以在你着手做设计时,提供一些有用的经验规则。

2.1 环境计算和宁静技术

物联网源自于20世纪90年代马克·维瑟(Mark Weiser)在施乐公司帕洛阿尔托研究中心(PARC)做的工作。他提出一个假设:当处理器变得足够便宜,以至于可以把它嵌入到各种日常物品中时,会发生什么事情?他的工作围绕这个假设展开,但并没有考虑到网络连接的存在。他创造了“普适计算”这个词来描述这个假设,并且通过他的研究和文章探究普适计算对生活在这样一个环境中的人们意味着什么。

普适计算关注的焦点是嵌入到各种地方的处理器,因此也常被称为环境计算(ambient computing)。然而,ambient这个词有“仅存在于背景环境中”的含义,不是指需要我们积极留意的事物,也不是指在某些情况下我们试图移除的事物(例如音频资料中的环境噪声)。

因此,和马克·维瑟一样,我们更喜欢用宁静技术(calm technology)这个术语。系统中的物品不会争相吸引你的注意,而是随时准备在你决定关注它们的时候提供便利的功能和有用的信息。

伴随着物理世界中计算设备的激增,出现了各种新的挑战。例如,怎样配置设备,怎样给所有这些设备供电,设备之间怎样互相通信,怎样实现人和设备之间的交流,等等。

功耗和联网方面的挑战是纯粹的技术问题,这些挑战推动了诸如6LoWPAN(www.ietf.org/dyn/wg/charter/6lowpan-charter.html)之类的标准的开发。一个由学者和计算机领域的专业人员等组成的工作组起草了6LoWPAN标准,为的是把下一代因特网协议(IPv6)应用到最简单、最低功耗的有联网能力的传感器上(下一章介绍因特网协议的发展趋势时还会谈到这个话题)。设计该协议的目的是为数量众多的传感器提供足够多的地址并满足其对低功耗的需求。

配置和用户交互方面的问题因为涉及人的参与,显然仅仅想通过技术手段解决是有困难的。好的设计在这些方面却大有用武之地,有助于增加设备的可用性,提高用户的接受度。一个很好的例子就是苹果公司于2001年推出的iPod。iPod不是市场上第一个便携式MP3播放器,但滚动式转盘用户接口和iTunes软件的配合使用,使得其易用性相当好,成为了一种销量很大的产品。

在孤立的状态下设计一个联网装置,很可能会作出不太理想的设计决策,导致物品或服务在真实的使用环境中表现不佳。借用埃利尔·沙里宁(Eliel Saarinen)在设计方面的箴言,我们建议你考虑一下,作为大量的联网装置中的一员,你设计的联网装置是怎么与周边环境互动的。

沙里宁是这样说的:设计一个物品时,总是需要考虑其直接关联的外部环境:椅子放在房间内,房间属于一幢房子,房子存在于一个环境中,环境则在一个城市规划中。除了设计物品,设计服务时也要考虑其所处的物理环境。

对于仅仅是用来感测周边环境或通常用作输入端的联网装置而言,只要它们的活动不需要周边的人参与,应该没什么问题。它们会愉快地收集信息,然后把信息存储到某个在线数据仓库中并进行处理和分析。

一旦装置开始和人发生交互,事情就变得复杂了。我们已经看到,在计算机和手机上,消息通知、弹出窗口和提示音的数量增长迅猛。当我们面对成百上千的新服务和新应用,并且把它们散布在真实世界中的各种物品中时,各种吸引人注意的提示音就是不和谐的杂音了。

针对上述问题,马克·维瑟和约翰·史立·布朗(John Seely Brown)提出了一个解决办法,即设计普适计算系统,使物品融入周边环境。这样做的效果是,我们可以一直能感知到它们的存在,直到在需要的时间让它们成为主角。

宁静技术对注意力的中心和外围都有吸引力,并且实际上会在二者之前相互切换。

——“宁静技术设计”,马克·维瑟和约翰·史立·布朗,施乐公司帕洛阿尔托研究中心,1995年12月21日

采用宁静技术的一个很好的例子就是Live Wire(有时也被称为Dangling String),它是最早出现的物联网装置之一。该装置是艺术家Natalie Jeremijenko在施乐公司帕洛阿尔托研究中心做客座研究人员时,在马克·维瑟的指导下创建的一个简单装置。一个电机的输出被连到一根8英尺长的塑料绳上。电机的输入被连到以太网上,靠网络数据传输时产生的电信号供电。当网络上有数据包传送时,塑料绳就会被扯动。

在正常的和比较轻的网络负载下,绳子只是偶尔会抽动一下。如果网络过载,伴随着电机运转时发出的独特噪声,绳子会疯狂地抽动。相反的情况,如果没有网络活动发生,绳子就会异乎寻常地平静。两种极端的情况都会引起附近某个人的注意(他已经习惯了绳子的正常行为),他便了解网络出问题了,需要进一步查看一下是怎么回事。

不是所有的技术都需要宁静。一个宁静的视频游戏几乎没什么用,因为视频游戏本来就应该让人兴奋。但还是有太多的设计只聚焦于物品本身及其表面的特征,没有考虑所处的环境。我们必须要学会在设计时考虑周围环境,这样才能充分地驾驭技术,而不是被技术所支配。

——“宁静技术设计”,马克·维瑟和约翰·史立·布朗,施乐公司帕洛阿尔托研究中心,1995年12月21日

Live Wire在高网络负载情况下,电机会发出独特的声响,这是一个有趣的现象。把传送信息的方法扩展到屏幕之外的真实环境中,常常会增加“通知”的维度。在一台计算机上,屏幕更新就是纯粹的基于视觉维度的信息传递。如果要使用其他维度传递信息,也必须要以清楚明白的方式表达。艾德里安的物联网泡泡机Bubblino会对Twitter上的推文进行搜索,当发现与搜索关键词匹配的推文时,就会吹泡泡。和Live Wire类似,Bubblino是一个很好的运用其他维度传递信息的例子,其电机的副效应也是在某事发生时生成听得见的通知。Mint Digital工作室制作的物联网装置Olly(www.ollyfactory.com),把电机和一个有意引入的嗅觉指示器相结合,可以分辨几种不同的社交媒体事件并产生闻得到的通知。

当采用“更好的”技术时,我们需要谨防失去这些类似噪声的“副效应”。若干年前,所有机场和火车站的出发/到达指示牌是用人工翻转的卡片组成的。转轴上有若干卡片,有时会把完整的地名印在卡片上,有时只是把单个字符印在卡片上,通过翻转卡片显示正确的项目。

在大多数地方,这些卡片式的指示牌已逐步被淘汰,取而代之的是LED点阵显示屏。后者可以很容易地更新为新的目的地,还能实现诸如水平方向滚动显示消息等前者无法实现的功能。但可惜的是,新的显示屏少了一个重要的特性,即老的指示牌更新显示时发出的一连串的噼啪声。结果是,在车站候车的乘客们必须一直盯着显示屏,等待列车到达的消息,而不能像以前那样先忙别的事,仅在指示牌有变化时查看一下。

这不是说显示屏不是正确的选择,仅是手机和平板电脑时代的无意识之选。如果你在开始的设计中选择尽量不使用显示屏,之后你还是会考虑使用它,并认为使用显示屏是最好的解决方案。

有一些有趣的实验,在使用显示屏时,采用了可扫视显示(glanceable displays)的设计。这些屏可被称为次级显示屏,它们不会位于离你很近的位置,而是被放到你可能会放置画框的位置。

显示装置也不都是屏幕。例如,新鲜事物(recently possible)的倡导者拉塞尔·戴维斯(Russell Davies)制作的Bikemap(http://russelldavies.typepad.com/planning/2011/04/homesense-bikemap.html),就是把几个LED灯嵌入到一张打印出来的地图中。地图显示的是拉塞尔家附近的区域,每一个LED灯标示了一个伦敦公共自行车租赁系统自行车存放架的位置。如果某一个存放架上有超过5辆的自行车,对应位置的LED灯就会点亮。这个装置被嵌入到一个画框中并且被挂到拉塞尔家的前门附近,他出门的时候只需要扫一眼这个装置,就知道出门往哪边走能找到自行车。

拉塞尔是RIG(Really Interesting Group)工作室的合伙人,这是一个位于伦敦的多学科机构。机构中的其他人,包括他们朋友圈中的一些人,也在宁静技术这一领域不断探索。

他们的工作室里有一套支持AirTunes功能的WiFi扬声器,每个人都可以控制它,用它播放音乐。你在这里工作时,常常想知道正在播放的乐曲的名字,但找不到适当的办法可以在不打扰办公室全体同事的情况下,知道当前的乐曲是谁放的,放的是什么曲子。

为了解决这个问题,他们把一个闲置不用的显示器放置到一个书橱上,不干扰任何人。通过观察网络流量和连接到用来记录播放曲目的last.fm服务,构造了一个显示当前播放曲目及其演奏者的系统。系统的显示屏只在曲目改变的时候更新,其所在位置在所有人的视线之外,因此它不会分散人们对工作的注意力。但如果正在播放的曲目让你分心了,那么这个显示屏正好能满足你的好奇心。

Bikemap也为RIG工作室的克里斯·希思科特(Chris Heathcote)提供了一些灵感。Chris是一名交互设计师,他意识到自己每天早晨都要查看几个手机应用程序,了解天气预报、当天的日程和伦敦地铁的运行情况等信息。他家的门口没有电源插座,因此他把一个信息显示屏放置到了床边。考虑到这个显示屏需要一直开着并且离他睡觉的地方很近,因此持续发光的标准显示屏或其他LCD显示屏都不太合适。然而Kindle阅读器使用的电子墨水显示屏却是一个理想的选择。他利用Kindle的WiFi连接能力和计算能力,把它改造成了一个自成一体的物联网装置。这个装置只显示一个网页,并且这个网页每隔几分钟就会自动刷新。

这个最终完成的装置被Chris称为Kindleframe(http://anti-mega.com/antimega/2013/05/05/kindleframe),它总是能显示来自于不同网站的最新的聚合内容,这样Chris就能在一天的开始获得他需要的全部信息。

2.2 用魔法作隐喻

在引进不同寻常的新技术或服务时,一个主要的问题是,怎样让人们理解和接受它。对早期的采用者而言,新装置给他们带来各种好处。即便它们的外观看上去有点奇特或用起来有点笨拙,人们也都能欣然接受。然而,为了让这项技术或服务能流行起来,你需要说服大多数人去使用它。

除了自身需要实现特定的行为外,技术常常需要获得社会的接纳。很多案例表明,失败的技术和非常成功的技术之间的主要区别是:后者会比前者晚几年出现,此时人们已经变得更乐于接受该技术了。

技术博客的博主Venkatesh Rao想出一个不错的术语,用来解释新技术是怎样被接纳的。他认为人们不会觉得自己所生活的这个世界是持续变化的。如果可以把时间回溯一秒,我们就会知道世界已经改变了。随着时间的流逝,世界已经改变了很多,但这种改变是隐藏在日常生活中,是悄无声息发生的。Rao把这一概念称为虚构的常态域(manufactured normalcy field)(www.ribbonfarm.com/2012/05/09/welcome-to-the-future-nauseous/)。

如果一项技术想要被接纳的话,就要设法使其位于虚构的常态域内。因此,成功的用户体验设计师只为用户提供不超出特定的常态域边界太远的体验,即便所采用的底层技术已经远远超出了常态。例如,手机最初是作为不需要用电话线连到特定位置的无绳电话引入市场的,现在,大体同样的技术给用户带来的设备却是便携式因特网终端,可以用来播放影片、存放个人收藏的全部音乐,有时也可以用它打打电话。

便携式因特网终端就是通过用手机作隐喻,设法进入了虚构的常态域。用人们已经理解的事物引入新技术是一个屡试不爽的办法。计算机早期是作为豪华型打字机引入的,而图形用户界面则被比喻为桌面,还有很多这样的例子。

那么,物联网该用什么作隐喻呢?正如我们在上一章所看到的,亚瑟·查理斯·任何足够先进的技术与魔法其实别无二致。鉴于物联网通常会赐予日常生活中的物品半隐藏的能力,也许魔法和童话故事中有魔力的东西是一个好的隐喻,有助于人们把握各种可能性。

一些物联网项目直接从魔法中获得灵感。例如,John McKerrell的WhereDial就是参照哈利·波特中用来追踪韦斯莱家成员所在位置的时钟制作的。韦斯莱家的钟能使用魔力推测每个家庭成员的下落,因而也能了解他们是否遇到危险。相比之下,WhereDial只能依赖技术实现其功能。利用智能手机中的GPS芯片和FourSquare之类的位置签到服务,拥有一个类似WhereDial的装饰品不是什么难事。当你在工作中、旅途中或在就餐场所时,它都可以及时更新位置信息。

案例研究:WhereDial

John McKerrell是一位对地图和地理位置应用充满热情的开发者。他曾用Multimap地图块开发了一个可以在浏览器中随意拖拽的可滑动地图应用(类似于谷歌公司当时刚刚推出的令世人惊叹的地图应用),并把该应用的一个版本展示给Multimap的人看,为此他从这个初创公司得到了一份工作。MapMe.At是他构建的一项网络服务,目的是让人们存储和共享他们的位置。截至2009年,他已经连续好多年经常性地在MapMe.At上签到了。

因此,当他参加在自己的家乡利物浦举办的物理计算创意日活动时(碰巧是由本书作者Adrian组织的),提交一个与地理位置相关的项目几乎是必然的了。

在非常流行的哈利·波特系列小说中,有一个韦斯莱家族。这家人有一个可以显示每个家庭成员位置的时钟。John的一位朋友建议他可以用这个钟来形象地显示收集到的位置数据。

John弄到一个传统的老式旅行手提钟,在上面装了一个步进电机,用来驱动钟的机械装置。电机受Arduino电路的控制,而Arduino电路可以和MapMe.At交换信息。钟面上的数字被替换为几个经常出没的地点:家、工作场所、商店、酒馆、餐馆,等等。如果恰巧不在上述地点,则可以显示为“在路上”。把这个钟放到餐具柜上还真不错,不管谁在家里,都可以看到John和他妻子当前的位置(每人对应一个指针)。

之后的几年里,John对钟的设计做了优化,使其成为了一款物联网产品。随着FourSquare等位置服务流行度的增加,钟的软件部分做了升级,可以连接更多的位置服务。钟的结构和外观也有了变化。

用传统的钟做物联网产品有两方面问题:一是找到足够数量的适合改造的钟不容易;二是当某一个指针旋转一圈后,另一个指针才转动到一个新位置,这样就不方便显示两个人的位置。

WhereDial(http://wheredial.com)目前只能显示一个人的位置。另外它也没有采用让指针指向某一位置的方式,而是采用了移动地点标识到特定位置的方式。这个改进后的设计适合实现批量的定制,John可以在他家的工作坊里用激光切割机按需生产足够多的WhereDial。(见图2-1。)

图 2-1 WhereDial

另一些项目也或多或少受到了魔法的影响。

在设计研究领域,魔镜类装置似乎颇受欢迎,尽管其拥有的能力还达不到白雪公主故事中邪恶的皇后用的那面魔镜。人们倾向于在一天开始或结束的时候,在他们预计要使用浴室中的镜子时,用其显示有用的信息。这样,你在早上洗澡的时候,可以查询当前时间、预约活动、交通和天气状况等信息。可以推测,想让魔镜类装置显示你在Facebook上得到的“赞”的数量只是一个时间的问题,这样它就能成为邪恶的皇后那面魔镜(用来查询“谁是世界上最漂亮的人”)的现代等价物。

David Rose曾经管理过一家叫做Ambient Devices的公司,该公司有一些产品可以作为魔镜类装置的范例。根据David Rose关于有魔力的物品的思考,你应该不会对此感到意外。环境感知球(ambient orb)是一个单像素显示装置,用来显示用户选择的度量值(股价、天气预报和花粉计数等)的状态。和外形近似的魔法水晶球一样,环境感知球让你能从远处看到它所传递的信息。

Ambient Devices之后又建造了一把有魔力的雨伞。这把伞可以获取天气预报数据。如果预计要下雨,伞柄就会发光,这样就能在你出门的时候起到提醒你带伞的作用。

这些装置并不像《指环王》中的魔戒一样拥有惊人魔力。它们具备更平凡的魔力,用来更容易地完成任务或让生活变得更有趣。而这正符合我们想阐述的核心观点:利用人们对魔法和童话故事的了解,让这些前所未见的新装置更容易被人们接受。

当然,试图用魔法完成我们能力之外的事情,是有危险的。《魔法师的学徒》(The Sorcerer's Apprentice)向我们展示了这一点。当魔法师的学徒试图通过使用他并未完全理解的魔法,使扫帚具备魔力,以此来减轻日常杂务的负担时,扫帚失去了控制。幸好魔法师及时回来,才恢复了秩序。相比之下,到目前为止,我们设计的Roomba自动真空吸尘器看似还是行为正常的。但我们还是要小心,在创建物联网装置时,要避免使其具备用户不易理解的“魔力”和控制界面。

除了要确信物联网装置能按照你的意图行事之外,确保其能为收集到的数据提供防护措施也很重要。

2.3 隐私

谈到信任问题时,让我们感到担心的不仅仅是我们自己拥有的物联网装置。随着有越来越多的感测装置在注视着我们,并且向因特网报告数据,偶然或有意穿越传感器监视区域的第三方带来的隐私问题已经成为一个重要的考虑因素。物联网服务的设计者需要小心权衡这些隐私方面的问题。

2.3.1 保守秘密

对诸如健康护理之类的领域,隐私是一个显然需要关心的问题。我们将在第11章对此做更详细的介绍。然而,看似不涉及隐私的应用也可能泄露个人信息,你应该对此有所警惕并采取必要措施。下面这个例子能很好地说明这一点。

在澳大利亚的一家Westfield购物中心,有一个较早安装了监控设备的停车场。每个停车位用一个Park Assist生产的小型传感器监控,传感器用一个廉价的摄像头判断车位是否已被占用。这些传感器都已连成网络,据推测可以为停车场的管理者提供使用情况的分析。传感器上的灯用来指引司机把车开到空闲的车位。所有这些设施都是有用且无害的。

后来系统引入了一个更高级的特色功能,问题随之而来。购物中心为客人们提供了一款可供下载的智能手机应用程序,方便他们获取购物中心内各种设施的更多信息。这个应用程序提供了“我的车在哪里”(Find My Car)这一功能选项。选择此功能后,程序提示你输入车牌号的前几个字符,然后会返回给你四幅可能匹配的小图片。这些小图片是通过使用OCR(光学字符识别)软件,对购物中心服务器上存储的传感器数据进行处理后得到的。

这些小图片只是些缩略图,其清晰度只够识别出哪辆是你的车,车牌看上去模糊难辨,不能用来做其他事情。然而,安全专家Troy Hunt却发现,这个程序的实现方法有问题,有可能泄露个人信息(http://www.troyhunt.com/2011/09/find-my-car-find-your-car-find.html)。

使用现有的一个非常简单的软件,就可以对这个手机应用程序发送给服务器程序的请求消息进行观察。Troy发现,该消息是一个非常简单的未经加密的Web请求消息。原始的请求URL包含若干参数,既包括要搜索的字符串,也包括诸如要求返回的结果数之类的信息。

这个请求消息返回的是一个数据块(采用的是容易解析的标准的JSON格式),其中不仅包含四幅图片的URL,也包含许多额外的信息。可以据此推测,在本例中,对于Web服务的开发者来说,返回全部相关的数据比只返回所需的数据要容易。这些额外的数据中,不仅包括每个传感器单元的IP地址等一般信息,而且也包括每一辆车完整的车牌号和泊车时间等重要信息。

Troy发现,通过改变查询参数,可以获得远多于4个的匹配结果。而省略掉要查询的车牌号字符串也是可能的,这意味着只要他乐意,随时可以通过一次Web请求,下载到全部2550个停车位上所泊车辆的车牌号列表。

虽然上述所有的数据都可以通过公开的方式获得,比如在停车场的入口处持续监视车辆的进出,但是在计算机上创建一个脚本并以固定的时间间隔进行查询,就能轻易获取所有的数据。

收到针对该问题的警告后,Westfield和Park Assist马上就禁用了这一特色功能,然后通过与Troy协作,构建了一个更好的解决方案。然而,要不是Troy慷慨大度地让他们及时注意到问题所在,最终结果就不好说了。

提供服务时,不要分享超出所需的信息。

维基解密的创始人朱利安·阿桑奇(Julian Assange)说过:“保守秘密的最好方式是从来不知道这个秘密。”(http://www.pbs.org/wgbh/pages/frontline/wikileaks/interviews/julian-assange.html)如果你能一开始就避免收集和存储这些数据,就没必要担心意料之外的泄密。

在当今时代,决不以明文的形式存储密码是一个业内常规。你可以考虑应用标准的密码加密机制,例如单向散列,把密码转变为另外一组数据。Peter Wayner在《透明的数据库》(Translucent Databases)一书中就推荐采用单向散列技术。如果你不需要把数据恢复到其最初的形式(即只需要其独一无二并且与同一组数据关联),那么就不要在数据库中存储可恢复为初始形式的身份识别数据,保存一个用单向散列处理后的版本就可以了。这样做了以后,数据的拥有者仍然能找到他们的数据(因为他们能再次提供原始的身份识别数据并对其做散列运算),对数据做统计分析和报表之类的工作也不受影响。

散列(Hash)

单向散列是一种加密技术,用来把任意大小的数据块浓缩为一段称为“散列值”的固定长度的信息。之所以被称为单向散列,是因为在给定散列值的情况下,想反方向计算出原始形态的数据是很困难的。散列算法都是这样设计的,即输入数据只要稍有不同,就会导致其输出的散列值有明显的差别。

当你想验证两个数据块是否完全相同,又不想为了做比较保存这些数据时,散列算法的上述特性就非常有用了。如果你想做比较的数据块非常大,或者你不想以原始形态保存数据,那么使用散列算法正合适。

密码散列的最常见用途是密码验证。服务提供商不储存用户的原始密码,而只存储密码的散列值。当需要鉴别用户身份时,可以根据用户的输入重新计算散列值。如果计算结果和存储的散列值匹配,则服务器端有理由相信该用户提供了正确的密码。

应用散列算法之前,先对密码做加盐处理是一个好习惯。所谓加盐,就是在计算散列值之前,给密码添加一些随机的、无需保密的被称为盐(salt)的额外的文本。盐和散列值存储在一起,当需要验证新提交的密码时,服务端可以把该密码和盐重新连接起来。攻击者可能会设法获取散列值的一个副本,再通过把它与一个预编译的散列值字典做比较,以此来获取密码。对密码做加盐处理就能防止这种攻击。

2.3.2 谁的数据

虽然被部署的传感器的数量在不断增加,但被收集的数据应该归谁所有一直不太明确。例如,部署在广告牌上面的摄像头能够查看人们是否在看各种不同的广告。这些数据是属于安装摄像头的公司,还是属于正在看广告的普通民众?城市计算(urban computing)的主要实践者Adam Greenfield对此有一个很有说服力的论点。他认为,在公共场所中,这些数据是由公众生成的,因此公众至少应该拥有平等的知情权,也有权使用这些数据。(https://speedbird.wordpress.com/2012/12/03/the-city-is-here-for-you-to-use-100-easy-pieces/,参见第67条。)

在私有物业里,你可以更容易地宣称公众无权拥有相关数据。主张拥有这些数据的人可能是该物业的业主,而不是安装摄像头的人。诸如购物中心之类的很多地方,尽管被私人拥有,但看上去感觉像是公共场所。在这些地方又怎样界定数据的归属权?

2012年夏天,开放物联网大会(http://openiotassembly.com/)的参会者们在开会讨论此类问题时,创造了数据主体(data subjects)这一术语。对于数据所涉及的当事人来说,不管那些用来收集数据的传感器和用来安装传感器的物业是否为他们所拥有,他们都是数据主体。数据主体应该享有什么样的权利目前尚不明确,但这是一个值得进行更多探讨和关注的领域。

2.4 联网装置的Web思维

当你考虑物联网装置网络方面的问题时,从现有网络部署中获取经验教训和设计准则可能是有帮助的。我们明显可以借鉴一下万维网及因特网本身的设计准则。毕竟,物联网这一术语将来会显得有点古怪,因为人们将来肯定会认为,因特网上不仅连接着计算机和电话,而且还有大量的能够上网的物品,他们丝毫不会认为这种情况有多么奇怪。你应该致力于养成Web思维方式,创建属于Web而不仅仅是附着在Web上的装置。

在TCP协议规范的一个早期的版本中(RFC761,http://tools.ietf.org/html/rfc761#section-2.10),乔恩·波斯特尔(Jon Postel)就提出,“发送时要保守,接收时要开放”(Be conservative in what you do, be liberal in what you accept from others)。从此之后,这个健壮性准则就广为人知,并通常被称为Postel法则。在设计或构建必须和其他服务交互的任何系统时,牢记Postel法则是有益处的,特别是当与其交互的其他组件并不是由你构建时。

2.4.1 小块松散组合

即便一个服务的所有组件都是你构建的,让这些组件之间的耦合度不要太高也是有意义的。因特网之所以能繁荣发展,正是因为不存在可以完全控制全网的中心位置。因特网正是一种遵循了“小块,松散组合”(small pieces, loosely joined)准则的包含了各种服务与设备的集合。

对服务的设计者来说,这意味着服务的每个组件都应该能做好单一的一件事情,并且不能太依赖它所使用的各个独立组件。要尽可能地让组件更为通用,使其能够为那些也需要相似功能的其他系统服务。这样一种设计,能让我们通过对现有组件进行重用和稍作改动,更方便地构建出在最初设计的系统投入使用时未曾想到的新功能。

尽量使用已有的标准和协议,而不是自己另搞一套。如果人们可以利用标准库和相关技术与你的系统交互,或者在你的系统之上构建应用,那么即便在代码或硬件的优雅程度或效率方面有一些损失,也是可以接受的。例如,Twitter的设计师们实现搜索功能时,在查询结果的表示方式上,选择包含了一种更适合机器识读的方式,即标准的Atom信息聚合格式(http://tools.ietf.org/html/rfc4287)。我非常肯定,他们没有料到这些查询结果会被Arduino使用。Arduino能利用这些数据触发Bubblino泡泡机,每当收到一条新的推文时,泡泡机就会吹泡泡。

Bubblino可以通过理解和使用Atom提要(feed)来寻找新推文,因此只需对它略作修改,就可以用它来监控任何其他支持Atom提要的被监控对象。如此看来,用Bubblino监控某个博客是否有新博文发表是相当容易的。对任何其他你想用吹泡泡的方式表达的通知消息,都可以表示为Atom提要。大多数Web编程语言有现成的函数库,用来生成适当的Atom提要。

这意味着,如果我们的客户想用Bubblino监控开发者的行为,如他们的某位开发者提交了代码并且这些代码没有通过自动化测试,是相当容易的。他们只需要编写一个小型的Web服务,用来获取测试结果并生成Atom提要。一旦他们的Bubblino被配置为使用这个新的Web服务,它就能在测试未通过时吹泡泡。

2.4.2 因特网上的一等公民

松散耦合还有一个深层含义,那就是让装置尽量成为因特网上的一等公民。这里的“一等公民”指的是:你要和因特网上的其他成员保持一致,尽可能使用相同的协议和规范。

在项目初期,人们倾向于选择折衷方案和容易实现的协议。的确,很多中间件供应商鼓励这种做法,并且声称此类低功耗终端的能力是有限的(或者因为没有足够的处理能力或内存,或者受限于所用的网络)。这种说法有一定道理,但也不可尽信。过去20多年形成的一条有价值的经验规则是:IP协议会渗透到任何地方。所以,我们没有理由认为,该规则不再适用于物联网。

少数情况下,例如对于超低功耗传感器,现有的协议不能直接使用。有一个更好的解决方案:和你的合作伙伴一起去修改现有标准,或者在传统的标准框架内,创建能解决问题的新开放标准。

移动Web的演进是一个让人引以为戒的好例子。手机刚可以连接因特网时,人们认为用手机直接访问Web服务器实在太困难了,因此他们开发了一套新协议,即无线应用协议(WAP)。手机可以访问专门为其定制的WAP网站,或者通过WAP/Web网关服务器来访问标准的Web网站。但这要求WAP网站开发者们先学习一套新技术,因此新协议推广得并不顺利。而没有可以访问的WAP网站,用户接纳移动Web的步伐就更缓慢了。

随着技术的逐步演进,在手机上已经可以使用标准的Web协议。尽管网页的显示效果并不完美,但已经好到用户愿意开始使用的程度了。因为用手机直接访问Web站点的人不断增多,开发者们看到“便于移动用户使用”(mobile-friendly)特性的需求。鉴于这些特性可以让开发者们利用他们已经熟悉的工具进行开发,所以久而久之,移动Web就演变为广义的Web技术的一个方面了。

2.4.3 优雅降级

因为因特网广受欢迎,并且允许各种设备和服务在其上运行,所以不同种类的因特网终端拥有的能力差异很大。也正是因为这个原因,几乎不可能构建出能够适用于所有这些终端的服务。然而,若干设计模式的演进减轻了这一问题的影响。

第一种技术是承认大量不同类型的装置很可能带来问题,并且在设计系统的时候就考虑到这一点。如果需要你提供一个在装置间传递数据的格式,别忘了在其中添加一个用来在不同版本的格式之间做区分的机制,最好做到能让旧装置仍然能读取新版本数据格式中的主要内容。这一般被称为后向兼容。虽然随着时间的推移,数据格式中会有一些没用的内容(因为一些特性只适用于过时的装置),但这项技术能极大地延长用户装置的生命期,提高装置的利用率。HTML的格式允许任何客户端忽略任何不能识别的标签(<>中的文本),以此来实现后向兼容。因此,在不影响旧版本解析器使用的情况下,新版本的HTML格式能够添加新的标签。HTTP协议实现后向兼容的技术则略有不同:通信双方分别指明各自支持的协议版本号,支持高版本协议的一方会避免在会话过程中使用任何新特性。

另一种常用技术被称为优雅降级。该技术旨在为能力足够强的客户端提供全部特性的用户体验,而对于能力不足的客户端,则可以自动降级——可能有若干个级别,提供部分特性的用户体验。优雅降级可以跨越不同的实现技术,并且这种情况还十分常见。

开发人员在实现诸如Twitter和Gmail之类的富Web应用时,会想使用现代浏览器支持的各种高级的JavaScript特性。优秀应用会在使用某些特性之前检查其是否可用。如果这些特性不可用,该应用会限制自己仅使用更简单、更常用的JavaScript代码。例如,提交表单前仍然会验证表单内容,但不再调用服务器端的方法以实现自动完成功能。如果JavaScript完全不被支持,则还能回退到基本的HTML表单。虽然此时的用户体验不能和支持全部JavaScript特性时相比,但总好过完全不能用。

在设计联网装置时,除了可以通过使用几种功能相同的技术实现优雅降级外,也能够把优雅降级应用到装置本身,实现一定程度的故障容错能力。随着装置数量的激增,装置出现某种故障的可能性也在增加,这意味着:当有些部件不能正常工作时,让装置继续具备使用价值是很重要的。假设一个早期的有因特网接入能力的冰箱不能再连接到你的WiFi基站,因为它只支持IPv4,而因特网世界已经迁移到IPv6,你仍然能够用它的触摸屏写消息,能够把U盘插到冰箱上并用触摸屏查看存储在其中的照片。如果连触摸屏也坏了,你还是能够继续使用冰箱的冷藏冷冻功能。

2.5 功能可供性

在《设计心理学》(The Design of Everyday Things)一书中,唐纳德·诺曼(Donald Norman)就功能可供性(affordances)给出了如下的定义:

功能可供性为物品的操作提供了明显的线索。平板是用来推的,旋钮是用来转的,狭长的方孔是用来插东西的,球是用来抛掷或拍的。如果物品的功能可供性被合理利用,用户一看便知如何操作,无须借助任何的图片、标签和说明。复杂的物品也许需要操作说明,简单的物品应该不需要。如果简单的物品也需要用图片、标签和说明来解释其操作方法,这个设计就是失败的。

我们向所有对设计感兴趣的人推荐这本优秀的书籍。不过,该书关于门的设计的可供性章节可能会破坏你对建筑和人互动方式的认知,因为在现实生活中你几乎每天都会碰到考虑不周的设计,看完书你会郁闷的。

物联网的应用步伐在加速,越来越多的城市、家庭和环境中将充斥各种技术。这些新增的行为和能力将带来额外的复杂性,成功的物联网装置和服务设计师需要设法抵消其影响。

被赋予到物品上的很多新能力本质上不可见,或者看上去并不明显,这给直觉设计带来困难。对于数字化的有魔力的物品,功能可供性是指什么呢?

我们怎样向用户传递信息,让他知道某个物品可以和云端通信?或者让他知道这个装置支持诸如RFID之类的短距离通信方式?怎么看得出一个玩具可以测量温度?玩具震动的时候又表示什么含义?你怎样能知道本地的公交车候车厅是否在监视你?或许更重要的是知道,它为什么要监视你?

解决这些问题的一个重要的开端,就是让物件现有的功能可供性得到加强。那些没有察觉装置有任何附加功能的人,仍然能继续使用这个装置,只当附加的功能并不存在。虽然这个原则听上去是常识,但它经常因成本或设计难度等原因被人们放弃。

例如,一个“非智能的”(dumb)的灯光调节开关通常设计为旋钮样式,使用户能够精确地控制亮度。一旦把它接入家庭自动化系统,灯的亮度就可以被远程控制或自动控制。这样的话,同步旋钮的位置和灯光亮度级别就有一定难度,因此经常会导致旋钮被替换为若干按钮。这样做的结果是,用户同时失去了快速大范围改变亮度和小范围精确调整亮度的能力。解决此问题的一个好办法是使用电动电位器,其实就是很多音响设备中使用的音量旋钮。用户仍然可以用传统的方式调整这个旋钮,而任何远程实现的亮度改变都会立刻反映为旋钮位置的变化。

对于不可见的交互,或者因为使用了无线通信,或者因为是通过学习过的姿势触发,事情要更棘手一些。不过,我们仍能通过对物品的外形进行适当设计,鼓励正确的行为。RFID技术本身并不要求物品具备卡片形式的外观,但卡片形式的设计可以引导用户采用正确的交互方式,例如在乘坐伦敦地铁时,把他们的Oyster交通付费卡与形状相似的读卡器表面轻轻接触。

设计物理接口时,类似的规则也适用。不要给人们熟知的连接器添加不熟悉的行为。例如,不应该使用3.5毫米的音频插口给系统供电,尽管有点另类的用它传输数据可能还行。当你设计一个全新的连接器时,要考虑一下怎样防止用户连接时搞错方向。littleBits(http://littlebits.cc/about)在设计模块化的可以接插在一起的电子线路构件时,就碰到了这个问题。因为产品的目标用户是初学者,所以他们想寻找一种方法,可以毫不费力、简单明了地把构件连到一起。他们的解决方案不错,做到了这一点。他们使用磁铁鼓励正确的连接,同时还阻止了不正确的连接。

2.6 小结

本章内容将会让你对新兴的物联网领域有更深入的理解。本章介绍的若干方法,在你设计物联网装置时,也将在思维方式层面为你提供一些指导。

你不仅要考虑装置“应该怎样工作”这样的技术细节,也要考虑怎样把它融入用户生活的大环境中。本章通过一些实例说明了这一点。对于手机应用程序,一旦切换到另一个程序,先前的那个程序就看不见了。与此不同的是,物联网产品会在真实世界中占据物理空间,不会因为用户关注焦点的转移而消失,你要考虑到这一点。

你也要注意不要泄露用户不希望泄露的任何信息。物联网是一个充满各种可能性的新领域,给我们提供了让生活更快乐和更丰富的机会。但我们在推进物联网发展的同时,要注意不要疏远不太懂技术的人,别让他们感到恐慌。

适当使用诸如魔法和童话故事之类的切入点,有助于让不太懂技术的人接纳物联网。在计算机相关的增强功能失效后,可以优雅降级,仍然可以用人们习惯的方式使用的系统,也有助于做到这一点。

虽然本书的内容才刚刚展开,你已经通过一些介绍,例如,对Natalie Jeremijenko的Live Wire的描述,或在优雅降级一节提及的HTTP协议的版本,接触到了网络的不同方面。

对于一本物联网相关的书籍,这没什么可惊讶的。但我们并不假设你能完全理解网络是怎样工作的,或它到底能做些什么。下一章我们将介绍因特网的常用协议(包括协议的概念),以及协议之间如何互相关联,来让你更好地理解因特网的工作方式。

目录