Sfoglia il codice sorgente

1、修改MQTT电源及传感器报警信息上传结构定义。

liyuezong 1 anno fa
parent
commit
acb2b92e5a
2 ha cambiato i file con 27 aggiunte e 20 eliminazioni
  1. 18 11
      pro/src/mqtt.c
  2. 9 9
      pro/src/sqlite_handle.c

+ 18 - 11
pro/src/mqtt.c

@@ -80,16 +80,16 @@ char *topic_sub[MQTT_SUB_MAX]={
     "/pdu/%s/control/device/reset",
     "/pdu/%s/control/service",
 };
-char *topic_pub[MQTT_PUB_MAX]={
+char *topic_pub[MQTT_PUB_MAX] = {
     "/pdu/%s/info/device",
     "/pdu/%s/status/network",
     "/pdu/%s/status/power/all_channel",
     "/pdu/%s/status/power/%d",
     "/pdu/%s/status/sensor/%d",
+    "/pdu/%s/status/service",
     "/pdu/%s/alarm/network",
     "/pdu/%s/alarm/power",
     "/pdu/%s/alarm/sensor",
-    "/pdu/%s/status/service",
 };
 const char *serv_str[SERV_MAX]={
     "ntp",
@@ -768,7 +768,7 @@ static int send_stat(mqtt_conn_t *conn, int type)
                             cJSON_AddStringToObject(data_filed, "power_factor", get_float_str(info->factor));
                             cJSON_AddStringToObject(data_filed, "power_freq", get_float_str(info->freq));
                             p1 = info->power;
-                            p3 = (info->factor ? (p1 / info->factor) : 0.0f);
+                            p3 = info->factor>0 ? (p1 / info->factor) : 0.0f;
                             p2 = p3 - p1;
                             cJSON_AddStringToObject(data_filed, "pactive_power", get_float_str(p1));
                             cJSON_AddStringToObject(data_filed, "reactive_power", get_float_str(p2));
@@ -838,7 +838,7 @@ static int send_stat(mqtt_conn_t *conn, int type)
                         cJSON_AddStringToObject(root, "power_freq", get_float_str(tmp->_PowerInfo.freq));
                         cJSON_AddStringToObject(root, "power_factor", get_float_str(tmp->_PowerInfo.factor));
                         p1 = tmp->_PowerInfo.power;
-                        p3 = p1 / tmp->_PowerInfo.factor;
+                        p3 = tmp->_PowerInfo.factor>0 ? (p1 / tmp->_PowerInfo.factor) : 0.0f;
                         p2 = p3 - p1;
                         cJSON_AddStringToObject(root, "pactive_power", get_float_str(p1));
                         cJSON_AddStringToObject(root, "reactive_power", get_float_str(p2));
@@ -1002,14 +1002,21 @@ static int post_alarm(int type, int subtype, char *content, alarm_para_t *para)
         {
             cJSON* root=cJSON_CreateObject();
             if(root) {
-                cJSON_AddStringToObject(root,"num", get_int_str(para->nalarm));     //alarm number, how to get?
-                cJSON_AddStringToObject(root,"context", content);
-                cJSON_AddStringToObject(root,"action", get_int_str(para->action));
-                cJSON_AddStringToObject(root,"action_para", get_int_str(para->actionId));
-                cJSON_AddStringToObject(root,"date", date);
-                cJSON_AddStringToObject(root,"time", time);
+                
+                if(MQTT_PUB_ALARM_SENSOR==pub_type)cJSON_AddStringToObject(root,"sensor_id", get_int_str(para->id));    
+                else if(MQTT_PUB_ALARM_POWER==pub_type)cJSON_AddStringToObject(root,"channel_id", get_int_str(para->id));    
+                else cJSON_AddStringToObject(root,"id", get_int_str(para->id));
+
+                cJSON_AddStringToObject(root, "context", content);
+                if (MQTT_PUB_ALARM_POWER == pub_type)
+                {
+                    cJSON_AddStringToObject(root, "action", get_int_str(para->action));
+                    cJSON_AddStringToObject(root, "action_para", get_int_str(para->actionId));
+                }
+                cJSON_AddStringToObject(root, "date", date);
+                cJSON_AddStringToObject(root, "time", time);
 
-                json_str = cJSON_Print(root);    
+                json_str = cJSON_Print(root);
                 cJSON_Delete(root);
             }
         }

+ 9 - 9
pro/src/sqlite_handle.c

@@ -3998,9 +3998,9 @@ int dev_Alarm_send_message(GlobalDeviceManager* globalDeviceManger,GlobalPowerMa
     alarm_para_t para;
     //dev_search_last_Index(globalDeviceManger->db, );
     para.id = __globalPowerTemp->product_ch_id;
-    para.nalarm = 1;
+    para.nalarm = __globalPowerTemp->product_ch_id;
     para.action = alarm_action;
-    para.actionId = -1;
+    para.actionId = alarm_action > 0 ? __globalPowerTemp->product_ch_id : -1;
     mqtt_post_alarm(ALARM_TYPE_POWER, 0, AlarmText, &para);
 
     AlarmTrapinfo pAlarmTrapinfo; ////Trap information
@@ -4178,9 +4178,9 @@ int dev_Alarm_T_AC_message(GlobalDeviceManager* globalDeviceManger, GlobalTreeAC
 
     alarm_para_t para;
     para.id = __globalPowerTemp->product_ch_id;
-    para.nalarm = 1;
+    para.nalarm = __globalPowerTemp->product_ch_id;
     para.action = alarm_action;
-    para.actionId = -1;
+    para.actionId = alarm_action > 0 ? __globalPowerTemp->product_ch_id : -1;
     mqtt_post_alarm(ALARM_TYPE_POWER, 1, AlarmText, &para);
 
     AlarmTrapinfo pAlarmTrapinfo; ////Trap information
@@ -4287,25 +4287,25 @@ int dev_sensor_Alarm_send_message(GlobalDeviceManager* globalDeviceManger,Global
         switch (_AlarmType)
         {
         case SENSOR_VAL1_UPPER:
-            sprintf(AlarmText, "%s |$温度$|1|$%s$", __globalPowerTemp->sensor_name, language_alarm_Up[languagesID]);
+            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]);
+            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]);
+            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]);
+            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;
             }
@@ -4373,7 +4373,7 @@ int dev_sensor_Alarm_send_message(GlobalDeviceManager* globalDeviceManger,Global
 
     alarm_para_t para;
     para.id = __globalPowerTemp->sensor_id;
-    para.nalarm = 1;
+    para.nalarm = __globalPowerTemp->sensor_id;
     para.action = -1;
     para.actionId = -1;
     mqtt_post_alarm(ALARM_TYPE_SENSOR, subtype, AlarmText, &para);