Commit d2e01e55 authored by chen.weican's avatar chen.weican

【修改内容】设备强制退网后中控端保留数据修改

【提交人】陈伟灿
parent 00eeb130
...@@ -461,7 +461,7 @@ int dm_mgr_update_timestamp_by_devicecode(_IN_ char deviceCode[DEVICE_CODE_MAXLE ...@@ -461,7 +461,7 @@ int dm_mgr_update_timestamp_by_devicecode(_IN_ char deviceCode[DEVICE_CODE_MAXLE
(memcmp(search_node->deviceCode, deviceCode, strlen(deviceCode)) == 0)) { (memcmp(search_node->deviceCode, deviceCode, strlen(deviceCode)) == 0)) {
/* dm_log_debug("Device Found, Product Key: %s, Device Name: %s", product_key, device_name); */ /* dm_log_debug("Device Found, Product Key: %s, Device Name: %s", product_key, device_name); */
search_node->timestamp = timestamp; search_node->timestamp = timestamp;
if(search_node->dev_type == KK_DM_DEVICE_SUBDEV){ if(search_node->dev_type == KK_DM_DEVICE_SUBDEV && timestamp != 0){
dm_mgr_update_gw_timestamp_by_devicecode(search_node->fatherDeviceCode,timestamp); dm_mgr_update_gw_timestamp_by_devicecode(search_node->fatherDeviceCode,timestamp);
} }
_dm_mgr_mutex_unlock(); _dm_mgr_mutex_unlock();
...@@ -502,7 +502,6 @@ int dm_mgr_set_dev_onoffline(dm_mgr_dev_node_t *node,int isOffline) ...@@ -502,7 +502,6 @@ int dm_mgr_set_dev_onoffline(dm_mgr_dev_node_t *node,int isOffline)
if(node == NULL){ if(node == NULL){
return INVALID_PARAMETER; return INVALID_PARAMETER;
} }
if(isOffline){ if(isOffline){
INFO_PRINT("[%s]dev timeout,send offline\n",__FUNCTION__); INFO_PRINT("[%s]dev timeout,send offline\n",__FUNCTION__);
node->isOffline = KK_DEV_OFFLINE; node->isOffline = KK_DEV_OFFLINE;
...@@ -561,12 +560,14 @@ int dm_mgr_check_heartbeat_timeout(time_t timestamp) ...@@ -561,12 +560,14 @@ int dm_mgr_check_heartbeat_timeout(time_t timestamp)
} }
if((timestamp - search_node->timestamp) >= search_node->hb_timeout){ if((timestamp - search_node->timestamp) >= search_node->hb_timeout){
if(search_node->isOffline != KK_DEV_OFFLINE){ if(search_node->isOffline != KK_DEV_OFFLINE){
INFO_PRINT("[%s]send offline\n",__FUNCTION__);
dm_mgr_set_dev_onoffline(search_node,1); dm_mgr_set_dev_onoffline(search_node,1);
} }
} }
else{ else{
if(search_node->isOffline == KK_DEV_OFFLINE){ if(search_node->isOffline == KK_DEV_OFFLINE){
/*如果是离线状态,上报在线给云端*/ /*如果是离线状态,上报在线给云端*/
INFO_PRINT("[%s]send online\n",__FUNCTION__);
dm_mgr_set_dev_onoffline(search_node,0); dm_mgr_set_dev_onoffline(search_node,0);
} }
} }
......
...@@ -85,5 +85,10 @@ int kk_subFreshAir_query_epnums(const char *deviceCode,int epList[]); ...@@ -85,5 +85,10 @@ int kk_subFreshAir_query_epnums(const char *deviceCode,int epList[]);
int kk_subFreshAir_delete_by_dcode(char deviceCode[DEVICE_CODE_MAXLEN]); int kk_subFreshAir_delete_by_dcode(char deviceCode[DEVICE_CODE_MAXLEN]);
int kk_subFreshAir_db_update_value(const char *deviceCode,const char *identifier,const char* value,int epNum); int kk_subFreshAir_db_update_value(const char *deviceCode,const char *identifier,const char* value,int epNum);
int kk_indoor_air_get_online(const char *deviceCode,int ep); int kk_indoor_air_get_online(const char *deviceCode,int ep);
int kk_subAirSwitch_get_online(const char *deviceCode,int ep);
int kk_subFreshAir_get_online(const char *deviceCode,int ep);
int kk_indoorAir_db_update_online(const char *deviceCode,int online,int epNum);
int kk_subFreshAir_db_update_online(const char *deviceCode,int online,int epNum);
int kk_subAirSwitch_db_update_online(const char *deviceCode,int online,int epNum);
#endif #endif
...@@ -421,11 +421,9 @@ int kk_subDev_check_auth(int devType) ...@@ -421,11 +421,9 @@ int kk_subDev_check_auth(int devType)
char *zErrMsg = 0; char *zErrMsg = 0;
const char *searchCmd = "select * from SubDeviceInfo WHERE devType = '%d';"; const char *searchCmd = "select * from SubDeviceInfo WHERE devType = '%d';";
kk_subDb_ctx_t *ctx = _kk_subDb_get_ctx(); kk_subDb_ctx_t *ctx = _kk_subDb_get_ctx();
printf("------------------------------------------------------->111\n");
sqlCmd = sqlite3_mprintf(searchCmd,devType); sqlCmd = sqlite3_mprintf(searchCmd,devType);
sqlite3_prepare_v2(ctx->pDb, sqlCmd, strlen(sqlCmd), &stmt, NULL); sqlite3_prepare_v2(ctx->pDb, sqlCmd, strlen(sqlCmd), &stmt, NULL);
while(sqlite3_step(stmt) == SQLITE_ROW){ while(sqlite3_step(stmt) == SQLITE_ROW){
printf("------------------------------------------------------->222\n");
char *pDeviceCode = (char*)sqlite3_column_text(stmt, DB_SUB_DEVICECODE); char *pDeviceCode = (char*)sqlite3_column_text(stmt, DB_SUB_DEVICECODE);
char *pProductCode = (char*)sqlite3_column_text(stmt, DB_SUB_PRODUCTCODE); char *pProductCode = (char*)sqlite3_column_text(stmt, DB_SUB_PRODUCTCODE);
kk_msg_cloud_status_notify(pDeviceCode,pProductCode); kk_msg_cloud_status_notify(pDeviceCode,pProductCode);
......
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
extern sqlite3 *g_kk_pDb; extern sqlite3 *g_kk_pDb;
static int kk_check_multi_ep_num(char *deviceCode); static int kk_check_multi_ep_num(char *deviceCode);
static int kk_get_scenes_actions_info(cJSON *actionArray,int id); static int kk_get_scenes_actions_info(cJSON *actionArray,int id,char *productType,char *actionRoomId);
static int kk_get_panel_scenes_actions_info(cJSON *actionArray,int id); static int kk_get_panel_scenes_actions_info(cJSON *actionArray,int id);
static int kk_get_panel_scenes_info(cJSON *actionItem,int id); static int kk_get_panel_scenes_info(cJSON *actionItem,int id);
...@@ -851,14 +851,14 @@ static int kk_get_devices_info(cJSON *data) ...@@ -851,14 +851,14 @@ static int kk_get_devices_info(cJSON *data)
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
int kk_get_room_name_by_scene_id(int scene_id,char *room_name) int kk_get_roomId_by_scene_id(int scene_id,char *roomId)
{ {
int res = -1; int res = -1;
kk_scene_ctx_t *ctx = _kk_scene_get_ctx(); kk_scene_ctx_t *ctx = _kk_scene_get_ctx();
char *sqlCmd = NULL; char *sqlCmd = NULL;
sqlite3_stmt *stmt; sqlite3_stmt *stmt;
int dbepNum = 0; int dbepNum = 0;
char *roomNameStr =NULL; char *roomIdStr =NULL;
const char *selectCmd = "select * from SceneInfo WHERE sceneId = '%d';"; const char *selectCmd = "select * from SceneInfo WHERE sceneId = '%d';";
...@@ -866,8 +866,8 @@ int kk_get_room_name_by_scene_id(int scene_id,char *room_name) ...@@ -866,8 +866,8 @@ int kk_get_room_name_by_scene_id(int scene_id,char *room_name)
sqlCmd = sqlite3_mprintf(selectCmd,scene_id); sqlCmd = sqlite3_mprintf(selectCmd,scene_id);
sqlite3_prepare_v2(ctx->pDb, sqlCmd, strlen(sqlCmd), &stmt, NULL); sqlite3_prepare_v2(ctx->pDb, sqlCmd, strlen(sqlCmd), &stmt, NULL);
while(sqlite3_step(stmt) == SQLITE_ROW){ while(sqlite3_step(stmt) == SQLITE_ROW){
roomNameStr = (char*)sqlite3_column_text(stmt, DB_SCENEINFO_ROOMID); roomIdStr = (char*)sqlite3_column_text(stmt, DB_SCENEINFO_ROOMID);
memcpy(room_name,roomNameStr,strlen(roomNameStr)); memcpy(roomId,roomIdStr,strlen(roomIdStr));
res = 0; res = 0;
break; break;
} }
...@@ -1033,7 +1033,7 @@ static int kk_get_panel_scenes_actions_info(cJSON *actionItem,int id) ...@@ -1033,7 +1033,7 @@ static int kk_get_panel_scenes_actions_info(cJSON *actionItem,int id)
static int kk_get_scenes_actions_info(cJSON *actionArray,int id) static int kk_get_scenes_actions_info(cJSON *actionArray,int id,char *productType,char *actionRoomId)
{ {
char *sqlCmd = NULL; char *sqlCmd = NULL;
//char *zErrMsg = 0; //char *zErrMsg = 0;
...@@ -1041,7 +1041,7 @@ static int kk_get_scenes_actions_info(cJSON *actionArray,int id) ...@@ -1041,7 +1041,7 @@ static int kk_get_scenes_actions_info(cJSON *actionArray,int id)
char *deviceCode = NULL; char *deviceCode = NULL;
char *propertyName = NULL; char *propertyName = NULL;
char *propertyValue = NULL; char *propertyValue = NULL;
char room_name[64] = {0}; char room_id[64] = {0};
cJSON *prtyObj = NULL; cJSON *prtyObj = NULL;
char *type = NULL; char *type = NULL;
...@@ -1067,7 +1067,7 @@ static int kk_get_scenes_actions_info(cJSON *actionArray,int id) ...@@ -1067,7 +1067,7 @@ static int kk_get_scenes_actions_info(cJSON *actionArray,int id)
propertyValue = (char*)sqlite3_column_text(stmt, DB_SCENEACTION_PROPERTYVALUE); propertyValue = (char*)sqlite3_column_text(stmt, DB_SCENEACTION_PROPERTYVALUE);
type = (char*)sqlite3_column_text(stmt, DB_SCENEACTION_TYPE); type = (char*)sqlite3_column_text(stmt, DB_SCENEACTION_TYPE);
kk_get_room_name_by_scene_id(scene_id,room_name);
actionItem = cJSON_CreateObject(); actionItem = cJSON_CreateObject();
...@@ -1087,9 +1087,7 @@ static int kk_get_scenes_actions_info(cJSON *actionArray,int id) ...@@ -1087,9 +1087,7 @@ static int kk_get_scenes_actions_info(cJSON *actionArray,int id)
cJSON_AddNumberToObject(actionItem, KK_SYNC_SCENE_EPNUM_STR, epNum); cJSON_AddNumberToObject(actionItem, KK_SYNC_SCENE_EPNUM_STR, epNum);
} }
//cJSON_AddNumberToObject(actionItem, KK_SYNC_SCENE_EPNUM_STR, epNum); //cJSON_AddNumberToObject(actionItem, KK_SYNC_SCENE_EPNUM_STR, epNum);
cJSON_AddStringToObject(actionItem, KK_SYNC_SCENE_TYPE_STR, type); cJSON_AddStringToObject(actionItem, KK_SYNC_SCENE_TYPE_STR, type);
if(strstr(propertyValue,"{")!=NULL && strstr(propertyValue,"}")!=NULL){ if(strstr(propertyValue,"{")!=NULL && strstr(propertyValue,"}")!=NULL){
prtyObj = cJSON_Parse(propertyValue); prtyObj = cJSON_Parse(propertyValue);
if(prtyObj != NULL){ if(prtyObj != NULL){
...@@ -1097,13 +1095,19 @@ static int kk_get_scenes_actions_info(cJSON *actionArray,int id) ...@@ -1097,13 +1095,19 @@ static int kk_get_scenes_actions_info(cJSON *actionArray,int id)
}else{ }else{
cJSON_AddStringToObject(actionItem, KK_SYNC_SCENE_PROPERTYVALUE_STR, propertyValue); cJSON_AddStringToObject(actionItem, KK_SYNC_SCENE_PROPERTYVALUE_STR, propertyValue);
} }
}else{ }else{
cJSON_AddStringToObject(actionItem, KK_SYNC_SCENE_PROPERTYVALUE_STR, propertyValue); cJSON_AddStringToObject(actionItem, KK_SYNC_SCENE_PROPERTYVALUE_STR, propertyValue);
} }
if(strcmp(productType,"") != 0){
cJSON_AddStringToObject(actionItem, KK_SYNC_ROOMID_STR, room_name); cJSON_AddStringToObject(actionItem, KK_SYNC_SCENE_PRODUCTTYPE, productType);
cJSON_AddItemToArray(actionArray, actionItem); cJSON_AddStringToObject(actionItem, KK_SYNC_ROOMID_STR, actionRoomId);
cJSON_AddItemToArray(actionArray, actionItem);
break;
}else{
kk_get_roomId_by_scene_id(scene_id,room_id);
cJSON_AddStringToObject(actionItem, KK_SYNC_ROOMID_STR, room_id);
cJSON_AddItemToArray(actionArray, actionItem);
}
} }
sqlite3_free(sqlCmd); sqlite3_free(sqlCmd);
sqlite3_finalize(stmt); sqlite3_finalize(stmt);
...@@ -1342,6 +1346,8 @@ static int kk_get_scenes_info(cJSON *data) ...@@ -1342,6 +1346,8 @@ static int kk_get_scenes_info(cJSON *data)
char *name = NULL; char *name = NULL;
char *roomId = NULL; char *roomId = NULL;
char *sceneId = NULL; char *sceneId = NULL;
char *productType = NULL;
char *actionRoomId = NULL;
kk_sync_ctx_t *ctx = _kk_sync_get_ctx(); kk_sync_ctx_t *ctx = _kk_sync_get_ctx();
if(data == NULL){ if(data == NULL){
return FAIL_RETURN; return FAIL_RETURN;
...@@ -1363,10 +1369,12 @@ static int kk_get_scenes_info(cJSON *data) ...@@ -1363,10 +1369,12 @@ static int kk_get_scenes_info(cJSON *data)
cJSON_AddStringToObject(sceneArrayItem, KK_SYNC_NANE_STR, name); cJSON_AddStringToObject(sceneArrayItem, KK_SYNC_NANE_STR, name);
sceneId = (char*)sqlite3_column_text(stmt, DB_SCENEINFO_SCENEID); sceneId = (char*)sqlite3_column_text(stmt, DB_SCENEINFO_SCENEID);
roomId = (char*)sqlite3_column_text(stmt, DB_SCENEINFO_ROOMID); roomId = (char*)sqlite3_column_text(stmt, DB_SCENEINFO_ROOMID);
productType = (char*)sqlite3_column_text(stmt, DB_SCENEINFO_PRODUCTTYPE);
actionRoomId = (char*)sqlite3_column_text(stmt, DB_SCENEINFO_ACTIONROOMID);
cJSON_AddStringToObject(sceneArrayItem, KK_SYNC_ROOMID_STR, roomId); cJSON_AddStringToObject(sceneArrayItem, KK_SYNC_ROOMID_STR, roomId);
cJSON_AddStringToObject(sceneArrayItem, KK_SYNC_SCENEID_STR, sceneId); cJSON_AddStringToObject(sceneArrayItem, KK_SYNC_SCENEID_STR, sceneId);
cJSON *actionArray = cJSON_CreateArray(); cJSON *actionArray = cJSON_CreateArray();
kk_get_scenes_actions_info(actionArray,atoi(sceneId)); kk_get_scenes_actions_info(actionArray,atoi(sceneId),productType,actionRoomId);
cJSON_AddItemToObject(sceneArrayItem, KK_SYNC_SCENE_ACTIONS_STR, actionArray); cJSON_AddItemToObject(sceneArrayItem, KK_SYNC_SCENE_ACTIONS_STR, actionArray);
cJSON *triggerObj = cJSON_CreateObject(); cJSON *triggerObj = cJSON_CreateObject();
kk_get_scenes_trigger_info(triggerObj,sceneId); kk_get_scenes_trigger_info(triggerObj,sceneId);
......
...@@ -1412,17 +1412,17 @@ void kk_platMsg_handle(void* data, char* chalMark){ ...@@ -1412,17 +1412,17 @@ void kk_platMsg_handle(void* data, char* chalMark){
if(strcmp(search_node->productType,KK_DM_AIR_GATEWAY_TYPE) == 0){ if(strcmp(search_node->productType,KK_DM_AIR_GATEWAY_TYPE) == 0){
cJSON *epNumJson = cJSON_GetObjectItem(jsonPay, "epNum"); cJSON *epNumJson = cJSON_GetObjectItem(jsonPay, "epNum");
if(epNumJson == NULL) goto error; if(epNumJson == NULL) goto error;
kk_indoorAir_db_update_online(search_node,0,epNumJson->valueint); kk_indoorAir_db_update_online((char*)search_node->deviceCode,0,epNumJson->valueint);
_kk_subDevice_online_to_app(info,payload); _kk_subDevice_online_to_app(info,payload);
}else if(strcmp(search_node->productType,KK_DM_AIR_SWITCH_GATEWAY_TYPE) == 0){ }else if(strcmp(search_node->productType,KK_DM_AIR_SWITCH_GATEWAY_TYPE) == 0){
cJSON *epNumJson = cJSON_GetObjectItem(jsonPay, "epNum"); cJSON *epNumJson = cJSON_GetObjectItem(jsonPay, "epNum");
if(epNumJson == NULL) goto error; if(epNumJson == NULL) goto error;
kk_subAirSwitch_db_update_online(search_node,0,epNumJson->valueint); kk_subAirSwitch_db_update_online((char*)search_node->deviceCode,0,epNumJson->valueint);
_kk_subDevice_online_to_app(info,payload); _kk_subDevice_online_to_app(info,payload);
}else if(strcmp(search_node->productType,KK_DM_FRESHAIR_GATEWAY_TYPE) == 0){ }else if(strcmp(search_node->productType,KK_DM_FRESHAIR_GATEWAY_TYPE) == 0){
cJSON *epNumJson = cJSON_GetObjectItem(jsonPay, "epNum"); cJSON *epNumJson = cJSON_GetObjectItem(jsonPay, "epNum");
if(epNumJson == NULL) goto error; if(epNumJson == NULL) goto error;
kk_subFreshAir_db_update_online(search_node,0,epNumJson->valueint); kk_subFreshAir_db_update_online((char*)search_node->deviceCode,0,epNumJson->valueint);
_kk_subDevice_online_to_app(info,payload); _kk_subDevice_online_to_app(info,payload);
} }
} }
...@@ -1489,12 +1489,20 @@ void kk_platMsg_handle(void* data, char* chalMark){ ...@@ -1489,12 +1489,20 @@ void kk_platMsg_handle(void* data, char* chalMark){
free(outstr); free(outstr);
} }
}else if(strstr(msgType->valuestring, KK_THING_TOPO_DELETE_MSG) != NULL){ }else if(strstr(msgType->valuestring, KK_THING_TOPO_DELETE_MSG) != NULL){
dm_mgr_dev_node_t *node = NULL;
INFO_PRINT("kk_platMsg_handle data: handle delete\n"); INFO_PRINT("kk_platMsg_handle data: handle delete\n");
jsonPay = cJSON_GetObjectItem(payload, MSG_PARAMS_STR); jsonPay = cJSON_GetObjectItem(payload, MSG_PARAMS_STR);
if(jsonPay == NULL) goto error; if(jsonPay == NULL) goto error;
devCode = cJSON_GetObjectItem(jsonPay, MSG_DEVICE_CODE_STR); devCode = cJSON_GetObjectItem(jsonPay, MSG_DEVICE_CODE_STR);
kk_ipc_send(IPC_MID2APP,data,strlen(data)+1); res = dm_mgr_get_device_by_devicecode(devCode->valuestring,&node);
dm_mgr_subdev_delete(devCode->valuestring); if (res < SUCCESS_RETURN) {
goto error;
}
printf("--------------------------------------->11111111111111111111113333\n");
dm_mgr_update_timestamp_by_devicecode(node->deviceCode,0);
dm_mgr_set_dev_onoffline(node,1);
//kk_ipc_send(IPC_MID2APP,data,strlen(data)+1);
//dm_mgr_subdev_delete(devCode->valuestring);
}else if(strstr(msgType->valuestring, KK_THING_EVENT_MESSAGE) != NULL && \ }else if(strstr(msgType->valuestring, KK_THING_EVENT_MESSAGE) != NULL && \
strstr(msgType->valuestring, KK_THING_EVENT_POST) != NULL){ strstr(msgType->valuestring, KK_THING_EVENT_POST) != NULL){
......
...@@ -51,7 +51,9 @@ int kk_scene_db_init(void) ...@@ -51,7 +51,9 @@ int kk_scene_db_init(void)
sceneName varchar(255), \ sceneName varchar(255), \
sceneType INTEGER, \ sceneType INTEGER, \
enable INTEGER, \ enable INTEGER, \
sceneId varchar(255) UNIQUE)"; sceneId varchar(255) UNIQUE, \
productType varchar(255),\
actionRoomId varchar(255))";
if (sqlite3_exec(ctx->pDb, pSceneTable, NULL, NULL, &pcErr) != SQLITE_OK) if (sqlite3_exec(ctx->pDb, pSceneTable, NULL, NULL, &pcErr) != SQLITE_OK)
{ {
...@@ -247,18 +249,18 @@ int kk_scene_update_scene_enable(int enable,const char *sceneId) ...@@ -247,18 +249,18 @@ int kk_scene_update_scene_enable(int enable,const char *sceneId)
*其他说明: *其他说明:
*************************************************************/ *************************************************************/
int kk_scene_insert_scene_info(const char* roomId,const char* sceneName,int sceneType,int enable,const char* sceneId) int kk_scene_insert_scene_info(const char* roomId,const char* sceneName,int sceneType,int enable,const char* sceneId,char *productType,char *actionRoomId)
{ {
int res = 0; int res = 0;
kk_scene_ctx_t *ctx = _kk_scene_get_ctx(); kk_scene_ctx_t *ctx = _kk_scene_get_ctx();
char *sqlCmd = NULL; char *sqlCmd = NULL;
char *zErrMsg = 0; char *zErrMsg = 0;
const char *insertCmd = "insert into SceneInfo (roomId,sceneName, sceneType,enable,sceneId) \ const char *insertCmd = "insert into SceneInfo (roomId,sceneName, sceneType,enable,sceneId,productType,actionRoomId) \
values ('%s','%s','%d','%d','%s');"; values ('%s','%s','%d','%d','%s','%s','%s');";
_kk_scene_lock(); _kk_scene_lock();
sqlCmd = sqlite3_mprintf(insertCmd,roomId,sceneName,sceneType,enable,sceneId); sqlCmd = sqlite3_mprintf(insertCmd,roomId,sceneName,sceneType,enable,sceneId,productType,actionRoomId);
res = sqlite3_exec(ctx->pDb, sqlCmd, NULL, NULL, &zErrMsg); res = sqlite3_exec(ctx->pDb, sqlCmd, NULL, NULL, &zErrMsg);
if( res != SQLITE_OK ){ if( res != SQLITE_OK ){
ERROR_PRINT("SQL error: %s\n", zErrMsg); ERROR_PRINT("SQL error: %s\n", zErrMsg);
...@@ -273,6 +275,64 @@ int kk_scene_insert_scene_info(const char* roomId,const char* sceneName,int scen ...@@ -273,6 +275,64 @@ int kk_scene_insert_scene_info(const char* roomId,const char* sceneName,int scen
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
/************************************************************ /************************************************************
*功能描述:更新场景设备类型
*输入参数:sceneId:场景Id
productType:类型
*输出参数:无
*返 回 值:0:成功;其他:失败
*其他说明:
*************************************************************/
int kk_scene_update_productType(const char *sceneId,char *productType)
{
char *sqlCmd = NULL;
int rc = 0;
char *zErrMsg = 0;
kk_scene_ctx_t *ctx = _kk_scene_get_ctx();
_kk_scene_lock();
sqlCmd = sqlite3_mprintf("UPDATE SceneInfo SET productType='%s' WHERE sceneId= '%s'",productType,sceneId);
INFO_PRINT("kk_scene_update_productType sqlCmd:%s\n",sqlCmd);
rc = sqlite3_exec(ctx->pDb, sqlCmd, NULL, NULL, &zErrMsg);
if( rc != SQLITE_OK ){
ERROR_PRINT("SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
}else{
INFO_PRINT("Table updata data successfully\n");
}
sqlite3_free(sqlCmd);
_kk_scene_unlock();
return SUCCESS_RETURN;
}
/************************************************************
*功能描述:更新场景设备类型
*输入参数:sceneId:场景Id
productType:类型
*输出参数:无
*返 回 值:0:成功;其他:失败
*其他说明:
*************************************************************/
int kk_scene_update_actionRoomId(const char *sceneId,char *roomId)
{
char *sqlCmd = NULL;
int rc = 0;
char *zErrMsg = 0;
kk_scene_ctx_t *ctx = _kk_scene_get_ctx();
_kk_scene_lock();
sqlCmd = sqlite3_mprintf("UPDATE SceneInfo SET actionRoomId='%s' WHERE sceneId= '%s'",roomId,sceneId);
INFO_PRINT("kk_scene_update_actionRoomId sqlCmd:%s\n",sqlCmd);
rc = sqlite3_exec(ctx->pDb, sqlCmd, NULL, NULL, &zErrMsg);
if( rc != SQLITE_OK ){
ERROR_PRINT("SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
}else{
INFO_PRINT("Table updata data successfully\n");
}
sqlite3_free(sqlCmd);
_kk_scene_unlock();
return SUCCESS_RETURN;
}
/************************************************************
*功能描述: 添加情景面板信息到数据库 *功能描述: 添加情景面板信息到数据库
*输入参数: name:场景名称 *输入参数: name:场景名称
enable: 1,使能;0,不使能 enable: 1,使能;0,不使能
......
...@@ -15,6 +15,8 @@ enum{ ...@@ -15,6 +15,8 @@ enum{
DB_SCENEINFO_SCENETYPE, DB_SCENEINFO_SCENETYPE,
DB_SCENEINFO_ENABLE, DB_SCENEINFO_ENABLE,
DB_SCENEINFO_SCENEID, DB_SCENEINFO_SCENEID,
DB_SCENEINFO_PRODUCTTYPE,
DB_SCENEINFO_ACTIONROOMID,
}; };
enum{ enum{
...@@ -93,12 +95,13 @@ int kk_scene_insert_scene_condition(const char* type,int startTime,int endTime,i ...@@ -93,12 +95,13 @@ int kk_scene_insert_scene_condition(const char* type,int startTime,int endTime,i
char repeat_days,const char* sceneId); char repeat_days,const char* sceneId);
int kk_scene_insert_scene_trigger(const char* type,const char* deviceCode,int epNum,const char* propertyName, int kk_scene_insert_scene_trigger(const char* type,const char* deviceCode,int epNum,const char* propertyName,
const char* compareType,const char* compareValue,const char* sceneId,int isAnd); const char* compareType,const char* compareValue,const char* sceneId,int isAnd);
int kk_scene_insert_scene_info(const char* roomName,const char* name,int sceneType,int enable,const char* sceneId); int kk_scene_insert_scene_info(const char* roomId,const char* sceneName,int sceneType,int enable,const char* sceneId,char *productType,char *actionRoomId);
int kk_scene_update_scene_enable(int enable,const char *sceneId); int kk_scene_update_scene_enable(int enable,const char *sceneId);
int kk_scene_db_init(void); int kk_scene_db_init(void);
int kk_scene_insert_panel_scene_info(int bindType,char *buttonId,char *deviceCode,const char* sceneId,const char* roomId,const char* productType); int kk_scene_insert_panel_scene_info(int bindType,char *buttonId,char *deviceCode,const char* sceneId,const char* roomId,const char* productType);
int kk_scene_delete_quickpanel_info(char *buttonId,char* deviceCode); int kk_scene_delete_quickpanel_info(char *buttonId,char* deviceCode);
int kk_scene_delete_panel_scene_info(char *buttonId,char *deviceCode); int kk_scene_delete_panel_scene_info(char *buttonId,char *deviceCode);
int kk_scene_deleteall_panel_scene_info(char *deviceCode); int kk_scene_deleteall_panel_scene_info(char *deviceCode);
int kk_scene_update_productType(const char *sceneId,char *productType);
int kk_scene_update_actionRoomId(const char *sceneId,char *roomId);
#endif #endif
...@@ -295,7 +295,6 @@ void *kk_scene_yield(void *args) ...@@ -295,7 +295,6 @@ void *kk_scene_yield(void *args)
*返 回 值: 0:成功;其他:失败 *返 回 值: 0:成功;其他:失败
*其他说明: *其他说明:
*************************************************************/ *************************************************************/
int kk_scene_init(void) int kk_scene_init(void)
{ {
int res = 0; int res = 0;
...@@ -829,7 +828,6 @@ void BodySensorNoActive_report(char *deviceCode,int noAct) ...@@ -829,7 +828,6 @@ void BodySensorNoActive_report(char *deviceCode,int noAct)
} }
int BodySensorTrigger_check(void) int BodySensorTrigger_check(void)
{ {
BodySensorNoActive *ptr = NULL; BodySensorNoActive *ptr = NULL;
...@@ -1409,6 +1407,8 @@ int kk_scene_parse_scene_action(const cJSON* str,const char *sceneId,int isUpdat ...@@ -1409,6 +1407,8 @@ int kk_scene_parse_scene_action(const cJSON* str,const char *sceneId,int isUpdat
roomId = cJSON_GetObjectItem(item,MSG_AREA_ROOM_ROOMID); roomId = cJSON_GetObjectItem(item,MSG_AREA_ROOM_ROOMID);
} }
delay = cJSON_GetObjectItem(item,MSG_SCENE_DELAY); delay = cJSON_GetObjectItem(item,MSG_SCENE_DELAY);
kk_scene_update_productType((char*)sceneId,productType->valuestring);
kk_scene_update_actionRoomId((char*)sceneId,roomId->valuestring);
if(delay == NULL) return FAIL_RETURN; if(delay == NULL) return FAIL_RETURN;
int idelay = delay->valueint; int idelay = delay->valueint;
if(propertyValue->type==cJSON_String){ if(propertyValue->type==cJSON_String){
...@@ -1605,9 +1605,9 @@ int kk_scene_parse_addscene(const cJSON* args,char *sceneId,int isUpdate,const c ...@@ -1605,9 +1605,9 @@ int kk_scene_parse_addscene(const cJSON* args,char *sceneId,int isUpdate,const c
if(room_id != NULL){ if(room_id != NULL){
//char roomIdStr[32] = {0}; //char roomIdStr[32] = {0};
//snprintf(roomIdStr,32,"%d",room_id->valuestring); //snprintf(roomIdStr,32,"%d",room_id->valuestring);
res = kk_scene_insert_scene_info(room_id->valuestring,name->valuestring,sceneType->valueint,enable->valueint,sceneId); res = kk_scene_insert_scene_info(room_id->valuestring,name->valuestring,sceneType->valueint,enable->valueint,sceneId,"","");
}else{ }else{
res = kk_scene_insert_scene_info("-1",name->valuestring,sceneType->valueint,enable->valueint,sceneId); res = kk_scene_insert_scene_info("-1",name->valuestring,sceneType->valueint,enable->valueint,sceneId,"","");
} }
/*多控直接下发给网关处理*/ /*多控直接下发给网关处理*/
if(enable->valueint == 1 && sceneType->valueint == DB_SCENETYPE_MUTICONTROL){ if(enable->valueint == 1 && sceneType->valueint == DB_SCENETYPE_MUTICONTROL){
......
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