分佈式項目(二)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依賴。git

構建基礎iot-beans模塊,用於公用實體類,公用工具類的編寫web

具體的搭建細節就不在筆者的說明範圍以內了哈redis

模型搭建

這裏先實現iot數據的上行,也就是設備上報的業務數據spring

產品模型sql

@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;

屬性模型json

@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屬性相對應mybatis

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

相關文章
相關標籤/搜索