如何开发物联网应用程序
2015-04-16王达
■王达
如何开发物联网应用程序
■王达
物联网的突然爆发其实并不是那么难以理解的事情。传感器、网络芯片和其他技术都要求连接到网络设备上,这一范围可以电灯扩展到智能手环,再到工业设备,所以这些设施都变得比以往更加便宜。
所有这些连接的设备都在不停地发送和接收来自于网络的数据,这一网络可能与地理属性如温度、湿度、脉搏、光感、速度或每分钟转速相关,现时还会收发一些更加复杂的数据如维护需求、声音,以及静态和动态图像等等。
为了在实际中得到应用,物联网收集和转换的数据不得不连接到Forrester分析师所谓的自动化系统上。如软件系统,可以智能管理事物和他们使用的网络,可组织和存储他们所产生的大量数据,同时在处理他们,然后在呈现给最终用户。那么要如何开发出物联网所需要的应用程序?
开发之间的重要问题
这些问题对物联网应用开发人员很重要。哪一种才是最好的方法,来构建一个“物联网应用”,它可以做很多事情,从远程控制家庭应用到对引擎改动机制造商发送通知,而这一需要维护服务的引擎有个能在世界任何一个地方?开发人员要具备怎样的技能?要从哪里先开始?
物联网应用开发的始占在于它本身。这些边缘设备通常没有屏幕(尽管并非总是如此)、处理器功耗低,搭载的是某种嵌入式操作系统,使用一个或多个通信协议进行交流(通常是无线)。这些东西可能直接与网络、相邻事物和网络网关相连,一般外形就是一个盒子带一些闪闪发光的灯。
系统的下一层即集成层是软件和基础设施,运行在企业数据中心或云中,来从各种事物中接收和管理数据流。运行在集成层的软件通常也负责管理这些事物,必要时更新固件。
接下来就分析层,用于管理并处理数据。最后,还有一个终端用户层,这一层上应用程序用于用户之间交流。这些可能是企业应用、可能是网络应用,也可能是移动应用。
如果你正在想办法构建物联网应用,最后两层将会是你接触最多的。作为开发人员,你可能没有工具处理这些边缘设备或网关,或者没有适应集成层的能力。
这也就是为什么说构建应用程序要从已经就绪的“物联网平台”开始是有道理的了。这些平台通常包含集成层,这一层承载着以时间为序列输入的数据,以及分析层、自动精简配置,激活和管理功能,实时消息总线和建立其上的平台和应用之间的通信API。
现在市场上有许多公司都在提供这类平台。这有Xively、Mnubo、Bug Labs和ThingWorx,他们都有能力与不同的制造商产生的大量“事物”进行沟通。
还有些比较有名的公司,如微软的智能系统服务,和企业软件厂商如SAP的物联网解决方案,这些厂商都在他们的产品中增加了物联网功能。
从相当大量的工作开始构建IoT平台
位于加利福尼亚州的OnFarm使用了ThingWorx的云IoT平台来开发他自己的web农场信息应用程序。这可以从大量不同的事物中收集数据,如土壤湿度传感器,同时还能集成其它来源的数据,如天气信息提供者。然后它把这些信息通过定制的控制板呈现给它的农户。
OnFarm的CEO曾一度考虑招聘开发人员,从头构建一个物联网平台,但这个想法很快就被拒绝了。这样做将有相当大量的工作要做。就只单单构建他们自己后端就要一、两年时间。即使用一、两年他们完成了这项工作,那么他们公司在落于人后了。
通过使用ThingWorx所有数据的处理,OnFarm减少了大量的web控制面板的工作,只需通过ThingWorx的API就能连接到数据上了。
该公司聘请了一位开发人员来通过t编写连接器,允许新传感器与ThingWorx平台通信。这一代码置于ThingWorx内部。另外,该公司还聘请了四位开发人员进行OnFarm web应用前端的开发,大部分的编程工作使用了Bootstrap、AngularJS和t。这个前端通过RESTful API可以连接到后面的ThingWorx上。这个过程非常简单,让人能够专注于前端使用数据进的数据性能和灵活性。
目前,OnFarm收集的数据来自在于5,000多种客户的“事物”,每个月收集大约7百万条数据。这一数据以每年30%的速度在增长。所有的预构建平台还有一个好处是就它的可扩展性,现已经经过验证。这很重要,因为物联网应用程序相对较新。如果物联网可以像许多人期望的那样获得成功,然后像OnFarm这样的应用程序供应商可能需要每年以非常快的速度来扩展他们的产品。