上回咋們說了iot-pt的整套結構,接着咋們開始說web manage,web manage是iot-pt提供可視化操做的服務,可是筆者前端功底實在太弱,這裏就不打算作頁面了,就使用swagger了。前端
使用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; }
屬性緩存模型
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下載