分布式项目(二)Web Manage 设备数据上行

上回咋们说了iot-pt的整套结构,接着咋们开始说web manage,web manage是iot-pt提供可视化操作的服务,但是笔者前端功底实在太弱,这里就不打算做页面了,就使用swagger了。

流程说明

  1. 用户在web端添加产品,持久化产品数据
  2. 根据产品添加属性信息,持久化属性数据,redis缓存属性数据
  3. 根据产品创建指令,持久化指令数据
  4. 根据产品创建事件,持久化事件数据
  5. 根据产品创建设备,持久化设备数据,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

转载于:https://my.oschina.net/u/2258281/blog/3039245

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值