大衍物联网--封装指令

大衍物联网指令层设计

  1. 问题

在我们物联网开发中,设备每增加一条指令,就要编写对应的编解码过程,以及编解码生成的对应模型,和一个暴露给前端使用的接口!而且如果在代码中,完成这件事,那还要重新发布,设备量如果不多还好,如果成千上万,用户体验感很不好。而且上面说的,都是一次通过的场景,如果运行中又存在指令解析编码错误,这个时候二进制可读性又非常差,往往分析问题都是两小时起步,可太难了!

  1. 方法

    我在编解码过程中发现有时候同一种设备,它的数据类型解析的方法都是固定的。不同的指令,只是不同解析类型的组装。而且设备的一个属性,往往对应两种指令,即读和写。

由此,我们编码的时候,能不能只编写该设备数据类型的解析过程,他们的组合关系暴露到Web层,由用户处理即可!

前端与我们交互的时候,需要给我们一个数据模型,一般是json格式,我们为了确定通道,往往会写一个api提供给前端,一条指令,一个api,功能都是和硬件交互,这一步是不是有点重复,我们可以设计成一个接口,供前端使用。或许你说,我不知道前端需要什么数据,那我们思考的点不要在前端身上,前端属于上层,上层变化太多,封装不起来。我们考虑硬件,硬件的指令是确定的,解析的数据模型也是确定的,我们把编解码的数据模型描述好即可!

  

  1. 资源

Web地址:  http://sf.zxqnywlw.cn/web/login

H5 地址:   http://sf.zxqnywlw.cn/h5/login

项目地址:   https://gitee.com/zxq341

联系方式:   284231703(qq群)

指令的物理模型

  • 设备

大衍物联网--封装指令_第1张图片

主要就是编号,产品

  • 产品

大衍物联网--封装指令_第2张图片主要是数据包和端口,数据包描述设备所有属性,端口为硬件与大衍物联网的通讯端口!

  • 设备属性包

大衍物联网--封装指令_第3张图片

类似与文件夹的作用,用来分类的!

  • 设备属性

大衍物联网--封装指令_第4张图片

描述智能硬件的属性信息,例如土壤温湿度传感器,属性对应的即是土壤温度,土壤湿度!

  • 指令

大衍物联网--封装指令_第5张图片

注意发起方,和指令类型两个属性。

发起方是平台,我们要把json转成对应的数据帧。

发起方是设备,我们要把数据帧转成对应的json。

指令类型通常分三种,请求,回复,通知!

请求下发后,要根据resultId来获取返回值。

回复反馈时,要上报自己的resultId。

通知较为简单,发过去即可!

  • 编码指令

大衍物联网--封装指令_第6张图片

指令与属性字段,序列号代表属性在数据帧中的位置!

  • 解码指令

大衍物联网--封装指令_第7张图片

指令与属性字段,序列号代表属性在数据帧中的位置,j截获类型与参数来截取数据帧内的字节数组。

  • 指令格式化

指令编解码关系组合好后,对应的json数据信息大衍物联网--封装指令_第8张图片,用于设备交互。统一api后,根据json内的值,生成与硬件的交互帧!

关联操作

  • 设备 -- 产品

大衍物联网--封装指令_第9张图片

设备指定产品!

  • 产品 - 属性包

大衍物联网--封装指令_第10张图片

产品与属性包一一对应!

  • 属性包 - - 属性

大衍物联网--封装指令_第11张图片

属性指定属性包!

  • 指令 -- 属性包

大衍物联网--封装指令_第12张图片

指令选择属性包后,获取属性包下的属性!

  • 指令
  • 编码

大衍物联网--封装指令_第13张图片

大衍物联网--封装指令_第14张图片

大衍物联网--封装指令_第15张图片

指令发起方是平台,点击生成会弹出对话框,在对话框内选择属性。序号不可编辑,1选好后,会变为2, 顺序递增,如果字段点击确定后发现错误,点击撤销刚刚选择的字段会被移除!

  • 解码

大衍物联网--封装指令_第16张图片

 大衍物联网--封装指令_第17张图片       

大衍物联网--封装指令_第18张图片

指令发起方是设备,设备提供的是数据帧信息即二进制数组!在解析之前我们要把大的数据帧数组分成小的字段数组!选择字段,会带出字段长度填入到截获参数中!截获类型目前有三种,按长度解析,正序。倒数解析,倒叙。直到某某字节逻辑判断了。默认是按长度解析,代码里自由扩展!

  • 数据模型

大衍物联网--封装指令_第19张图片

与前端交互的json模型!根据指令的生成操作生成!

  • 设备 -- 指令
  • 大衍物联网--封装指令_第20张图片

 大衍物联网--封装指令_第21张图片

大衍物联网--封装指令_第22张图片

设备在下拉框选择指令(通知和请求类型),弹出对应的json数据!

结果:

大衍物联网--封装指令_第23张图片

目前没有硬件接入,返回没回复!

你可能感兴趣的:(物联网,漂亮的代码,java,物联网,前端,开源)