(19)中华人民共和国国家知识产权局
(12)发明专利申请
(10)申请公布号 (43)申请公布日 (21)申请号 202011265525.X
(22)申请日 2020.11.12
(71)申请人 深圳虹川科技有限公司
地址 518000 广东省深圳市前海深港合作
区前湾一路1号A栋201室(入驻深圳市
前海商务秘书有限公司)
(72)发明人 罗涛 李俊敏 沈小朋 万晓 
(74)专利代理机构 北京久维律师事务所 11582
代理人 杜权
(51)Int.Cl.
G06F  8/40(2018.01)
(54)发明名称
基于JavaScript的物联网设备数据格式转
换系统及方法
(57)摘要
本发明公开了一种基于JavaScript的物联
网设备数据格式转换系统,属一种物联网设备数
据格式转化方法,用户通过浏览器针对一类设备
编写JS脚本和模拟数据,JS脚本使用模拟数据通
过JS引擎在沙箱中执行通过后,调用核心服务进
行持久化存储;如果执行不通过的JS脚本,只能
存储为草稿状态;转换器加载JS脚本(正式)以及
设备标识。设备侧通过协议网关接入系统,协议
网关通过转换器进行数据转换来完成交互。权利要求书2页  说明书5页  附图2页CN 112286530 A 2021.01.29
C N  112286530
A
1.一种基于JavaScript的物联网设备数据格式转换系统,其特征在于所述的系统包括:
模拟服务模块,用于接收用户端的JS脚本,并对当前的JS脚本进行校验判断,如判断结果为是,则调用核心服务模块将当前的JS脚本进行存储为草稿,反之则向用户端返回提示;
所述模拟服务模块还用于在当前JS脚本进行存储为草稿后,接收模拟数据,并将当前的JS脚本和模拟数据作为参数传输至脚本引擎模块;
脚本引擎模块,用于对模拟数据和JS脚本进行预处理,然后在沙箱模块中执行当前的JS脚本和模拟数据;
所述脚本引擎模块还用于获取当前JS脚本和模拟数据的执行结果,并将其反馈至模拟服务模块;
所述模拟服务模块用于当获取到执行成功的结果时,调用核心服务模块将当前JS脚本的状态修改为正式,并返回结果至用户端;反之则直接反馈执行失败的结果至用户端;
核心服务模块,用于将修改为正式状态的JS脚本传输至转换器模块;
转换器模块,用于接收到正式状态的JS脚本后,根据JS脚本中的设备标识在JS脚本池里查到对应的JS脚本替换,反之则新添加一条JS脚本;等待接受设备侧的数据。
2.根据权利要求1所述的基于JavaScript的物联网设备数据格式转换系统,其特征在于:
所述转换器模块还用于接收设备侧的数据,并根据数据中的设备标识在JS脚本池中查与之对应的JS脚本,然后将当前的JS脚本与设备侧的数据作为参数传输至脚本引擎模块;
所述脚本引擎模块对当前的JS脚本与设备侧的数据进行预处理后,再在沙箱模块中执行当前的JS脚本,并获取执行结果反馈至转化器;
所述转换器模块用于将当前的执行结果传输至核心服务模块;
所述核心模块用于将执行结果反馈给当前设备。
3.根据权利要求2所述的基于JavaScript的物联网设备数据格式转换系统,其特征在于:所述转化器模块通过协议网关接收设备侧的数据。
4.根据权利要求1所述的基于JavaScript的物联网设备数据格式转换系统,其特征在于:所述脚本引擎模块在对模拟数据和JS脚本进行预处理前,首先获取启动的JS服务,如没有启动的JS服务,则另行启动一个JS服务。
5.根据权利要求1所述的基于JavaScript的物联网设备数据格式转换系统,其特征在于:所述模拟服务模块反馈执行失败的结果至用户端后,重新接收修改后的模拟数据,直至获取到执行成功的结果。
6.一种基于JavaScript的物联网设备数据格式转换方法,其特征在于所述方法包括如下步骤:
js竖线分割的字符串转数组
步骤A、模拟服务模块接收用户端的JS脚本,并对当前的JS脚本进行校验判断,如判断结果为是,则调用核心服务模块将当前的JS脚本进行存储为草稿,反之则向用户端返回提示;
步骤B、模拟服务模块在当前JS脚本进行存储为草稿后,接收模拟数据,并将当前的JS 脚本和模拟数据作为参数传输至脚本引擎模块;
步骤C、脚本引擎模块对模拟数据和JS脚本进行预处理,然后在沙箱模块中执行当前的JS脚本和模拟数据;
步骤D、脚本引擎模块获取当前JS脚本和模拟数据的执行结果,并将其反馈至模拟服务模块;
步骤E、模拟服务模块当获取到执行成功的结果时,调用核心服务模块将当前JS脚本的状态修改为正式,并返回结果至用户端;反之则直接反馈执行失败的结果至用户端;
步骤F、核心服务模块将修改为正式状态的JS脚本传输至转换器模块;
步骤G、转换器模块接收到正式状态的JS脚本后,根据JS脚本中的设备标识在JS脚本池里查到对应的JS脚本替换,反之则新添加一条JS脚本;等待接受设备侧的数据。
7.根据权利要求6所述的基于JavaScript的物联网设备数据格式转换方法,其特征在于所述的方法还包括:
步骤H、转换器模块接收设备侧的数据,并根据数据中的设备标识在JS脚本池中查与之对应的JS脚本,然后将当前的JS脚本与设备侧的数据作为参数传输至脚本引擎模块;
步骤I、脚本引擎模块对当前的JS脚本与设备侧的数据进行预处理后,再在沙箱模块中执行当前的JS脚本,并获取执行结果反馈至转化器;
步骤J、转换器模块用于将当前的执行结果传输至核心服务模块;
步骤K、所述核心模块用于将执行结果反馈给当前设备。
8.根据权利要求6所述的基于JavaScript的物联网设备数据格式转换方法,其特征在于:所述步骤C中,脚本引擎模块在对模拟数据和JS脚本进行预处理前,首先获取启动的JS 服务,如没有启动的JS服务,则另行启动一个JS服务。
9.根据权利要求6所述的基于JavaScript的物联网设备数据格式转换方法,其特征在于:所述所述步骤E中,模拟服务模块反馈执行失败的结果至用户端后,重复步骤B与步骤C,重新接收修改后的模拟数据,直至获取到执行成功的结果。
基于JavaScript的物联网设备数据格式转换系统及方法
技术领域
[0001]本发明涉及一种物联网设备数据格式转化方法,更具体的说,本发明主要涉及一种基于JavaScript的物联网设备数据格式转换系统。
背景技术
[0002]随着物联网应用的兴起,各种感知设备层出不穷。由于使用场景的不同,接入网络和协议也各不相同,如NB-IoT、LoRa、Wi-Fi、4G最为常用。一般常用的物联网应用层协议包括MQTT、HTTP、XMPP、CoAP等,其中MQTT应用较为普遍。拿MQTT协议来说,不同的设备数据格式也不一样,如JSON、二进制等。目前的做法是硬编码转换,不同的设备数据格式编写一套代码逻辑来处理;在需求阶段,至少是编码之前就得确定设备的种类以及相关协议和数据格式。如果系统部署后,在运营中:要变更设备或者由于设备版本升级数据格式有一定的调整,就会导致设备与系统交互出现故障:如数据无法正确解析,甚至于失联等,而解决的办法则是必须重新编码升级,再部署来解决。这样导致对接设备的工作量极大,而且扩展性差,为了解决同一协议不同数据格式都需要编写不同的代码来实现这个问题,导致应用工序较多,效率低下,有必要针对前述问题进行研究和改进。
发明内容
[0003]本发明的目的之一在于解决上述不足,提供一种基于JavaScript的物联网设备数据格式转换系统,以期望解决现有技术中解决同一协议不同数据格式都需要编写不同的代码来实现这个问题,导致应用工序多,效率低下等技术问题。
[0004]为解决上述的技术问题,本发明采用以下技术方案:
本发明一方面提供了一种基于JavaScript的物联网设备数据格式转换系统,所述的系统包括:
模拟服务模块,用于接收用户端的JS脚本,并对当前的JS脚本进行校验判断,如判断结果为是,则调用核心服务模块将当前的JS脚本进行存储为草稿,反之则向用户端返回提示;所述模拟服务模块还用于在当前JS脚本进行存储为草稿后,接收模拟数据,并将当前的JS 脚本和模拟数据作为参数传输至脚本引擎模块;
脚本引擎模块,用于对模拟数据和JS脚本进行预处理,然后在沙箱模块中执行当前的JS脚本和模拟数据;脚本引擎模块还用于获取当前JS脚本和模拟数据的执行结果,并将其反馈至模拟服务模块;
模拟服务模块用于当获取到执行成功的结果时,调用核心服务模块将当前JS脚本的状态修改为正式,并返回结果至用户端;反之则直接反馈执行失败的结果至用户端;
核心服务模块,用于将修改为正式状态的JS脚本传输至转换器模块;
转换器模块,用于接收到正式状态的JS脚本后,根据JS脚本中的设备标识在JS脚本池里查到对应的JS脚本替换,反之则新添加一条JS脚本;等待接受设备侧的数据。[0005]作为优选,进一步的技术方案是:所述转化器模块通过协议网关接收设备侧的数
据。
[0006]更进一步的技术方案是:转换器模块还用于接收设备侧的数据,并根据数据中的设备标识在JS脚本池中查与之对应的JS脚本,然后将当前的JS脚本与设备侧的数据作为参数传输至脚本引擎模块;脚本引擎模块对当前的JS脚本与设备侧的数据进行预处理后,再在沙箱模块中执行当前的JS脚本,并获取执行结果反馈至转化器;转换器模块用于将当前的执行结果传输至核心服务模块;核心模块用于将执行结果反馈给当前设备。
[0007]更进一步的技术方能是:所述脚本引擎模块在对模拟数据和JS脚本进行预处理前,首先获取启动的JS服务,如没有启动的JS服务,则另行启动一个JS服务。
[0008]更进一步的技术方能是::所述模拟服务模块反馈执行失败的结果至用户端后,重新接收修改后的模拟数据,直至获取到执行成功的结果。
[0009]本发明另一方面提供了一种基于JavaScript的物联网设备数据格式转换方法,所述方法包括如下步骤:
步骤A、模拟服务模块接收用户端的JS脚本,并对当前的JS脚本进行校验判断,如判断结果为是,则调用核心服务模块将当前的JS脚本进行存储为草稿,反之则向用户端返回提示;
步骤B、模拟服务模块在当前JS脚本进行存储为草稿后,接收模拟数据,并将当前的JS 脚本和模拟数据作为参数传输至脚本引擎模块;
步骤C、脚本引擎模块对模拟数据和JS脚本进行预处理,然后在沙箱模块中执行当前的JS脚本和模拟数据;
步骤D、脚本引擎模块获取当前JS脚本和模拟数据的执行结果,并将其反馈至模拟服务模块;
步骤E、模拟服务模块当获取到执行成功的结果时,调用核心服务模块将当前JS脚本的状态修改为正式,并返回结果至用户端;反之则直接反馈执行失败的结果至用户端;
步骤F、核心服务模块将修改为正式状态的JS脚本传输至转换器模块;
步骤G、转换器模块接收到正式状态的JS脚本后,根据JS脚本中的设备标识在JS脚本池里查到对应的JS脚本替换,反之则新添加一条JS脚本;等待接受设备侧的数据。[0010]更进一步的技术方案是:所述的方法还包括:
步骤H、转换器模块接收设备侧的数据,并根据数据中的设备标识在JS脚本池中查与之对应的JS脚本,然后将当前的JS脚本与设备侧的数据作为参数传输至脚本引擎模块;
步骤I、脚本引擎模块对当前的JS脚本与设备侧的数据进行预处理后,再在沙箱模块中执行当前的JS脚本,并获取执行结果反馈至转化器;
步骤J、转换器模块用于将当前的执行结果传输至核心服务模块;
步骤K、所述核心模块用于将执行结果反馈给当前设备。
[0011]作为优选,进一步的技术方案是:所述步骤C中,脚本引擎模块在对模拟数据和JS 脚本进行预处理前,首先获取启动的JS服务,如没有启动的JS服务,则另行启动一个JS服务。
[0012]更进一步的技术方案是:所述所述步骤E中,模拟服务模块反馈执行失败的结果至用户端后,重复步骤B与步骤C,重新接收修改后的模拟数据,直至获取到执行成功的结果。[0013]与现有技术相比,本发明的有益效果之一是:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。