咱们都必须面对挑战,尤为是来自物联网的挑战!本文旨在剖析物联网项目中须要关注的三大挑战:回归,测试和模拟。git
如下为译文:数据库
当今,物联网面临的最大难题是以下的三大技术挑战:编程
在本文中,咱们将详细介绍全部物联网平台都必须面对的三大基本问题。做为如何在现实环境中解决这些问题的一个实例,让咱们看看Thingsquare物联网平台是如何解决这些问题的。后端
在存在大量设备的状况下,即便是正常状况下不太可能发生的问题,也有可能发生。安全
规模:当规模足够大时,一切都难以预料网络
许多物联网的部署涉及到数百或数千个独立设备。在存在大量设备的状况下,即便是正常状况下不太可能发生的问题,也有可能发生。编程语言
大型网络在实地很难监控,而在其开发过程当中更具挑战性。工具
在Thingsquare,当咱们讨论物联网的开发时,咱们根据规模将其分为以下几类:测试
在Thingsquare,咱们用来应对这些挑战的策略是:spa
模拟
在处理一个大型系统时,人们对系统中正在发生的事情,几乎没有可见性。当处理物联网设备时,因为它们是无线的,而且没有太多存储和传输日志的能力,它们的可见性甚至更低。
模拟是解决这一问题的重要方法。咱们在以下几个层面使用模拟:
测试床开发
模拟是一个强大的工具,但它不能替代在实际硬件上的开发工做。有时你须要开发一个物理传感器或驱动器。这时候你须要和真正的硬件交互。但更重要的是,模拟器的行为方式与现实世界不一样。若是你彻底在模拟中开发你的解决方案,当面对现实的时候,它颇有可能会崩溃。
在Thingsquare办公室,咱们有一套规模愈来愈大的测试床,它包括:
咱们使用咱们的测试床来开发新的功能,并不断测试咱们的系统。咱们可使用它们来复制咱们在客户部署中看到的行为。咱们也能够在测试模式中使用它们来运行比咱们办公室实际可以容纳的更大型的网络。
轻量级崩溃报告
软件都有可能崩溃,尤为是在开发过程当中。当软件崩溃时,崩溃报告能够帮助开发人员了解代码崩溃的位置和缘由。对于低功耗物联网设备,想要在其上存储和传输彻底崩溃时保存的内存数据,几乎不太可能。
在Thingsquare,咱们使用一种轻量级技术从设备处收集崩溃报告:
这使得构建一个包含致使崩溃的内存地址和崩溃发生时的特定代码版本的数据库成为可能。有了这个数据库,开发人员就能够很方便地调查并肯定致使崩溃的缘由,而后解决问题。
回归测试
回归测试是一种标准的软件开发技术,能够确保软件在开发过程当中不会崩溃。
物联网平台由许多类型的组件(从后端软件到无线设备)组成。要执行回归测试,每一个组件都须要进行各自的测试,同时也须要做为一个总体进行测试。
在Thingsquare,咱们使用模拟器对系统所作的每个更改执行全平台回归测试。在回归测试经过以后,咱们再在测试床上测试系统。回归测试套件旨在捕获致命的错误,而这些错误可能会致使测试台没法工做。
功耗:很低很低!
物联网可能功能强大,但几乎没有什么设备像物联网设备那样功耗低!
物联网设备一般是无线设备,它们须要依靠普通电池或太阳能电池上提供电力来运行。这些电池提供的电力很弱,很是弱。功耗一般必须不高于电池的自发放电,将功耗下降到如此低水平既是一门科学,也是一门艺术。科学之处在于如何经过使用软件或硬件来测量和了解功耗。而艺术这处则在于了解如何充分利用此信息。
功耗既是硬件问题,也是软件问题。硬件须要进行正确的调校,并支持尽量多地关闭组件。而软件赐须要知道关闭什么,什么时候关闭以及什么时候能够安全地这样作。
在物联网中,最棘手的部分一般是无线通讯。无线电传送会消耗大量电能,但它相当重要,所以不能盲目关闭。无线电波在接收时消耗的功率与发送时消耗的功率相同。随着网络规模的扩大,这一点变得愈来愈重要。
在Thingsquare平台中,咱们使用多种技术来解决功耗问题:
基于硬件的功耗测量
第一步是肯定原始硬件的功耗。最好的方法之一就是使用一种叫作Otii的装置。咱们不只须要查找硬件中可能致使功耗增长的错误,并且还要肯定硬件各个组件所消耗的基准功耗。
然而,测量一台设备的功耗并不能让咱们看到整个网络的功耗。所以,咱们须要进行持续的测量。
基于软件的功耗测量
基于软件的功耗测量让咱们可以连续跟踪每一个设备的功耗。
由于软件能够彻底控制硬件,因此咱们只须要测量每一个组件打开的时间就能够很好地估算总功耗。每一个设备都会按期报告此数据。
寿命估算
由于咱们如今能够跟踪每一个设备的功耗,因此咱们可使用它来估算每一个设备的寿命。
具备异常检测的功耗跟踪
随着设备数量的增加,监视单个设备的功耗变得愈来愈困难。所以,咱们须要引入自动化工具。
咱们从每一个设备上收集功耗数据,可使用异常检测来突出显示具备异常高功耗的设备。这些设备须要仔细检查——由于它们可能存在致使高功耗的错误,若是咱们在开发过程当中能找到它,那么在咱们部署解决方案时,它们就不会形成麻烦。
一旦咱们找到了一个有问题的设备,咱们就能够深刻了解细节,并查看历史功耗。咱们发现,在几个时间尺度上对功耗进行平都可以提供有用的信息:一小时的功耗平均值有助于发如今一天中重复出现的问题,而24小时的平均值则有助于发现每周重复出现的问题。
上图显示了一个设备的24小时平均功耗。显然这个设备在4月份的几天里耗电量出现性异常。
一旦咱们发现了存在的问题,咱们就能够更加深刻地研究为何会发生这种问题。若是咱们不具有识别这种问题的能力,那么这种问题就不会被发现,而后它们就会悄悄进入生产环境。
无线通讯:难以控制
不少物联网都使用无线网络。而无线通信难以控制。
理解无线通讯的一种方法是把它想象成光同样:它会反射并以意想不到的方式被遮挡。无线覆盖可能在一个地方很好,但仅仅一步之遥就不行了。就像灯发出的光,即便在靠近灯的地方也可能被遮住同样。
若是有东西挡在无线信号传输的路上,无线信号传输可能就会阻塞。许多物联网解决方案部署的位置不可避免地会有物体移动。若是某个大的物体正好在通讯路径上移动,那么该通讯路径可能会被堵塞。
无线通讯也受到其余无线通讯的严重影响。不一样的频率有不一样的干扰量。2.4 GHz频段,包括了WiFi和蓝牙信号,是一个特别难进入的频段。这就是为何许多设备使用其余频段(如亚GHz频段)进行通讯。
在Thingsquare系统中,咱们采起如下措施来应对这些挑战:
网状组网技术
网状组网技术是这样的一种技术:一个设备经过重复发送来自其余设备的消息,来帮助其余设备达到更远的距离。
这种技术并不要求每一个设备都在接入点的范围以内,它容许设备伸展到更大的区域。同时它还容许网络自动绕过障碍物。
Thingsquare平台使用支持RPL网格路由协议的IPv6组网技术。全部节点都会不断地测量到其邻居接点的链接质量,若是发现质量更好的连接,则能够从新排列路由图。
网格的造成和维护过程是彻底自动化的。所以,只需将扩展器放入网络,就能够将网络扩展出去。
跳频技术
跳频技术是一种能够避免在一个特定的无线信道上花费太多时间的方法。这是必需的,由于该信道可能被其余通讯所占用。对于某些频率范围,跳频是一项监管要求,不能正确切换频道的设备将被禁止部署。
Thingsquare平台采用跳频技术,它既符合监管要求,又能在同一位置支持多个网络。每一个网络都有本身的跃点调度,这使得网络之间的干扰尽量少。独立的网络须要不一样的安全密钥,可是保持通讯频率的独立使系统更加高效。
结论
物联网是一个重大的技术挑战,由于其庞大的部署规模,功耗需求和无线通讯的使用。
幸运的是,经过使用物联网平台,你不须要直接面对这些挑战。由于这些问题应该已经被平台解决。