Explorar el Código

1、添加三相类型PDU总输入信息显示功能;2、添加三相及单相类型PDU视在功率显示;3、修复干接点传感器报警无效bug

liyuezong hace 1 año
padre
commit
950225e264
Se han modificado 6 ficheros con 211 adiciones y 35 borrados
  1. 5 4
      pro/src/app.c
  2. 160 5
      pro/src/json_handle.c
  3. 1 1
      pro/src/json_handle.h
  4. 37 20
      pro/src/sqlite_handle.c
  5. 7 5
      pro/src/websocket_handle.c
  6. 1 0
      pro/src/websocket_handle.h

+ 5 - 4
pro/src/app.c

@@ -2270,7 +2270,10 @@ static void* sensor_thread(void* arg)
                         if (nStatus==0 &&_globalSensorMangerTemp->Cur_sensor_info.val1!=0 )
                         if (nStatus==0 &&_globalSensorMangerTemp->Cur_sensor_info.val1!=0 )
                         {
                         {
                             alarmflag=true;
                             alarmflag=true;
-                        } 
+                        }
+#ifdef SENSOR_ACCESS_NONE
+                        alarmflag = false;
+#endif
                     }
                     }
                     else
                     else
                     {
                     {
@@ -2279,9 +2282,7 @@ static void* sensor_thread(void* arg)
                             alarmflag = true;
                             alarmflag = true;
                         }
                         }
                     }
                     }
-#ifdef  SENSOR_ACCESS_NONE 
-                    alarmflag = false;
-#endif
+
                     if (alarmflag)dev_sensor_Alarm_send_message(&__globalDeviceManage, _globalSensorMangerTemp, -1);
                     if (alarmflag)dev_sensor_Alarm_send_message(&__globalDeviceManage, _globalSensorMangerTemp, -1);
                     
                     
 
 

+ 160 - 5
pro/src/json_handle.c

@@ -2004,7 +2004,7 @@ char* over_channel_power_history_to_json(GlobalPowerInfo* _globalPowerInfo,Globa
 /// @brief 返回监控总信息
 /// @brief 返回监控总信息
 /// @param _over_back_sts_info 
 /// @param _over_back_sts_info 
 /// @return 
 /// @return 
-char* over_all_pwr_monitor_Tree_AC_to_json(_OverAllPwrAckInfo* _over_all_pwr_back_info_L1,_OverAllPwrAckInfo* _over_all_pwr_back_info_L2,_OverAllPwrAckInfo* _over_all_pwr_back_info_L3)
+char* over_all_pwr_monitor_Tree_AC_to_json(_OverAllPwrAckInfo* _over_all_pwr_back_info_L1,_OverAllPwrAckInfo* _over_all_pwr_back_info_L2,_OverAllPwrAckInfo* _over_all_pwr_back_info_L3,_OverAllPwrAckInfo* _over_all_pwr_back_info_all)
 {
 {
     char* str = NULL;
     char* str = NULL;
     char temp[64] = {0};
     char temp[64] = {0};
@@ -2062,8 +2062,25 @@ char* over_all_pwr_monitor_Tree_AC_to_json(_OverAllPwrAckInfo* _over_all_pwr_bac
 
 
     sprintf(temp,"%0.3f",1.0);
     sprintf(temp,"%0.3f",1.0);
     cJSON_AddStringToObject(data_filed,"productPowerFactorMaximum",temp);
     cJSON_AddStringToObject(data_filed,"productPowerFactorMaximum",temp);
+    //计算L1有功功率和无功功率
+    float FactorTemp = _over_all_pwr_back_info_L1->factor;
+    float PowerTemp = _over_all_pwr_back_info_L1->power;
+    float ReaPowerTemp = 0;
+    float AppPowerTemp = 0;
+    if (FactorTemp < 0.005 || FactorTemp > 1)
+    {
+        FactorTemp = 1.0;
+    }
+     AppPowerTemp= PowerTemp / FactorTemp;
+     ReaPowerTemp= AppPowerTemp- PowerTemp;
+
+    sprintf(temp,"%0.3f",ReaPowerTemp/1000.0);
+    cJSON_AddStringToObject(data_filed,"productReactivePower",temp);
+    sprintf(temp,"%0.3f",AppPowerTemp/1000.0);
+    cJSON_AddStringToObject(data_filed,"productApparentPower",temp);
 
 
     cJSON_AddItemToObject(data_root_array, "data", data_filed);
     cJSON_AddItemToObject(data_root_array, "data", data_filed);
+
     //第二条记录
     //第二条记录
     cJSON* data_filed1= cJSON_CreateObject();
     cJSON* data_filed1= cJSON_CreateObject();
     
     
@@ -2107,8 +2124,25 @@ char* over_all_pwr_monitor_Tree_AC_to_json(_OverAllPwrAckInfo* _over_all_pwr_bac
 
 
     sprintf(temp,"%0.3f",1.0);
     sprintf(temp,"%0.3f",1.0);
     cJSON_AddStringToObject(data_filed1,"productPowerFactorMaximum",temp);
     cJSON_AddStringToObject(data_filed1,"productPowerFactorMaximum",temp);
+        //计算L2有功功率和无功功率
+    float FactorTemp1 = _over_all_pwr_back_info_L2->factor;
+    float PowerTemp1 = _over_all_pwr_back_info_L2->power;
+    float ReaPowerTemp1 = 0;
+    float AppPowerTemp1 = 0;
+    if (FactorTemp1 < 0.005 || FactorTemp1 > 1)
+    {
+        FactorTemp1 = 1.0;
+    }
+     AppPowerTemp1= PowerTemp1 / FactorTemp1;
+     ReaPowerTemp1= AppPowerTemp1- PowerTemp1;
+
+    sprintf(temp,"%0.3f",ReaPowerTemp1/1000.0);
+    cJSON_AddStringToObject(data_filed1,"productReactivePower",temp);
+    sprintf(temp,"%0.3f",AppPowerTemp1/1000.0);
+    cJSON_AddStringToObject(data_filed1,"productApparentPower",temp);
 
 
     cJSON_AddItemToObject(data_root_array, "data", data_filed1);
     cJSON_AddItemToObject(data_root_array, "data", data_filed1);
+
     //第三条记录
     //第三条记录
     cJSON* data_filed2= cJSON_CreateObject();
     cJSON* data_filed2= cJSON_CreateObject();
     
     
@@ -2152,9 +2186,89 @@ char* over_all_pwr_monitor_Tree_AC_to_json(_OverAllPwrAckInfo* _over_all_pwr_bac
 
 
     sprintf(temp,"%0.3f",1.0);
     sprintf(temp,"%0.3f",1.0);
     cJSON_AddStringToObject(data_filed2,"productPowerFactorMaximum",temp);
     cJSON_AddStringToObject(data_filed2,"productPowerFactorMaximum",temp);
+    // 计算L3有功功率和无功功率
+    float FactorTemp2 = _over_all_pwr_back_info_L3->factor;
+    float PowerTemp2 = _over_all_pwr_back_info_L3->power;
+    float ReaPowerTemp2 = 0;
+    float AppPowerTemp2 = 0;
+    if (FactorTemp2 < 0.005 || FactorTemp2 > 1)
+    {
+        FactorTemp2 = 1.0;
+    }
+    AppPowerTemp2 = PowerTemp2/ FactorTemp2;
+    ReaPowerTemp2 = AppPowerTemp2 - PowerTemp2;
+
+    sprintf(temp, "%0.3f", ReaPowerTemp2 / 1000.0);
+    cJSON_AddStringToObject(data_filed2, "productReactivePower", temp);
+    sprintf(temp, "%0.3f", AppPowerTemp2 / 1000.0);
+    cJSON_AddStringToObject(data_filed2, "productApparentPower", temp);
 
 
     cJSON_AddItemToObject(data_root_array, "data", data_filed2);
     cJSON_AddItemToObject(data_root_array, "data", data_filed2);
 
 
+    //第四条记录 all
+    cJSON* data_filed3= cJSON_CreateObject();
+    
+    if (_over_all_pwr_back_info_all->product_id == 0) {
+        sprintf(temp, "%s", _over_all_pwr_back_info_all->product_name);
+    }
+    else {
+        sprintf(temp, "%s %d", _over_all_pwr_back_info_all->product_name, _over_all_pwr_back_info_all->product_id);
+    }
+    cJSON_AddStringToObject(data_filed3,"productName",temp);
+    //cJSON_AddStringToObject(data_filed2,"productNumber",_over_all_pwr_back_info_all->product_number);
+    cJSON_AddStringToObject(data_filed3,"productNumber","Smart PDU");
+    sprintf(temp,"%d",_over_all_pwr_back_info_all->product_id);
+    cJSON_AddStringToObject(data_filed3,"productId",temp);
+     cJSON_AddStringToObject(data_filed3,"productPhOrder","ALL");
+
+    sprintf(temp,"%0.3f",_over_all_pwr_back_info_all->voltage);
+    cJSON_AddStringToObject(data_filed3,"productVoltage",temp);
+
+    sprintf(temp,"%d",dm->_globalDevInfo.ptotal.voltage);
+    cJSON_AddStringToObject(data_filed3,"productVoltageMaximum",temp);
+
+    sprintf(temp,"%0.3f",_over_all_pwr_back_info_all->current);
+    cJSON_AddStringToObject(data_filed3,"productCurrent",temp);
+
+    sprintf(temp,"%d",dm->_globalDevInfo.ptotal.current);
+    cJSON_AddStringToObject(data_filed3,"productCurrentMaximum",temp);
+
+    sprintf(temp,"%0.3f",_over_all_pwr_back_info_all->power/1000);
+    cJSON_AddStringToObject(data_filed3,"productPower",temp);
+
+    sprintf(temp,"%d",dm->_globalDevInfo.ptotal.power);
+    cJSON_AddStringToObject(data_filed3,"productPowerMaximum",temp);
+
+    sprintf(temp,"%0.3f",_over_all_pwr_back_info_all->freq);
+    cJSON_AddStringToObject(data_filed3,"productPowerFreq",temp);
+    sprintf(temp,"%0.3f",_over_all_pwr_back_info_all->consumption);  
+    cJSON_AddStringToObject(data_filed3,"productConsumption",temp);
+    sprintf(temp,"%0.3f",_over_all_pwr_back_info_all->factor);                 
+    cJSON_AddStringToObject(data_filed3,"productPowerFactor",temp);
+
+    sprintf(temp,"%0.3f",1.0);
+    cJSON_AddStringToObject(data_filed3,"productPowerFactorMaximum",temp);
+
+        // 计算all有功功率和无功功率
+    float FactorTemp3= _over_all_pwr_back_info_all->factor;
+    float PowerTemp3= _over_all_pwr_back_info_all->power;
+    float ReaPowerTemp3 = 0;
+    float AppPowerTemp3 = 0;
+    if (FactorTemp3 < 0.005 || FactorTemp3 > 1)
+    {
+        FactorTemp3 = 1.0;
+    }
+    AppPowerTemp3 = PowerTemp3/ FactorTemp3;
+    ReaPowerTemp3 = AppPowerTemp3 - PowerTemp3;
+
+    sprintf(temp, "%0.3f", ReaPowerTemp3/ 1000.0);
+    cJSON_AddStringToObject(data_filed3, "productReactivePower", temp);
+    sprintf(temp, "%0.3f", AppPowerTemp3 / 1000.0);
+    cJSON_AddStringToObject(data_filed3, "productApparentPower", temp);
+
+    cJSON_AddItemToObject(data_root_array, "data", data_filed3);
+
+
     //添加汇总
     //添加汇总
     cJSON_AddItemToObject(sdata_filed, "data", data_root_array);
     cJSON_AddItemToObject(sdata_filed, "data", data_root_array);
     cJSON_AddStringToObject(sdata_filed, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
     cJSON_AddStringToObject(sdata_filed, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
@@ -2216,7 +2330,7 @@ char* over_all_pwr_monitor_to_json(int phaseType,_OverAllPwrAckInfo* _over_all_p
     }
     }
     else    
     else    
     {
     {
-        cJSON_AddStringToObject(data_filed,"productPhOrder","All");
+        cJSON_AddStringToObject(data_filed,"productPhOrder","ALL");
     }
     }
 
 
     sprintf(temp,"%0.3f",_over_all_pwr_back_info->voltage);
     sprintf(temp,"%0.3f",_over_all_pwr_back_info->voltage);
@@ -2247,7 +2361,7 @@ char* over_all_pwr_monitor_to_json(int phaseType,_OverAllPwrAckInfo* _over_all_p
     sprintf(temp,"%0.3f",1.0);
     sprintf(temp,"%0.3f",1.0);
     cJSON_AddStringToObject(data_filed,"productPowerFactorMaximum",temp);
     cJSON_AddStringToObject(data_filed,"productPowerFactorMaximum",temp);
 
 
-    /*
+    
     //计算有功功率和无功功率,暂时屏蔽,待需求确认,liyuezong 2025.08.30
     //计算有功功率和无功功率,暂时屏蔽,待需求确认,liyuezong 2025.08.30
     float FactorTemp = _over_all_pwr_back_info->factor;
     float FactorTemp = _over_all_pwr_back_info->factor;
     float PowerTemp = _over_all_pwr_back_info->power;
     float PowerTemp = _over_all_pwr_back_info->power;
@@ -2264,7 +2378,6 @@ char* over_all_pwr_monitor_to_json(int phaseType,_OverAllPwrAckInfo* _over_all_p
     cJSON_AddStringToObject(data_filed,"productReactivePower",temp);
     cJSON_AddStringToObject(data_filed,"productReactivePower",temp);
     sprintf(temp,"%0.3f",AppPowerTemp/1000.0);
     sprintf(temp,"%0.3f",AppPowerTemp/1000.0);
     cJSON_AddStringToObject(data_filed,"productApparentPower",temp);
     cJSON_AddStringToObject(data_filed,"productApparentPower",temp);
-    */
 
 
 
 
     // cJSON_AddNumberToObject(data_filed,"productVoltage",_over_all_pwr_back_info->voltage);
     // cJSON_AddNumberToObject(data_filed,"productVoltage",_over_all_pwr_back_info->voltage);
@@ -2709,6 +2822,17 @@ char* over_chn_pwr_monitor_to_json(_OverChnPwrAckInfo* _over_chn_pwr_back_info)
         cJSON_AddStringToObject(data_filed,"productChCurrent",temp);
         cJSON_AddStringToObject(data_filed,"productChCurrent",temp);
         sprintf(temp,"%0.3f",_chnPwrTemp->power);
         sprintf(temp,"%0.3f",_chnPwrTemp->power);
         cJSON_AddStringToObject(data_filed,"productChPower",temp);
         cJSON_AddStringToObject(data_filed,"productChPower",temp);
+        float FactorTemp = _chnPwrTemp->factor;
+        float PowerTemp = _chnPwrTemp->power;
+        float AppPowerTemp = 0;
+        if (FactorTemp < 0.005 || FactorTemp > 1)
+        {
+            FactorTemp = 1.0;
+        }
+        AppPowerTemp = PowerTemp / FactorTemp;
+        sprintf(temp,"%0.3f",AppPowerTemp);
+        cJSON_AddStringToObject(data_filed, "productChApparentPower", temp);
+
         sprintf(temp,"%0.3f",_chnPwrTemp->freq);
         sprintf(temp,"%0.3f",_chnPwrTemp->freq);
         cJSON_AddStringToObject(data_filed,"productChPowerFreq",temp);
         cJSON_AddStringToObject(data_filed,"productChPowerFreq",temp);
         sprintf(temp,"%0.3f",_chnPwrTemp->consumption);  
         sprintf(temp,"%0.3f",_chnPwrTemp->consumption);  
@@ -4533,6 +4657,25 @@ char* ws_over_status_ack_to_json(int type,_OverAllPwrAckInfo* _over_all_pwr_back
     cJSON_AddStringToObject(data_filed,"productPowerFactor",temp);
     cJSON_AddStringToObject(data_filed,"productPowerFactor",temp);
     sprintf(temp,"%0.3f",1.0);
     sprintf(temp,"%0.3f",1.0);
     cJSON_AddStringToObject(data_filed,"productPowerFactorMaximum",temp);
     cJSON_AddStringToObject(data_filed,"productPowerFactorMaximum",temp);
+
+    //计算有功功率和无功功率
+    float FactorTemp = _over_all_pwr_back_info->factor;
+    float PowerTemp = _over_all_pwr_back_info->power;
+    float ReaPowerTemp = 0;
+    float AppPowerTemp = 0;
+    if (FactorTemp < 0.005 || FactorTemp > 1)
+    {
+        FactorTemp = 1.0;
+    }
+     AppPowerTemp= PowerTemp / FactorTemp;
+     ReaPowerTemp= AppPowerTemp- PowerTemp;
+
+    sprintf(temp,"%0.3f",ReaPowerTemp/1000.0);
+    cJSON_AddStringToObject(data_filed,"productReactivePower",temp);
+    sprintf(temp,"%0.3f",AppPowerTemp/1000.0);
+    cJSON_AddStringToObject(data_filed,"productApparentPower",temp);
+    
+
     cJSON_AddItemToObject(sub_data_root_array, "data", data_filed);
     cJSON_AddItemToObject(sub_data_root_array, "data", data_filed);
     //添加汇总
     //添加汇总
      cJSON_AddItemToObject(sdata_filed, "data", sub_data_root_array);
      cJSON_AddItemToObject(sdata_filed, "data", sub_data_root_array);
@@ -4600,7 +4743,19 @@ char* ws_chn_status_ack_to_json(int type,_OverChnPwrAckInfo* _over_chn_pwr_back_
         cJSON_AddStringToObject(data_filed,"productChCurrent",temp);
         cJSON_AddStringToObject(data_filed,"productChCurrent",temp);
         sprintf(temp,"%0.3f",_chnPwrTemp->power);
         sprintf(temp,"%0.3f",_chnPwrTemp->power);
         cJSON_AddStringToObject(data_filed,"productChPower",temp);
         cJSON_AddStringToObject(data_filed,"productChPower",temp);
-        sprintf(temp,"%0.3f",_chnPwrTemp->freq);
+
+        float FactorTemp = _chnPwrTemp->factor;
+        float PowerTemp = _chnPwrTemp->power;
+        float AppPowerTemp = 0;
+        if (FactorTemp < 0.005 || FactorTemp > 1)
+        {
+            FactorTemp = 1.0;
+        }
+        AppPowerTemp = PowerTemp / FactorTemp;
+        sprintf(temp,"%0.3f",AppPowerTemp);
+        cJSON_AddStringToObject(data_filed, "productApparentPower", temp);
+
+        sprintf(temp, "%0.3f", _chnPwrTemp->freq);
         cJSON_AddStringToObject(data_filed,"productChPowerFreq",temp);
         cJSON_AddStringToObject(data_filed,"productChPowerFreq",temp);
         sprintf(temp,"%0.3f",_chnPwrTemp->consumption);  
         sprintf(temp,"%0.3f",_chnPwrTemp->consumption);  
         cJSON_AddStringToObject(data_filed,"productChConsumption",temp);
         cJSON_AddStringToObject(data_filed,"productChConsumption",temp);

+ 1 - 1
pro/src/json_handle.h

@@ -604,7 +604,7 @@ cJSON* json_to_over_equipment_mintenance(const char* str,_Equipment_Mintenance*
 char* over_product_list_info_to_json(GlobalDeviceManager *dm, _OverBackStsInfo* _over_back_sts_info,bool curFlag);
 char* over_product_list_info_to_json(GlobalDeviceManager *dm, _OverBackStsInfo* _over_back_sts_info,bool curFlag);
 char* vendor_info_to_json(GlobalDeviceInfo *dev);
 char* vendor_info_to_json(GlobalDeviceInfo *dev);
 char* over_all_pwr_monitor_to_json(int phaseType,_OverAllPwrAckInfo* _over_all_pwr_back_info);
 char* over_all_pwr_monitor_to_json(int phaseType,_OverAllPwrAckInfo* _over_all_pwr_back_info);
-char* over_all_pwr_monitor_Tree_AC_to_json(_OverAllPwrAckInfo* _over_all_pwr_back_info_L1,_OverAllPwrAckInfo* _over_all_pwr_back_info_L2,_OverAllPwrAckInfo* _over_all_pwr_back_info_L3);
+char* over_all_pwr_monitor_Tree_AC_to_json(_OverAllPwrAckInfo* _over_all_pwr_back_info_L1,_OverAllPwrAckInfo* _over_all_pwr_back_info_L2,_OverAllPwrAckInfo* _over_all_pwr_back_info_L3,_OverAllPwrAckInfo* _over_all_pwr_back_info_all);
 char* over_all_total_info_to_json(_OverAllPwrAckInfo* _over_all_pwr_back_info, int total_type);
 char* over_all_total_info_to_json(_OverAllPwrAckInfo* _over_all_pwr_back_info, int total_type);
 void over_all_total_info_t_ac_to_json(_OverAllPwrAckInfo* _over_all_pwr_back_info,cJSON* dataJson,cJSON* AxisJson, int total_type);
 void over_all_total_info_t_ac_to_json(_OverAllPwrAckInfo* _over_all_pwr_back_info,cJSON* dataJson,cJSON* AxisJson, int total_type);
 int over_init_data_t_ac_to_json(cJSON* pAllJson,cJSON* dataJson[],cJSON* AxisJson,int total_type);
 int over_init_data_t_ac_to_json(cJSON* pAllJson,cJSON* dataJson[],cJSON* AxisJson,int total_type);

+ 37 - 20
pro/src/sqlite_handle.c

@@ -978,31 +978,48 @@ int dev_search_time_t_ac_power_info(sqlite3 *db,int product_id,int product_ch_id
 
 
 int dev_search_latest_t_ac_power_statistic_info(int nCh, int nType, _OverAllPwrAckInfo *__overChnPwrAckInfo,GlobalDeviceManager* globalDeviceManger)
 int dev_search_latest_t_ac_power_statistic_info(int nCh, int nType, _OverAllPwrAckInfo *__overChnPwrAckInfo,GlobalDeviceManager* globalDeviceManger)
 {
 {
-    GlobalTreeACManager *_pTreeACPowerMangerTemp = NULL;
-
-    if(list_empty(&globalDeviceManger->_globalPowerManger.list_Tree_AC)) {
-        return -1;
-    }
-
-    list_for_each_entry(_pTreeACPowerMangerTemp, &globalDeviceManger->_globalPowerManger.list_Tree_AC, list_Tree_AC)
+    if (nType == 4)
     {
     {
-        if (_pTreeACPowerMangerTemp->product_ch_id != nCh ||_pTreeACPowerMangerTemp->product_ph_type!=nType)
-        {
-            continue;
-        }
-        __overChnPwrAckInfo->voltage = _pTreeACPowerMangerTemp->_PowerInfo.voltage;
-        __overChnPwrAckInfo->current = _pTreeACPowerMangerTemp->_PowerInfo.current;
-        __overChnPwrAckInfo->power = _pTreeACPowerMangerTemp->_PowerInfo.power;
-        __overChnPwrAckInfo->freq = _pTreeACPowerMangerTemp->_PowerInfo.freq;
-        __overChnPwrAckInfo->consumption = _pTreeACPowerMangerTemp->_PowerInfo.consumption;
-        __overChnPwrAckInfo->factor = _pTreeACPowerMangerTemp->_PowerInfo.factor;
-
-       __overChnPwrAckInfo->product_name = globalDeviceManger->_globalDevInfo.product.name;
+        __overChnPwrAckInfo->voltage = globalDeviceManger->_globalPowerManger._PowerInfo.voltage;
+        __overChnPwrAckInfo->current = globalDeviceManger->_globalPowerManger._PowerInfo.current;
+        __overChnPwrAckInfo->power = globalDeviceManger->_globalPowerManger._PowerInfo.power;
+        __overChnPwrAckInfo->freq = globalDeviceManger->_globalPowerManger._PowerInfo.freq;
+        __overChnPwrAckInfo->consumption = globalDeviceManger->_globalPowerManger._PowerInfo.consumption;
+        __overChnPwrAckInfo->factor = globalDeviceManger->_globalPowerManger._PowerInfo.factor;
+
+        __overChnPwrAckInfo->product_name = globalDeviceManger->_globalDevInfo.product.name;
         __overChnPwrAckInfo->product_number = globalDeviceManger->_globalDevInfo.product.number;
         __overChnPwrAckInfo->product_number = globalDeviceManger->_globalDevInfo.product.number;
         __overChnPwrAckInfo->product_id = globalDeviceManger->_globalDevInfo.product.id;
         __overChnPwrAckInfo->product_id = globalDeviceManger->_globalDevInfo.product.id;
         return 0;
         return 0;
-        break;
     }
     }
+    else
+    {
+        GlobalTreeACManager *_pTreeACPowerMangerTemp = NULL;
+
+        if (list_empty(&globalDeviceManger->_globalPowerManger.list_Tree_AC))
+        {
+            return -1;
+        }
+        list_for_each_entry(_pTreeACPowerMangerTemp, &globalDeviceManger->_globalPowerManger.list_Tree_AC, list_Tree_AC)
+        {
+            if (_pTreeACPowerMangerTemp->product_ch_id != nCh || _pTreeACPowerMangerTemp->product_ph_type != nType)
+            {
+                continue;
+            }
+            __overChnPwrAckInfo->voltage = _pTreeACPowerMangerTemp->_PowerInfo.voltage;
+            __overChnPwrAckInfo->current = _pTreeACPowerMangerTemp->_PowerInfo.current;
+            __overChnPwrAckInfo->power = _pTreeACPowerMangerTemp->_PowerInfo.power;
+            __overChnPwrAckInfo->freq = _pTreeACPowerMangerTemp->_PowerInfo.freq;
+            __overChnPwrAckInfo->consumption = _pTreeACPowerMangerTemp->_PowerInfo.consumption;
+            __overChnPwrAckInfo->factor = _pTreeACPowerMangerTemp->_PowerInfo.factor;
+
+            __overChnPwrAckInfo->product_name = globalDeviceManger->_globalDevInfo.product.name;
+            __overChnPwrAckInfo->product_number = globalDeviceManger->_globalDevInfo.product.number;
+            __overChnPwrAckInfo->product_id = globalDeviceManger->_globalDevInfo.product.id;
+            return 0;
+        }
+    }
+
     return -1;
     return -1;
 }
 }
 /// @brief 获取系统总数信息
 /// @brief 获取系统总数信息

+ 7 - 5
pro/src/websocket_handle.c

@@ -115,6 +115,7 @@ static int ws_all_update(ws_handle_t *h)
             r1 = dev_search_latest_t_ac_power_statistic_info(0, 0, &pall->ch[0], gdm);
             r1 = dev_search_latest_t_ac_power_statistic_info(0, 0, &pall->ch[0], gdm);
             r2 = dev_search_latest_t_ac_power_statistic_info(0, 1, &pall->ch[1], gdm);
             r2 = dev_search_latest_t_ac_power_statistic_info(0, 1, &pall->ch[1], gdm);
             r3 = dev_search_latest_t_ac_power_statistic_info(0, 2, &pall->ch[2], gdm);
             r3 = dev_search_latest_t_ac_power_statistic_info(0, 2, &pall->ch[2], gdm);
+            r = dev_search_latest_t_ac_power_statistic_info(0, 4, &pall->chall, gdm);
             lock_s_release(LOCK_ID_POWER_UPDATE);
             lock_s_release(LOCK_ID_POWER_UPDATE);
         }
         }
         else
         else
@@ -123,11 +124,12 @@ static int ws_all_update(ws_handle_t *h)
             r1 = dev_search_latest_t_ac_power_statistic_info(0, 0, &pall->ch[0], gdm2);
             r1 = dev_search_latest_t_ac_power_statistic_info(0, 0, &pall->ch[0], gdm2);
             r2 = dev_search_latest_t_ac_power_statistic_info(0, 1, &pall->ch[1], gdm2);
             r2 = dev_search_latest_t_ac_power_statistic_info(0, 1, &pall->ch[1], gdm2);
             r3 = dev_search_latest_t_ac_power_statistic_info(0, 2, &pall->ch[2], gdm2);
             r3 = dev_search_latest_t_ac_power_statistic_info(0, 2, &pall->ch[2], gdm2);
+            r = dev_search_latest_t_ac_power_statistic_info(0, 4, &pall->chall, gdm2);
             cascade_unlock();
             cascade_unlock();
         }
         }
-        if (0 == r1 && 0 == r2 && 0 == r3)
+        if (0 == r1 && 0 == r2 && 0 == r3 && 0 == r)
         {
         {
-            json = over_all_pwr_monitor_Tree_AC_to_json(&pall->ch[0], &pall->ch[1], &pall->ch[2]);
+            json = over_all_pwr_monitor_Tree_AC_to_json(&pall->ch[0], &pall->ch[1], &pall->ch[2], &pall->chall);
             ws_send_data(h, json, strlen(json));
             ws_send_data(h, json, strlen(json));
             cJSON_free(json);
             cJSON_free(json);
         }
         }
@@ -137,17 +139,17 @@ static int ws_all_update(ws_handle_t *h)
         pall->ph3 = 0;
         pall->ph3 = 0;
         if(cur_dev_addr==0) {
         if(cur_dev_addr==0) {
             lock_s_hold(LOCK_ID_POWER_UPDATE);
             lock_s_hold(LOCK_ID_POWER_UPDATE);
-            r = dev_search_latest_power_statistic_info(gdm, &pall->ch[0]);
+            r = dev_search_latest_power_statistic_info(gdm, &pall->chall);
             lock_s_release(LOCK_ID_POWER_UPDATE);
             lock_s_release(LOCK_ID_POWER_UPDATE);
         }
         }
         else {
         else {
             cascade_lock();
             cascade_lock();
-            r = dev_search_latest_power_statistic_info(gdm2, &pall->ch[0]);
+            r = dev_search_latest_power_statistic_info(gdm2, &pall->chall);
             cascade_unlock();
             cascade_unlock();
         }
         }
         if (0==r)
         if (0==r)
         {
         {
-            json = ws_over_status_ack_to_json(0, &pall->ch[0]);
+            json = ws_over_status_ack_to_json(0, &pall->chall);
             ws_send_data(h, json, strlen(json));
             ws_send_data(h, json, strlen(json));
             cJSON_free(json);
             cJSON_free(json);
         }
         }

+ 1 - 0
pro/src/websocket_handle.h

@@ -14,6 +14,7 @@ typedef struct {
 typedef struct {
 typedef struct {
     int ph3;
     int ph3;
     _OverAllPwrAckInfo ch[3];
     _OverAllPwrAckInfo ch[3];
+    _OverAllPwrAckInfo chall;
 }pwrall_info_t;
 }pwrall_info_t;
 
 
 int websocket_init(void);
 int websocket_init(void);