上回咋们说了iot-pt的整套结构,接着咋们开始说web manage,web manage是iot-pt提供可视化操作的服务,但是笔者前端功底实在太弱,这里就不打算做页面了,就使用swagger了。
流程说明
- 用户在web端添加产品,持久化产品数据
- 根据产品添加属性信息,持久化属性数据,redis缓存属性数据
- 根据产品创建指令,持久化指令数据
- 根据产品创建事件,持久化事件数据
- 根据产品创建设备,持久化设备数据,redis缓存设备数据
结构图
项目搭建
使用idea搭建spring boot iot-pt项目,创建iot-manage模块,笔者这里的spring boot版本是2.1.4,引入swagger,mybatis,pgsql依赖。
构建基础iot-beans模块,用于公用实体类,公用工具类的编写
具体的搭建细节就不在笔者的说明范围之内了哈
模型搭建
这里先实现iot数据的上行,也就是设备上报的业务数据
产品模型
@ApiModel(value = "产品参数")
public class ProductDTO {
@ApiModelProperty(value = "产品名称")
@NotBlank
private String name;
@ApiModelProperty(value = "设备型号")
@NotBlank
private String model;
@ApiModelProperty(value = "数据格式")
private EDataFormat format;
@ApiModelProperty(value = "是否加密")
private Integer encrypt;
@ApiModelProperty(value = "接入协议")
private EProtocol protocol;
设备模型
@ApiModel(value = "设备模型")
public class DeviceDTO {
@ApiModelProperty(value = "名称")
@NotBlank
private String name;
@ApiModelProperty(value = "设备唯一码")
@NotBlank
private String imei;
@ApiModelProperty(value = "产品id")
private Long productId;
属性模型
@ApiModel(value = "产品属性")
public class PropertyDTO {
@ApiModelProperty(value = "产品id")
private Long productId;
@ApiModelProperty(value = "属性名称")
private String name;
@ApiModelProperty(value = "标识符")
@NotBlank
private String identifier;
@ApiModelProperty(value = "数据类型")
private EDataType type;
@ApiModelProperty(value = "偏移量")
private String ofset;
@ApiModelProperty(value = "单位")
private String unit;
基础数据定义
数据格式
public enum EDataFormat {
JSON("JSON"),
BYTE("BYTE");
json:物理设备上传的数据为key-value的json数据,key与属性模型的identifier属性相对应
byte:物理设备上传的数据为10进制的连续数据,如:318645,实际拆分为xx=318,yy=645, 这种数据需要使用定义偏移量来读取数据,偏移量与属性模型ofset属性对应
协议
public enum EProtocol {
COAP("COAP"),
QMTT("QMTT");
EProtocol(String protocol){
this.protocol = protocol;
}
redis 数据缓存
属性缓存模型
public class RedisPropertyVO {
private Long id;
private String ofset;
产品缓存模型
public class RedisProductVO {
//数据格式
private String format;
private List<RedisPropertyVO> propertys;
设备缓存模型
public class RedisDeviceVO {
private Long id;
private Long productId;
数据库
数据库设计在git iot-pt.sql 文件中
结束语
剩下的就是对产品,属性,设备,增删改查的操作了,代码这里就不一一贴出来了,读者可以去git下载
https://gitee.com/distant/iot-pt.git