Przeglądaj źródła

1.添加传感器历史记录查询,修改传感器历史记录存储bug;2、修改可以删除当前登录账户的bug。

liyuezong 2 lat temu
rodzic
commit
cbb1591c66
5 zmienionych plików z 253 dodań i 154 usunięć
  1. 30 23
      pro/src/app.c
  2. 180 91
      pro/src/appweb_handle.c
  3. 1 0
      pro/src/common.h
  4. 33 32
      pro/src/json_handle.c
  5. 9 8
      pro/src/sqlite_handle.c

+ 30 - 23
pro/src/app.c

@@ -1328,6 +1328,13 @@ void* sensor_thread(void* arg)
         lock_s_hold(LOCK_ID_SENSOR);
         list_for_each_entry(_globalSensorMangerTemp, &_globalDeviceManager->_globalSensorManger.list, list)
         {
+            gettimeofday(&tv, &tz);
+            t = localtime(&tv.tv_sec);
+            sprintf(_globalSensorInfo.samp_time, "%04d-%02d-%02d %02d:%02d:%02d.%03ld",
+                    t->tm_year + 1900, t->tm_mon+1, t->tm_mday, t->tm_hour, t->tm_min, t->tm_sec, tv.tv_usec / 1000);
+            _globalSensorInfo.product_id = __globalDeviceManage._globalDevInfo.product_id;
+            _globalSensorInfo.sensor_id = _globalSensorMangerTemp->sensor_id;
+            _globalSensorInfo.product_log_time=_globalSensorMangerTemp->Cur_sensor_info.product_log_time;
             switch (_globalSensorMangerTemp->sensor_type)
             {
             case SENSOR_TYPE_TEMPERATURE: // 温湿度
@@ -1337,9 +1344,9 @@ void* sensor_thread(void* arg)
                 float humidity = 0.0;
 #ifdef PRJ_ANDERSON
                 ret = _g_sensor_get_temperature_value_ANDERSON((void *)&_globalDeviceManager->sensor_modbus_manager,
-                                                      _globalSensorMangerTemp->sensor_addr,
-                                                      &temperature,
-                                                      &humidity);
+                                                               _globalSensorMangerTemp->sensor_addr,
+                                                               &temperature,
+                                                               &humidity);
 #else
                 ret = _g_sensor_get_temperature_value((void *)&_globalDeviceManager->sensor_modbus_manager,
                                                       _globalSensorMangerTemp->sensor_addr,
@@ -1356,12 +1363,7 @@ void* sensor_thread(void* arg)
                 }
                 // log_d("sensor val:%0.2f %0.2f\n",temperature,humidity);
                 // printf("get temperature=%f   humidity=%f\n",temperature,humidity);
-                gettimeofday(&tv, &tz);
-                t = localtime(&tv.tv_sec);
-                sprintf(_globalSensorInfo.samp_time, "%04d-%02d-%02d %02d:%02d:%02d.%03ld",
-                        t->tm_year + 1900, t->tm_mon, t->tm_mday, t->tm_hour, t->tm_min, t->tm_sec, tv.tv_usec / 1000);
-                _globalSensorInfo.product_id = __globalDeviceManage._globalDevInfo.product_id;
-                _globalSensorInfo.sensor_id = _globalSensorMangerTemp->sensor_id;
+
                 _globalSensorInfo.val1 = temperature;
                 _globalSensorInfo.val2 = humidity;
                 if(_globalDeviceManager->_globalDevInfo.product_pwr_type == SmartPDU_AC ||
@@ -1377,7 +1379,6 @@ void* sensor_thread(void* arg)
                         _globalDeviceManager->triphasic_mmap->humidity = humidity * 100;
                     }
                 }
-                _globalSensorInfo.product_log_time=_globalSensorMangerTemp->Cur_sensor_info.product_log_time;;
                 _globalSensorMangerTemp->Cur_sensor_info=_globalSensorInfo;
                 _globalDeviceManager->g_modebus_read.temprature=temperature;
                 _globalDeviceManager->g_modebus_read.humidity=humidity;
@@ -1391,18 +1392,31 @@ void* sensor_thread(void* arg)
                 {
                     int nStatus=0;
                     g_switch_get_gpio_status(_globalSensorMangerTemp->sensor_addr+GPIO_PD11,&nStatus);
-                    _globalSensorMangerTemp->Cur_sensor_info.val1=nStatus;
+                    _globalSensorInfo.val1=nStatus;
+                    _globalSensorInfo.val2=-1;
+                    _globalSensorMangerTemp->Cur_sensor_info=_globalSensorInfo;
                 }                
             }
             break;
             case SENSOR_TYPE_GAS: // 气体
             {
-
+                    _globalSensorInfo.val1=0;
+                    _globalSensorInfo.val2=0;
+                    _globalSensorMangerTemp->Cur_sensor_info=_globalSensorInfo;
             }
             break;
             case SENSOR_TYPE_AIR_PRESS: // 气流
             {
-
+                    _globalSensorInfo.val1=0;
+                    _globalSensorInfo.val2=0;
+                    _globalSensorMangerTemp->Cur_sensor_info=_globalSensorInfo;
+            }
+            break;
+            case SENSOR_TYPE_AIR_Conditioner: // 空调
+            {
+                _globalSensorInfo.val1 = 0;
+                _globalSensorInfo.val2 =0;
+                _globalSensorMangerTemp->Cur_sensor_info = _globalSensorInfo;
             }
             break;
             case SENSOR_TYPE_DoubleT://双头传感器
@@ -1425,15 +1439,8 @@ void* sensor_thread(void* arg)
                 }
                 // log_d("sensor val:%0.2f %0.2f\n",temperature,humidity);
                 // printf("get temperature=%f   humidity=%f\n",temperature,humidity);
-                gettimeofday(&tv, &tz);
-                t = localtime(&tv.tv_sec);
-                sprintf(_globalSensorInfo.samp_time, "%04d-%02d-%02d %02d:%02d:%02d.%03ld",
-                        t->tm_year + 1900, t->tm_mon, t->tm_mday, t->tm_hour, t->tm_min, t->tm_sec, tv.tv_usec / 1000);
-                _globalSensorInfo.product_id = __globalDeviceManage._globalDevInfo.product_id;
-                _globalSensorInfo.sensor_id = _globalSensorMangerTemp->sensor_id;
                 _globalSensorInfo.val1 = temperature;
                 _globalSensorInfo.val2 = temperature2;
-                _globalSensorInfo.product_log_time=_globalSensorMangerTemp->Cur_sensor_info.product_log_time;;
                 _globalSensorMangerTemp->Cur_sensor_info=_globalSensorInfo;
                 _globalDeviceManager->g_modebus_read.temprature=temperature;
                 _globalDeviceManager->g_modebus_read.temprature2=temperature2;
@@ -1446,13 +1453,13 @@ void* sensor_thread(void* arg)
             time_t now;
             time(&now);
             t = localtime(&now);
-            char buffer[80];
+            /*char buffer[80];
             strftime(buffer, sizeof(buffer), "%Y-%m-%d %H:%M:%S", t);
             memset(_globalSensorMangerTemp->Cur_sensor_info.samp_time, 0, sizeof(_globalSensorMangerTemp->Cur_sensor_info.samp_time));
             strftime(_globalSensorMangerTemp->Cur_sensor_info.samp_time, sizeof(_globalSensorMangerTemp->Cur_sensor_info.samp_time), "%Y-%m-%d %H:%M:%S", t);
             sprintf(buffer, ".%03ld", tv.tv_usec / 1000);
-            strcat(_globalSensorMangerTemp->Cur_sensor_info.samp_time, buffer);
-            if (difftime(now, _globalSensorMangerTemp->Cur_sensor_info.product_log_time) > (30000 / 1000))
+            strcat(_globalSensorMangerTemp->Cur_sensor_info.samp_time, buffer);*/
+            if (difftime(now, _globalSensorMangerTemp->Cur_sensor_info.product_log_time) > (_globalDeviceManager->_globalDevInfo.product_save_time / 1000))
             {
                 _globalSensorMangerTemp->Cur_sensor_info.product_log_time = now;
                 // 插入数据库

+ 180 - 91
pro/src/appweb_handle.c

@@ -2235,112 +2235,154 @@ static void sensorStatusMonitoring(void* conn)
     {
         int rsize = 0 ;
         int g_sensor_id = 0 ;
-        int g_sensor_type = 0 ;
-        GlobalSensorInfo* _globalSensorInfoTemp;
+        int g_sensor_type = -1;
+
         GlobalSensorManger* _globalSensorMangerSTemp;
         int page_num = 0;
-        int page_size = 0;        
-#if 0
-        INIT_LIST_HEAD(&_globalSensorInfo.list);
-        g_sensor_type = atoi(_over_all_sensor_request.sensorType);
+        int page_size = 60;
+        char start_time[32] = {0};
+        char stop_time[32] = {0};
+        INIT_LIST_HEAD(&_over_all_sensor_back_info.list);
+        if (_over_all_sensor_request.sensorType)
+        {
+            g_sensor_type = atoi(_over_all_sensor_request.sensorType);
+        }
+
+        if ( _over_all_sensor_request.startTime == NULL || _over_all_sensor_request.endTime == NULL)
+        {
+            struct tm *t;
+            struct timeval tv;
+
+            gettimeofday(&tv, NULL);
+            t = localtime(&tv.tv_sec);
+            sprintf(stop_time, "%04d-%02d-%02d %02d:%02d:%02d", t->tm_year + 1900, t->tm_mon + 1, t->tm_mday, 23, 59, 59);
+            log_d(stop_time);
+
+            sprintf(start_time, "%04d-%02d-%02d %02d:%02d:%02d", t->tm_year + 1900, t->tm_mon + 1, t->tm_mday, 0, 0, 0);
+            log_d(start_time);
+        }
+        else
+        {
+            strncpy(start_time, _over_all_sensor_request.startTime , sizeof(start_time) );
+            strncpy(stop_time, _over_all_sensor_request.endTime , sizeof(stop_time) );
+        }
+
         // log_d("page_num:%d",page_num);
         // log_d("page_size:%d",page_size);
-        //查询数据
-         ret = dev_search_sensor_info(__globalDeviceManage.db,
-                             __globalDeviceManage._globalDevInfo.product_id,
-                             g_sensor_id,
-                             _over_all_sensor_request.startTime,
-                             _over_all_sensor_request.endTime,
-                             page_num,
-                             page_size,
-                             &rsize,
-                             &_globalSensorInfo);
-         if(ret!=0)
-             log_e("get sensor history error.");
-        
-        //查找管理表找到关联信息
+        lock_s_hold(LOCK_ID_SENSOR);
+        // 查找管理表找到关联信息
         list_for_each_entry(_globalSensorMangerSTemp, &__globalDeviceManage._globalSensorManger.list, list)
         {
-            //ID相等 记录信息
-            if(_globalSensorMangerSTemp->sensor_id== g_sensor_id)
+            // ID相等 记录信息
+            if (_globalSensorMangerSTemp->sensor_type != g_sensor_type)
             {
-                break;
+                continue;
+            }
+            // 查询数据
+            GlobalSensorInfo SensorInfoList;
+            INIT_LIST_HEAD(&SensorInfoList.list);
+            ret = dev_search_sensor_info(__globalDeviceManage.db,
+                                         __globalDeviceManage._globalDevInfo.product_id,
+                                         _globalSensorMangerSTemp->sensor_id,
+                                         start_time,
+                                         stop_time,
+                                         page_num,
+                                         page_size,
+                                         &rsize,
+                                         &SensorInfoList);
+            if (ret != 0)
+            {
+                log_e("get sensor history error.");
+                continue;
             }
-        }        
-        //组返回数据
-        list_for_each_entry(_globalSensorInfoTemp, &_globalSensorInfo.list, list)
-        {
-#endif
-            /*
-            _OverSensorBackInfo* _overSensorBackInfoTemp = (_OverSensorBackInfo*)malloc(sizeof(_OverSensorBackInfo));
-            if(_overSensorBackInfoTemp==NULL)
-                log_e("_OverSensorBackInfo malloc error.");
-            memset(_overSensorBackInfoTemp,0,sizeof(_OverSensorBackInfo));
 
-            //基本信息
-            _overSensorBackInfoTemp->sensorId = _over_all_sensor_request.sensorId;
-            strcpy(_overSensorBackInfoTemp->sensorName,_globalSensorMangerSTemp->sensor_name);
+            _OverSensorBackInfo *_overSensorBackInfoTemp = (_OverSensorBackInfo *)malloc(sizeof(_OverSensorBackInfo));
+            if (_overSensorBackInfoTemp == NULL)
+                log_e("_OverSensorBackInfo malloc error.");
+            memset(_overSensorBackInfoTemp, 0, sizeof(_OverSensorBackInfo));
+            // 基本信息
+            _overSensorBackInfoTemp->sensorId = _globalSensorMangerSTemp->sensor_id;
+            strcpy(_overSensorBackInfoTemp->sensorName, _globalSensorMangerSTemp->sensor_name);
             _overSensorBackInfoTemp->sensorType = _globalSensorMangerSTemp->sensor_type;
-            strcpy(_overSensorBackInfoTemp->comSlogan,_globalSensorMangerSTemp->sensor_port_name);
-            //485独有
-            if(_globalSensorMangerSTemp->sensor_interface_type==1)
+            strcpy(_overSensorBackInfoTemp->comSlogan, _globalSensorMangerSTemp->sensor_port_name);
+            // 485独有
+            if (_globalSensorMangerSTemp->sensor_interface_type == 1)
             {
-                _overSensorBackInfoTemp->sensorAddr = _globalSensorMangerSTemp->sensor_addr ;
+                _overSensorBackInfoTemp->sensorAddr = _globalSensorMangerSTemp->sensor_addr;
                 _overSensorBackInfoTemp->sensorBaud = _globalSensorMangerSTemp->sensor_baud;
             }
             _overSensorBackInfoTemp->connectionStatus = _globalSensorMangerSTemp->sensor_status;
-            _overSensorBackInfoTemp->nodeNumber = __globalDeviceManage._globalSensorManger.sensor_node_number;
+            _overSensorBackInfoTemp->nodeNumber = _globalSensorMangerSTemp->sensor_node_number;
 
-            //判断sensor type 填充数据
-            switch(_globalSensorMangerSTemp->sensor_type)
+            // 组返回数据
+            int _TempCount=0;
+            GlobalSensorInfo* _globalSensorInfoTemp;
+            list_for_each_entry(_globalSensorInfoTemp, &SensorInfoList.list, list)
             {
-                case 0://温湿度传感器 2个值
+                if (_TempCount>=TOTAL_COUNT)
                 {
-                    _overSensorBackInfoTemp->temperatureValue = _globalSensorInfoTemp->val1;
-                    _overSensorBackInfoTemp->humidityValue = _globalSensorInfoTemp->val2;
-                }break;
-                case 1://烟雾传感器 1个值
+                    break;
+                }
+                
+                // 判断sensor type 填充数据
+                switch (_globalSensorMangerSTemp->sensor_type)
                 {
-                    _overSensorBackInfoTemp->alarmStatus =  (bool)_globalSensorInfo.val1; // 1/0 报警未报警
-                }break;
-                case 2://水浸传感器
+                case SENSOR_TYPE_TEMPERATURE: // 温湿度传感器 2个值
                 {
-                    _overSensorBackInfoTemp->waterImmersionState =  (bool)_globalSensorInfo.val1; // 1/0 报警未报警
-                }break;
-                case 3://门禁传感器 没有值
+                    _overSensorBackInfoTemp->temp_humi_sensor.ydata[0][_TempCount] = _globalSensorInfoTemp->val1;
+                    _overSensorBackInfoTemp->temp_humi_sensor.ydata[1][_TempCount]  = _globalSensorInfoTemp->val2;
+                    strcpy(_overSensorBackInfoTemp->temp_humi_sensor.xAxis[_TempCount], _globalSensorInfoTemp->samp_time);
+                }
+                break;
+                case SENSOR_TYPE_SMOKE: // 烟雾传感器 1个值
                 {
-                    _overSensorBackInfoTemp->accessControlStatus =  (bool)_globalSensorInfo.val1; // 1/0 报警未报警
-                }break;
-                case 4://气体传感器 1个值
+                    _overSensorBackInfoTemp->alarmStatus = (bool)_globalSensorInfoTemp->val1; // 1/0 报警未报警
+                }
+                break;
+                case SENSOR_TYPE_WATER: // 水浸传感器
                 {
-                    _overSensorBackInfoTemp->gasConcentration =  _globalSensorInfoTemp->val1; // 气体浓度
-                }break;
-                case 5:
+                    _overSensorBackInfoTemp->waterImmersionState = (bool)_globalSensorInfoTemp->val1; // 1/0 报警未报警
+                }
+                break;
+                case SENSOR_TYPE_DOOR: // 门禁传感器 没有值
                 {
-                    _overSensorBackInfoTemp->airPressureValue =  _globalSensorInfoTemp->val1; // 气压
-                    _overSensorBackInfoTemp->airflowValue =  _globalSensorInfoTemp->val2; // 气流
-                }break;
-                case 6://空调遥控器 没有值
+                    _overSensorBackInfoTemp->accessControlStatus = (bool)_globalSensorInfoTemp->val1; // 1/0 报警未报警
+                }
+                break;
+                case SENSOR_TYPE_GAS: // 气体传感器 1个值
                 {
-
-                }break; 
+                    _overSensorBackInfoTemp->gas_sensor.ydata[_TempCount] = _globalSensorInfoTemp->val1;// 气体浓度
+                    strcpy(_overSensorBackInfoTemp->gas_sensor.xAxis[_TempCount], _globalSensorInfoTemp->samp_time);
+                }
+                break;
+                case SENSOR_TYPE_AIR_PRESS:
+                {
+                    _overSensorBackInfoTemp->air_press_sensor.ydata[0][_TempCount] = _globalSensorInfoTemp->val1;
+                    _overSensorBackInfoTemp->air_press_sensor.ydata[1][_TempCount]  = _globalSensorInfoTemp->val2;
+                    strcpy(_overSensorBackInfoTemp->air_press_sensor.xAxis[_TempCount], _globalSensorInfoTemp->samp_time);
+                }
+                break;
+                case 6: // 空调遥控器 没有值
+                {
+                }
+                break;
+                }
+                _TempCount++;
             }
-            */
-            //入队
-//            list_add_tail(_overSensorBackInfoTemp,&_over_all_sensor_back_info.list);
-        //}
+            // 入队
+            list_add_tail(&_overSensorBackInfoTemp->list, &_over_all_sensor_back_info.list);
+            // 释放资源
+            GlobalSensorInfo *node;
+            GlobalSensorInfo *next;
+            list_for_each_entry_safe(node, next, &SensorInfoList.list, list)
+            {
+                list_del(&node->list);
+                free(node);
+            }
+        }
+        lock_s_release(LOCK_ID_SENSOR);
+
         
-        // //参数转换json
-        // ack_str = over_all_sensor_info_to_json(&_over_all_sensor_back_info);   
-        // //释放资源
-        // _OverSensorBackInfo* node;
-        // _OverSensorBackInfo* next;
-        // list_for_each_entry_safe(node, next, &_over_all_sensor_back_info.list, list)
-        // {
-        //     list_del(&node->list);
-        //     free(node);
-        // }
-        /*
         if(strcmp(_over_all_sensor_request.sensorType,"0")==0)
         {
             ack_str = over_sensor_history_info_to_json(&_over_all_sensor_back_info, SENSOR_TYPE_VALUE);
@@ -2365,7 +2407,22 @@ static void sensorStatusMonitoring(void* conn)
         {
             ack_str = over_sensor_history_info_to_json(&_over_all_sensor_back_info, SENSOR_TYPE_LIST);
         }
-        */
+        else if (strcmp(_over_all_sensor_request.sensorType, "6") == 0)
+        {
+            ack_str = over_sensor_history_info_to_json(&_over_all_sensor_back_info, SENSOR_TYPE_LIST);
+        }
+        else ack_str = ctrl_sts_ack_to_json();
+
+                // //参数转换json
+       //  ack_str = over_all_sensor_info_to_json(&_over_all_sensor_back_info);
+        // 释放资源
+        _OverSensorBackInfo *node;
+        _OverSensorBackInfo *next;
+        list_for_each_entry_safe(node, next, &_over_all_sensor_back_info.list, list)
+        {
+            list_del(&node->list);
+            free(node);
+        }
     } 
     #endif
     
@@ -4221,20 +4278,52 @@ static void systemManagent(void *conn)
     //删除用户
     else if(strcmp(_UserRoleManageRequestInfo.type,"deleteUser")==0)
     {
-        //char *pUserlist;
-        //char *pUserListSave;
-       // pUserlist = strtok_r(_UserRoleManageRequestInfo.userIds, ",", &pUserListSave);
+        bool CurUserFlag=false;
+        char *nName = getUserNamebyToken(_UserRoleManageRequestInfo.user_token);
+        if (nName != NULL)
+        {
+            UserInfo User_list;
+            INIT_LIST_HEAD(&User_list.list);
+
+            if (0 == dev_get_user_info(__globalDeviceManage.db, &User_list))
+            {
+                UserInfo *_UserInfoTemp = NULL;
+                list_for_each_entry(_UserInfoTemp, &User_list.list, list)
+                {
+                    if (strcmp(_UserInfoTemp->userName, nName) == 0)
+                    {
+                        if (_UserRoleManageRequestInfo.userIds == _UserInfoTemp->userID)
+                        {
+                            CurUserFlag = true;
+                            break;
+                        }
+                        break;
+                    }
+                }
+            }
+        }
+        if (!CurUserFlag)
+        {
+            // char *pUserlist;
+            // char *pUserListSave;
+            // pUserlist = strtok_r(_UserRoleManageRequestInfo.userIds, ",", &pUserListSave);
 
-        //while (pUserlist != NULL)
-        //{
-            dev_delete_user_info(__globalDeviceManage.db,_UserRoleManageRequestInfo.userIds);
-          //  pUserlist = strtok_r(NULL, ",", &pUserListSave);
-       // }
+            // while (pUserlist != NULL)
+            //{
+            dev_delete_user_info(__globalDeviceManage.db, _UserRoleManageRequestInfo.userIds);
+            //  pUserlist = strtok_r(NULL, ",", &pUserListSave);
+            // }
 
             char temp[100];
-            //sprintf(temp, "$删除$|$用户$|%d", _UserRoleManageRequestInfo.userIds);
+            // sprintf(temp, "$删除$|$用户$|%d", _UserRoleManageRequestInfo.userIds);
             sprintf(temp, "Delete user %d", _UserRoleManageRequestInfo.userIds);
             dev_insert_alarm_ctrl(__globalDeviceManage.db, __globalDeviceManage._globalDevInfo.product_id, 3, temp);
+            ack_str = ctrl_sts_ack_to_json();
+        }
+        else
+        {
+            ack_str = ctrl_breaker_err_ack_to_json("Can't delete logged in users!!!!");
+        }
     }   
     //添加用户
     else if(strcmp(_UserRoleManageRequestInfo.type,"addUser")==0)

+ 1 - 0
pro/src/common.h

@@ -91,6 +91,7 @@ enum
     SENSOR_TYPE_DOOR        = 3 , //门禁传感器
     SENSOR_TYPE_GAS         = 4 , //气体传感器
     SENSOR_TYPE_AIR_PRESS   = 5 ,  //气体、气压传感器
+    SENSOR_TYPE_AIR_Conditioner   = 6,  //空调传感器
     SENSOR_TYPE_DoubleT     = 7   //双头温度
 };
 enum

+ 33 - 32
pro/src/json_handle.c

@@ -2965,24 +2965,24 @@ char* over_sensor_history_info_to_json(_OverSensorBackInfo* _over_all_sensor_bac
         {
             cJSON* data = cJSON_CreateObject();
             cJSON* date_time_xAxis_array = cJSON_CreateArray();
-            if(_over_all_sensor_back_info->sensorType == SENSOR_TYPE_TEMPERATURE||_over_all_sensor_back_info->sensorType == SENSOR_TYPE_DoubleT)
+            if(_temp->sensorType == SENSOR_TYPE_TEMPERATURE||_temp->sensorType == SENSOR_TYPE_DoubleT)
             {
                 for(int i=0;i< TOTAL_COUNT;i++)
                 {  
-                    cJSON_AddStringToObject(date_time_xAxis_array,"",_over_all_sensor_back_info->temp_humi_sensor.xAxis[i]);
+                    cJSON_AddStringToObject(date_time_xAxis_array,"",_temp->temp_humi_sensor.xAxis[i]);
                 }
                 cJSON_AddItemToObject(data,"xAxis",date_time_xAxis_array);
-                cJSON_AddStringToObject(data,"sensorName",_over_all_sensor_back_info->sensorName);
-                cJSON_AddNumberToObject(data,"sensorType",_over_all_sensor_back_info->sensorType);
+                cJSON_AddStringToObject(data,"sensorName",_temp->sensorName);
+                cJSON_AddNumberToObject(data,"sensorType",_temp->sensorType);
                 cJSON* type_data_array = cJSON_CreateArray();
                 cJSON* type_data_temp = cJSON_CreateObject();
                 cJSON_AddStringToObject(type_data_temp,"typeName",language_temperature[__globalDeviceManage._globalDevInfo.product_language]);
-                cJSON* ydate_temp_array = cJSON_CreateFloatArray(_over_all_sensor_back_info->temp_humi_sensor.ydata[0],TOTAL_COUNT);
+                cJSON* ydate_temp_array = cJSON_CreateFloatArray(_temp->temp_humi_sensor.ydata[0],TOTAL_COUNT);
                 cJSON_AddItemToObject(type_data_temp,"ydata",ydate_temp_array);
                 cJSON_AddStringToObject(type_data_temp,"type","0");
                 cJSON_AddItemToArray(type_data_array,type_data_temp);
                 cJSON* type_data_humi = cJSON_CreateObject();
-                if (_over_all_sensor_back_info->sensorType == SENSOR_TYPE_DoubleT)
+                if (_temp->sensorType == SENSOR_TYPE_DoubleT)
                 {
                     cJSON_AddStringToObject(type_data_humi, "typeName", language_temperature[__globalDeviceManage._globalDevInfo.product_language]);
                 }
@@ -2990,62 +2990,64 @@ char* over_sensor_history_info_to_json(_OverSensorBackInfo* _over_all_sensor_bac
                 {
                     cJSON_AddStringToObject(type_data_humi, "typeName", language_humidity[__globalDeviceManage._globalDevInfo.product_language]);
                 }
-                cJSON* ydate_humi_array = cJSON_CreateFloatArray(_over_all_sensor_back_info->temp_humi_sensor.ydata[1],TOTAL_COUNT);
+                cJSON* ydate_humi_array = cJSON_CreateFloatArray(_temp->temp_humi_sensor.ydata[1],TOTAL_COUNT);
                 cJSON_AddItemToObject(type_data_humi,"ydata",ydate_humi_array);
                 cJSON_AddStringToObject(type_data_humi,"type","1");
                 cJSON_AddItemToArray(type_data_array,type_data_humi);
                 //cJSON_AddArrayToObject(data,type_data_array);
-                cJSON_AddItemToArray(data,type_data_array);
+                 cJSON_AddItemToObject(data,"typeData",type_data_array);
             }
-            else if(_over_all_sensor_back_info->sensorType == SENSOR_TYPE_GAS)
+            else if(_temp->sensorType == SENSOR_TYPE_GAS)
             {
                 for(int i=0;i< TOTAL_COUNT;i++)
                 {  
-                    cJSON_AddStringToObject(date_time_xAxis_array,"",_over_all_sensor_back_info->gas_sensor.xAxis[i]);
+                    cJSON_AddStringToObject(date_time_xAxis_array,"",_temp->gas_sensor.xAxis[i]);
                 }
                 cJSON_AddItemToObject(data,"xAxis",date_time_xAxis_array);
-                cJSON_AddStringToObject(data,"sensorName",_over_all_sensor_back_info->sensorName);
-                cJSON_AddNumberToObject(data,"sensorType",_over_all_sensor_back_info->sensorType);
+                cJSON_AddStringToObject(data,"sensorName",_temp->sensorName);
+                cJSON_AddNumberToObject(data,"sensorType",_temp->sensorType);
                 cJSON* type_data_array = cJSON_CreateArray();
                 cJSON* type_data_gas = cJSON_CreateObject();
                 cJSON_AddStringToObject(type_data_gas,"typeName",language_atmosphere_gas[__globalDeviceManage._globalDevInfo.product_language]);
-                cJSON* ydate_gas_array = cJSON_CreateFloatArray(_over_all_sensor_back_info->gas_sensor.ydata,TOTAL_COUNT);
+                cJSON* ydate_gas_array = cJSON_CreateFloatArray(_temp->gas_sensor.ydata,TOTAL_COUNT);
                 cJSON_AddItemToObject(type_data_gas,"ydata",ydate_gas_array);
                 cJSON_AddStringToObject(type_data_gas,"type","0");
                 cJSON_AddItemToArray(type_data_array,type_data_gas);
                 //cJSON_AddArrayToObject(data,type_data_array);
-                cJSON_AddItemToArray(data,type_data_array);
+                 cJSON_AddItemToObject(data,"typeData",type_data_array);
             }
-            else if(_over_all_sensor_back_info->sensorType == SENSOR_TYPE_AIR_PRESS)
+            else if(_temp->sensorType == SENSOR_TYPE_AIR_PRESS)
             {
                 for(int i=0;i< TOTAL_COUNT;i++)
                 {  
-                    cJSON_AddStringToObject(date_time_xAxis_array,"",_over_all_sensor_back_info->air_press_sensor.xAxis[i]);
+                    cJSON_AddStringToObject(date_time_xAxis_array,"",_temp->air_press_sensor.xAxis[i]);
                 }
                 cJSON_AddItemToObject(data,"xAxis",date_time_xAxis_array);
-                cJSON_AddStringToObject(data,"sensorName",_over_all_sensor_back_info->sensorName);
-                cJSON_AddNumberToObject(data,"sensorType",_over_all_sensor_back_info->sensorType);
+                cJSON_AddStringToObject(data,"sensorName",_temp->sensorName);
+                cJSON_AddNumberToObject(data,"sensorType",_temp->sensorType);
                 cJSON* type_data_array = cJSON_CreateArray();
                 cJSON* type_data_air = cJSON_CreateObject();
                 cJSON_AddStringToObject(type_data_air,"typeName",language_atmosphere_airflow[__globalDeviceManage._globalDevInfo.product_language]);
-                cJSON* ydate_air_array = cJSON_CreateFloatArray(_over_all_sensor_back_info->air_press_sensor.ydata[0],TOTAL_COUNT);
+                cJSON* ydate_air_array = cJSON_CreateFloatArray(_temp->air_press_sensor.ydata[0],TOTAL_COUNT);
                 cJSON_AddItemToObject(type_data_air,"ydata",ydate_air_array);
                 cJSON_AddStringToObject(type_data_air,"type","0");
                 cJSON_AddItemToArray(type_data_array,type_data_air);
                 cJSON* type_data_press = cJSON_CreateObject();
                 cJSON_AddStringToObject(type_data_press,"typeName",language_atmosphere_pressure[__globalDeviceManage._globalDevInfo.product_language]);
-                cJSON* ydate_press_array = cJSON_CreateFloatArray(_over_all_sensor_back_info->air_press_sensor.ydata[1],TOTAL_COUNT);
+                cJSON* ydate_press_array = cJSON_CreateFloatArray(_temp->air_press_sensor.ydata[1],TOTAL_COUNT);
                 cJSON_AddItemToObject(type_data_press,"ydata",ydate_press_array);
                 cJSON_AddStringToObject(type_data_press,"type","1");
                 cJSON_AddItemToArray(type_data_array,type_data_press);
                 //cJSON_AddArrayToObject(data,type_data_array);
-                cJSON_AddItemToArray(data,type_data_array);
+                cJSON_AddItemToObject(data,"typeData",type_data_array);
             }
             sprintf(temp, "%d", _temp->sensorId);
             cJSON_AddStringToObject(data,"sensorId",(const char*)temp);
             //cJSON_AddArrayToObject(data_root_array,data);
             cJSON_AddItemToArray(data_root_array,data);
         }
+            //添加汇总
+        cJSON_AddItemToObject(root, "data", data_root_array);
     }
     else if(sensor_type == SENSOR_TYPE_LIST)
     {
@@ -3058,21 +3060,20 @@ char* over_sensor_history_info_to_json(_OverSensorBackInfo* _over_all_sensor_bac
         list_for_each_entry(_temp, &_over_all_sensor_back_info->list, list)
         {
             log_d("sensor_name:%s", _temp->sensorName);
-            sleep(1);
             cJSON* data_filed = cJSON_CreateObject();
-            cJSON_AddNumberToObject(data_filed, "accessControlStatus",_over_all_sensor_back_info->accessControlStatus);
-            cJSON_AddNumberToObject(data_filed,"sensorAddr",_over_all_sensor_back_info->sensorAddr);
+            cJSON_AddNumberToObject(data_filed, "accessControlStatus",_temp->accessControlStatus);
+            cJSON_AddNumberToObject(data_filed,"sensorAddr",_temp->sensorAddr);
             cJSON_AddStringToObject(data_filed,"productName",__globalDeviceManage._globalDevInfo.product_name);
             cJSON_AddStringToObject(data_filed,"productNumber",__globalDeviceManage._globalDevInfo.product_number);
-            cJSON_AddNumberToObject(data_filed, "alarmStatus",_over_all_sensor_back_info->alarmStatus);
-            cJSON_AddNumberToObject(data_filed,"sensorBaud",_over_all_sensor_back_info->sensorBaud);
-            cJSON_AddStringToObject(data_filed,"comSlogan",_over_all_sensor_back_info->comSlogan);
-            cJSON_AddNumberToObject(data_filed, "connectionStatus",_over_all_sensor_back_info->connectionStatus);        
-            cJSON_AddStringToObject(data_filed,"sensorName",_over_all_sensor_back_info->sensorName);
-            sprintf(temp, "%d", _over_all_sensor_back_info->sensorId);
+            cJSON_AddNumberToObject(data_filed, "alarmStatus",_temp->alarmStatus);
+            cJSON_AddNumberToObject(data_filed,"sensorBaud",_temp->sensorBaud);
+            cJSON_AddStringToObject(data_filed,"comSlogan",_temp->comSlogan);
+            cJSON_AddNumberToObject(data_filed, "connectionStatus",_temp->connectionStatus);        
+            cJSON_AddStringToObject(data_filed,"sensorName",_temp->sensorName);
+            sprintf(temp, "%d", _temp->sensorId);
             cJSON_AddStringToObject(data_filed,"sensorId",temp);
-            cJSON_AddNumberToObject(data_filed,"sensorType",_over_all_sensor_back_info->sensorType);
-            cJSON_AddNumberToObject(data_filed, "waterImmersionState",_over_all_sensor_back_info->waterImmersionState);
+            cJSON_AddNumberToObject(data_filed,"sensorType",_temp->sensorType);
+            cJSON_AddNumberToObject(data_filed, "waterImmersionState",_temp->waterImmersionState);
             cJSON_AddItemToObject(data_root_array, "data", data_filed);
         }
         //添加汇总

+ 9 - 8
pro/src/sqlite_handle.c

@@ -495,6 +495,7 @@ int dev_search_latest_power_All_info(GlobalDeviceManager* globalDeviceManger,_Ov
                     log_e("_overChnPwrBackInfoTemp malloc err.");
                     return -1;
                 }
+                memset(_overChnPwrBackInfoTemp,0,sizeof(_OverChnPwrAckInfo));
                 _overChnPwrBackInfoTemp->product_name = globalDeviceManger->_globalDevInfo.product_name;
                 _overChnPwrBackInfoTemp->product_number = globalDeviceManger->_globalDevInfo.product_number;
                 _overChnPwrBackInfoTemp->product_id = globalDeviceManger->_globalDevInfo.product_id;
@@ -558,6 +559,7 @@ int dev_search_latest_power_All_info(GlobalDeviceManager* globalDeviceManger,_Ov
                 log_e("_overChnPwrBackInfoTemp malloc err.");
                 return -1;
             }
+            memset(_overChnPwrBackInfoTemp,0,sizeof(_OverChnPwrAckInfo));
             // 填数据
             _overChnPwrBackInfoTemp->product_name = globalDeviceManger->_globalDevInfo.product_name;
             _overChnPwrBackInfoTemp->product_number = globalDeviceManger->_globalDevInfo.product_number;
@@ -2314,19 +2316,18 @@ int dev_search_sensor_info(sqlite3 *db,
     }
     
     //初始化头
-    GlobalSensorInfo* _temp = _globalSensorInfo;
     for (size_t i = 1; i <= nrow; i++)
     {
         GlobalSensorInfo* _globalSensorInfoTemp = (GlobalSensorInfo*)malloc(sizeof(GlobalSensorInfo));
         if(_globalSensorInfoTemp==NULL)
             return -1 ;
-        strcpy(_globalSensorInfoTemp->samp_time,pResult[i*ncolumn+2]);
-        _globalSensorInfoTemp->product_id = atoi(pResult[i*ncolumn+3]);
-        _globalSensorInfoTemp->sensor_id = atoi(pResult[i*ncolumn+4]);
-        if(pResult[i*ncolumn+5]!=NULL)
-            _globalSensorInfoTemp->val1 = atof(pResult[i*ncolumn+5]);
-        if(pResult[i*ncolumn+6]!=NULL)    
-        _globalSensorInfoTemp->val2 = atof(pResult[i*ncolumn+6]);
+        strcpy(_globalSensorInfoTemp->samp_time,pResult[i*ncolumn+1]);
+        _globalSensorInfoTemp->product_id = atoi(pResult[i*ncolumn+2]);
+        _globalSensorInfoTemp->sensor_id = atoi(pResult[i*ncolumn+3]);
+        if(pResult[i*ncolumn+4]!=NULL)
+            _globalSensorInfoTemp->val1 = atof(pResult[i*ncolumn+4]);
+        if(pResult[i*ncolumn+5]!=NULL)    
+        _globalSensorInfoTemp->val2 = atof(pResult[i*ncolumn+5]);
         //尾部插入
         list_add_tail(&_globalSensorInfoTemp->list, &_globalSensorInfo->list);
     }