|
@@ -0,0 +1,56 @@
|
|
|
+package Plugins
|
|
|
+
|
|
|
+import (
|
|
|
+ "Cold_mqtt/MqttServer/WarningNotice"
|
|
|
+ "Cold_mqtt/lib"
|
|
|
+ "Cold_mqtt/logs"
|
|
|
+ "Cold_mqtt/models/Device"
|
|
|
+ "Cold_mqtt/models/Warning"
|
|
|
+ "time"
|
|
|
+)
|
|
|
+
|
|
|
+// 设备离线报警连续推送 冰箱采集器(wifi版) BX100W
|
|
|
+func ContinuousPushOfOfflineDeviceWarning() {
|
|
|
+ContinuousPushOfOfflineDeviceWarningTOGO:
|
|
|
+ DeviceList := Device.Read_获取BX100W离线设备()
|
|
|
+ logs.Println("======设备离线报警连续推送========")
|
|
|
+ for _, r_Device := range DeviceList {
|
|
|
+ DeviceParameter_r, is := Device.Read_DeviceParameter(r_Device.T_sn)
|
|
|
+ if !is {
|
|
|
+ logs.Println(r_Device.T_sn + " 没有设备参数,跳过")
|
|
|
+ continue
|
|
|
+ }
|
|
|
+
|
|
|
+ Warningr_new := Warning.Read_T_snT_tp(r_Device.T_sn, 1001)
|
|
|
+ if Warningr_new.Id == 0 {
|
|
|
+ logs.Println(r_Device.T_sn + " 没有触发过离线,跳过")
|
|
|
+ continue
|
|
|
+ }
|
|
|
+
|
|
|
+ duration := time.Now().Sub(Warningr_new.T_Ut)
|
|
|
+
|
|
|
+ // 将时间差表示为秒
|
|
|
+ seconds := int(duration.Seconds())
|
|
|
+
|
|
|
+ if DeviceParameter_r.T_outA > seconds {
|
|
|
+ logs.Println(r_Device.T_sn+" 未满足触发条件,跳过,已经持续", seconds, "秒,配置", DeviceParameter_r.T_outA)
|
|
|
+ continue
|
|
|
+ }
|
|
|
+
|
|
|
+ Warningr_fUt := Warning.Read_T_snT_tpT_Msid(r_Device.T_sn, 1001, 0)
|
|
|
+ if Warningr_fUt.Id == 0 {
|
|
|
+ logs.Println(r_Device.T_sn + " 没有触发过初次离线,跳过")
|
|
|
+ continue
|
|
|
+ }
|
|
|
+
|
|
|
+ Warning_r := Warning.Add_DeviceLogs(1001, r_Device, "设备离线报警,已经持续 "+lib.TimeSinceToString(Warningr_fUt.T_Ut, time.Now()))
|
|
|
+ Warning_r.T_fUt = Warningr_fUt.T_Ut
|
|
|
+ Warning_r.T_Msid = 1
|
|
|
+ Warning.Update_Warning(Warning_r, "T_Msid", "T_fUt")
|
|
|
+ WarningNotice.WarningCompanyNotice(&Warning_r, 0, 0)
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ time.Sleep(time.Second * 30)
|
|
|
+ goto ContinuousPushOfOfflineDeviceWarningTOGO
|
|
|
+}
|