气象智能机顶盒服务系统的设计与实现*
2020-01-03钱峥朱纯阳张晶晶林宏伟
钱峥 朱纯阳 张晶晶 林宏伟
(1.宁波市气象服务中心,浙江 宁波 315012;2.宁波市镇海区气象局,浙江 宁波 315194;3.宁波市北仑区气象局,浙江 宁波 315826;4.宁波市慈溪市气象局,浙江 宁波 315300)
0 引 言
物联网被称为继计算机、互联网后,信息产业的第三次浪潮[1]。物联网技术在气象行业中主要应用于气象数据采集和气象服务发布领域,对于提升气象行业的信息化、智能化水平有着非常重要的意义。
智能机顶盒是指内置CPU处理器和操作系统,用户可以方便地获取定制化应用软件的机顶盒终端[2]。智能机顶盒在配置上具有硬件开源、功能模块化、网络接口丰富、二次开发容易等特点。智能机顶盒能在内容表现形式、互动性和扩展性等方面给用户带来全新的体验[3]。
智能网格预报利用云计算、互联网+、人工智能等现代信息技术和气象大数据应用技术来改造传统预报业务,从而实现业务技术客观智能,业务流程扁平高效,滚动制作、实时同步、协同一致的网格预报制作[4]。这种统一数据源的“一张网”网格预报业务是中国气象部门未来业务发展方向。这种网格空间分辨率5 km,逐3 h发布的未来10 d预报产品是实现基于位置的精细化气象服务的基础[5]。
我国自然灾害多发、频发,是世界上受自然灾害影响最为严重的国家之一,自然灾害严重危害了人民群众生命财产安全和生产生活秩序。气象信息的准确、及时发布是降低自然灾害对社会公众造成损失的基础条件,也是气象部门面临的重要而且急迫的任务[6]。近年来国内气象部门在利用新技术进行预警信息分发方面做了许多尝试[7-9]。周捷等研究了基于多媒体技术的气象灾害预警信息发布系统[10];陈往溪等通过采用无线广域广播系统和预警电话机组建高集成的突发灾害预警平台[11];李娜等研究了短信小区广播技术在解决高时效信息发布的应用问题[12]。
目前宁波气象部门已经建设了一套涵盖短信、电视、电话、广播、网络、显示屏等多渠道的突发预警信息发布平台。该平台渠道丰富、用户覆盖面广,但仍存在一些不足:1)信息的分发高度依赖服务提供商,发布渠道烟囱式,发布时效性不高;2)信息分发的智能化程度不高,难以做到靶向式发布,无法支撑基于位置的精细化气象服务需求;3)信息单向发布,缺乏交互式反馈。
本文介绍的气象智能机顶盒服务系统,是依托宁波气象部门现有的业务环境,在网格预报预警产品发布技术和物联网技术的基础上研发的智能化、扁平化、可视化的多媒体气象信息发布系统。
1 架构与功能设计
1.1 环境条件
气象智能机顶盒设备可以通过物联网通信技术和服务端进行通讯。设备硬件以当前迅速兴起的开源硬件为基础,其中主要用到的是树莓派微电脑系统。它具有与计算机相同的功能和接口,具有多媒体处理能力,具有体积小巧、可扩展性强等特点。使用通用端口(GPIO)来控制外部设备,通过针脚赋值高低电平以实现对外部设备的交互。硬件功能见图1。
图1 树莓派硬件功能图
系统采用Java语言开发,开发环境为Eclipse 3.8、Spring Boot 1.5.3、VUE 2.0、NODE JS 7.9.0 ,运行环境为UBUNTU LIUNX 14.04。
1.2 系统架构设计
系统通过研发一款气象智能机顶盒客户端设备并以此为基础建立气象信息发布系统,系统不仅能以文字、图片、图表、声音和高清视频等多媒体形式将基于位置的天气实况、天气预报、应急预警信息快速发布到客户端,并通过高清晰度多媒体接口(High Definition Multimedia Interface,HDMI)展示到4K高清电视、触摸屏、户外LED大屏等展示设备上。而且能通过无线物联网络技术与周边的传感器设备通讯,实现数据采集功能。
图2 系统架构图
系统架构图如图2所示,系统由服务端和客户端两部分组成。服务端包括数据中心、数据接口服务和系统管理平台。客户端由气象智能机顶盒、高清显示设备组成,机顶盒与显示设备通过HDMI接口连接。
系统为了提升系统性能,提高可靠性。系统改进了服务器端架构,通过引入微服务架构(Microservices Architecture Pattern)技术优化服务效率。系统主要由以下3部分组成:
1)数据接口服务
负责响应客户端设备发起的数据请求,通过WebService数据接口的方式实现数据和指令的交互。
2)系统管理平台
负责管理客户端设备以安全的通讯方式接入系统,实现用户管理和权限管理,以微服务架构的方式发布气象信息。
3)客户端设备
负责将来自服务端的数据展示在显示设备上,通过用户交互方式收集服务反馈并上传服务端。
这种设计有如下优点:
首先服务端采用微服务架构,微服务是去中心化的分布式软件架构,它可以将大型的、复杂的、长期运行的应用程序构建为一组相互配合的服务,提高开发效率;服务之间可以独立部署,微服务架构让持续部署成为可能;每个服务可以各自进行扩展;每个服务可以根据自身的需要部署到合适的硬件上,提高了系统可靠性和灵活度。
其次使用数据接口服务来实现跨平台的数据交换,数据接口是目前比较流行的一种互联网软件架构。它结构清晰、符合标准、扩展方便,这种机制可以实现松耦合、应用扩展性和异构系统间的互操作性。
再次数据计算与产品生成任务交给分布式的管理平台。客户端不需要大量的计算处理与存储需求,降低了客户端的实现难度和硬件要求。
2 软件系统设计
软件系统采用了基于B/S(Browser/Server)架构的3层设计模式。业务层采用Web服务技术完成与数据层的交互,表现层使用JavaScript技术提高人机交互体验,而数据层由数据接口和消息队列实现松耦合。在系统实现过程中,采用了多种开源软件包,如Tomcat、Apache、ActiveMQ等。
2.1 服务端软件设计
服务端软件负责将精细化观测、预报、预警数据以RESTful Web Services数据接口的形式发布到客户端。通过服务端软件,系统管理员能实现对客户端设备和服务内容的高效管理。实现了通过数据接口与客户端交换信息和通过消息队列实时推送应急信息到客户端的功能。软件流程图见图3,服务端软件主要由以下5个模块组成。
图3 服务端软件流程图
1)消息队列模块
负责服务端与客户端之间的高效通信,实现数据和指令的交互。采用消息队列技术来解决异构系统间的解耦与异步通信问题,降低了开发难度,并提供了功能上的扩展性。
2)设备管理模块
具有客户端设备的定位功能,能确保服务的靶向性发布。并以GIS(Geographic Information System)的形式为用户提供终端管理功能。能够实现客户端内容展示策略配置的功能,当配置发生变化时,能够及时存储并发送内容展示策略到客户端。此外还具备客户端设备访问权限、版本管理等设备配置功能。
3)数据加工模块
不同的展示内容需要不同的内容帧来支撑,数据加工模块负责内容帧的生成。模块需要定时从数据接口获取数据并按预设的规则生成内容帧,并按帧/时间的格式记录到数据中心。
4)数据服务模块
以Web Services数据接口的形式与客户端通讯,提供调用数据中心的内容帧来响应来自客户端的请求,以及将客户端上传的数据存储到数据中心的功能。该模块实现对接口的标准化管理,向管理人员提供包括接口管理、权限管理等功能。
5)应急信息发布模块
模块以网页提交的方式提供手动发布应急信息的功能。用户可以在GIS地图上圈选产品发布的范围,发布的产品根据需要可以存储到数据中心以供数据服务模块调用,也可以通过消息队列直接推送到客户端。
2.2 客户端软件设计
终端软件负责定时获取来自服务端的内容帧,并根据管理平台定义的内容展示策略将各种内容帧以文字、图片、音频、视频以浏览器的形式输出到显示器,并实现软件自动管理。软件流程图见图4。
客户端和服务端软件通过建立消息队列,实现客户端订阅服务端广播的显示事件和升级事件的功能。当显示事件到达时,客户端软件将调用命令以全屏模式(kiosk)打开一个网页浏览器来展示内容帧。
图4 客户端软件流程图
每个显示事件代表需要展示的一个内容帧,帧包括显示的界面元素配置、展示内容组织和展示时长等信息。帧数据优先从本地缓存文件中获取,如果不存在则从服务端获取。如果网络故障则使用本地存储的数据。当展示时间超过定义时长,状态监测机制自动创建下一个展示事件并发送给浏览器。视频播放帧由于视频的时长不定且有可能被用户暂停或者快进,因此状态监测机制通过捕捉视频结束事件,并以该事件来触发下一个显示事件的创建。
软件升级也是通过事件来实现,升级事件中含有升级包的URL地址,当收到升级事件推送后,客户端将根据URL地址下载并暂存升级包,然后触发客户端软件重启,客户端软件的启动过程中如果识别到存在新的升级包,将执行自动升级指令。
3 核心功能的设计与实现
系统提供的服务是依托现有数据业务环境,应用精细化气象服务产品和物联网软硬件技术为基础研发的,有以下几个核心功能。
3.1 客户端安全设计
在客户端的安全设计方面系统采用了定制化人机交互界面、数据接口权限控制和终端位置审核机制来实现。在人机交互界面系统采用全屏式多媒体浏览器技术Kiosk,它通过事件接口接收用户的交互指令,并通过网络连接提供特定的服务功能。它能通过锁定应用程序来阻止用户恶意攻击或入侵信息系统,能有效解决客户端系统安全问题。其核心代码如下:
String[] omxCommand = {"chromium-browser--kiosk http://localhost:7070"};
//客户端软件以kiosk模式打开一个浏览器页面,访问URL为http://localhost:7070。
process= new ProcessBuilder(omxCommand).start();
//启动浏览器子进程
由于客户端设备通过HDMI接口连接显示屏,因此显示屏实际显示的是http://localhost:7070对应的web页面。进程启动时,将自动为当前客户端软件建立一个websocket连接和一个显示状态监测线程,该线程负责创建展示事件。客户端的显示数据及其显示配置通过websocket消息(展示事件)推送到浏览器,浏览器将动态展示渲染的数据内容。websocket消息能有效保障数据分发的实时性和一致性。
人机交互界面使用Kiosk不仅可以实现远程更新终端的内容和上传用户反馈信息的功能,而且它还是保护面向公众服务的设备免遭黑客攻击,阻止未经授权访问的关键组件。
此外,系统还通过数据接口权限控制策略配置了每个终端的访问口令和权限,只有符合权限要求的访问请求才会被响应,避免了数据泄露的安全风险。
系统具备终端位置审核机制,该机制是根据每次设备向服务端提交数据请求时校验设备位置是否与数据中心存储的预设位置相匹配,当位置不匹配时停止响应数据请求并触发信息通知系统管理员。该机制能确保客户端设备在预设位置被合规使用。
3.2 Spring Boot微服务
随着互联网和软件技术的发展,软件系统架构从单体式架构到面向服务架构一直在不断演进。但是传统的面向服务的模块化架构也存在集中化、成本高、维护难等问题,即使开发一个简单的功能,也需要进行大量的配置声明,以及大量繁琐的注解。使得开发一个气象业务系统的技术门槛比较高,而且业务可靠性难以保障。
面对这些问题,本系统通过采用Spring Boot微服务架构方式,优化系统服务的构建和管理。Spring Boot能够快速的搭建 RESTful风格的后台服务,通过默认配置以及注解,使得开发者不用面对大量繁琐的配置文件。Spring Boot能将一个大而全的软件开发需求拆分为若干独立开发、独立部署的软件,并使之协同工作来完成同样的软件功能。模块化架构中功能模块的故障还是会导致整个服务停止。采用微服务框架开发,即使一个微服务发生故障也不影响整个服务的正常运行。服务可以在不影响全局情况下进行改变或替换,能有效提升系统的可靠性。由于Spring Boot提供极其快速和简化的操作,使用者能够快速掌握该框架,从而专注于气象服务核心业务,提高研发效率。
4 业务应用
系统自2018年7月起在宁波地区投入业务运行以来,系统业务化成果已经应用于宁波市突发公共事件预警信息发布平台、宁波半边山旅游度假区气象服务平台、台州市黄岩区气象局暴雨精细化监测预报预警系统。本着边应用、边开发、边改进的理念,根据不同的应用场景和不同的服务对象,定制开发针对性的服务功能和展示界面,使得这种灵活的服务方式能快速被用户接受。
客户端效果图如图5。
图5 客户端效果图
在功能方面,以宁波半边山旅游度假区气象服务平台为例,不仅为其提供了基于度假区位置的精细化气象服务,而且通过程序开发增加了二维码功能实现了用户反馈的收集与引流至微信公众号的功能。从应用反馈来看,这种扁平化的信息分发手段,比较适合在人流密集的公共场所使用。
5 结 语
系统把智能机顶盒终端与气象信息服务结合在一起。通过资源整合与功能开发实现了基于位置的气象服务产品以文字、图片、动画、视频等形式在智能机顶盒端发布。通过设备定位技术实现了气象服务产品的靶向性分发。系统支持高清显示器、触摸屏和LED户外大屏,具有多媒体交互界面,能充分发挥智能机顶盒设备特性,灵活通过遥控器、触控操作与二维码实现与用户的互动,及时获取服务反馈。系统通过各种技术手段、访问策略和审核机制提升了安全性。
系统的建设丰富了气象信息尤其是灾害预警信息的传播渠道,增强了气象部门在气象灾害预警信息和智能网格预报产品的分发能力,发挥地方气象部门在短时临近气象服务中的本地化优势,为用户提供更加精细的多媒体气象服务产品。下一步将继续加大系统的推广应用力度,使之在气象灾害防御、专业服务、公众服务领域为用户提供更加深入的应用。