三大挑战将扼杀你的物联网解决方案!

咱们都必须面对挑战,尤为是来自物联网的挑战!本文旨在剖析物联网项目中须要关注的三大挑战:回归,测试和模拟。git

如下为译文:数据库

当今,物联网面临的最大难题是以下的三大技术挑战:编程

  • 规模大;
  • 功耗低;
  • 难以控制的无线通讯。

在本文中,咱们将详细介绍全部物联网平台都必须面对的三大基本问题。做为如何在现实环境中解决这些问题的一个实例,让咱们看看Thingsquare物联网平台是如何解决这些问题的。后端

在存在大量设备的状况下,即便是正常状况下不太可能发生的问题,也有可能发生。安全

规模:当规模足够大时,一切都难以预料网络

许多物联网的部署涉及到数百或数千个独立设备。在存在大量设备的状况下,即便是正常状况下不太可能发生的问题,也有可能发生。编程语言

大型网络在实地很难监控,而在其开发过程当中更具挑战性。工具

在Thingsquare,当咱们讨论物联网的开发时,咱们根据规模将其分为以下几类:测试

  • 开发者规模:1-2台设备。当你面前只有一个或两个无线设备时,理解它们的工做原理和过程就比较容易。你能够经过添加打印输出或让发光二极管闪烁来了解有些事情正在发生。做为一个开发人员,你会所以感到有信心,由于一切都在你的掌控之中。你甚至能够在其中一个设备上中止软件的执行,并单步执行程序。
  • 桌面级规模:2-5台设备。在这个阶段,你再也不可以单独控制每一个设备,你必须把它们看成一个总体来对待。虽然他们的数量仍然少到可以让你监测,可是你将不得不使用像视觉闪烁的LED灯这样的辅助手段,让你可以看到这些设备上正在发生什么。
  • 办公室规模:5-10台设备。如今你已经没有足够的空间把全部设备放在一张桌子上了,你必须把它们分散到一个有点难以监控的区域。用一个新的程序开始对它们进行编程是一个实际的挑战,由于你将不得不在物理上链接并断开每一个设备和闪存编程器(flash programmer)的链接。
  • 楼面级规模:10-100台。如今很难在一个办公室里找到容纳全部设备的空间了,你须要把它们分散在整个楼层上。这使得你很难直观地看到全部设备,因此,要想知道发生了什么,惟一的办法就是经过无线通讯——除非每一个设备都链接了有线信道,而这自己就是一项庞大的设置工做。此外,在这种规模下,硬件问题开始显现:由于硬件的质量并不是老是那么可靠,在99%的成材率下,100台设备中可能会有一个或多个设备存在物理损坏。
  • 部署级规模:100-500台设备。这种一种开发时不多考虑的规模,一般开发考虑的规模不超过100台设备。这种规模的原型测试和验证的POC(概念验证)过程和前一个类别没有什么不一样之处。但在这种规模下,互联网链接问题开始对系统产生影响了。若是系统的某些部分与其余部分具备不一样的链接(例如,某些部分使用WiFi链接,而其余部分使用3G链接),那么在系统的不一样部分,状况将有所不一样。
  • 城市级规模:500-1000+台设备。在这种规模下,须要自动化工具来跟踪系统的行为。另外,即便全部设备都包含在一个网络中,一个简单的操做也须要大量的时间。例如,因为无线网络的物理速度,向全部设备发送一个ping消息可能须要几分钟的时间。

在Thingsquare,咱们用来应对这些挑战的策略是:spa

  • 模拟。模拟一切,从物理无线层到微处理器层,再到网络和设备的高级模拟。
  • 测试床(Testbed)开发。每一个功能都在一组测试床中开发,最大的测试床有100个节点。
  • 轻量级崩溃报告。若是代码崩溃,设备将提供一个简短但有用的崩溃报告。
  • 回归测试。代码中的每个更改都要在模拟器中通过严格的自动化测试。

模拟

在处理一个大型系统时,人们对系统中正在发生的事情,几乎没有可见性。当处理物联网设备时,因为它们是无线的,而且没有太多存储和传输日志的能力,它们的可见性甚至更低。

模拟是解决这一问题的重要方法。咱们在以下几个层面使用模拟:

  • 无线网络模拟:咱们模拟系统中的无线网络行为,从而能够在任何给定时间看到传输中发生的状况。
  • 微处理器仿真:咱们仿真运行代码的处理器,从而容许咱们按比例测量功耗和执行时间。
  • 功耗模拟:在咱们的网络模拟器和微处理器的仿真器中,咱们跟踪代码和通讯的功耗,这样就不须要全部须要信息都从硬件上测量获得。
  • 高级模拟:咱们经过使用高级编程语言(主要是Javascript)实现对物联网设备行为的模拟,在物联网规模大到没法借助仿真或测试床来测试时,该语言能够帮助咱们完成系统测试。

测试床开发

模拟是一个强大的工具,但它不能替代在实际硬件上的开发工做。有时你须要开发一个物理传感器或驱动器。这时候你须要和真正的硬件交互。但更重要的是,模拟器的行为方式与现实世界不一样。若是你彻底在模拟中开发你的解决方案,当面对现实的时候,它颇有可能会崩溃。

在Thingsquare办公室,咱们有一套规模愈来愈大的测试床,它包括:

  • 两个测试床,各自带有10台和20台设备。
  • 一个带有100台设备的测试床。

咱们使用咱们的测试床来开发新的功能,并不断测试咱们的系统。咱们可使用它们来复制咱们在客户部署中看到的行为。咱们也能够在测试模式中使用它们来运行比咱们办公室实际可以容纳的更大型的网络。

轻量级崩溃报告

软件都有可能崩溃,尤为是在开发过程当中。当软件崩溃时,崩溃报告能够帮助开发人员了解代码崩溃的位置和缘由。对于低功耗物联网设备,想要在其上存储和传输彻底崩溃时保存的内存数据,几乎不太可能。

在Thingsquare,咱们使用一种轻量级技术从设备处收集崩溃报告:

  • 对于上传到设备的每一个构建好的代码,ELF二进制文件都会被存储适当的地方,并用该构建的git commit ID打上标记。
  • 若是设备崩溃,崩溃时的程序计数器(亦即指令地址寄存器)将会存储在非易失性存储器中。
  • 当设备在崩溃后从新启动时,发生崩溃时的代码commit ID和程序计数器会报告给后台。

这使得构建一个包含致使崩溃的内存地址和崩溃发生时的特定代码版本的数据库成为可能。有了这个数据库,开发人员就能够很方便地调查并肯定致使崩溃的缘由,而后解决问题。

回归测试

回归测试是一种标准的软件开发技术,能够确保软件在开发过程当中不会崩溃。

物联网平台由许多类型的组件(从后端软件到无线设备)组成。要执行回归测试,每一个组件都须要进行各自的测试,同时也须要做为一个总体进行测试。

在Thingsquare,咱们使用模拟器对系统所作的每个更改执行全平台回归测试。在回归测试经过以后,咱们再在测试床上测试系统。回归测试套件旨在捕获致命的错误,而这些错误可能会致使测试台没法工做。

功耗:很低很低!

物联网可能功能强大,但几乎没有什么设备像物联网设备那样功耗低!

物联网设备一般是无线设备,它们须要依靠普通电池或太阳能电池上提供电力来运行。这些电池提供的电力很弱,很是弱。功耗一般必须不高于电池的自发放电,将功耗下降到如此低水平既是一门科学,也是一门艺术。科学之处在于如何经过使用软件或硬件来测量和了解功耗。而艺术这处则在于了解如何充分利用此信息。

功耗既是硬件问题,也是软件问题。硬件须要进行正确的调校,并支持尽量多地关闭组件。而软件赐须要知道关闭什么,什么时候关闭以及什么时候能够安全地这样作。

在物联网中,最棘手的部分一般是无线通讯。无线电传送会消耗大量电能,但它相当重要,所以不能盲目关闭。无线电波在接收时消耗的功率与发送时消耗的功率相同。随着网络规模的扩大,这一点变得愈来愈重要。

在Thingsquare平台中,咱们使用多种技术来解决功耗问题:

  • 基于硬件的功耗测量:咱们使用很棒的工具来测量硬件的功耗。
  • 基于软件的功耗测量:每一个节点都会跟踪功率消耗并按期报告。
  • 寿命估算:基于测得的功耗数据,咱们能够估算每一个设备的寿命。
  • 具备异常检测功能的功耗跟踪:在大型系统中,咱们使用异常检测功能来查看是否有任何设备使用的功耗超出预期。

基于硬件的功耗测量

第一步是肯定原始硬件的功耗。最好的方法之一就是使用一种叫作Otii的装置。咱们不只须要查找硬件中可能致使功耗增长的错误,并且还要肯定硬件各个组件所消耗的基准功耗。

然而,测量一台设备的功耗并不能让咱们看到整个网络的功耗。所以,咱们须要进行持续的测量。

基于软件的功耗测量

基于软件的功耗测量让咱们可以连续跟踪每一个设备的功耗。

由于软件能够彻底控制硬件,因此咱们只须要测量每一个组件打开的时间就能够很好地估算总功耗。每一个设备都会按期报告此数据。

寿命估算

由于咱们如今能够跟踪每一个设备的功耗,因此咱们可使用它来估算每一个设备的寿命。

具备异常检测的功耗跟踪

随着设备数量的增加,监视单个设备的功耗变得愈来愈困难。所以,咱们须要引入自动化工具。

咱们从每一个设备上收集功耗数据,可使用异常检测来突出显示具备异常高功耗的设备。这些设备须要仔细检查——由于它们可能存在致使高功耗的错误,若是咱们在开发过程当中能找到它,那么在咱们部署解决方案时,它们就不会形成麻烦。

一旦咱们找到了一个有问题的设备,咱们就能够深刻了解细节,并查看历史功耗。咱们发现,在几个时间尺度上对功耗进行平都可以提供有用的信息:一小时的功耗平均值有助于发如今一天中重复出现的问题,而24小时的平均值则有助于发现每周重复出现的问题。

上图显示了一个设备的24小时平均功耗。显然这个设备在4月份的几天里耗电量出现性异常。

一旦咱们发现了存在的问题,咱们就能够更加深刻地研究为何会发生这种问题。若是咱们不具有识别这种问题的能力,那么这种问题就不会被发现,而后它们就会悄悄进入生产环境。

无线通讯:难以控制

不少物联网都使用无线网络。而无线通信难以控制。

理解无线通讯的一种方法是把它想象成光同样:它会反射并以意想不到的方式被遮挡。无线覆盖可能在一个地方很好,但仅仅一步之遥就不行了。就像灯发出的光,即便在靠近灯的地方也可能被遮住同样。

若是有东西挡在无线信号传输的路上,无线信号传输可能就会阻塞。许多物联网解决方案部署的位置不可避免地会有物体移动。若是某个大的物体正好在通讯路径上移动,那么该通讯路径可能会被堵塞。

无线通讯也受到其余无线通讯的严重影响。不一样的频率有不一样的干扰量。2.4 GHz频段,包括了WiFi和蓝牙信号,是一个特别难进入的频段。这就是为何许多设备使用其余频段(如亚GHz频段)进行通讯。

在Thingsquare系统中,咱们采起如下措施来应对这些挑战:

  • 网状联网:咱们使用IPv6网状组网技术来绕过障碍物。
  • 跳频技术:咱们使用跳频技术来避免无线干扰。

网状组网技术

网状组网技术是这样的一种技术:一个设备经过重复发送来自其余设备的消息,来帮助其余设备达到更远的距离。

这种技术并不要求每一个设备都在接入点的范围以内,它容许设备伸展到更大的区域。同时它还容许网络自动绕过障碍物。

Thingsquare平台使用支持RPL网格路由协议的IPv6组网技术。全部节点都会不断地测量到其邻居接点的链接质量,若是发现质量更好的连接,则能够从新排列路由图。

网格的造成和维护过程是彻底自动化的。所以,只需将扩展器放入网络,就能够将网络扩展出去。

跳频技术

跳频技术是一种能够避免在一个特定的无线信道上花费太多时间的方法。这是必需的,由于该信道可能被其余通讯所占用。对于某些频率范围,跳频是一项监管要求,不能正确切换频道的设备将被禁止部署。

Thingsquare平台采用跳频技术,它既符合监管要求,又能在同一位置支持多个网络。每一个网络都有本身的跃点调度,这使得网络之间的干扰尽量少。独立的网络须要不一样的安全密钥,可是保持通讯频率的独立使系统更加高效。

结论

物联网是一个重大的技术挑战,由于其庞大的部署规模,功耗需求和无线通讯的使用。

幸运的是,经过使用物联网平台,你不须要直接面对这些挑战。由于这些问题应该已经被平台解决。

相关文章
相关标签/搜索