在国家“互联网+”战略的大背景下,“物联网”势不可挡的发展前景已经被大家广为认可。可是,当我们真正着手开发一个典型的物联网应用的时候,就会发现事情往往没那么简单。
和传统的应用不太一样的是,物联网应用往往是一个典型的端对端的异构的分布式程序。“端对端”意味着应用涉及到设备端,网关端,还有云端。 “分布式”表示应用的主体功能由部署在多个地方的组件合作完成。而“异构”则表明这些组件长得往往不一样。所以往往为了完成一个小的功能,却需要考虑到这里头的方方面面的技术:网络连接、数据协议、消息响应等等等等 … … 更不要提调试,部署等实施时的具体问题了。
这么多的实际问题都大大提高了物联网开发的门槛以及实现具体应用的效率和质量。今天就和大家分享一个github上的开源项目 – 英特尔® IoT Services Orchestration Layer。在它的帮助之下,开发典型的物联网应用变成了拖拖拽拽“画”个图的事,分分钟就可以搞定,更多的开发者可以更加轻松愉快的“转职”成高产的 “创客”了。
下面就举个例子(类似于Hello World)来介绍一下它的基本功能。
假设我有两个温度传感器和一个电风扇,接在了一块开发板上(例如英特尔® Edison)。想写的应用程序也很简单,如果A传感器测到的温度大于B传感器,就打开风扇,否则就关闭。我们看看怎么不写一行代码,就做出这么个应用。
先把英特尔® IoT Services Orchestration Layer安装到英特尔® Edison开发板之后(具体过程参见项目文档,非常简单,近似于解压),然后我们就可以从电脑用浏览器(例如Chrome)连接上开发板。浏览器会显示一个非常酷炫的HTML5的开发者界面,里面有设置好(如何设置参见项目文档)的各种服务,例如测量A传感器温度,测量B传感器温度,开关电风扇等。
然后,写程序的过程就变成了拖拽这些服务,根据它们之间数据的传送关系连线,“画”出一个或者多个“工作流”的过程。对这个应用而言,“工作流”相当简单,如下图所示,就不具体解释了。
“画”好了程序逻辑之后,我们还可以接着“画”程序的界面。如下图,里面有一堆预设的控件,我们可以拖拽希望使用的控件进行布局——这里为了演示,我一下子使用了8个控件。
为了让这些控件正确显示或者发送数据,我们需要回到刚刚完成的工作流当中接着“画”——要把那8个控件也加进来。例如把测量A传感器的服务和一个仪表盘连一个线,表示测到的温度要由这个仪表盘控件显示。
那么现在,我们的物联网应用就开发完成,大功告成了。直接点击按钮启动程序,下图是看到的结果,一个是实物,我们用手摸一摸A传感器,它测到的温度就会比较高,然后风扇就启动了。同时我们也可以用浏览器看到应用的界面,里面按照我们刚刚“画”的方式,显示了温度,风扇状态等各种信息。
有时候开发完成之后,我们想把这个应用分享给别人,让他们可以在自己的环境中直接下载使用我们开发的程序。这个过程也非常便捷,如下图所示,可以点击分享按钮把自己的应用发布到云端的应用仓库。别的开发者就可以在他们的开发界面中点“安装”来搜索,下载和部署这些发布在应用仓库里程序。
整个过程是不是很简单?项目的地址是https://github.com/01org/intel-iot-services-orchestration-layer。项目是基于Node.js开发的,所以也发布在npm(Node.js Package Manager)上,名字是iot-sol。 里面带丰富文档,和各种示例。
最后,作为一个开源项目,除了作为它的使用者,把玩之余,你还可以为它的不断发展做出贡献:推广,报bug,提出建议,增加内置的服务,扩展功能等。赶快去下载试试吧!
作者简介:
丁俊勇
首席架构师,英特尔亚太研发有限公司Web技术和优化中心;
英特尔首席工程师,专注于JavaScript,IoT,编译器,HTML5,性能优化等领域。