|
|
@@ -9,10 +9,14 @@
|
|
|
#include "mqtt.h"
|
|
|
#include "file.h"
|
|
|
#include "sys.h"
|
|
|
+#include "led.h"
|
|
|
+#include "beep.h"
|
|
|
#include "switch_ctrl.h"
|
|
|
#include "pduMIB_trap.h"
|
|
|
|
|
|
#define TOTAL_COUNT 60//统计总数
|
|
|
+#define LIMIT_HOF(x) (x*1.1f)
|
|
|
+#define LIMIT_LOF(x) (x*0.9f)
|
|
|
|
|
|
enum{
|
|
|
DB_MIN=0,
|
|
|
@@ -34,7 +38,11 @@ static int utc_to_time(uint32_t *utc, char *time)
|
|
|
{
|
|
|
return 0;
|
|
|
}
|
|
|
-
|
|
|
+static void set_led_beep(int led_mode, int beep_mode)
|
|
|
+{
|
|
|
+ led_set(led_mode);
|
|
|
+ beep_set(beep_mode);
|
|
|
+}
|
|
|
|
|
|
|
|
|
static int get_count(sqlite3 *db, char *table)
|
|
|
@@ -3872,6 +3880,8 @@ int dev_Alarm_send_message(GlobalDeviceManager* globalDeviceManger,GlobalPowerMa
|
|
|
struct tm *t;
|
|
|
char CtrlData[64];
|
|
|
int alarm_action=-1;
|
|
|
+ int limit_flag=0;
|
|
|
+ GlobalPowerManger *pwr=__globalPowerTemp;
|
|
|
|
|
|
memset(CtrlData, 0, sizeof(CtrlData));
|
|
|
switch (_AlarmType)
|
|
|
@@ -3881,6 +3891,9 @@ int dev_Alarm_send_message(GlobalDeviceManager* globalDeviceManger,GlobalPowerMa
|
|
|
alarm_action = __globalPowerTemp->global_over_manager.product_vol_over_upper_threshold_ctrl;
|
|
|
get_message_CtrlType(alarm_action,CtrlData);
|
|
|
sprintf(AlarmText,"$通道$|%s |$%s$|$%s$| %s",__globalPowerTemp->product_ch_name,language_alarm_V[languagesID],language_alarm_Up[languagesID],CtrlData);
|
|
|
+ if(pwr->_PowerInfo.voltage>LIMIT_HOF(pwr->global_over_manager.product_vol_upper_threshold)) {
|
|
|
+ limit_flag = 1;
|
|
|
+ }
|
|
|
}
|
|
|
break;
|
|
|
case WARNING_V_DOWN:
|
|
|
@@ -3888,6 +3901,9 @@ int dev_Alarm_send_message(GlobalDeviceManager* globalDeviceManger,GlobalPowerMa
|
|
|
alarm_action = __globalPowerTemp->global_over_manager.product_vol_over_lower_threshold_ctrl;
|
|
|
get_message_CtrlType(alarm_action,CtrlData);
|
|
|
sprintf(AlarmText,"$通道$|%s |$%s$|$%s$| %s",__globalPowerTemp->product_ch_name,language_alarm_V[languagesID],language_alarm_Down[languagesID],CtrlData);
|
|
|
+ if(pwr->_PowerInfo.voltage<LIMIT_LOF(pwr->global_over_manager.product_vol_lower_threshold)) {
|
|
|
+ limit_flag = 1;
|
|
|
+ }
|
|
|
}
|
|
|
break;
|
|
|
case WARNING_A_UP:
|
|
|
@@ -3895,6 +3911,9 @@ int dev_Alarm_send_message(GlobalDeviceManager* globalDeviceManger,GlobalPowerMa
|
|
|
alarm_action = __globalPowerTemp->global_over_manager.product_cur_over_upper_threshold_ctrl;
|
|
|
get_message_CtrlType(alarm_action,CtrlData);
|
|
|
sprintf(AlarmText,"$通道$|%s |$%s$|$%s$| %s",__globalPowerTemp->product_ch_name,language_alarm_A[languagesID],language_alarm_Up[languagesID],CtrlData);
|
|
|
+ if(pwr->_PowerInfo.current>LIMIT_HOF(pwr->global_over_manager.product_cur_upper_threshold)) {
|
|
|
+ limit_flag = 1;
|
|
|
+ }
|
|
|
}
|
|
|
break;
|
|
|
case WARNING_W_UP:
|
|
|
@@ -3902,6 +3921,9 @@ int dev_Alarm_send_message(GlobalDeviceManager* globalDeviceManger,GlobalPowerMa
|
|
|
alarm_action = __globalPowerTemp->global_over_manager.product_pwr_over_upper_threshold_ctrl;
|
|
|
get_message_CtrlType(alarm_action,CtrlData);
|
|
|
sprintf(AlarmText,"$通道$|%s |$%s$|$%s$| %s",__globalPowerTemp->product_ch_name,language_alarm_W[languagesID],language_alarm_Up[languagesID],CtrlData);
|
|
|
+ if(pwr->_PowerInfo.consumption>LIMIT_HOF(pwr->global_over_manager.product_pwrcon_upper_threshold)) {
|
|
|
+ limit_flag = 1;
|
|
|
+ }
|
|
|
}
|
|
|
break;
|
|
|
case WARNING_P_UP:
|
|
|
@@ -3909,6 +3931,9 @@ int dev_Alarm_send_message(GlobalDeviceManager* globalDeviceManger,GlobalPowerMa
|
|
|
alarm_action = __globalPowerTemp->global_over_manager.product_pwrcon_over_upper_threshold_ctrl;
|
|
|
get_message_CtrlType(alarm_action,CtrlData);
|
|
|
sprintf(AlarmText,"$通道$|%s |$%s$|$%s$| %s",__globalPowerTemp->product_ch_name,language_alarm_P[languagesID],language_alarm_Up[languagesID],CtrlData);
|
|
|
+ if(pwr->_PowerInfo.power>LIMIT_HOF(pwr->global_over_manager.product_pwr_upper_threshold)) {
|
|
|
+ limit_flag = 1;
|
|
|
+ }
|
|
|
}
|
|
|
break;
|
|
|
case 0:
|
|
|
@@ -3957,6 +3982,12 @@ int dev_Alarm_send_message(GlobalDeviceManager* globalDeviceManger,GlobalPowerMa
|
|
|
send_pduPowerAlarm_trap(1, (void *)&pAlarmTrapinfo);
|
|
|
// if(_globalSNMPManager.trapmode==1)snmp_alarm_register(1,SA_REPEAT,send_pduPowerAlarm_trap,(void *)&pAlarmTrapinfo);
|
|
|
|
|
|
+ if(limit_flag) {
|
|
|
+ set_led_beep(LED_MODE_WARN2, BEEP_MODE_WARN2);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ set_led_beep(LED_MODE_WARN1, BEEP_MODE_WARN1);
|
|
|
+ }
|
|
|
|
|
|
//只管理总体电源阈值超限动作防护
|
|
|
int ret = -1 ;
|
|
|
@@ -4008,6 +4039,8 @@ int dev_Alarm_T_AC_message(GlobalDeviceManager* globalDeviceManger, GlobalTreeAC
|
|
|
struct tm *t;
|
|
|
char CtrlData[64];
|
|
|
int alarm_action=-1;
|
|
|
+ int limit_flag=0;
|
|
|
+ GlobalTreeACManager *pwr=__globalPowerTemp;
|
|
|
|
|
|
memset(CtrlData,0,sizeof(CtrlData));
|
|
|
switch (_AlarmType)
|
|
|
@@ -4017,6 +4050,9 @@ int dev_Alarm_T_AC_message(GlobalDeviceManager* globalDeviceManger, GlobalTreeAC
|
|
|
alarm_action = __globalPowerTemp->global_over_manager.product_vol_over_upper_threshold_ctrl;
|
|
|
get_message_CtrlType(alarm_action,CtrlData);
|
|
|
sprintf(AlarmText, "$通道$|CH%d%c |$%s$|$%s$| %s", __globalPowerTemp->product_ch_id, 'A' + __globalPowerTemp->product_ph_type, language_alarm_V[languagesID], language_alarm_Up[languagesID],CtrlData);
|
|
|
+ if(pwr->_PowerInfo.voltage>LIMIT_HOF(pwr->global_over_manager.product_vol_upper_threshold)) {
|
|
|
+ limit_flag = 1;
|
|
|
+ }
|
|
|
}
|
|
|
break;
|
|
|
case ENABLE_TAC_V_DOWN:
|
|
|
@@ -4024,6 +4060,9 @@ int dev_Alarm_T_AC_message(GlobalDeviceManager* globalDeviceManger, GlobalTreeAC
|
|
|
alarm_action = __globalPowerTemp->global_over_manager.product_vol_over_lower_threshold_ctrl;
|
|
|
get_message_CtrlType(alarm_action,CtrlData);
|
|
|
sprintf(AlarmText, "$通道$|CH%d%c |$%s$|$%s$| %s", __globalPowerTemp->product_ch_id, 'A' + __globalPowerTemp->product_ph_type, language_alarm_V[languagesID], language_alarm_Down[languagesID],CtrlData);
|
|
|
+ if(pwr->_PowerInfo.voltage<LIMIT_LOF(pwr->global_over_manager.product_vol_lower_threshold)) {
|
|
|
+ limit_flag = 1;
|
|
|
+ }
|
|
|
}
|
|
|
break;
|
|
|
case ENABLE_TAC_A_UP:
|
|
|
@@ -4031,6 +4070,9 @@ int dev_Alarm_T_AC_message(GlobalDeviceManager* globalDeviceManger, GlobalTreeAC
|
|
|
alarm_action = __globalPowerTemp->global_over_manager.product_cur_over_upper_threshold_ctrl;
|
|
|
get_message_CtrlType(alarm_action,CtrlData);
|
|
|
sprintf(AlarmText, "$通道$|CH%d%c |$%s$|$%s$| %s", __globalPowerTemp->product_ch_id, 'A' + __globalPowerTemp->product_ph_type, language_alarm_A[languagesID], language_alarm_Up[languagesID],CtrlData);
|
|
|
+ if(pwr->_PowerInfo.current>LIMIT_HOF(pwr->global_over_manager.product_cur_upper_threshold)) {
|
|
|
+ limit_flag = 1;
|
|
|
+ }
|
|
|
}
|
|
|
break;
|
|
|
case ENABLE_TAC_W_UP:
|
|
|
@@ -4038,6 +4080,9 @@ int dev_Alarm_T_AC_message(GlobalDeviceManager* globalDeviceManger, GlobalTreeAC
|
|
|
alarm_action = __globalPowerTemp->global_over_manager.product_pwr_over_upper_threshold_ctrl;
|
|
|
get_message_CtrlType(alarm_action,CtrlData);
|
|
|
sprintf(AlarmText, "$通道$|CH%d%c |$%s$|$%s$| %s", __globalPowerTemp->product_ch_id, 'A' + __globalPowerTemp->product_ph_type, language_alarm_W[languagesID], language_alarm_Up[languagesID],CtrlData);
|
|
|
+ if(pwr->_PowerInfo.consumption>LIMIT_HOF(pwr->global_over_manager.product_pwrcon_upper_threshold)) {
|
|
|
+ limit_flag = 1;
|
|
|
+ }
|
|
|
}
|
|
|
break;
|
|
|
case ENABLE_TAC_P_UP:
|
|
|
@@ -4045,6 +4090,9 @@ int dev_Alarm_T_AC_message(GlobalDeviceManager* globalDeviceManger, GlobalTreeAC
|
|
|
alarm_action = __globalPowerTemp->global_over_manager.product_pwrcon_over_upper_threshold_ctrl;
|
|
|
get_message_CtrlType(alarm_action,CtrlData);
|
|
|
sprintf(AlarmText, "$通道$|CH%d%c |$%s$|$%s$| %s", __globalPowerTemp->product_ch_id, 'A' + __globalPowerTemp->product_ph_type, language_alarm_P[languagesID], language_alarm_Up[languagesID],CtrlData);
|
|
|
+ if(pwr->_PowerInfo.power>LIMIT_HOF(pwr->global_over_manager.product_pwr_upper_threshold)) {
|
|
|
+ limit_flag = 1;
|
|
|
+ }
|
|
|
}
|
|
|
break;
|
|
|
case ENABLE_TAC_STIME:
|
|
|
@@ -4093,6 +4141,14 @@ int dev_Alarm_T_AC_message(GlobalDeviceManager* globalDeviceManger, GlobalTreeAC
|
|
|
if (_globalSNMPManager.trapmode == 1)
|
|
|
send_pduPowerAlarm_trap(1, (void *)&pAlarmTrapinfo);
|
|
|
// if(_globalSNMPManager.trapmode==1)snmp_alarm_register(1,SA_REPEAT,send_pduPowerAlarm_trap,(void *)&pAlarmTrapinfo);
|
|
|
+
|
|
|
+ if(limit_flag) {
|
|
|
+ set_led_beep(LED_MODE_WARN2, BEEP_MODE_WARN2);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ set_led_beep(LED_MODE_WARN1, BEEP_MODE_WARN1);
|
|
|
+ }
|
|
|
+
|
|
|
return 0;
|
|
|
}
|
|
|
/**
|
|
|
@@ -4111,6 +4167,9 @@ int dev_sensor_Alarm_send_message(GlobalDeviceManager* globalDeviceManger,Global
|
|
|
char AlarmText[256];
|
|
|
int languagesID=0;
|
|
|
struct tm* t ;
|
|
|
+ int limit_flag=0;
|
|
|
+ GlobalSensorManger *ss=__globalPowerTemp;
|
|
|
+
|
|
|
if (!__globalPowerTemp)
|
|
|
{
|
|
|
return -1;
|
|
|
@@ -4124,15 +4183,27 @@ int dev_sensor_Alarm_send_message(GlobalDeviceManager* globalDeviceManger,Global
|
|
|
{
|
|
|
case SENSOR_VAL1_UPPER:
|
|
|
sprintf(AlarmText, "%s |$温度$|$%s$", __globalPowerTemp->sensor_name, language_alarm_Up[languagesID]);
|
|
|
+ if(ss->Cur_sensor_info.val1>LIMIT_HOF(ss->over_manager.sensor_val1_upper_threshold)) {
|
|
|
+ limit_flag = 1;
|
|
|
+ }
|
|
|
break;
|
|
|
case SENSOR_VAL1_LOWER:
|
|
|
sprintf(AlarmText, "%s |$温度$|$%s$", __globalPowerTemp->sensor_name, language_alarm_Down[languagesID]);
|
|
|
+ if(ss->Cur_sensor_info.val1<LIMIT_LOF(ss->over_manager.sensor_val1_upper_threshold)) {
|
|
|
+ limit_flag = 1;
|
|
|
+ }
|
|
|
break;
|
|
|
case SENSOR_VAL2_UPPER:
|
|
|
sprintf(AlarmText, "%s |$湿度$|$%s$", __globalPowerTemp->sensor_name, language_alarm_Up[languagesID]);
|
|
|
+ if(ss->Cur_sensor_info.val2>LIMIT_HOF(ss->over_manager.sensor_val2_upper_threshold)) {
|
|
|
+ limit_flag = 1;
|
|
|
+ }
|
|
|
break;
|
|
|
case SENSOR_VAL2_LOWER:
|
|
|
sprintf(AlarmText, "%s |$湿度$|$%s$", __globalPowerTemp->sensor_name, language_alarm_Down[languagesID]);
|
|
|
+ if(ss->Cur_sensor_info.val2<LIMIT_LOF(ss->over_manager.sensor_val2_upper_threshold)) {
|
|
|
+ limit_flag = 1;
|
|
|
+ }
|
|
|
break;
|
|
|
default:
|
|
|
sprintf(AlarmText, "%s |$%s$", __globalPowerTemp->sensor_name, language_alarm_NULL_ERROR[languagesID]);
|
|
|
@@ -4147,9 +4218,15 @@ int dev_sensor_Alarm_send_message(GlobalDeviceManager* globalDeviceManger,Global
|
|
|
{
|
|
|
case SENSOR_VAL1_UPPER:
|
|
|
sprintf(AlarmText, "%s |$温度$|$%s$", __globalPowerTemp->sensor_name, language_alarm_Up[languagesID]);
|
|
|
+ if(ss->Cur_sensor_info.val1>LIMIT_HOF(ss->over_manager.sensor_val1_upper_threshold)) {
|
|
|
+ limit_flag = 1;
|
|
|
+ }
|
|
|
break;
|
|
|
case SENSOR_VAL1_LOWER:
|
|
|
sprintf(AlarmText, "%s |$温度$|$%s$", __globalPowerTemp->sensor_name, language_alarm_Down[languagesID]);
|
|
|
+ if(ss->Cur_sensor_info.val1<LIMIT_LOF(ss->over_manager.sensor_val1_upper_threshold)) {
|
|
|
+ limit_flag = 1;
|
|
|
+ }
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
@@ -4161,15 +4238,27 @@ int dev_sensor_Alarm_send_message(GlobalDeviceManager* globalDeviceManger,Global
|
|
|
{
|
|
|
case SENSOR_VAL1_UPPER:
|
|
|
sprintf(AlarmText, "%s |$温度$|1|$%s$", __globalPowerTemp->sensor_name, language_alarm_Up[languagesID]);
|
|
|
+ if(ss->Cur_sensor_info.val1>LIMIT_HOF(ss->over_manager.sensor_val1_upper_threshold)) {
|
|
|
+ limit_flag = 1;
|
|
|
+ }
|
|
|
break;
|
|
|
case SENSOR_VAL1_LOWER:
|
|
|
sprintf(AlarmText, "%s |$温度$|1|$%s$", __globalPowerTemp->sensor_name, language_alarm_Down[languagesID]);
|
|
|
+ if(ss->Cur_sensor_info.val1<LIMIT_LOF(ss->over_manager.sensor_val1_upper_threshold)) {
|
|
|
+ limit_flag = 1;
|
|
|
+ }
|
|
|
break;
|
|
|
case SENSOR_VAL2_UPPER:
|
|
|
sprintf(AlarmText, "%s |$温度$|2|$%s$", __globalPowerTemp->sensor_name, language_alarm_Up[languagesID]);
|
|
|
+ if(ss->Cur_sensor_info.val2>LIMIT_HOF(ss->over_manager.sensor_val2_upper_threshold)) {
|
|
|
+ limit_flag = 1;
|
|
|
+ }
|
|
|
break;
|
|
|
case SENSOR_VAL2_LOWER:
|
|
|
sprintf(AlarmText, "%s |$温度$|2|$%s$", __globalPowerTemp->sensor_name, language_alarm_Down[languagesID]);
|
|
|
+ if(ss->Cur_sensor_info.val2<LIMIT_LOF(ss->over_manager.sensor_val2_upper_threshold)) {
|
|
|
+ limit_flag = 1;
|
|
|
+ }
|
|
|
break;
|
|
|
default:
|
|
|
sprintf(AlarmText, "%s |$%s$", __globalPowerTemp->sensor_name, language_alarm_NULL_ERROR[languagesID]);
|
|
|
@@ -4183,9 +4272,15 @@ int dev_sensor_Alarm_send_message(GlobalDeviceManager* globalDeviceManger,Global
|
|
|
{
|
|
|
case SENSOR_VAL1_UPPER:
|
|
|
sprintf(AlarmText, "%s |$%s$", __globalPowerTemp->sensor_name, language_alarm_Up[languagesID]);
|
|
|
+ if(ss->Cur_sensor_info.val1>LIMIT_HOF(ss->over_manager.sensor_val1_upper_threshold)) {
|
|
|
+ limit_flag = 1;
|
|
|
+ }
|
|
|
break;
|
|
|
case SENSOR_VAL1_LOWER:
|
|
|
sprintf(AlarmText, "%s |$%s$", __globalPowerTemp->sensor_name, language_alarm_Down[languagesID]);
|
|
|
+ if(ss->Cur_sensor_info.val1<LIMIT_LOF(ss->over_manager.sensor_val1_upper_threshold)) {
|
|
|
+ limit_flag = 1;
|
|
|
+ }
|
|
|
break;
|
|
|
default:
|
|
|
sprintf(AlarmText, "%s |$%s$", __globalPowerTemp->sensor_name, language_alarm_NULL_ERROR[languagesID]);
|
|
|
@@ -4225,6 +4320,13 @@ int dev_sensor_Alarm_send_message(GlobalDeviceManager* globalDeviceManger,Global
|
|
|
send_pduSensorAlarm_trap(1, (void *)&pAlarmTrapinfo);
|
|
|
// if(_globalSNMPManager.trapmode==1)snmp_alarm_register(1,SA_REPEAT,send_pduSensorAlarm_trap,(void *)&pAlarmTrapinfo);
|
|
|
|
|
|
+ if(limit_flag) {
|
|
|
+ set_led_beep(LED_MODE_WARN2, BEEP_MODE_WARN2);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ set_led_beep(LED_MODE_WARN1, BEEP_MODE_WARN1);
|
|
|
+ }
|
|
|
+
|
|
|
return 0;
|
|
|
}
|
|
|
int dev_Alarm_Run_message(GlobalDeviceManager* globalDeviceManger, const char* strRunMSG, const char *strOther)
|