Răsfoiți Sursa

feat:适配RS_MG111_WIFI_1设备全部参数及j6设备
fix:修改离线时间

黄渊昊 2 luni în urmă
părinte
comite
427de38175

+ 65 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/core/bean/influxdb/SensorData.java

@@ -77,6 +77,71 @@ public class SensorData extends JfcloudInFluxEntity {
     @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "#.00")
     private Float ch4o;
 
+    @Column(name = "O3")
+    @JsonSerialize(using = FloatNullToDashSerializer.class)
+    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "#.00")
+    private Float o3;
+
+    @Column(name = "O2")
+    @JsonSerialize(using = FloatNullToDashSerializer.class)
+    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "#.00")
+    private Float o2;
+
+    @Column(name = "H2S")
+    @JsonSerialize(using = FloatNullToDashSerializer.class)
+    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "#.00")
+    private Float h2s;
+
+    @Column(name = "CH4")
+    @JsonSerialize(using = FloatNullToDashSerializer.class)
+    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "#.00")
+    private Float ch4;
+
+    @Column(name = "CO")
+    @JsonSerialize(using = FloatNullToDashSerializer.class)
+    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "#.00")
+    private Float co;
+
+    @Column(name = "NO2")
+    @JsonSerialize(using = FloatNullToDashSerializer.class)
+    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "#.00")
+    private Float no2;
+
+    @Column(name = "SO2")
+    @JsonSerialize(using = FloatNullToDashSerializer.class)
+    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "#.00")
+    private Float so2;
+
+    @Column(name = "H2")
+    @JsonSerialize(using = FloatNullToDashSerializer.class)
+    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "#.00")
+    private Float h2;
+
+    @Column(name = "NH3")
+    @JsonSerialize(using = FloatNullToDashSerializer.class)
+    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "#.00")
+    private Float nh3;
+
+    @Column(name = "dB")
+    @JsonSerialize(using = FloatNullToDashSerializer.class)
+    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "#.00")
+    private Float dB;
+
+    @Column(name = "odor")
+    @JsonSerialize(using = FloatNullToDashSerializer.class)
+    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "#.00")
+    private Float odor;
+
+    @Column(name = "TPS")
+    @JsonSerialize(using = FloatNullToDashSerializer.class)
+    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "#.00")
+    private Float tsp;
+
+    @Column(name = "smoke")
+    @JsonSerialize(using = FloatNullToDashSerializer.class)
+    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "#.00")
+    private Float smoke;
+
     @Column(name = "battery")
     @JsonSerialize(using = FloatNullToDashSerializer.class)  // 使用自定义序列化器
     @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "#.00")

+ 5 - 5
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/core/config/JfcloudColdChainConstants.java

@@ -61,13 +61,13 @@ public interface JfcloudColdChainConstants {
     int RETRY_DELAY_MS = 5000;
 
     /**
-     * 消息推送限制固定时间内的最大推送次数,5分钟内推送1次
+     * 消息推送限制固定时间内的最大推送次数,10分钟内推送1次
      */
     int MESS_PUSH_MAX_PUSH_COUNT = 1;
     /**
-     * 消息推送限制的时间窗口,单位为毫秒(5分钟)
+     * 消息推送限制的时间窗口,单位为毫秒(10分钟)
      */
-    long MESS_PUSH_TIME_WINDOW = 5 * 60 * 1000;
+    long MESS_PUSH_TIME_WINDOW = 10 * 60 * 1000;
     /**
      * redis 缓存用户推送消息频率限制
      */
@@ -76,8 +76,8 @@ public interface JfcloudColdChainConstants {
     String REDIS_ALARM_HISTORY_KEY_PREFIX = "ALARM_HISTORY";
 
     /**
-     * 每 5 分钟定期执行设备缓存更新
+     * 每 10 分钟定期执行设备缓存更新
      */
-    Long OFFLINE_THRESHOLD_SECONDS = 5 * 60 * 1000L;
+    Long OFFLINE_THRESHOLD_SECONDS = 10 * 60 * 1000L;
 
 }

+ 5 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/core/service/dataprocess/dataclean/MonitorDataProcessor.java

@@ -57,6 +57,11 @@ public interface MonitorDataProcessor<T> {
      */
     String RS_MG111_WIFI_1 = "RS-MG111-WIFI-1";
 
+    /**
+     *
+     */
+    String RS_WS_WIFI5_6J = "RS-WS-WIFI5-6J";
+
     Boolean processData(T data);
 
     /**

+ 20 - 7
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/core/service/dataprocess/dataclean/impl/WifiEvnSevenInOne.java

@@ -28,15 +28,28 @@ public class WifiEvnSevenInOne extends AbsRenkeMonitorDataProcessor{
             return null;
         }
         SensorData sensorData = defaultSensorData(data);
-        sensorData.setPm10(floatValue(nodeList.get(0).getTem() * 10));
-        sensorData.setPm25(floatValue(nodeList.get(0).getHum() * 10));
-        sensorData.setHumidity(floatValue(nodeList.get(1).getHum()));
-        sensorData.setTemperature(floatValue(nodeList.get(1).getTem()));
-        sensorData.setPressure(floatValue(nodeList.get(2).getTem()));
+        sensorData.setPm10(floatValue(nodeList.get(0).getTem()));
+        sensorData.setPm25(floatValue(nodeList.get(0).getHum()));
+        sensorData.setHumidity(floatValue(nodeList.get(1).getHum() / 10));
+        sensorData.setTemperature(floatValue(nodeList.get(1).getTem() / 10));
+        sensorData.setPressure(floatValue(nodeList.get(2).getTem() / 10));
         sensorData.setIlluminance((nodeList.get(3).getSignedInt32Value()));
         sensorData.setTvoc(floatValue(nodeList.get(4).getHum()));
-        sensorData.setCo2(floatValue(nodeList.get(5).getTem()) * 10);
-        sensorData.setCh4o(floatValue(nodeList.get(6).getTem() / 10));
+        sensorData.setCo2(floatValue(nodeList.get(5).getTem()));
+        sensorData.setCh4o(floatValue(nodeList.get(6).getTem() / 100));
+        sensorData.setO3(floatValue(nodeList.get(7).getTem()));
+        sensorData.setO2(floatValue(nodeList.get(8).getTem()));
+        sensorData.setSo2(floatValue(nodeList.get(9).getTem()));
+        sensorData.setCh4(floatValue(nodeList.get(10).getTem()));
+        sensorData.setCo(floatValue(nodeList.get(11).getTem()));
+        sensorData.setNo2(floatValue(nodeList.get(12).getTem()));
+        sensorData.setSo2(floatValue(nodeList.get(13).getTem()));
+        sensorData.setH2(floatValue(nodeList.get(14).getTem()));
+        sensorData.setNh3(floatValue(nodeList.get(15).getTem()));
+        sensorData.setDB(floatValue(nodeList.get(16).getTem()));
+        sensorData.setOdor(floatValue(nodeList.get(17).getTem()));
+        sensorData.setTsp(floatValue(nodeList.get(18).getTem()));
+        sensorData.setSmoke(floatValue(nodeList.get(19).getTem()));
         return Lists.newArrayList(sensorData);
     }
 

+ 48 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/core/service/dataprocess/dataclean/impl/WifiTempHumidityRecorder.java

@@ -0,0 +1,48 @@
+package vip.xiaonuo.coldchain.core.service.dataprocess.dataclean.impl;
+
+import com.google.common.collect.Lists;
+import lombok.extern.slf4j.Slf4j;
+import org.jetbrains.annotations.NotNull;
+import org.springframework.context.ApplicationEventPublisher;
+import org.springframework.stereotype.Component;
+import rk.netDevice.sdk.p2.NodeData;
+import rk.netDevice.sdk.p2.RealTimeData;
+import vip.xiaonuo.coldchain.core.bean.influxdb.SensorData;
+import vip.xiaonuo.coldchain.core.service.dataprocess.dataclean.MonitorDataProcessor;
+import vip.xiaonuo.coldchain.core.service.dataprocess.model.PowerEnum;
+import vip.xiaonuo.coldchain.modular.monitordevice.enums.DeviceModelEnum;
+
+import java.util.List;
+
+@Slf4j
+@Component(MonitorDataProcessor.RS_WS_WIFI5_6J)
+public class WifiTempHumidityRecorder extends AbsRenkeMonitorDataProcessor {
+    public WifiTempHumidityRecorder(ApplicationEventPublisher applicationEventPublisher) {
+        super(applicationEventPublisher);
+    }
+
+    @Override
+    List<SensorData> transRealTimeData2SensorDatas(@NotNull RealTimeData data) {
+        List<NodeData> nodeList = data.getNodeList();
+        final int numNodes = nodeList.size();
+        if (numNodes == 0) {
+            log.error("There is no wifi low temperature data");
+            return Lists.newArrayList();
+        }
+        NodeData nodeData = nodeList.get(0);
+        // 最后一路的温度的值0=电源供电  100 电池供电
+        final String plugInStatus = nodeList.get(numNodes - 1).getTem() < 1 ? PowerEnum.AC.getCode() : PowerEnum.DC.getCode();
+        SensorData sensorData = defaultSensorData(data);
+        sensorData.setTemperature(floatValue(nodeData.getTem()));
+        sensorData.setHumidity(floatValue(nodeData.getHum()));
+        sensorData.setPlugInStatus(plugInStatus);
+        sensorData.setRoads(1);
+        log.info("sensorData: {}", sensorData);
+        return Lists.newArrayList(sensorData);
+    }
+
+    @Override
+    DeviceModelEnum deviceModel() {
+        return DeviceModelEnum.RS_WS_WIFI5_6J;
+    }
+}

+ 1 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitordevice/enums/DeviceModelEnum.java

@@ -24,6 +24,7 @@ public enum DeviceModelEnum {
     RS_WD_WIFI5_C3_Y2_5WL(MonitorDataProcessor.RS_WD_WIFI5_C3_Y2_5WL, "WIFI多探头单温度变迭记录仪带电池(2路)"),
     RS_WD_WIFI5_C3_Y4_5WL(MonitorDataProcessor.RS_WD_WIFI5_C3_Y4_5WL, "WIFI多探头单温度变迭记录仪带电池(4路)"),
     RS_MG111_WIFI_1(MonitorDataProcessor.RS_MG111_WIFI_1, "WIFI环境七合一变送记录仪"),
+    RS_WS_WIFI5_6J(MonitorDataProcessor.RS_WS_WIFI5_6J, "WIFI单温度变iete记录仪"),
     DEFAULT(MonitorDataProcessor.RS_WS_DEFAULT, "默认温湿度处理");