一、新一代教育资源库体系结构
为了满足物联网教育资源共享和应用的要求,我们设计的新一代教育资源库(物联网教育资源库)采用了基于框架的层次化设计,其整体结构如下页图1所示,具体描述如下。整个物联网教育资源库系统采用分层设计,从大的方面来说,由接入层、核心层和表现层组成,而对于比较复杂的核心层,在其内部使用了分层设计,每个层次之间通过预定义的接口进行调用,只要接口保持不变,各个层次可以独立开发和部署,从而保证系统的最大扩展性,各个层次的主要功能描述如下。
1.接入层
接入层可以理解成一个物联网资源到物联网教育资源库的转换器,负责把各类不同的物联网资源存放到物联网教育资源库中,一类是直接具备HTTP协议处理能力的嵌入式物联网设备,它能直接使用标准的HTTP协议按照既定的数据格式把数据存放到资源库中,如当前应用最多的Arduino(电子积木)设备;另外一类是称为泛传感器的应用程序,该程序本身并不处理任何传感器资源,但它在应用程序运行的过程中会不断产生数据,我们把这些数据称为泛传感器资源,它将被应用程序本身通过调用统一的HTTP接口存放到物联网教育资源库中,如手机定位跟踪应用程序;最后一类则是大量的非HTTP物联网资源,这些资源本身不具备HTTP协议处理能力,而且技术方式多样,它们必须和相应的接入模块配合,依靠它们把数据存放到教育资源库中。接入层部分的统一数据解析、转换、转发、读取、配置接口也是一些预定义且已实现的API,它可以简化接入模块部分重复功能的开发,同时使系统具备更好的可扩展性。之所以考虑HTTP协议,一方面是为了跨平台跨网络部署的需要,另一方面也是为了方便各类应用程序包括嵌入式、单片机、智能终端程序的访问。
2.核心层
核心层可以理解成一个可以使用标准HTTP/HTTPS协议访问,并支持远程数据实时交互的Web数据库,它负责物联网教育资源及其关联信息,包括用户信息、认证信息、权限信息、物联网数据资源以及多媒体教育资源,课例资源等的存取工作。核心层内部也采用了分层设计,其关键一层是统一数据访问层即统一数据访问模块,它屏蔽了各种关系数据库产品之间的差异,使得上层模块(HTTP接入模块)可以连接到各种关系数据库产品之上,也就是说物联网教育资源库管理系统可以部署在各类关系数据库基础之上;核心层的HTTP接入模块也是统一数据访问模块的唯一用户,它负责解析用户的HTTP请求,然后通过统一数据访问模块实现物联网教育资源的存取。简单地说,HTTP接入模块是外部应用访问核心层的唯一方式,接入层应用如此,表现层应用也是如此。
3.表现层
表现层可以理解成物联网教育资源库对外提供服务的门户,它由多个相互独立的应用构成,其中的物联网资源接入配置界面和物联网资源统一配置管理界面主要提供给物联网资源的管理者使用,前者负责物联网资源特定的接入参数配置,包括接入方式、数据解析方法、数据上报认证信息和物联网资源库核心层地址等;后者负责物联网资源的统筹管理,包括物联网资源的层次关系、物联网资源的所有者、物联网资源的接入方式及认证信息、物联网资源的使用权限等。表现层中的物联网资源统一呈现界面是普通用户最关心的,它负责用统一的方式把用户权限内的物联网资源信息直观地呈现出来,主要方式为数据曲线。显然,针对不同的教育应用,用户可能需要更加复杂的呈现界面,这就需要用户通过物联网教育应用课件生成工具进行定制,其中的研究性学习平台是预先订制的一种活动方式。从以上的描述可知,本文提出的物联网教育资源库体系结构可以较好地满足各类物联网教育资源共享及应用的需要,而且可以方便地进行分布式部署,满足不断增长的物联网教育资源管理的需要,同时提供了统一的用户界面,用户无需开发就可开展物联网教育应用,使得物联网教育应用的普及成为可能。
二、关键技术实现
整个物联网教育资源库的开发涉及到从最底层的嵌入式开发到最上层的Web界面开发的各个方面,是个庞大的系统工程,但笔者认为,除了最核心的软件体系架构以外,还要做好物联网资源的“入”“存”和“用”三方面的开发,这也是本系统需要解决的三大关键技术问题。
1.异构物联网资源接入
物联网资源接入物联网教育资源库的方式众多,而且由于缺乏统一的标准,很多物联网设备提供商都采用私有协议与互联网进行连接,所以开发一个程序支持各种异构物联网资源的接入在理论上是不现实的,为此,我们采用了两种方式完成各类物联网教育资源的接入。对于可以使用HTTP协议进行传输的物联网设备,我们提供JSON与XML两种标准数据格式的接入[4]。数据发送方可以通过HTTP-POST方法,将符合要求的物联网资源数据包发送至服务器,服务器再通过以下阶段完成数据的保存。数据读取:通过HTTP请求响应事件,读取完整的数据流;安全验证与数据解析:依据HTTP请求头中的各类报头信息,完成对数据的身份验证,并根据标准格式进行数据包的解析;数据认证与过滤:根据数据包中的数据标识,匹配数据库中的接收格式,进行数据验证,滤掉无效数据;数据存储:通过统一标识,将过滤无误的数据包存储入对应的表单中,完成接收。而对于自身无法实现HTTP协议的数据,我们采用的是基础SDK+特定接入类型单独开发的模式。之所以采用这样的方式是因为笔者发现,不管物联网资源采用何种方式接入物联网教育资源库,其所需完成的工作及其步骤是一致的,都需要经过以下阶段:数据读取:如何让计算机能够得到物联网数据,此过程有可能需要计算机主动去获取,也有可能是计算机被动接收,数据读取完成后,物联网数据就存在了计算机中;数据解析:进入计算机的数据有可能是无意义的二进制,如其中有两个字节代表了温度信息,两个字节代表了湿度信息,所以我们必须在解析规则的帮助下得到解析后的数据;数据转换:解析后的数据虽然代表了某种物理量,但并不一定能被用户理解,所以需要通过相应的数据和公式转换成用户可以理解的数据;数据过滤:考虑到物联网的技术特点,同一数据被多次读取或错误数据被读取是经常出现的,应用程序必须尽可能地过滤掉无效数据,当然,完全过滤是不可能的;数据转发:把最终的有效数据通过HTTP协议安全可靠地发送给物联网教育资源库,其中必须带有安全认证信息,这需要通过上层界面调用配置接口完成。但实际上,只有数据读取工作是物联网接入方式相关的,所以我们把其它功能都封装成SDK的方式,用户可以进行少量开发就可以完成某类物联网资源的接入,当然,系统已经自带了多种物联网资源的接入,如常见的RTU方式、串口方式等。同时资源库提供开放式的数据查询接口,用户可以通过HTTP-POST请求,让资源库返回以Json或XML格式呈现的物联网教育资源数据。
2.统一数据存储
为了方便物联网教育资源库的部署和应用,这里的统一数据存储需要完成以下两个目标:数据储存无限扩展性和底层数据库无关性。这里的数据存储无限扩展性指的是在不改变数据库定义的前提下满足各类物联网数据海量高效存取的需要。之所以设立不改变数据库定义这个前提是为了保证后续开发的方便性和可靠性。为了达到该目标,我们在细节上采用了以下实现方式。按照层次关系来组织产生物联网资源的物理设备。一般来说1个物联网节点上有多个传感器,1个站点有多个物联网节点,但在存储中我们并不规定确定的层次,只是允许每个物联网设备有个唯一的父节点,但只有叶结点(如传感器)能产生物联网数据资源,所有设备都需要关联地理位置信息。每个物联网数据都和确切的时间、叶结点物联网设备ID相关,而设备ID最终将和设备管理者的用户ID相关。考虑到物联网资源数据的格式多样,我们根据数据类型的不同建立多个数据结构类似的数据表,每个表都包括相同的四个字段,即物联网数据GUID、叶结点物联网设备GUID、数据产生时间、数据值,不同数据表之间唯一的不同是数据值这个字段数据类型的不同,当前支持的数据类型由整型、浮点型、文本型、二进制型和GPS数据类型。当我们采取这样的实现方式以后,整个存储系统就可以应对无限扩展的物联网资源存取的需要,且在性能上并没有太大的损失。对于底层数据库无关性的实现,我们是通过开源ORM(对象关系映射)系统实现的。对象关系映射(Object/RelationMapping,简称ORM),是随着面向对象的软件开发方法发展而产生的。在现阶段,面向对象的开发方法是当今企业级应用开发环境中的主流开发方法,而关系数据库是企业级应用环境中永久存放数据的主流数据存储系统。对象和关系数据是业务实体的两种表现形式,业务实体在内存中表现为对象,在数据库中表现为关系数据。内存中的对象之间存在关联和继承关系,而在数据库中,关系数据无法直接表达多对多关联和继承关系。因此,对象关系映射(ORM)系统一般以中间件的形式存在,主要实现程序对象到关系数据库数据的映射。在这里,我们选择了Dapper.Net作为我们的ORM中间件[5],该中间件具有代码简单、性能强劲、数据库支持广泛、支持多表并联、使用方便等优点,使用起来非常方便。当使用了Dapper.Net以后,上层代码访问的将是Dapper.Net这一中间件关联的对象模型,而不再关心底层数据库的具体存储,从而实现了底层数据库的无关性。
3.课件化物联网教育应用
对于物联网资源的收集与入库我们可以认为是专业人员的事情,在技术上无须做太多的限制,但物联网资源的教育应用肯定是普通学科教师的工作,必须在易用性上进行保证,所以我们采用可重用的课件化教育应用模式。从现有的角度看,试图用一套物联网应用系统满足所有的教育应用是不可能的,就像不可能用一个多媒体软件学习所有的知识点一样,所以我们在这里提出了一个可重用物联网教育应用课件的概念,该课件本质上来说与传统的教育课件并无不同,只是在功能上增加了物联网教育资源的引入和呈现功能。同时考虑到系统的易用性,以及呈现的直观性,系统的开发采用了所见即所得的形式。资源库支持教师直接使用已有课例,当老师明确课程主题后,可以通过资源库课程检索或资源检索功能,按照时间、受欢迎度、活跃度等选项寻找相关的课例与物联网资源。若未寻找到满意的已有课例,也可以利用平台的课件工具直接搭建课程或探究活动的主页。在课程的编辑页面,老师可以在左侧的导航栏中,自由地添加网页内容、物联网数据资源、普通资源、讨论交流、作业提交等功能模块,并通过按钮进行编辑、修改与次序的调整。网页内容模块:使用FCKEditor工具开发,供老师如使用Word一样,利用所见即所得的方式,添加文字与图片信息,快速形成提供给学生的学习页面,如图2所示。物联网数据资源模块:教师可通过资源类型、活跃度、城市等多种途径检索物联网资源,点击添加到课程,即可将资源直接放入自己的课程列表,供学生观看学习,如图3所示。讨论交流模块:使用论坛开发的模式,并在其中添加了辩论、投票等功能,由教师设置相关主题,供学生讨论,或设置答疑区,与学生进行互动交流。普通资源与作业提交模块:使用资源上传的形式,供教师与学生将资源以及作业上传至服务器,进行批改与展示。在课程的呈现方面,物联网资源库与传统资源库基本没有太大的差异,而其独特之处,就在于物联网资源的动态性与可参照对比性。为了辅助学生更好地利用这些资源,我们在物联网资源呈现方面提出了很多新的尝试。结合地理信息的资源呈现:整合了百度地图API的开发,在资源库中,所有的资源呈现都结合着地理信息的展现,学生对传感器的位置一目了然,同时可以查看附近的传感器信息,如下页图4所示。在线资源比较:资源的呈现使用了MSCHART图形组件,学生可以直观观察各个资源的趋势图,同时提供加入比较的按钮,将多个传感器信息放入一个新页面中进行比较分析,如图5所示。数据资源下载:提供部分数据的Excel形式下载,供学生进行进一步分析。
三、结束语
本文从物联网教育应用的复杂性出发,提出了以物联网教育资源库为基础的物联网教育应用解决方案,并设想通过在此基础上的物联网教育应用课件来方便地重用物联网资源。当然,该解决方案能否成功普及还建立在物联网教育资源库中资源的多少及对应的课件的多少的基础之上。但我们有理由相信,随着技术的普及、成本的降低和作用的突出,物联网教育资源库的发展会越来越好。
作者:傅骞 宋衍 单位:北京师范大学