|
@@ -129,6 +129,30 @@ func AsyncFuncV3(r_Device *Device.Device, Ms_project Ms2m_Project, msg []byte) {
|
|
|
T_time: UT,
|
|
|
T_sp: DeviceSensorParameter_r.Id,
|
|
|
}
|
|
|
+
|
|
|
+ // 验证 数据是否安装规定上传间隔
|
|
|
+ DeviceData_Previous_r, is := Device.RedisDeviceData_Get(r_Device.T_sn, DeviceSensor_r.T_id)
|
|
|
+ if is {
|
|
|
+ DeviceParameter_r, is := Device.Read_DeviceParameter(r_Device.T_sn)
|
|
|
+ if is {
|
|
|
+ // 计算时间差
|
|
|
+ duration := DeviceData_Previous_r.T_time.Sub(DeviceData_t.T_time)
|
|
|
+ // 将时间差表示为秒
|
|
|
+ seconds := int(math.Abs(duration.Seconds()))
|
|
|
+ // 记录间隔 超过 保存间隔(+-10s)范围
|
|
|
+ difference := int(math.Abs(float64(seconds - DeviceParameter_r.T_overA)))
|
|
|
+ if difference > 10 {
|
|
|
+ logs.Println(r_Device.T_sn+" 没有达到数据保存间隔,间隔:", seconds, DeviceParameter_r.T_overA, " 时间差 > 10", difference)
|
|
|
+
|
|
|
+ if F_T_Exceeding(r_Device, DeviceData_t, DeviceSensorParameter_r) && F_H_Exceeding(r_Device, DeviceData_t, DeviceSensorParameter_r) {
|
|
|
+ logs.Println(r_Device.T_sn + " 跳过记录数据")
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
if r_, DeviceData_old_r := Device.Add_DeviceData(r_Device.T_sn, DeviceSensor_r.T_id, DeviceData_t); r_ {
|
|
|
// 被替换
|
|
|
Device.Add_DeviceDataOld(Device.DeviceDataOld{
|
|
@@ -245,19 +269,16 @@ func AsyncFuncV3(r_Device *Device.Device, Ms_project Ms2m_Project, msg []byte) {
|
|
|
continue
|
|
|
}
|
|
|
Warningr := Warning.Read_T_snT_idT_tp(Warning_r.T_sn, Warning_r.T_id, Warning_r.T_tp)
|
|
|
- if Warningr.Id == 0 {
|
|
|
- Warningr.T_Ut = time.Now()
|
|
|
- }
|
|
|
-
|
|
|
- // 计算时间差
|
|
|
- duration := time.Now().Sub(Warningr.T_Ut)
|
|
|
-
|
|
|
- // 将时间差表示为秒
|
|
|
- seconds := int(duration.Seconds())
|
|
|
-
|
|
|
- if seconds < (DeviceParameter_r.T_outA - 3) {
|
|
|
- logs.Println(r_Device.T_sn+" 没有达到设置报警间隔,跳过,间隔:", DeviceParameter_r.T_outA, " 时间差", seconds)
|
|
|
- continue
|
|
|
+ if Warningr.Id != 0 {
|
|
|
+ // 计算时间差
|
|
|
+ duration := time.Now().Sub(Warningr.T_Ut)
|
|
|
+
|
|
|
+ // 将时间差表示为秒
|
|
|
+ seconds := int(duration.Seconds())
|
|
|
+ if seconds < (DeviceParameter_r.T_outA - 3) {
|
|
|
+ logs.Println(r_Device.T_sn+" 没有达到设置报警间隔,跳过,间隔:", DeviceParameter_r.T_outA, " 时间差", seconds)
|
|
|
+ continue
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
}
|
|
@@ -857,3 +878,22 @@ func AsyncFuncV3(r_Device *Device.Device, Ms_project Ms2m_Project, msg []byte) {
|
|
|
Mqtt_publish(r_Device.T_sn, string(jsonStu))
|
|
|
|
|
|
}
|
|
|
+
|
|
|
+func F_T_Exceeding(r_Device *Device.Device, DeviceData_t Device.DeviceData_R, DeviceSensorParameter_r Device.DeviceSensorParameter) bool {
|
|
|
+ if r_Device.T_ist == 1 { // 温度 1开启 2关闭
|
|
|
+ if !(DeviceSensorParameter_r.T_Tupper < DeviceData_t.T_t || DeviceData_t.T_t < DeviceSensorParameter_r.T_Tlower) {
|
|
|
+ logs.Println(r_Device.T_sn+" 温度没有超标,且不在保存间隔范围 :", DeviceSensorParameter_r.T_Tupper, DeviceData_t.T_t, DeviceSensorParameter_r.T_Tlower)
|
|
|
+ return true
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return false
|
|
|
+}
|
|
|
+func F_H_Exceeding(r_Device *Device.Device, DeviceData_t Device.DeviceData_R, DeviceSensorParameter_r Device.DeviceSensorParameter) bool {
|
|
|
+ if r_Device.T_ish == 1 { // 湿度 1开启 2关闭
|
|
|
+ if !(DeviceSensorParameter_r.T_RHupper < DeviceData_t.T_rh || DeviceData_t.T_rh < DeviceSensorParameter_r.T_RHlower) {
|
|
|
+ logs.Println(r_Device.T_sn+" 湿度没有超标,且不在保存间隔范围 :", DeviceSensorParameter_r.T_RHupper, DeviceData_t.T_rh, DeviceSensorParameter_r.T_RHlower)
|
|
|
+ return true
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return false
|
|
|
+}
|