Commit 0b3af3e9 authored by 陈伟灿's avatar 陈伟灿

Merge branch 'cwc' into 'master'

【修改内容】修改空调内机房间待分配问题

See merge request chenweican/k-sdk!186
parents d304a5d8 7a3ff60f
......@@ -438,7 +438,7 @@ int kk_floor_delete_by_id(char *floorId)
_kk_area_unlock();
return SUCCESS_RETURN;
}
static int _kk_check_dev_exist(const char* deviceCode,const char *epNum)
int kk_check_dev_exist_inRoom(const char* deviceCode,const char *epNum)
{
int isExist = 0;
sqlite3_stmt *stmt;
......@@ -465,7 +465,35 @@ static int _kk_check_dev_exist(const char* deviceCode,const char *epNum)
_kk_area_unlock();
return isExist;
}
int kk_check_dev_exist_roomId(const char* deviceCode,const char *epNum,char *roomId)
{
int isExist = 0;
sqlite3_stmt *stmt;
char *pDeviceCode = NULL;
char *pEpNum = NULL;
char *sqlCmd = NULL;
kk_area_ctx_t *ctx = _kk_area_get_ctx();
const char *searchCmd = "select * from AreaDevInfo where roomId = '%s';";
_kk_area_lock();
sqlCmd = sqlite3_mprintf(searchCmd,roomId);
sqlite3_prepare_v2(ctx->pDb, sqlCmd, strlen(sqlCmd), &stmt, NULL);
//INFO_PRINT("total_column = %d\n", sqlite3_column_count(stmt));
while(sqlite3_step(stmt) == SQLITE_ROW){
pDeviceCode = (char*)sqlite3_column_text(stmt, DB_DEV_DEVICECODE);
pEpNum = (char*)sqlite3_column_text(stmt, DB_DEV_EPNUM);
if(!strcmp(deviceCode,pDeviceCode) && !strcmp(pEpNum,epNum))
{
isExist = 1;
INFO_PRINT("kk_check_dev_exist_roomId\n");
break;
}
}
//INFO_PRINT("\n");
sqlite3_free(sqlCmd);
sqlite3_finalize(stmt);
_kk_area_unlock();
return isExist;
}
int kk_room_dev_add(const char *roomId,const char *roomName,const char *deviceCode,const char *epNum,const char *devName)
{
int res = 0;
......@@ -474,7 +502,7 @@ int kk_room_dev_add(const char *roomId,const char *roomName,const char *deviceCo
char *zErrMsg = 0;
if(_kk_check_dev_exist(deviceCode,epNum)){
if(kk_check_dev_exist_inRoom(deviceCode,epNum)){
sqlCmd = sqlite3_mprintf("UPDATE AreaDevInfo SET roomId='%s', roomName='%s', devName='%s'\
WHERE deviceCode= '%s' and epNum = '%s'",roomId,roomName,devName,deviceCode,epNum);
}
......
......@@ -59,5 +59,7 @@ cJSON * kk_get_roomids_by_floorId(const char* floorId);
int kk_creater_floorid(char *floorId);
void kk_free_floor_list(void);
cJSON *kk_get_roomIds_ary(void);
int kk_check_dev_exist_inRoom(const char* deviceCode,const char *epNum);
int kk_check_dev_exist_roomId(const char* deviceCode,const char *epNum,char *roomId);
#endif
......@@ -773,6 +773,7 @@ static int kk_service_addDeviceToRoom_handle(cJSON *params)
//kk_scene_update_device_active(deviceCode->valuestring,atoi(epNumStr),1);
//kk_scene_rebuild_device_active(deviceCode->valuestring,atoi(epNumStr));
//内机默认添加到跟网关同个房间
#if 0
if(strcmp(node->productType,KK_DM_AIR_GATEWAY_TYPE) == 0 && isAirGwFlag == 1){
int eplist[64] = {0};
char name[128] = {0};
......@@ -813,6 +814,7 @@ static int kk_service_addDeviceToRoom_handle(cJSON *params)
kk_room_dev_add(roomId->valuestring,room_name->valuestring,deviceCode->valuestring,epNumStr,name);
}
}
#endif
return SUCCESS_RETURN;
}
/************************************************************
......
......@@ -617,7 +617,7 @@ int kk_get_product_type_table_size(void)
{
return sizeof(producTypeMap)/sizeof(productype_map_s);
}
static int _kk_indoor_air_info_handle(char* deviceCode,char* propertyName,char* propertyValue,int ep,int delay,char* gwDeviceCode,char*sceneId,char* type)
static int _kk_indoor_air_info_handle(char* deviceCode,char* propertyName,char* propertyValue,int ep,int delay,char* gwDeviceCode,char*sceneId,char* type,int insert)
{
int res = 0;
kk_scene_action_detail_t info = {0};
......@@ -627,22 +627,38 @@ static int _kk_indoor_air_info_handle(char* deviceCode,char* propertyName,char*
info.epNum = ep;
info.delay = delay;
kk_scene_action_add(gwDeviceCode,sceneId,info);
if(insert){
res = kk_scene_insert_scene_action(type,deviceCode,info.epNum,
propertyName,propertyValue,info.delay,sceneId,gwDeviceCode);
if(res != SUCCESS_RETURN){
INFO_PRINT("kk_subDev_set_action_by_productType fail!!!\n");
}
}
return res;
}
static int _kk_indoor_air_handle(char* deviceCode, char *sceneId, char *propertyName, char *propertyValue, char *type,int delay, char*gwDeviceCode)
static int _kk_indoor_air_handle(char* deviceCode, char *sceneId, char *propertyName, char *propertyValue, char *type,int delay, char*gwDeviceCode,char *roomId)
{
int eplist[64] = {0};
char data[32] = {0};
char ep[8] = {0};
int res = 0;
int i = 0;
int allRoom = (strcmp(roomId,"-1")==0)?1:0;
int count = kk_indoorAir_query_epnums(deviceCode,eplist);
for(i = 0; i < count; i++){
memset(ep,0x0,sizeof(ep));
sprintf(ep,"%d",eplist[i]);
if(allRoom == 1){
if(kk_check_dev_exist_inRoom(deviceCode,ep) == 0){
INFO_PRINT("do not handle the indoor air not in room!!!\n");
continue;
}
}else{
if(kk_check_dev_exist_roomId(deviceCode,ep,roomId) == 0){
INFO_PRINT("do not handle the indoor air not in room!!!\n");
continue;
}
}
if(strcmp(propertyName,"CustomAction") == 0){
cJSON* json = cJSON_Parse(propertyValue);
if (json == NULL) {
......@@ -652,20 +668,22 @@ static int _kk_indoor_air_handle(char* deviceCode, char *sceneId, char *property
if(Temperature == NULL) { cJSON_Delete(json);return -1;}
memset(data,0x0,sizeof(data));
sprintf(data,"%f",Temperature->valuedouble);
_kk_indoor_air_info_handle(deviceCode,"Temperature",data,eplist[i],delay,gwDeviceCode,sceneId,type);
_kk_indoor_air_info_handle(deviceCode,"Temperature",data,eplist[i],delay,gwDeviceCode,sceneId,type,0);
cJSON* WindSpeed = cJSON_GetObjectItem(json, "WindSpeed");
if(WindSpeed == NULL) { cJSON_Delete(json);return -1;}
memset(data,0x0,sizeof(data));
sprintf(data,"%d",WindSpeed->valueint);
_kk_indoor_air_info_handle(deviceCode,"WindSpeed",data,eplist[i],delay,gwDeviceCode,sceneId,type);
_kk_indoor_air_info_handle(deviceCode,"WindSpeed",data,eplist[i],delay,gwDeviceCode,sceneId,type,0);
cJSON* WorkMode = cJSON_GetObjectItem(json, "WorkMode");
if(WorkMode == NULL){ cJSON_Delete(json);return -1;}
memset(data,0x0,sizeof(data));
sprintf(data,"%d",WorkMode->valueint);
_kk_indoor_air_info_handle(deviceCode,"WorkMode",data,eplist[i],delay,gwDeviceCode,sceneId,type);
_kk_indoor_air_info_handle(deviceCode,"WorkMode",data,eplist[i],delay,gwDeviceCode,sceneId,type,0);
cJSON_Delete(json);
kk_scene_insert_scene_action(type,deviceCode,eplist[i],
propertyName,propertyValue,delay,sceneId,gwDeviceCode);
}else{
_kk_indoor_air_info_handle(deviceCode,propertyName,propertyValue,eplist[i],delay,gwDeviceCode,sceneId,type);
_kk_indoor_air_info_handle(deviceCode,propertyName,propertyValue,eplist[i],delay,gwDeviceCode,sceneId,type,1);
}
}
return 0;
......@@ -704,7 +722,7 @@ static int _kk_air_switch_handle(char* deviceCode, char *sceneId, char *property
cJSON_Delete(json);
#endif
}else{
_kk_indoor_air_info_handle(deviceCode,propertyName,propertyValue,eplist[i],delay,gwDeviceCode,sceneId,type);
//_kk_indoor_air_info_handle(deviceCode,propertyName,propertyValue,eplist[i],delay,gwDeviceCode,sceneId,type,1);
}
}
return 0;
......@@ -758,7 +776,8 @@ int kk_subDev_set_action_by_productType(const char *productType,const char *room
continue;
}
if(strcmp(typeArray[k],KK_DM_AIR_GATEWAY_TYPE) == 0){
_kk_indoor_air_handle(pDeviceCode,(char*)sceneId,(char*)propertyName,(char*)propertyValue,(char*)type,delay,node->fatherDeviceCode);
devIsExsit = 1;
_kk_indoor_air_handle(pDeviceCode,(char*)sceneId,(char*)propertyName,(char*)propertyValue,(char*)type,delay,node->fatherDeviceCode,roomId);
continue;
}else if(strcmp(typeArray[k],KK_DM_AIR_SWITCH_GATEWAY_TYPE) == 0){
_kk_air_switch_handle(pDeviceCode,(char*)sceneId,(char*)propertyName,(char*)propertyValue,(char*)type,delay,node->fatherDeviceCode);
......
......@@ -1263,14 +1263,14 @@ static int kk_indoorAir_online_handle(dm_mgr_dev_node_t *node ,char *deviceCode,
}
kk_indoorAir_db_insert(deviceCode,property->identifier,property->data_value.type,epNum);
}
gwExist = kk_get_device_roomInfo(deviceCode,1,roomName,roomId);//获取网关房间信息
if(gwExist){
char name[128] = {0};
sprintf(name,"空调%d",epNum);
sprintf(epNumStr,"%d",epNum);
kk_room_dev_add(roomId,roomName,deviceCode,epNumStr,name);
//gwExist = kk_get_device_roomInfo(deviceCode,1,roomName,roomId);//获取网关房间信息
//if(gwExist){
//char name[128] = {0};
//sprintf(name,"空调%d",epNum);
//sprintf(epNumStr,"%d",epNum);
//kk_room_dev_add(roomId,roomName,deviceCode,epNumStr,name);
}
//}
return 0;
}
static int kk_subAirSwitch_online_handle(dm_mgr_dev_node_t *node ,char *deviceCode,int epNum)
......@@ -1291,14 +1291,14 @@ static int kk_subAirSwitch_online_handle(dm_mgr_dev_node_t *node ,char *deviceCo
}
kk_subAirSwitch_db_insert(deviceCode,property->identifier,property->data_value.type,epNum);
}
gwExist = kk_get_device_roomInfo(deviceCode,1,roomName,roomId);//获取网关房间信息
if(gwExist){
char name[128] = {0};
sprintf(name,"空开%d",epNum);
sprintf(epNumStr,"%d",epNum);
kk_room_dev_add(roomId,roomName,deviceCode,epNumStr,name);
//gwExist = kk_get_device_roomInfo(deviceCode,1,roomName,roomId);//获取网关房间信息
//if(gwExist){
//char name[128] = {0};
//sprintf(name,"空开%d",epNum);
//sprintf(epNumStr,"%d",epNum);
//kk_room_dev_add(roomId,roomName,deviceCode,epNumStr,name);
}
//}
return 0;
}
static int kk_subFreshair_online_handle(dm_mgr_dev_node_t *node ,char *deviceCode,int epNum)
......@@ -1319,14 +1319,14 @@ static int kk_subFreshair_online_handle(dm_mgr_dev_node_t *node ,char *deviceCod
}
kk_subFreshAir_db_insert(deviceCode,property->identifier,property->data_value.type,epNum);
}
gwExist = kk_get_device_roomInfo(deviceCode,1,roomName,roomId);//获取网关房间信息
if(gwExist){
char name[128] = {0};
sprintf(name,"新风%d",epNum);
sprintf(epNumStr,"%d",epNum);
kk_room_dev_add(roomId,roomName,deviceCode,epNumStr,name);
//gwExist = kk_get_device_roomInfo(deviceCode,1,roomName,roomId);//获取网关房间信息
//if(gwExist){
//char name[128] = {0};
//sprintf(name,"新风%d",epNum);
//sprintf(epNumStr,"%d",epNum);
//kk_room_dev_add(roomId,roomName,deviceCode,epNumStr,name);
}
//}
return 0;
}
void kk_platMsg_handle(void* data, char* chalMark){
......@@ -2065,10 +2065,6 @@ int main(const int argc, const char **argv)
//int i;
//kk_tsl_t *dev_shadow[30] = {NULL};
mid_ctx_t *mid_ctx = kk_mid_get_ctx();
openlog("midware",LOG_PID,LOG_USER);
memset(mid_ctx, 0, sizeof(mid_ctx_t));
#ifdef CONFIG_NDK
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment