Commit c58f1bab authored by 陈伟灿's avatar 陈伟灿

Merge branch 'yjq' into 'master'

20210813

See merge request chenweican/k-sdk!105
parents d34621bd 8865bb27
...@@ -127,7 +127,7 @@ static int kk_send_ack(cJSON *root,int sockfd) ...@@ -127,7 +127,7 @@ static int kk_send_ack(cJSON *root,int sockfd)
strcat(tmpBuf,"!"); strcat(tmpBuf,"!");
strcat(tmpBuf,out); strcat(tmpBuf,out);
strcat(tmpBuf,"$"); strcat(tmpBuf,"$");
printf("tmpBuf:%s\n",tmpBuf); INFO_PRINT("tmpBuf:%s\n",tmpBuf);
send(sockfd, tmpBuf, strlen(tmpBuf), 0); send(sockfd, tmpBuf, strlen(tmpBuf), 0);
free(out); free(out);
free(tmpBuf); free(tmpBuf);
...@@ -358,7 +358,7 @@ int kk_data_handle(cJSON *json,int sockfd) ...@@ -358,7 +358,7 @@ int kk_data_handle(cJSON *json,int sockfd)
} }
static int kk_parse_syncinfo(cJSON *payload) static int kk_parse_syncinfo(cJSON *payload)
{ {
cJSON *paramStr,*dataStr; cJSON *dataStr;
cJSON *gwdevices,*subdevices; cJSON *gwdevices,*subdevices;
cJSON * gwitem,*properties; cJSON * gwitem,*properties;
cJSON *onlineStatus; cJSON *onlineStatus;
...@@ -375,9 +375,7 @@ static int kk_parse_syncinfo(cJSON *payload) ...@@ -375,9 +375,7 @@ static int kk_parse_syncinfo(cJSON *payload)
kk_map_dev_deinit(); kk_map_dev_deinit();
paramStr = cJSON_GetObjectItem(payload, DATA_STRING); dataStr = cJSON_GetObjectItem(payload, DATA_STRING);
if(paramStr == NULL) return -1;
dataStr = cJSON_GetObjectItem(paramStr, DATA_STRING);
if(dataStr == NULL) return -1; if(dataStr == NULL) return -1;
gwdevices = cJSON_GetObjectItem(dataStr, DEVICES_STRING); gwdevices = cJSON_GetObjectItem(dataStr, DEVICES_STRING);
if(gwdevices == NULL) return -1; if(gwdevices == NULL) return -1;
...@@ -406,7 +404,7 @@ static int kk_parse_syncinfo(cJSON *payload) ...@@ -406,7 +404,7 @@ static int kk_parse_syncinfo(cJSON *payload)
kk_map_dev_node_add(deviceCode,productCode,gwdevicecode,onlineStatus->valuestring); kk_map_dev_node_add(deviceCode,productCode,gwdevicecode,(onlineStatus->valueint==1)?"1":"0");
property_syn_deal(deviceCode,properties); property_syn_deal(deviceCode,properties);
......
...@@ -53,7 +53,7 @@ static int kk_findccu_ack(int sockfd,struct sockaddr_in *addr){ ...@@ -53,7 +53,7 @@ static int kk_findccu_ack(int sockfd,struct sockaddr_in *addr){
strcat(tmpBuf,"!"); strcat(tmpBuf,"!");
strcat(tmpBuf,out); strcat(tmpBuf,out);
strcat(tmpBuf,"$"); strcat(tmpBuf,"$");
printf("tmpBuf:%s\n",tmpBuf); INFO_PRINT("tmpBuf:%s\n",tmpBuf);
sendto(sockfd, tmpBuf, strlen(tmpBuf), 0, (struct sockaddr*)addr, sizeof(struct sockaddr_in)); sendto(sockfd, tmpBuf, strlen(tmpBuf), 0, (struct sockaddr*)addr, sizeof(struct sockaddr_in));
cJSON_Delete(json); cJSON_Delete(json);
free(out); free(out);
......
...@@ -89,9 +89,8 @@ cJSON *kk_sync_rooms_to_sdk(cJSON *root,cJSON *data) ...@@ -89,9 +89,8 @@ cJSON *kk_sync_rooms_to_sdk(cJSON *root,cJSON *data)
/*******场景同步*******/ /*******场景同步*******/
static cJSON *_kk_scene_action_build(SYN_SCENE_ACTION **act) static cJSON *_kk_scene_action_build(cJSON *action,SYN_SCENE_ACTION **act)
{ {
cJSON *action = cJSON_CreateObject();
SYN_SCENE_ACTION *ptr = *act; SYN_SCENE_ACTION *ptr = *act;
if(ptr->nodeid==-1 || ptr->operation==NULL || if(ptr->nodeid==-1 || ptr->operation==NULL ||
...@@ -115,11 +114,11 @@ cJSON *kk_scene_actions_build(SYN_SCENE_ACTION **act,int num) ...@@ -115,11 +114,11 @@ cJSON *kk_scene_actions_build(SYN_SCENE_ACTION **act,int num)
{ {
int i; int i;
cJSON *actions = cJSON_CreateArray(); cJSON *actions = cJSON_CreateArray();
cJSON *action; cJSON *action = cJSON_CreateObject();
SYN_SCENE_ACTION *ptr=*act; SYN_SCENE_ACTION *ptr=*act;
for(i=0;i<num;i++,ptr++){ for(i=0;i<num;i++,ptr++){
action=_kk_scene_action_build(&ptr); _kk_scene_action_build(action,&ptr);
cJSON_AddItemToArray(actions,action); cJSON_AddItemToArray(actions,action);
} }
...@@ -299,11 +298,13 @@ cJSON *kk_sync_scence_to_sdk(cJSON *root,cJSON *data) ...@@ -299,11 +298,13 @@ cJSON *kk_sync_scence_to_sdk(cJSON *root,cJSON *data)
sceneItem = kk_scene_build(&pScene); sceneItem = kk_scene_build(&pScene);
cJSON_AddItemToArray(scenesAry,sceneItem); cJSON_AddItemToArray(scenesAry,sceneItem);
// printf("[%s][%d]%s\n",__FUNCTION__,__LINE__,cJSON_Print(sceneItem));
} }
cJSON_AddItemToObject(root, "scenes", scenesAry); cJSON_AddItemToObject(root, "scenes", scenesAry);
free(build);
return root;
} }
//同步设备 //同步设备
...@@ -323,8 +324,10 @@ int _kk_sync_device_item(cJSON *deviceCode,cJSON *epNum,cJSON *name,cJSON *roomI ...@@ -323,8 +324,10 @@ int _kk_sync_device_item(cJSON *deviceCode,cJSON *epNum,cJSON *name,cJSON *roomI
list_for_each_entry(node, &ctx->dev_list, linked_list, kk_map_dev_node_t) { list_for_each_entry(node, &ctx->dev_list, linked_list, kk_map_dev_node_t) {
if (node != NULL) { if (node != NULL) {
printf("node->deviceCode=%s,%s\n",node->deviceCode,deviceCode->valuestring);
if(strlen(node->deviceCode)==strlen(deviceCode->valuestring) && if(strlen(node->deviceCode)==strlen(deviceCode->valuestring) &&
!strcmp(node->deviceCode,deviceCode->valuestring)){ !strcmp(node->deviceCode,deviceCode->valuestring)){
cJSON *subdevicesItem = cJSON_CreateObject(); cJSON *subdevicesItem = cJSON_CreateObject();
if(epNum==NULL ||epNum->type!=cJSON_String){ if(epNum==NULL ||epNum->type!=cJSON_String){
...@@ -359,7 +362,6 @@ int _kk_sync_device_item(cJSON *deviceCode,cJSON *epNum,cJSON *name,cJSON *roomI ...@@ -359,7 +362,6 @@ int _kk_sync_device_item(cJSON *deviceCode,cJSON *epNum,cJSON *name,cJSON *roomI
cJSON_AddStringToObject(subdevicesItem, MAC_STRING, submac); cJSON_AddStringToObject(subdevicesItem, MAC_STRING, submac);
cJSON_AddStringToObject(subdevicesItem, OPERATE_TYPE_STRING, node->opearteType); cJSON_AddStringToObject(subdevicesItem, OPERATE_TYPE_STRING, node->opearteType);
cJSON_AddItemToArray(deviceAry, subdevicesItem); cJSON_AddItemToArray(deviceAry, subdevicesItem);
} }
} }
...@@ -383,6 +385,7 @@ int kk_sync_device(cJSON *roomId,cJSON *inDevAry,cJSON *outDevAry) ...@@ -383,6 +385,7 @@ int kk_sync_device(cJSON *roomId,cJSON *inDevAry,cJSON *outDevAry)
num = cJSON_GetArraySize(inDevAry); num = cJSON_GetArraySize(inDevAry);
for(i=0;i<num;i++){ for(i=0;i<num;i++){
printf("...i=%d\n",i);
cJSON *item = cJSON_GetArrayItem(inDevAry,i); cJSON *item = cJSON_GetArrayItem(inDevAry,i);
deviceCode = cJSON_GetObjectItem(item,"deviceCode"); deviceCode = cJSON_GetObjectItem(item,"deviceCode");
epNum = cJSON_GetObjectItem(item,"epNum"); epNum = cJSON_GetObjectItem(item,"epNum");
...@@ -401,11 +404,16 @@ int kk_sync_devices_to_sdk(cJSON *root,cJSON *data) ...@@ -401,11 +404,16 @@ int kk_sync_devices_to_sdk(cJSON *root,cJSON *data)
int i,num = cJSON_GetArraySize(rooms); int i,num = cJSON_GetArraySize(rooms);
cJSON *roomId,*devices; cJSON *roomId,*devices;
printf("kk_sync_devices_to_sdk,num=%d\n",num);
for(i=0;i<num;i++){ for(i=0;i<num;i++){
printf("i=%d\n",i);
cJSON *room = cJSON_GetArrayItem(rooms,i); cJSON *room = cJSON_GetArrayItem(rooms,i);
roomId = cJSON_GetObjectItem(room,ROOMS_ID_STR); roomId = cJSON_GetObjectItem(room,ROOMS_ID_STR);
devices = cJSON_GetObjectItem(room,DEVICES_STR); devices = cJSON_GetObjectItem(room,DEVICES_STR);
printf("devices...=%s\n",cJSON_Print(devices));
kk_sync_device(roomId,devices,deviceAry); kk_sync_device(roomId,devices,deviceAry);
} }
...@@ -578,13 +586,16 @@ int kk_sync_devices_status_to_sdk(cJSON *root) ...@@ -578,13 +586,16 @@ int kk_sync_devices_status_to_sdk(cJSON *root)
kk_map_dev_node_t *n = NULL; kk_map_dev_node_t *n = NULL;
cJSON *devStatusAry = cJSON_CreateArray(); cJSON *devStatusAry = cJSON_CreateArray();
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
_kk_map_dev_mutex_lock(); _kk_map_dev_mutex_lock();
list_for_each_entry_safe(node,n, &ctx->dev_list, linked_list, kk_map_dev_node_t){ list_for_each_entry_safe(node,n, &ctx->dev_list, linked_list, kk_map_dev_node_t){
if(node->syn_type==1){ if(node->syn_type==1){
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
_kk_sync_devices_status_arg_obj(node,devStatusAry,&idx); _kk_sync_devices_status_arg_obj(node,devStatusAry,&idx);
}else{ }else{
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
_kk_sync_devices_status_arg_str(node,devStatusAry,&idx); _kk_sync_devices_status_arg_str(node,devStatusAry,&idx);
//_kk_sync_devicestatus(node,devStatusAry); //_kk_sync_devicestatus(node,devStatusAry);
...@@ -1044,8 +1055,6 @@ int kk_create_syncinfo_to_sdk(cJSON *payload) ...@@ -1044,8 +1055,6 @@ int kk_create_syncinfo_to_sdk(cJSON *payload)
cJSON *ccu_link_status; cJSON *ccu_link_status;
cJSON *link_arg; cJSON *link_arg;
cJSON *cnwise_music_controllers; cJSON *cnwise_music_controllers;
cJSON *code_lib_controllers; cJSON *code_lib_controllers;
cJSON *controllers; cJSON *controllers;
...@@ -1068,6 +1077,7 @@ int kk_create_syncinfo_to_sdk(cJSON *payload) ...@@ -1068,6 +1077,7 @@ int kk_create_syncinfo_to_sdk(cJSON *payload)
cJSON_AddItemToObject(root, "ccu_link_status", ccu_link_status); cJSON_AddItemToObject(root, "ccu_link_status", ccu_link_status);
printf("[%s][%d]\n",__FUNCTION__,__LINE__); printf("[%s][%d]\n",__FUNCTION__,__LINE__);
cnwise_music_controllers = cJSON_CreateArray(); cnwise_music_controllers = cJSON_CreateArray();
...@@ -1078,6 +1088,7 @@ int kk_create_syncinfo_to_sdk(cJSON *payload) ...@@ -1078,6 +1088,7 @@ int kk_create_syncinfo_to_sdk(cJSON *payload)
controllers = cJSON_CreateArray(); controllers = cJSON_CreateArray();
cJSON_AddItemToObject(root, "controllers", controllers); cJSON_AddItemToObject(root, "controllers", controllers);
printf("[%s][%d]\n",__FUNCTION__,__LINE__); printf("[%s][%d]\n",__FUNCTION__,__LINE__);
...@@ -1087,54 +1098,81 @@ int kk_create_syncinfo_to_sdk(cJSON *payload) ...@@ -1087,54 +1098,81 @@ int kk_create_syncinfo_to_sdk(cJSON *payload)
kk_sync_devices_status_to_sdk(root); kk_sync_devices_status_to_sdk(root);
printf("[%s][%d]\n",__FUNCTION__,__LINE__); printf("[%s][%d]\n",__FUNCTION__,__LINE__);
kk_sync_devices_to_sdk(root,data); kk_sync_devices_to_sdk(root,data);
printf("[%s][%d]\n",__FUNCTION__,__LINE__); printf("[%s][%d]\n",__FUNCTION__,__LINE__);
printf("[%s][%d]%s\n",__FUNCTION__,__LINE__,(root==NULL)?"NULL":"1");
kk_sync_rooms_to_sdk(root,data); kk_sync_rooms_to_sdk(root,data);
printf("[%s][%d]\n",__FUNCTION__,__LINE__); printf("[%s][%d]\n",__FUNCTION__,__LINE__);
printf("[%s][%d]%s\n",__FUNCTION__,__LINE__,(root==NULL)?"NULL":"1");
kk_sync_scence_to_sdk(root,data); kk_sync_scence_to_sdk(root,data);
printf("[%s][%d]\n",__FUNCTION__,__LINE__); printf("[%s][%d]\n",__FUNCTION__,__LINE__);
printf("[%s][%d]%s\n",__FUNCTION__,__LINE__,(root==NULL)?"NULL":"1");
kk_sync_gw_version_to_sdk(root,data); kk_sync_gw_version_to_sdk(root,data);
printf("[%s][%d]\n",__FUNCTION__,__LINE__); printf("[%s][%d]\n",__FUNCTION__,__LINE__);
printf("[%s][%d]%s\n",__FUNCTION__,__LINE__,(root==NULL)?"NULL":"1");
kk_sync_ccu_version_to_sdk(root,data); kk_sync_ccu_version_to_sdk(root,data);
printf("[%s][%d]\n",__FUNCTION__,__LINE__); printf("[%s][%d]\n",__FUNCTION__,__LINE__);
printf("[%s][%d]%s\n",__FUNCTION__,__LINE__,(root==NULL)?"NULL":"1");
kk_sync_guard_to_sdk(root,data); kk_sync_guard_to_sdk(root,data);
printf("[%s][%d]%s\n",__FUNCTION__,__LINE__,(root==NULL)?"NULL":"1");
printf("[%s][%d]\n",__FUNCTION__,__LINE__); printf("[%s][%d]\n",__FUNCTION__,__LINE__);
kk_sync_central_ac_to_sdk(root,data); kk_sync_central_ac_to_sdk(root,data);
printf("[%s][%d]%s\n",__FUNCTION__,__LINE__,(root==NULL)?"NULL":"1");
kk_sync_central_ac_indoorunits_to_sdk(root,data); kk_sync_central_ac_indoorunits_to_sdk(root,data);
printf("[%s][%d]%s\n",__FUNCTION__,__LINE__,(root==NULL)?"NULL":"1");
kk_sync_groups_to_sdk(root,data); kk_sync_groups_to_sdk(root,data);
printf("[%s][%d]%s\n",__FUNCTION__,__LINE__,(root==NULL)?"NULL":"1");
kk_create_floors_to_sdk(root,data); kk_create_floors_to_sdk(root,data);
printf("[%s][%d]%s\n",__FUNCTION__,__LINE__,(root==NULL)?"NULL":"1");
#if 1 #if 1
expand_rules = cJSON_CreateArray(); expand_rules = cJSON_CreateArray();
printf("[%s][%d]%s\n",__FUNCTION__,__LINE__,(root==NULL)?"NULL":"1");
printf("[%s][%d]\n",__FUNCTION__,__LINE__); printf("[%s][%d]\n",__FUNCTION__,__LINE__);
cJSON_AddItemToObject(root, "expand_rules", expand_rules); cJSON_AddItemToObject(root, "expand_rules", expand_rules);
printf("[%s][%d]\n",__FUNCTION__,__LINE__); printf("[%s][%d]\n",__FUNCTION__,__LINE__);
printf("[%s][%d]%s\n",__FUNCTION__,__LINE__,(root==NULL)?"NULL":"1");
#endif #endif
printf("[%s][%d]%s\n",__FUNCTION__,__LINE__,(root==NULL)?"NULL":"1");
out=cJSON_Print(root);
printf("[%s][%d]\n",__FUNCTION__,__LINE__); printf("[%s][%d]\n",__FUNCTION__,__LINE__);
out=cJSON_Print(root);
printf("out:%s\n",out); printf("out:%s\n",out);
free(out); printf("[%s][%d]%s\n",__FUNCTION__,__LINE__,out);
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
cJSON *msg = old_ccu_msg_build_json("*","SYNC_INFO",NULL,root); cJSON *msg = old_ccu_msg_build_json("*","SYNC_INFO",NULL,root);
send_msg_to_module(msg); send_msg_to_module(msg);
cJSON_Delete(msg); cJSON_Delete(msg);
free(out);
return 0; return 0;
} }
......
...@@ -36,7 +36,7 @@ int kk_send_data_to_sdk(char *buf) ...@@ -36,7 +36,7 @@ int kk_send_data_to_sdk(char *buf)
strcat(tmpBuf,"!"); strcat(tmpBuf,"!");
strcat(tmpBuf,buf); strcat(tmpBuf,buf);
strcat(tmpBuf,"$"); strcat(tmpBuf,"$");
printf("tmpBuf:%s\n",tmpBuf); INFO_PRINT("tmpBuf:%s\n",tmpBuf);
for(i = 0; i < LISTEN_MAX; i++){ for(i = 0; i < LISTEN_MAX; i++){
if(s_ConnInfo[i].socketfd != -1){ if(s_ConnInfo[i].socketfd != -1){
send(s_ConnInfo[i].socketfd, tmpBuf, strlen(tmpBuf), 0); send(s_ConnInfo[i].socketfd, tmpBuf, strlen(tmpBuf), 0);
...@@ -119,7 +119,7 @@ void *TCP_Analyzer(void *pPara) ...@@ -119,7 +119,7 @@ void *TCP_Analyzer(void *pPara)
} }
else else
{ {
printf("TCP_Analyzer:%s,%d\n",Buf,(int)Size); DEBUG_PRINT("TCP_Analyzer:%s,%d\n",Buf,(int)Size);
_kk_handle_data(Buf,s_ConnInfo[index].socketfd); _kk_handle_data(Buf,s_ConnInfo[index].socketfd);
printf("[%s][%d] TCP_Analyzer end.\n",__FUNCTION__,__LINE__); printf("[%s][%d] TCP_Analyzer end.\n",__FUNCTION__,__LINE__);
} }
......
...@@ -472,6 +472,38 @@ int kk_room_device_list_add(const char *deviceCode) ...@@ -472,6 +472,38 @@ int kk_room_device_list_add(const char *deviceCode)
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
cJSON *kk_get_roomIds_ary(void)
{
int isExist = 0;
sqlite3_stmt *stmt;
char *proomId = NULL;
int armingstate= 0;
cJSON *roomIdsAry = cJSON_CreateArray();
kk_area_ctx_t *ctx = _kk_area_get_ctx();
const char *searchCmd = "select * from AreaInfo;";
_kk_area_lock();
sqlite3_prepare_v2(ctx->pDb, searchCmd, strlen(searchCmd), &stmt, NULL);
while(sqlite3_step(stmt) == SQLITE_ROW){
armingstate = (int)sqlite3_column_int(stmt, DB_ROOM_ARMING);
if(armingstate!=0){
proomId = (char*)sqlite3_column_text(stmt, DB_ROOM_ID);
cJSON_AddItemToArray(roomIdsAry,cJSON_CreateNumber(atoi(proomId)));
}
}
sqlite3_finalize(stmt);
_kk_area_unlock();
return roomIdsAry;
}
kk_dev_list_t* kk_get_room_deviceCode(const char* roomId) kk_dev_list_t* kk_get_room_deviceCode(const char* roomId)
{ {
sqlite3_stmt *stmt; sqlite3_stmt *stmt;
......
...@@ -639,6 +639,69 @@ int dm_msg_response(_IN_ kk_msg_request_payload_t *request, _IN_ kk_msg_response ...@@ -639,6 +639,69 @@ int dm_msg_response(_IN_ kk_msg_request_payload_t *request, _IN_ kk_msg_response
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
const char DM_MSG_SYNC_RESPONSE_WITH_DATA[]= "{\"msgId\":\"%.*s\",\"code\":%d,\"params\":%.*s}";
int dm_msg_sync_response(_IN_ kk_msg_request_payload_t *request, _IN_ kk_msg_response_t *response,
_IN_ char *data, _IN_ int data_len, _IN_ void *user_data)
{
int res = 0, payload_len = 0,res_info_len = 0;
char *uri = NULL, *payload = NULL;
lite_cjson_t lite;
char *res_info = NULL;
if (request == NULL || response == NULL || data == NULL || data_len <= 0) {
return INVALID_PARAMETER;
}
/* Response Payload */
payload_len = strlen(DM_MSG_SYNC_RESPONSE_WITH_DATA) + request->id.value_length + DM_UTILS_UINT32_STRLEN + data_len + 1;
payload = malloc(payload_len);
if (payload == NULL) {
free(uri);
return MEMORY_NOT_ENOUGH;
}
memset(payload, 0, payload_len);
snprintf(payload, payload_len, DM_MSG_SYNC_RESPONSE_WITH_DATA,
request->id.value_length, request->id.value, response->code, data_len, data);
res_info_len = strlen(DM_MSG_INFO)+10+strlen(response->productCode)+strlen(response->deviceCode)+strlen(response->msgTypeStr)+1;
res_info = malloc(res_info_len);
if (res_info == NULL) {
free(payload);
return MEMORY_NOT_ENOUGH;
}
memset(res_info, 0, res_info_len);
snprintf(res_info, res_info_len, DM_MSG_INFO, response->msgTypeStr,response->productCode, response->deviceCode);
memset(&lite, 0, sizeof(lite_cjson_t));
res = lite_cjson_parse(payload, payload_len, &lite);
if (res < SUCCESS_RETURN) {
ERROR_PRINT("Wrong JSON Format, URI: %s, Payload: %s", uri, payload);
free(uri);
free(payload);
return FAIL_RETURN;
}
memset(&lite, 0, sizeof(lite_cjson_t));
res = lite_cjson_parse(res_info, res_info_len, &lite);
if (res < SUCCESS_RETURN) {
ERROR_PRINT("Wrong JSON Format, Payload: %d", res_info_len);
free(res_info);
free(payload);
return FAIL_RETURN;
}
//dm_client_publish(uri, (unsigned char *)payload, strlen(payload), NULL);
kk_sendData2app(res_info, payload,0);
free(res_info);
free(payload);
return SUCCESS_RETURN;
}
int dm_msg_response_parse(_IN_ char *payload, _IN_ int payload_len, _OU_ dm_msg_response_payload_t *response) int dm_msg_response_parse(_IN_ char *payload, _IN_ int payload_len, _OU_ dm_msg_response_payload_t *response)
{ {
lite_cjson_t lite, lite_message; lite_cjson_t lite, lite_message;
...@@ -731,6 +794,50 @@ int dm_msg_thing_syncinfo_reply(void){ ...@@ -731,6 +794,50 @@ int dm_msg_thing_syncinfo_reply(void){
free(info); free(info);
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
int dm_msg_thing_syncdeviceinfo_reply(cJSON *msgId){
kk_msg_request_payload_t request;
kk_msg_response_t response;
dm_mgr_dev_node_t *node = NULL;
char *info = NULL;
int res = 0;
memset(&request, 0, sizeof(kk_msg_request_payload_t));
memset(&response, 0, sizeof(kk_msg_response_t));
if(msgId!=NULL && msgId->type==cJSON_String){
request.id.value_length = strlen(msgId->valuestring);
request.id.value = msgId->valuestring;
}
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
res = dm_mgr_search_dev_by_devid(KK_DM_DEVICE_CCU_DEVICEID, &node);
if (res != SUCCESS_RETURN) {
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
return FAIL_RETURN;
}
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
//res = dm_msg_request_parse((char *)payload, payload_len, &request);
//if (res < SUCCESS_RETURN) {
//ERROR_PRINT("dm_msg_request_parse failed");
//return res ;
//}
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
response.msgTypeStr = KK_THING_SERVICE_SYNCDEVICEINFO_REPLY;
memcpy(response.productCode, node->productCode, strlen( node->productCode));
memcpy(response.deviceCode, node->deviceCode, strlen(node->deviceCode));
response.code = (res == SUCCESS_RETURN) ? (IOTX_DM_ERR_CODE_SUCCESS) : (IOTX_DM_ERR_CODE_REQUEST_ERROR);
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
info = kk_sync_get_info();
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
dm_msg_sync_response(&request, &response, info, strlen(info), NULL);
free(info);
return SUCCESS_RETURN;
}
const char DM_URI_THING_SERVICE_PROPERTY_SET_REPLY[] = "/thing/service/property/set_reply"; const char DM_URI_THING_SERVICE_PROPERTY_SET_REPLY[] = "/thing/service/property/set_reply";
int dm_msg_thing_property_set_reply(char deviceCode[DEVICE_CODE_MAXLEN],char *payload, unsigned int payload_len, int dm_msg_thing_property_set_reply(char deviceCode[DEVICE_CODE_MAXLEN],char *payload, unsigned int payload_len,
......
...@@ -81,6 +81,12 @@ const char DM_MSG_INFO[] DM_READ_ONLY; ...@@ -81,6 +81,12 @@ const char DM_MSG_INFO[] DM_READ_ONLY;
#define KK_THING_METHOD_EXECUTESCENE "thing.service.executeScene" #define KK_THING_METHOD_EXECUTESCENE "thing.service.executeScene"
#define KK_THING_METHOD_ADDSCENC "thing.service.addScene" #define KK_THING_METHOD_ADDSCENC "thing.service.addScene"
#define KK_THING_SERVICE_SYNCINFO "/thing/service/syncinfo" #define KK_THING_SERVICE_SYNCINFO "/thing/service/syncinfo"
#define KK_THING_SERVICE_SYNCDEVICEINFO "/thing/service/syncDeviceInfo"
#define KK_THING_SERVICE_SYNCDEVICEINFO_REPLY "/thing/service/syncDeviceInfo_reply"
#define KK_THING_SERVICE_SYNCINFO_REPLY "/thing/service/syncinfo_reply" #define KK_THING_SERVICE_SYNCINFO_REPLY "/thing/service/syncinfo_reply"
#define KK_THING_EVENT_MESSAGE "/thing/event/" #define KK_THING_EVENT_MESSAGE "/thing/event/"
#define KK_THING_SERVICE_GETGUARDSENSORS "/thing/service/getGuardSensors" #define KK_THING_SERVICE_GETGUARDSENSORS "/thing/service/getGuardSensors"
......
...@@ -368,7 +368,8 @@ static int kk_service_addRoom_handle(const char *deviceCode, cJSON *params) ...@@ -368,7 +368,8 @@ static int kk_service_addRoom_handle(const char *deviceCode, cJSON *params)
return FAIL_RETURN; return FAIL_RETURN;
} }
memcpy(roomId,roomIdStr->valuestring,strlen(roomIdStr->valuestring)); memcpy(roomId,roomIdStr->valuestring,strlen(roomIdStr->valuestring));
kk_room_add(roomInfoStr->valuestring,roomIdStr->valuestring); //HAL_GetTime_s((char*)roomId);
kk_room_add(roomInfoStr->valuestring,roomId);
kk_tsl_set_value(kk_tsl_set_event_output_value,node->dev_shadow,MSG_AREA_ADDROOM_NOTIFICATION_ROOMID,NULL,roomId); kk_tsl_set_value(kk_tsl_set_event_output_value,node->dev_shadow,MSG_AREA_ADDROOM_NOTIFICATION_ROOMID,NULL,roomId);
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
...@@ -1198,6 +1199,10 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data) ...@@ -1198,6 +1199,10 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data)
cJSON *paramStr = cJSON_GetObjectItem(payload, MSG_PARAMS_STR); cJSON *paramStr = cJSON_GetObjectItem(payload, MSG_PARAMS_STR);
cJSON *msgId = cJSON_GetObjectItem(payload, MSG_COMMON_MSGID); cJSON *msgId = cJSON_GetObjectItem(payload, MSG_COMMON_MSGID);
kk_service_executeScene_handle(paramStr,msgId); kk_service_executeScene_handle(paramStr,msgId);
}else if(strcmp(typeJson->valuestring,KK_THING_SERVICE_SYNCDEVICEINFO) == 0){
INFO_PRINT("SYNCDEVICEINFO service \n");
cJSON *msgId = cJSON_GetObjectItem(payload, MSG_COMMON_MSGID);
dm_msg_thing_syncdeviceinfo_reply(msgId);
} }
else if(strcmp(typeJson->valuestring,KK_THING_SERVICE_GETGUARDSENSORS) == 0){ else if(strcmp(typeJson->valuestring,KK_THING_SERVICE_GETGUARDSENSORS) == 0){
INFO_PRINT("get guardgensors \n"); INFO_PRINT("get guardgensors \n");
......
...@@ -8,6 +8,8 @@ ...@@ -8,6 +8,8 @@
*************************************************************/ *************************************************************/
#include <stdio.h> #include <stdio.h>
#include <string.h>
#include "kk_tsl_api.h" #include "kk_tsl_api.h"
#include "kk_sync_data.h" #include "kk_sync_data.h"
#include "kk_dm_mng.h" #include "kk_dm_mng.h"
...@@ -23,6 +25,11 @@ ...@@ -23,6 +25,11 @@
#include "kk_hal.h" #include "kk_hal.h"
extern sqlite3 *g_kk_pDb; extern sqlite3 *g_kk_pDb;
static int kk_check_multi_ep_num(char *deviceCode);
static int kk_get_scenes_actions_info(cJSON *actionArray,int id);
static int kk_get_panel_scenes_actions_info(cJSON *actionArray,int id);
typedef struct { typedef struct {
void *mutex; void *mutex;
sqlite3 *pDb; sqlite3 *pDb;
...@@ -72,12 +79,12 @@ int kk_sync_init(void) ...@@ -72,12 +79,12 @@ int kk_sync_init(void)
static cJSON * kk_get_room_devices(const char *roomId) static cJSON * kk_get_room_devices(const char *roomId)
{ {
const char *selectCmd = "select * from AreaDevInfo WHERE roomId = '%s' and epNum = 1;"; const char *selectCmd = "select * from AreaDevInfo WHERE roomId = '%s';";
char *sqlCmd = NULL; char *sqlCmd = NULL;
sqlite3_stmt *stmt; sqlite3_stmt *stmt;
char *deviceCode = NULL; char *deviceCode = NULL;
char *epNum = NULL;
cJSON *devs = cJSON_CreateArray(); cJSON *devs = cJSON_CreateArray();
kk_sync_ctx_t *ctx = _kk_sync_get_ctx(); kk_sync_ctx_t *ctx = _kk_sync_get_ctx();
...@@ -85,8 +92,21 @@ static cJSON * kk_get_room_devices(const char *roomId) ...@@ -85,8 +92,21 @@ static cJSON * kk_get_room_devices(const char *roomId)
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){
cJSON *dev = cJSON_CreateObject(); cJSON *dev = cJSON_CreateObject();
char devName[64] = {0};
deviceCode = (char*)sqlite3_column_text(stmt, DB_DEV_DEVICECODE); deviceCode = (char*)sqlite3_column_text(stmt, DB_DEV_DEVICECODE);
epNum = (char*)sqlite3_column_text(stmt, DB_DEV_EPNUM);
if(kk_check_multi_ep_num(deviceCode)){
cJSON_AddStringToObject(dev,KK_SYNC_SCENE_EPNUM_STR,epNum);
}
cJSON_AddStringToObject(dev,KK_SYNC_DEVICECODE_STR,deviceCode); cJSON_AddStringToObject(dev,KK_SYNC_DEVICECODE_STR,deviceCode);
//cJSON_AddStringToObject(dev,KK_SYNC_SCENE_EPNUM_STR,epNum);
kk_get_device_name(deviceCode,epNum,devName,sizeof(devName));
cJSON_AddStringToObject(dev,"name",devName);
cJSON_AddItemToArray(devs, dev); cJSON_AddItemToArray(devs, dev);
} }
sqlite3_free(sqlCmd); sqlite3_free(sqlCmd);
...@@ -95,6 +115,7 @@ static cJSON * kk_get_room_devices(const char *roomId) ...@@ -95,6 +115,7 @@ static cJSON * kk_get_room_devices(const char *roomId)
return devs; return devs;
} }
static cJSON * kk_get_room_sences(const char *roomId) static cJSON * kk_get_room_sences(const char *roomId)
{ {
const char *selectCmd = "select * from SceneInfo where roomId = '%s';"; const char *selectCmd = "select * from SceneInfo where roomId = '%s';";
...@@ -102,7 +123,7 @@ static cJSON * kk_get_room_sences(const char *roomId) ...@@ -102,7 +123,7 @@ static cJSON * kk_get_room_sences(const char *roomId)
char *sqlCmd = NULL; char *sqlCmd = NULL;
sqlite3_stmt *stmt; sqlite3_stmt *stmt;
char *sceneId = NULL; char *sceneId = NULL;
char *sceneType = NULL;
cJSON *scenes = cJSON_CreateArray(); cJSON *scenes = cJSON_CreateArray();
kk_sync_ctx_t *ctx = _kk_sync_get_ctx(); kk_sync_ctx_t *ctx = _kk_sync_get_ctx();
...@@ -111,13 +132,14 @@ static cJSON * kk_get_room_sences(const char *roomId) ...@@ -111,13 +132,14 @@ static cJSON * kk_get_room_sences(const char *roomId)
while(sqlite3_step(stmt) == SQLITE_ROW){ while(sqlite3_step(stmt) == SQLITE_ROW){
cJSON *scene = cJSON_CreateObject(); cJSON *scene = cJSON_CreateObject();
sceneId = (char*)sqlite3_column_text(stmt, DB_SCENEINFO_SCENEID); sceneId = (char*)sqlite3_column_text(stmt, DB_SCENEINFO_SCENEID);
sceneType = (char*)sqlite3_column_text(stmt, DB_SCENEINFO_SCENETYPE);
cJSON_AddStringToObject(scene,KK_SYNC_SCENEID_STR,sceneId); cJSON_AddStringToObject(scene,KK_SYNC_SCENEID_STR,sceneId);
cJSON_AddStringToObject(scene,KK_SYNC_SCENE_SCENETYPE_STR,sceneType);
cJSON_AddItemToArray(scenes, scene); cJSON_AddItemToArray(scenes, scene);
} }
sqlite3_free(sqlCmd); sqlite3_free(sqlCmd);
sqlite3_finalize(stmt); sqlite3_finalize(stmt);
return scenes; return scenes;
} }
...@@ -140,7 +162,7 @@ static int kk_get_rooms_info(cJSON *data) ...@@ -140,7 +162,7 @@ static int kk_get_rooms_info(cJSON *data)
cJSON *scenesArray = NULL; cJSON *scenesArray = NULL;
_kk_sync_lock(); _kk_sync_lock();
sqlCmd = sqlite3_mprintf("select * from AreaInfo"); sqlCmd = sqlite3_mprintf("select * from AreaInfo");
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){
roomItem = cJSON_CreateObject(); roomItem = cJSON_CreateObject();
...@@ -165,7 +187,123 @@ static int kk_get_rooms_info(cJSON *data) ...@@ -165,7 +187,123 @@ static int kk_get_rooms_info(cJSON *data)
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
static int kk_get_properties_info(char *deviceCode,cJSON *obj)
static int kk_check_multi_ep_num(char *deviceCode)
{
char *sqlCmd = NULL;
//char *zErrMsg = 0;
sqlite3_stmt *stmt;
char *propertyStr = NULL;
char *valueStr = NULL;
int valueType = 0;
kk_sync_ctx_t *ctx = _kk_sync_get_ctx();
if(deviceCode == NULL){
return 0;
}
sqlCmd = sqlite3_mprintf("select * from PropertiesInfo WHERE deviceCode = '%s' and devType=%d;",deviceCode,KK_DM_DEVICE_SUBDEV);
sqlite3_prepare_v2(ctx->pDb, sqlCmd, strlen(sqlCmd), &stmt, NULL);
while(sqlite3_step(stmt) == SQLITE_ROW){
propertyStr = (char*)sqlite3_column_text(stmt, DB_IDENTIFITER);
char *propertiesbuf[64] = {0};
int num = 0;
split(propertyStr,"_",propertiesbuf,&num);
if(num>=2){
return 1;
}
}
sqlite3_free(sqlCmd);
sqlite3_finalize(stmt);
return 0;
}
static cJSON *kk_get_gw_properties_info(cJSON *data)
{
char *sqlCmd = NULL;
sqlite3_stmt *stmt;
char *propertyStr = NULL;
char *valueStr = NULL;
int valueType = 0;
kk_sync_ctx_t *ctx = _kk_sync_get_ctx();
cJSON *roomIdsAry = NULL;
cJSON *property = cJSON_CreateObject();
sqlCmd = sqlite3_mprintf("select * from PropertiesInfo WHERE devType = '%d' ",KK_DM_DEVICE_GATEWAY);
sqlite3_prepare_v2(ctx->pDb, sqlCmd, strlen(sqlCmd), &stmt, NULL);
while(sqlite3_step(stmt) == SQLITE_ROW){
propertyStr = (char*)sqlite3_column_text(stmt, DB_IDENTIFITER);
valueType = sqlite3_column_int(stmt, DB_VALUETYPE);
valueStr = (char*)sqlite3_column_text(stmt, DB_VALUE);
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
if(valueType == KK_TSL_DATA_TYPE_TEXT){
cJSON_AddStringToObject(property, propertyStr, valueStr);
}else if(valueType == KK_TSL_DATA_TYPE_INT||
valueType == KK_TSL_DATA_TYPE_ENUM||
valueType == KK_TSL_DATA_TYPE_BOOL){
cJSON_AddNumberToObject(property, propertyStr, atoi(valueStr));
}else if(valueType == KK_TSL_DATA_TYPE_DOUBLE){
cJSON_AddNumberToObject(property, propertyStr, atof(valueStr));
}
}
cJSON_AddItemToObject(data, KK_SYNC_PROPERTY_STR, property);
sqlite3_free(sqlCmd);
sqlite3_finalize(stmt);
return property;
}
static cJSON *kk_get_ccu_properties_info(cJSON *data)
{
char *sqlCmd = NULL;
//char *zErrMsg = 0;
sqlite3_stmt *stmt;
char *propertyStr = NULL;
char *valueStr = NULL;
int valueType = 0;
kk_sync_ctx_t *ctx = _kk_sync_get_ctx();
cJSON *roomIdsAry = NULL;
cJSON *property = cJSON_CreateObject();
sqlCmd = sqlite3_mprintf("select * from PropertiesInfo WHERE devType = '%d' ",KK_DM_DEVICE_CCU);
sqlite3_prepare_v2(ctx->pDb, sqlCmd, strlen(sqlCmd), &stmt, NULL);
while(sqlite3_step(stmt) == SQLITE_ROW){
propertyStr = (char*)sqlite3_column_text(stmt, DB_IDENTIFITER);
valueType = sqlite3_column_int(stmt, DB_VALUETYPE);
valueStr = (char*)sqlite3_column_text(stmt, DB_VALUE);
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
if(valueType == KK_TSL_DATA_TYPE_TEXT){
if(!strcmp(propertyStr,"ArmingState")){
cJSON_AddNumberToObject(property, propertyStr, atoi(valueStr));
}else{
cJSON_AddStringToObject(property, propertyStr, valueStr);
}
}else if(valueType == KK_TSL_DATA_TYPE_INT||
valueType == KK_TSL_DATA_TYPE_ENUM||
valueType == KK_TSL_DATA_TYPE_BOOL){
cJSON_AddNumberToObject(property, propertyStr, atoi(valueStr));
}else if(valueType == KK_TSL_DATA_TYPE_DOUBLE){
cJSON_AddNumberToObject(property, propertyStr, atof(valueStr));
}
}
if((roomIdsAry = kk_get_roomIds_ary())!=NULL){
cJSON_AddItemToObject(property, "RoomIds", roomIdsAry);
}
cJSON_AddItemToObject(data, KK_SYNC_PROPERTY_STR, property);
sqlite3_free(sqlCmd);
sqlite3_finalize(stmt);
return property;
}
static cJSON *kk_get_properties_info(char *deviceCode,int devType)
{ {
char *sqlCmd = NULL; char *sqlCmd = NULL;
//char *zErrMsg = 0; //char *zErrMsg = 0;
...@@ -173,34 +311,158 @@ static int kk_get_properties_info(char *deviceCode,cJSON *obj) ...@@ -173,34 +311,158 @@ static int kk_get_properties_info(char *deviceCode,cJSON *obj)
char *propertyStr = NULL; char *propertyStr = NULL;
char *valueStr = NULL; char *valueStr = NULL;
int valueType = 0; int valueType = 0;
char *ptr = NULL;
kk_sync_ctx_t *ctx = _kk_sync_get_ctx(); kk_sync_ctx_t *ctx = _kk_sync_get_ctx();
if(deviceCode == NULL || obj == NULL){ if(deviceCode == NULL){
return FAIL_RETURN; return NULL;
} }
cJSON *propertyItem = cJSON_CreateObject();
sqlCmd = sqlite3_mprintf("select * from PropertiesInfo WHERE deviceCode = '%s' ",deviceCode); cJSON *obj = cJSON_CreateObject();
cJSON *eps = cJSON_CreateArray();
sqlCmd = sqlite3_mprintf("select * from PropertiesInfo WHERE deviceCode = '%s' and devType=%d;",deviceCode,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){
cJSON *propertyItem = cJSON_CreateObject();
propertyStr = (char*)sqlite3_column_text(stmt, DB_IDENTIFITER);
valueType = sqlite3_column_int(stmt, DB_VALUETYPE);
valueStr = (char*)sqlite3_column_text(stmt, DB_VALUE);
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
char *propertiesbuf[64] = {0};
int num = 0;
split(propertyStr,"_",propertiesbuf,&num);
if(num==2){
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
cJSON_AddStringToObject(propertyItem, "epNum",propertiesbuf[1]);
if(valueType == KK_TSL_DATA_TYPE_TEXT){
cJSON_AddStringToObject(propertyItem, propertiesbuf[0], valueStr);
}else if(valueType == KK_TSL_DATA_TYPE_INT||
valueType == KK_TSL_DATA_TYPE_ENUM||
valueType == KK_TSL_DATA_TYPE_BOOL){
cJSON_AddNumberToObject(propertyItem, propertiesbuf[0], atoi(valueStr));
}else if(valueType == KK_TSL_DATA_TYPE_DOUBLE){
cJSON_AddNumberToObject(propertyItem, propertiesbuf[0], atof(valueStr));
}
}else{
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
cJSON_AddStringToObject(propertyItem, "epNum","1");
if(valueType == KK_TSL_DATA_TYPE_TEXT){
cJSON_AddStringToObject(propertyItem, propertyStr, valueStr);
}else if(valueType == KK_TSL_DATA_TYPE_INT||
valueType == KK_TSL_DATA_TYPE_ENUM||
valueType == KK_TSL_DATA_TYPE_BOOL){
cJSON_AddNumberToObject(propertyItem, propertyStr, atoi(valueStr));
}else if(valueType == KK_TSL_DATA_TYPE_DOUBLE){
cJSON_AddNumberToObject(propertyItem, propertyStr, atof(valueStr));
}
}
cJSON_AddItemToArray(eps,propertyItem);
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
}
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
cJSON_AddItemToObject(obj, "eps", eps);
sqlite3_free(sqlCmd);
sqlite3_finalize(stmt);
return obj;
}
static int kk_get_properties_info_obj(char *deviceCode)
{
char *sqlCmd = NULL;
//char *zErrMsg = 0;
sqlite3_stmt *stmt;
char *propertyStr = NULL;
char *valueStr = NULL;
int valueType = 0;
kk_sync_ctx_t *ctx = _kk_sync_get_ctx();
cJSON *obj = cJSON_CreateObject();
if(deviceCode == NULL ){
return NULL;
}
sqlCmd = sqlite3_mprintf("select * from PropertiesInfo WHERE deviceCode = '%s' and devType=%d;",deviceCode,KK_DM_DEVICE_SUBDEV);
sqlite3_prepare_v2(ctx->pDb, sqlCmd, strlen(sqlCmd), &stmt, NULL);
while(sqlite3_step(stmt) == SQLITE_ROW){
propertyStr = (char*)sqlite3_column_text(stmt, DB_IDENTIFITER); propertyStr = (char*)sqlite3_column_text(stmt, DB_IDENTIFITER);
valueType = sqlite3_column_int(stmt, DB_VALUETYPE); valueType = sqlite3_column_int(stmt, DB_VALUETYPE);
valueStr = (char*)sqlite3_column_text(stmt, DB_VALUE); valueStr = (char*)sqlite3_column_text(stmt, DB_VALUE);
printf("[%s][%d]\n",__FUNCTION__,__LINE__); printf("[%s][%d]\n",__FUNCTION__,__LINE__);
if(valueType == KK_TSL_DATA_TYPE_TEXT){ if(valueType == KK_TSL_DATA_TYPE_TEXT){
cJSON_AddStringToObject(propertyItem, propertyStr, valueStr); cJSON_AddStringToObject(obj, propertyStr, valueStr);
}else if(valueType == KK_TSL_DATA_TYPE_INT|| }else if(valueType == KK_TSL_DATA_TYPE_INT||
valueType == KK_TSL_DATA_TYPE_ENUM|| valueType == KK_TSL_DATA_TYPE_ENUM||
valueType == KK_TSL_DATA_TYPE_BOOL){ valueType == KK_TSL_DATA_TYPE_BOOL){
cJSON_AddNumberToObject(propertyItem, propertyStr, atoi(valueStr)); cJSON_AddNumberToObject(obj, propertyStr, atoi(valueStr));
}else if(valueType == KK_TSL_DATA_TYPE_DOUBLE){ }else if(valueType == KK_TSL_DATA_TYPE_DOUBLE){
cJSON_AddNumberToObject(propertyItem, propertyStr, atof(valueStr)); cJSON_AddNumberToObject(obj, propertyStr, atof(valueStr));
} }
} }
cJSON_AddItemToObject(obj, KK_SYNC_PROPERTY_STR, propertyItem);
sqlite3_free(sqlCmd); sqlite3_free(sqlCmd);
sqlite3_finalize(stmt); sqlite3_finalize(stmt);
return obj;
}
static int kk_get_panelConfig_info(cJSON *decvies,char *deviceCode)
{
char *sqlCmd = NULL;
sqlite3_stmt *stmt;
kk_sync_ctx_t *ctx = _kk_sync_get_ctx();
char *sceneId = NULL;
char *buttonId = NULL;
int bindType = 0;
int mFlag = 0;
if(decvies==NULL||deviceCode==NULL) {
return FAIL_RETURN;
}
cJSON *panelConfig = NULL;
sqlCmd = sqlite3_mprintf("select * from QuickPanelScene WHERE deviceCode = '%s' ",deviceCode);
sqlite3_prepare_v2(ctx->pDb, sqlCmd, strlen(sqlCmd), &stmt, NULL);
while(sqlite3_step(stmt) == SQLITE_ROW){
if(mFlag == 0){
mFlag = 1;
panelConfig = cJSON_CreateArray();
}
cJSON *item = cJSON_CreateObject();
cJSON *action= cJSON_CreateObject();
sceneId = (char*)sqlite3_column_text(stmt, DB_QUICKPANEL_SCENEID);
buttonId = (char*)sqlite3_column_text(stmt, DB_QUICKPANEL_BUTTONID);
bindType = (int)sqlite3_column_int(stmt,DB_QUICKPANEL_BINDTYPE);
kk_get_panel_scenes_actions_info(action,atoi(sceneId));
cJSON_AddItemToObject(item, "action", action);
cJSON_AddNumberToObject(item, "bindType", bindType);
cJSON_AddStringToObject(item, "buttonId", buttonId);
cJSON_AddItemToArray(panelConfig, item);
}
if(mFlag == 1){
cJSON_AddItemToObject(decvies, "panelConfig",panelConfig );
}
sqlite3_free(sqlCmd);
sqlite3_finalize(stmt);
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
static int kk_get_sub_devices_info(cJSON *gwdevicesItem,char *deviceCode) static int kk_get_sub_devices_info(cJSON *gwdevicesItem,char *deviceCode)
{ {
char *sqlCmd = NULL; char *sqlCmd = NULL;
...@@ -216,11 +478,13 @@ static int kk_get_sub_devices_info(cJSON *gwdevicesItem,char *deviceCode) ...@@ -216,11 +478,13 @@ static int kk_get_sub_devices_info(cJSON *gwdevicesItem,char *deviceCode)
} }
cJSON *subDevices = cJSON_CreateArray(); cJSON *subDevices = cJSON_CreateArray();
#if 1 #if 1
sqlCmd = sqlite3_mprintf("select * from SubDeviceInfo WHERE fatherDeviceCode = '%s' ",deviceCode); sqlCmd = sqlite3_mprintf("select * from SubDeviceInfo WHERE fatherDeviceCode = '%s' ",deviceCode);
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){
cJSON *subdevicesItem = cJSON_CreateObject(); cJSON *subdevicesItem = cJSON_CreateObject();
char devName[64] = {0}; cJSON *properties = NULL;
subDeviceCode = (char*)sqlite3_column_text(stmt, DB_SUB_DEVICECODE); subDeviceCode = (char*)sqlite3_column_text(stmt, DB_SUB_DEVICECODE);
subProductCode = (char*)sqlite3_column_text(stmt, DB_SUB_PRODUCTCODE); subProductCode = (char*)sqlite3_column_text(stmt, DB_SUB_PRODUCTCODE);
subVersion = (char*)sqlite3_column_text(stmt, DB_SUB_VERSION); subVersion = (char*)sqlite3_column_text(stmt, DB_SUB_VERSION);
...@@ -228,19 +492,30 @@ static int kk_get_sub_devices_info(cJSON *gwdevicesItem,char *deviceCode) ...@@ -228,19 +492,30 @@ static int kk_get_sub_devices_info(cJSON *gwdevicesItem,char *deviceCode)
cJSON_AddStringToObject(subdevicesItem, KK_SYNC_DEVICECODE_STR, subDeviceCode); cJSON_AddStringToObject(subdevicesItem, KK_SYNC_DEVICECODE_STR, subDeviceCode);
cJSON_AddStringToObject(subdevicesItem, KK_SYNC_VERSION_STR, subVersion); cJSON_AddStringToObject(subdevicesItem, KK_SYNC_VERSION_STR, subVersion);
cJSON_AddStringToObject(subdevicesItem, KK_SYNC_MAC_STR, subDeviceCode); cJSON_AddStringToObject(subdevicesItem, KK_SYNC_MAC_STR, subDeviceCode);
kk_get_device_name(subDeviceCode,"1",devName,sizeof(devName));
cJSON_AddStringToObject(subdevicesItem, KK_SYNC_NANE_STR, devName); cJSON_AddNumberToObject(subdevicesItem, KK_SYNC_ONLINE_STR, (strcmp(subIsline,"0")==0)?1:0);
cJSON_AddStringToObject(subdevicesItem, KK_SYNC_ONLINE_STR, subIsline);
kk_get_panelConfig_info(subdevicesItem,subDeviceCode);
cJSON_AddStringToObject(subdevicesItem, KK_SYNC_PRODUCTCODE_STR, subProductCode); cJSON_AddStringToObject(subdevicesItem, KK_SYNC_PRODUCTCODE_STR, subProductCode);
cJSON_AddStringToObject(subdevicesItem, KK_SYNC_SN_STR, ""); cJSON_AddStringToObject(subdevicesItem, KK_SYNC_SN_STR, "");
cJSON_AddStringToObject(subdevicesItem, KK_SYNC_STATUS_STR, "启动"); cJSON_AddNumberToObject(subdevicesItem, KK_SYNC_STATUS_STR, 1);
kk_get_properties_info(subDeviceCode,subdevicesItem);
if(kk_check_multi_ep_num(subDeviceCode)){
properties=kk_get_properties_info(subDeviceCode,KK_DM_DEVICE_SUBDEV);
}else{
properties=kk_get_properties_info_obj(subDeviceCode);
}
cJSON_AddItemToObject(subdevicesItem, "properties", properties);
cJSON_AddItemToArray(subDevices, subdevicesItem); cJSON_AddItemToArray(subDevices, subdevicesItem);
} }
#endif #endif
cJSON_AddItemToObject(gwdevicesItem, KK_SYNC_DEVICES_STR, subDevices); cJSON_AddItemToObject(gwdevicesItem, KK_SYNC_DEVICES_STR, subDevices);
sqlite3_free(sqlCmd); sqlite3_free(sqlCmd);
sqlite3_finalize(stmt); sqlite3_finalize(stmt);
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
static int kk_get_gw_devices_info(cJSON *gwdevices) static int kk_get_gw_devices_info(cJSON *gwdevices)
...@@ -275,12 +550,17 @@ static int kk_get_gw_devices_info(cJSON *gwdevices) ...@@ -275,12 +550,17 @@ static int kk_get_gw_devices_info(cJSON *gwdevices)
cJSON_AddStringToObject(gwdevicesItem, KK_SYNC_VERSION_STR, gw_version); cJSON_AddStringToObject(gwdevicesItem, KK_SYNC_VERSION_STR, gw_version);
cJSON_AddStringToObject(gwdevicesItem, KK_SYNC_MAC_STR, gw_deviceCode); cJSON_AddStringToObject(gwdevicesItem, KK_SYNC_MAC_STR, gw_deviceCode);
cJSON_AddStringToObject(gwdevicesItem, KK_SYNC_NANE_STR, "GW"); cJSON_AddStringToObject(gwdevicesItem, KK_SYNC_NANE_STR, "GW");
cJSON_AddStringToObject(gwdevicesItem, KK_SYNC_ONLINE_STR, gw_isline); cJSON_AddNumberToObject(gwdevicesItem, KK_SYNC_ONLINE_STR, (strcmp(gw_isline,"0")==0)?1:0);
cJSON_AddStringToObject(gwdevicesItem, KK_SYNC_PRODUCTCODE_STR, gw_productCode); cJSON_AddStringToObject(gwdevicesItem, KK_SYNC_PRODUCTCODE_STR, gw_productCode);
cJSON_AddStringToObject(gwdevicesItem, KK_SYNC_SN_STR, ""); cJSON_AddStringToObject(gwdevicesItem, KK_SYNC_SN_STR, "");
cJSON_AddStringToObject(gwdevicesItem, KK_SYNC_STATUS_STR, "启动"); cJSON_AddNumberToObject(gwdevicesItem, KK_SYNC_STATUS_STR, 1);
kk_get_properties_info(gw_deviceCode,gwdevicesItem); printf("[%s][%d]\n",__FUNCTION__,__LINE__);
kk_get_gw_properties_info(gwdevicesItem);
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
kk_get_sub_devices_info(gwdevicesItem,gw_deviceCode); kk_get_sub_devices_info(gwdevicesItem,gw_deviceCode);
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
cJSON_AddItemToArray(gwdevices, gwdevicesItem); cJSON_AddItemToArray(gwdevices, gwdevicesItem);
} }
sqlite3_free(sqlCmd); sqlite3_free(sqlCmd);
...@@ -308,7 +588,6 @@ int kk_get_room_name_by_scene_id(int scene_id,char *room_name) ...@@ -308,7 +588,6 @@ int kk_get_room_name_by_scene_id(int scene_id,char *room_name)
int dbepNum = 0; int dbepNum = 0;
char *roomNameStr =NULL; char *roomNameStr =NULL;
const char *selectCmd = "select * from SceneInfo WHERE sceneId = '%d';"; const char *selectCmd = "select * from SceneInfo WHERE sceneId = '%d';";
_kk_scene_lock(); _kk_scene_lock();
...@@ -326,6 +605,71 @@ int kk_get_room_name_by_scene_id(int scene_id,char *room_name) ...@@ -326,6 +605,71 @@ int kk_get_room_name_by_scene_id(int scene_id,char *room_name)
return res; return res;
} }
static int kk_get_panel_scenes_actions_info(cJSON *actionItem,int id)
{
char *sqlCmd = NULL;
//char *zErrMsg = 0;
sqlite3_stmt *stmt;
char *deviceCode = NULL;
char *propertyName = NULL;
char *propertyValue = NULL;
char roomIdStr[32] = {0};
char *type = NULL;
int delay = 0,epNum = 0,scene_id=0;
kk_sync_ctx_t *ctx = _kk_sync_get_ctx();
if(actionItem == NULL){
return FAIL_RETURN;
}
sqlCmd = sqlite3_mprintf("select * from SceneActionInfo");
sqlite3_prepare_v2(ctx->pDb, sqlCmd, strlen(sqlCmd), &stmt, NULL);
while(sqlite3_step(stmt) == SQLITE_ROW){
scene_id = sqlite3_column_int(stmt, DB_SCENEACTION_SCENEID);
if(id!=scene_id){
continue ;
}
deviceCode = (char*)sqlite3_column_text(stmt, DB_SCENEACTION_DEVICECODE);
delay = sqlite3_column_int(stmt, DB_SCENEACTION_DELAY);
epNum = sqlite3_column_int(stmt, DB_SCENEACTION_EPNUM);
propertyName = (char*)sqlite3_column_text(stmt, DB_SCENEACTION_PROPERTYNAME);
propertyValue = (char*)sqlite3_column_text(stmt, DB_SCENEACTION_PROPERTYVALUE);
type = (char*)sqlite3_column_text(stmt, DB_SCENEACTION_TYPE);
kk_get_roomId_by_deviceCode(deviceCode,"1",roomIdStr,sizeof(roomIdStr));
cJSON_AddStringToObject(actionItem, KK_SYNC_DEVICECODE_STR, deviceCode);
cJSON_AddNumberToObject(actionItem, KK_SYNC_SCENE_DELAY_STR, delay);
cJSON_AddNumberToObject(actionItem, KK_SYNC_SCENE_EPNUM_STR, epNum);
char *propertiesbuf[64] = {0};
int num = 0;
split(propertyName,"_",propertiesbuf,&num);
if(num==2){
cJSON_AddStringToObject(actionItem, KK_SYNC_SCENE_PROPERTYNAME_STR, propertiesbuf[0]);
}else{
cJSON_AddStringToObject(actionItem, KK_SYNC_SCENE_PROPERTYNAME_STR, propertyName);
}
cJSON_AddStringToObject(actionItem, KK_SYNC_SCENE_TYPE_STR, type);
cJSON_AddStringToObject(actionItem, KK_SYNC_SCENE_PROPERTYVALUE_STR, propertyValue);
cJSON_AddStringToObject(actionItem, KK_SYNC_ROOMID_STR, roomIdStr);
break;
}
sqlite3_free(sqlCmd);
sqlite3_finalize(stmt);
return SUCCESS_RETURN;
}
static int kk_get_scenes_actions_info(cJSON *actionArray,int id) static int kk_get_scenes_actions_info(cJSON *actionArray,int id)
{ {
char *sqlCmd = NULL; char *sqlCmd = NULL;
...@@ -353,20 +697,33 @@ static int kk_get_scenes_actions_info(cJSON *actionArray,int id) ...@@ -353,20 +697,33 @@ static int kk_get_scenes_actions_info(cJSON *actionArray,int id)
continue ; continue ;
} }
deviceCode = (char*)sqlite3_column_text(stmt, DB_SCENEACTION_DEVICECODE); deviceCode = (char*)sqlite3_column_text(stmt, DB_SCENEACTION_DEVICECODE);
delay = sqlite3_column_int(stmt, DB_SCENEACTION_DELAY); delay = sqlite3_column_int(stmt, DB_SCENEACTION_DELAY);
epNum = sqlite3_column_int(stmt, DB_SCENEACTION_EPNUM); epNum = sqlite3_column_int(stmt, DB_SCENEACTION_EPNUM);
propertyName = (char*)sqlite3_column_text(stmt, DB_SCENEACTION_PROPERTYNAME); propertyName = (char*)sqlite3_column_text(stmt, DB_SCENEACTION_PROPERTYNAME);
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); kk_get_room_name_by_scene_id(scene_id,room_name);
actionItem = cJSON_CreateObject(); actionItem = cJSON_CreateObject();
cJSON_AddStringToObject(actionItem, KK_SYNC_DEVICECODE_STR, deviceCode); cJSON_AddStringToObject(actionItem, KK_SYNC_DEVICECODE_STR, deviceCode);
cJSON_AddNumberToObject(actionItem, KK_SYNC_SCENE_DELAY_STR, delay); cJSON_AddNumberToObject(actionItem, KK_SYNC_SCENE_DELAY_STR, delay);
cJSON_AddNumberToObject(actionItem, KK_SYNC_SCENE_EPNUM_STR, epNum);
cJSON_AddStringToObject(actionItem, KK_SYNC_SCENE_PROPERTYNAME_STR, propertyName);
char *propertiesbuf[64] = {0};
int num = 0;
split(propertyName,"_",propertiesbuf,&num);
if(num==2){
cJSON_AddStringToObject(actionItem, KK_SYNC_SCENE_PROPERTYNAME_STR, propertiesbuf[0]);
cJSON_AddNumberToObject(actionItem, KK_SYNC_SCENE_EPNUM_STR, atoi(propertiesbuf[1]));
}else{
cJSON_AddStringToObject(actionItem, KK_SYNC_SCENE_PROPERTYNAME_STR, propertyName);
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);
cJSON_AddStringToObject(actionItem, KK_SYNC_SCENE_PROPERTYVALUE_STR, propertyValue); cJSON_AddStringToObject(actionItem, KK_SYNC_SCENE_PROPERTYVALUE_STR, propertyValue);
cJSON_AddStringToObject(actionItem, KK_SYNC_ROOMID_STR, room_name); cJSON_AddStringToObject(actionItem, KK_SYNC_ROOMID_STR, room_name);
...@@ -376,7 +733,57 @@ static int kk_get_scenes_actions_info(cJSON *actionArray,int id) ...@@ -376,7 +733,57 @@ static int kk_get_scenes_actions_info(cJSON *actionArray,int id)
sqlite3_finalize(stmt); sqlite3_finalize(stmt);
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
static int kk_get_scenes_trigger_info(cJSON *triggerArray,char *sceneId)
static int kk_build_repeatday_string(int repeatday,char *repeatStr,int size)
{
int i = 0;
int pos = 0;
char tmp[16] = {0};
memset(repeatStr,0,size);
for(;i<7;i++){
if(repeatday&(1<<i)){
memset(tmp,0,sizeof(tmp));
snprintf(tmp,sizeof(tmp),"%d",i+1);
strcat(repeatStr,tmp);
strcat(repeatStr,",");
}
}
pos = strlen(repeatStr);
if(pos>0){
repeatStr[pos-1] = '\0';
}
}
int kk_is_trigger_timing(char *sceneId)
{
char *sqlCmd = NULL;
sqlite3_stmt *stmt;
kk_sync_ctx_t *ctx = _kk_sync_get_ctx();
sqlCmd = sqlite3_mprintf("select * from SceneTimerInfo where sceneId = %s",sceneId);
sqlite3_prepare_v2(ctx->pDb, sqlCmd, strlen(sqlCmd), &stmt, NULL);
while(sqlite3_step(stmt) == SQLITE_ROW){
return 1;
}
return 0;
}
static int kk_creat_starttime_build(time_t current)
{
struct tm *c = gmtime(&current);
return (c->tm_hour*3600 +c->tm_min*60 + c->tm_sec);
}
static int kk_get_scenes_trigger_info(cJSON *triggerObj,char *sceneId)
{ {
char *sqlCmd = NULL; char *sqlCmd = NULL;
//char *zErrMsg = 0; //char *zErrMsg = 0;
...@@ -385,65 +792,166 @@ static int kk_get_scenes_trigger_info(cJSON *triggerArray,char *sceneId) ...@@ -385,65 +792,166 @@ static int kk_get_scenes_trigger_info(cJSON *triggerArray,char *sceneId)
char *propertyName = NULL; char *propertyName = NULL;
char *compareType = NULL; char *compareType = NULL;
char *compareValue = NULL; char *compareValue = NULL;
//char *type = NULL; cJSON *triggerAry;
char *type = NULL;
int epNum = 0; int epNum = 0;
kk_sync_ctx_t *ctx = _kk_sync_get_ctx();
if(triggerArray == NULL || sceneId == NULL){ int week;
int time;
kk_sync_ctx_t *ctx = _kk_sync_get_ctx();
if(triggerObj == NULL || sceneId == NULL){
return FAIL_RETURN; return FAIL_RETURN;
} }
triggerAry = cJSON_CreateArray();
sqlCmd = sqlite3_mprintf("select * from SceneTimerInfo where sceneId = %s",sceneId);
sqlite3_prepare_v2(ctx->pDb, sqlCmd, strlen(sqlCmd), &stmt, NULL);
while(sqlite3_step(stmt) == SQLITE_ROW){
cJSON *conditionItem = cJSON_CreateObject();
char weekStr[32] = {0};
week = sqlite3_column_int(stmt, DB_SCENETIMER_WEEK);
time = sqlite3_column_int(stmt, DB_SCENETIMER_TIME);
kk_build_repeatday_string(week,weekStr,sizeof(weekStr));
cJSON_AddStringToObject(conditionItem, "type", "trigger/timing");
cJSON_AddStringToObject(conditionItem, "week", weekStr);
//cJSON_AddNumberToObject(conditionItem, "time", time);
int startTime = kk_creat_starttime_build(time);
char TimeStr[32] = {0};
memset(TimeStr,0,sizeof(TimeStr));
snprintf(TimeStr,sizeof(TimeStr),"%d",startTime);
cJSON_AddStringToObject(conditionItem, "time", TimeStr);
cJSON_AddItemToArray(triggerAry, conditionItem);
}
sqlCmd = sqlite3_mprintf("select * from SceneTriggerInfo where sceneId = %s",sceneId); sqlCmd = sqlite3_mprintf("select * from SceneTriggerInfo where sceneId = %s",sceneId);
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){
cJSON *triggerItem = cJSON_CreateObject(); cJSON *triggerItem = cJSON_CreateObject();
deviceCode = (char*)sqlite3_column_text(stmt, DB_SCENETRIGGER_DEVICECODE); deviceCode = (char*)sqlite3_column_text(stmt, DB_SCENETRIGGER_DEVICECODE);
epNum = sqlite3_column_int(stmt, DB_SCENETRIGGER_EPNUM); epNum = sqlite3_column_int(stmt, DB_SCENETRIGGER_EPNUM);
propertyName = (char*)sqlite3_column_text(stmt, DB_SCENETRIGGER_PROPERTYNAME); propertyName = (char*)sqlite3_column_text(stmt, DB_SCENETRIGGER_PROPERTYNAME);
compareType = (char*)sqlite3_column_text(stmt, DB_SCENETRIGGER_COMPARETYPE); compareType = (char*)sqlite3_column_text(stmt, DB_SCENETRIGGER_COMPARETYPE);
compareValue = (char*)sqlite3_column_text(stmt, DB_SCENETRIGGER_COMPAREVALUE); compareValue = (char*)sqlite3_column_text(stmt, DB_SCENETRIGGER_COMPAREVALUE);
//type = (char*)sqlite3_column_text(stmt, DB_SCENETRIGGER_TYPE); type = (char*)sqlite3_column_text(stmt, DB_SCENETRIGGER_TYPE);
cJSON_AddStringToObject(triggerItem, "type", type);
cJSON_AddStringToObject(triggerItem, KK_SYNC_DEVICECODE_STR, (char*)deviceCode); cJSON_AddStringToObject(triggerItem, KK_SYNC_DEVICECODE_STR, (char*)deviceCode);
cJSON_AddNumberToObject(triggerItem, KK_SYNC_SCENE_EPNUM_STR, epNum); cJSON_AddNumberToObject(triggerItem, KK_SYNC_SCENE_EPNUM_STR, epNum);
cJSON_AddStringToObject(triggerItem, KK_SYNC_SCENE_PROPERTYNAME_STR, (char*)propertyName); cJSON_AddStringToObject(triggerItem, KK_SYNC_SCENE_PROPERTYNAME_STR, (char*)propertyName);
cJSON_AddStringToObject(triggerItem, KK_SYNC_SCENE_COMPARETYPE_STR, (char*)compareType); cJSON_AddStringToObject(triggerItem, KK_SYNC_SCENE_COMPARETYPE_STR, (char*)compareType);
cJSON_AddStringToObject(triggerItem, KK_SYNC_SCENE_COMPAREValue_STR, (char*)compareValue); cJSON_AddStringToObject(triggerItem, KK_SYNC_SCENE_COMPAREValue_STR, (char*)compareValue);
cJSON_AddItemToArray(triggerArray, triggerItem); cJSON_AddItemToArray(triggerAry, triggerItem);
} }
cJSON_AddItemToObject(triggerObj, "items",triggerAry);
sqlite3_free(sqlCmd); sqlite3_free(sqlCmd);
sqlite3_finalize(stmt); sqlite3_finalize(stmt);
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
static int kk_get_scenes_condition_info(cJSON *conditionArray,char *sceneId)
static cJSON *kk_build_repeatday_array(int repeatday)
{
int i = 0;
cJSON *repeatAry = cJSON_CreateArray();
for(;i<7;i++){
if(repeatday&(1<<i)){
cJSON_AddItemToArray(repeatAry, cJSON_CreateNumber(i+1));
}
}
return repeatAry;
}
static int kk_get_scenes_condition_info(cJSON *conditionObj,char *sceneId)
{ {
char *sqlCmd = NULL; char *sqlCmd = NULL;
//char *zErrMsg = 0; //char *zErrMsg = 0;
sqlite3_stmt *stmt; sqlite3_stmt *stmt;
char *type;
int starttime = 0; int starttime = 0;
int endtime = 0; int endtime = 0;
int crossDay = 0; int crossDay = 0;
int repeat = 0; int repeat = 0;
kk_sync_ctx_t *ctx = _kk_sync_get_ctx();
if(conditionArray == NULL || sceneId == NULL){
cJSON *conditionAry;
kk_sync_ctx_t *ctx = _kk_sync_get_ctx();
if(conditionObj == NULL || sceneId == NULL){
return FAIL_RETURN; return FAIL_RETURN;
} }
conditionAry = cJSON_CreateArray();
sqlCmd = sqlite3_mprintf("select * from SceneConditionInfo where sceneId = %s",sceneId); sqlCmd = sqlite3_mprintf("select * from SceneConditionInfo where sceneId = %s",sceneId);
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){
cJSON *conditionItem = cJSON_CreateObject(); cJSON *conditionItem = cJSON_CreateObject();
starttime = sqlite3_column_int(stmt, DB_SCENECONDITION_STARTTIME); cJSON *repeatAry = NULL;
endtime = sqlite3_column_int(stmt, DB_SCENECONDITION_ENDTIME); type = (char*)sqlite3_column_text(stmt, DB_SCENECONDITION_TYPE);
crossDay = sqlite3_column_int(stmt, DB_SCENECONDITION_CROSSDAY);
repeat = sqlite3_column_int(stmt, DB_SCENECONDITION_REPEATDAY); starttime = sqlite3_column_int(stmt, DB_SCENECONDITION_STARTTIME);
cJSON_AddNumberToObject(conditionItem, KK_SYNC_SCENE_STARTTIME_STR, starttime); endtime = sqlite3_column_int(stmt, DB_SCENECONDITION_ENDTIME);
cJSON_AddNumberToObject(conditionItem, KK_SYNC_SCENE_ENDTIME_STR, endtime); crossDay = sqlite3_column_int(stmt, DB_SCENECONDITION_CROSSDAY);
repeat = sqlite3_column_int(stmt, DB_SCENECONDITION_REPEATDAY);
repeatAry = kk_build_repeatday_array(repeat);
cJSON_AddStringToObject(conditionItem, KK_SYNC_SCENE_TYPE_STR, type);
cJSON_AddNumberToObject(conditionItem, KK_SYNC_SCENE_STARTTIME_STR, starttime);
cJSON_AddNumberToObject(conditionItem, KK_SYNC_SCENE_ENDTIME_STR, endtime);
cJSON_AddNumberToObject(conditionItem, KK_SYNC_SCENE_CROSSDAY_STR, crossDay); cJSON_AddNumberToObject(conditionItem, KK_SYNC_SCENE_CROSSDAY_STR, crossDay);
cJSON_AddNumberToObject(conditionItem, KK_SYNC_SCENE_REPEATDAY_STR, repeat); cJSON_AddItemToObject(conditionItem,KK_SYNC_SCENE_REPEATDAY_STR,repeatAry);
cJSON_AddItemToArray(conditionArray, conditionItem);
}
cJSON_AddItemToArray(conditionAry, conditionItem);
}
char *deviceCode = NULL;
char *propertyName = NULL;
char *compareType = NULL;
char *compareValue = NULL;
int epNum = 0;
int isAnd;
sqlCmd = sqlite3_mprintf("select * from SceneTriggerInfo where sceneId = %s",sceneId);
sqlite3_prepare_v2(ctx->pDb, sqlCmd, strlen(sqlCmd), &stmt, NULL);
while(sqlite3_step(stmt) == SQLITE_ROW){
isAnd = sqlite3_column_int(stmt, DB_SCENETRIGGER_ISAND);
if(isAnd==1){
cJSON *triggerItem = cJSON_CreateObject();
deviceCode = (char*)sqlite3_column_text(stmt, DB_SCENETRIGGER_DEVICECODE);
epNum = sqlite3_column_int(stmt, DB_SCENETRIGGER_EPNUM);
propertyName = (char*)sqlite3_column_text(stmt, DB_SCENETRIGGER_PROPERTYNAME);
compareType = (char*)sqlite3_column_text(stmt, DB_SCENETRIGGER_COMPARETYPE);
compareValue = (char*)sqlite3_column_text(stmt, DB_SCENETRIGGER_COMPAREVALUE);
type = (char*)sqlite3_column_text(stmt, DB_SCENETRIGGER_TYPE);
cJSON_AddStringToObject(triggerItem, KK_SYNC_SCENE_TYPE_STR, (char*)type);
cJSON_AddStringToObject(triggerItem, KK_SYNC_DEVICECODE_STR, (char*)deviceCode);
cJSON_AddNumberToObject(triggerItem, KK_SYNC_SCENE_EPNUM_STR, epNum);
cJSON_AddStringToObject(triggerItem, KK_SYNC_SCENE_PROPERTYNAME_STR, (char*)propertyName);
cJSON_AddStringToObject(triggerItem, KK_SYNC_SCENE_COMPARETYPE_STR, (char*)compareType);
cJSON_AddStringToObject(triggerItem, KK_SYNC_SCENE_COMPAREValue_STR, (char*)compareValue);
cJSON_AddItemToArray(conditionAry, triggerItem);
}
}
cJSON_AddItemToObject(conditionObj, "items",conditionAry);
sqlite3_free(sqlCmd); sqlite3_free(sqlCmd);
sqlite3_finalize(stmt); sqlite3_finalize(stmt);
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
static int kk_get_scenes_info(cJSON *data) static int kk_get_scenes_info(cJSON *data)
{ {
char *sqlCmd = NULL; char *sqlCmd = NULL;
...@@ -463,9 +971,9 @@ static int kk_get_scenes_info(cJSON *data) ...@@ -463,9 +971,9 @@ static int kk_get_scenes_info(cJSON *data)
cJSON *sceneArrayItem = cJSON_CreateObject(); cJSON *sceneArrayItem = cJSON_CreateObject();
enable = sqlite3_column_int(stmt, DB_SCENEINFO_ENABLE); enable = sqlite3_column_int(stmt, DB_SCENEINFO_ENABLE);
if(enable == 1){ if(enable == 1){
cJSON_AddStringToObject(sceneArrayItem, KK_SYNC_SCENE_ENABLE_STR, "启动"); cJSON_AddNumberToObject(sceneArrayItem, KK_SYNC_SCENE_ENABLE_STR, 1);
}else{ }else{
cJSON_AddStringToObject(sceneArrayItem, KK_SYNC_SCENE_ENABLE_STR, "禁用"); cJSON_AddNumberToObject(sceneArrayItem, KK_SYNC_SCENE_ENABLE_STR, 0);
} }
type = sqlite3_column_int(stmt, DB_SCENEINFO_SCENETYPE); type = sqlite3_column_int(stmt, DB_SCENEINFO_SCENETYPE);
...@@ -476,13 +984,16 @@ static int kk_get_scenes_info(cJSON *data) ...@@ -476,13 +984,16 @@ static int kk_get_scenes_info(cJSON *data)
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));
cJSON_AddItemToObject(sceneArrayItem, KK_SYNC_SCENE_ACTIONS_STR, actionArray); cJSON_AddItemToObject(sceneArrayItem, KK_SYNC_SCENE_ACTIONS_STR, actionArray);
cJSON *triggerArray = cJSON_CreateArray(); cJSON *triggerObj = cJSON_CreateObject();
kk_get_scenes_trigger_info(triggerArray,sceneId); kk_get_scenes_trigger_info(triggerObj,sceneId);
cJSON_AddItemToObject(sceneArrayItem, KK_SYNC_SCENE_TRIGGER_STR, triggerArray); cJSON_AddItemToObject(sceneArrayItem, KK_SYNC_SCENE_TRIGGER_STR, triggerObj);
cJSON *conditionArray = cJSON_CreateArray(); if(kk_is_trigger_timing(sceneId)!=1){
kk_get_scenes_condition_info(conditionArray,sceneId); cJSON *conditionObj = cJSON_CreateObject();
cJSON_AddItemToObject(sceneArrayItem, KK_SYNC_SCENE_CONDITION_STR, conditionArray); kk_get_scenes_condition_info(conditionObj,sceneId);
cJSON_AddItemToObject(sceneArrayItem, KK_SYNC_SCENE_CONDITION_STR, conditionObj);
}
cJSON_AddItemToArray(sceneArray, sceneArrayItem); cJSON_AddItemToArray(sceneArray, sceneArrayItem);
} }
cJSON_AddItemToObject(data, KK_SYNC_SCENE_STR, sceneArray); cJSON_AddItemToObject(data, KK_SYNC_SCENE_STR, sceneArray);
...@@ -490,6 +1001,8 @@ static int kk_get_scenes_info(cJSON *data) ...@@ -490,6 +1001,8 @@ static int kk_get_scenes_info(cJSON *data)
sqlite3_finalize(stmt); sqlite3_finalize(stmt);
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
/*
static int kk_get_ccu_properties(cJSON *property) static int kk_get_ccu_properties(cJSON *property)
{ {
char *sqlCmd = NULL; char *sqlCmd = NULL;
...@@ -523,6 +1036,7 @@ static int kk_get_ccu_properties(cJSON *property) ...@@ -523,6 +1036,7 @@ static int kk_get_ccu_properties(cJSON *property)
_kk_sync_unlock(); _kk_sync_unlock();
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
*/
/************************************************************ /************************************************************
*功能描述:检查设备是否有重复 *功能描述:检查设备是否有重复
*输入参数:deviceCode:设备deviceCode *输入参数:deviceCode:设备deviceCode
...@@ -537,36 +1051,36 @@ char *kk_sync_get_info() ...@@ -537,36 +1051,36 @@ char *kk_sync_get_info()
char ccu_productCode[PRODUCT_CODE_MAXLEN] = {0}; char ccu_productCode[PRODUCT_CODE_MAXLEN] = {0};
char version[32] = {0}; char version[32] = {0};
char cloudstatus_str[16] = {0}; char cloudstatus_str[16] = {0};
cJSON *root=cJSON_CreateObject();
cJSON_AddStringToObject(root,KK_SYNC_CODE_STR,"0");
cJSON *data = cJSON_CreateObject(); cJSON *data = cJSON_CreateObject();
cJSON_AddItemToObject(root, KK_SYNC_DATA_STR, data);
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
kk_get_rooms_info(data); kk_get_rooms_info(data);
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
kk_get_devices_info(data); kk_get_devices_info(data);
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
kk_get_scenes_info(data); kk_get_scenes_info(data);
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
//HAL_GetDevice_Code(ccu_deviceCode);
HAL_Get_ccuid(ccu_deviceCode); HAL_Get_ccuid(ccu_deviceCode);
HAL_GetProduct_Code(ccu_productCode); HAL_GetProduct_Code(ccu_productCode);
HAL_GetVersion(version); HAL_GetVersion(version);
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
cJSON_AddStringToObject(data, KK_SYNC_DEVICECODE_STR,ccu_deviceCode); cJSON_AddStringToObject(data, KK_SYNC_DEVICECODE_STR,ccu_deviceCode);
cJSON_AddStringToObject(data, KK_SYNC_NANE_STR, "newccu"); cJSON_AddStringToObject(data, KK_SYNC_NANE_STR, "newccu");
sprintf(cloudstatus_str, "%d", kk_get_cloudstatus()); sprintf(cloudstatus_str, "%d", kk_get_cloudstatus());
cJSON_AddStringToObject(data, KK_SYNC_ONLINE_STR, cloudstatus_str); cJSON_AddStringToObject(data, KK_SYNC_ONLINE_STR, cloudstatus_str);
cJSON_AddStringToObject(data, KK_SYNC_PRODUCTCODE_STR, ccu_productCode); cJSON_AddStringToObject(data, KK_SYNC_PRODUCTCODE_STR, ccu_productCode);
cJSON_AddStringToObject(data, KK_SYNC_VERSION_STR, version); cJSON_AddStringToObject(data, KK_SYNC_VERSION_STR, version);
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
cJSON *property = cJSON_CreateObject(); kk_get_ccu_properties_info(data);
kk_get_ccu_properties(property);
cJSON_AddItemToObject(data, KK_SYNC_PROPERTY_STR, property);
out=cJSON_Print(root); out=cJSON_Print(data);
printf("kk_sync_get_info:%s\n",out); printf("kk_sync_get_info:%s\n",out);
cJSON_Delete(root); cJSON_Delete(data);
//free(out); //free(out);
return out; return out;
} }
......
...@@ -25,9 +25,9 @@ ...@@ -25,9 +25,9 @@
#define KK_SYNC_SCENE_ACTIONS_STR "actions" #define KK_SYNC_SCENE_ACTIONS_STR "actions"
#define KK_SYNC_SCENE_ENABLE_STR "enable" #define KK_SYNC_SCENE_ENABLE_STR "enable"
#define KK_SYNC_SCENE_SCENETYPE_STR "sceneType" #define KK_SYNC_SCENE_SCENETYPE_STR "sceneType"
#define KK_SYNC_SCENE_TRIGGER_STR "trigger" #define KK_SYNC_SCENE_TRIGGER_STR "triggers"
#define KK_SYNC_SCENE_ITEMS_STR "items" #define KK_SYNC_SCENE_ITEMS_STR "items"
#define KK_SYNC_SCENE_CONDITION_STR "condition" #define KK_SYNC_SCENE_CONDITION_STR "conditions"
#define KK_SYNC_SCENE_COMPARETYPE_STR "compareType" #define KK_SYNC_SCENE_COMPARETYPE_STR "compareType"
#define KK_SYNC_SCENE_COMPAREValue_STR "compareValue" #define KK_SYNC_SCENE_COMPAREValue_STR "compareValue"
#define KK_SYNC_SCENE_STARTTIME_STR "startTime" #define KK_SYNC_SCENE_STARTTIME_STR "startTime"
......
...@@ -167,7 +167,7 @@ void kk_sendData2gw(void* data, int len, char* chalMark){ ...@@ -167,7 +167,7 @@ void kk_sendData2gw(void* data, int len, char* chalMark){
kk_print_long_data(data,newLen); kk_print_long_data(data,newLen);
INFO_PRINT("start to send data to gw end\n"); INFO_PRINT("start to send data to gw end\n");
} }
static void split(char *src,const char *separator,char **dest,int *num) { void split(char *src,const char *separator,char **dest,int *num) {
char *pNext; char *pNext;
int count = 0; int count = 0;
if (src == NULL || strlen(src) == 0) if (src == NULL || strlen(src) == 0)
...@@ -626,7 +626,10 @@ void kk_platMsg_handle(void* data, char* chalMark){ ...@@ -626,7 +626,10 @@ void kk_platMsg_handle(void* data, char* chalMark){
if(jsonPay == NULL) goto error; if(jsonPay == NULL) goto error;
proCode = cJSON_GetObjectItem(jsonPay, MSG_PRODUCT_CODE_STR); proCode = cJSON_GetObjectItem(jsonPay, MSG_PRODUCT_CODE_STR);
devCode = cJSON_GetObjectItem(jsonPay, MSG_DEVICE_CODE_STR); devCode = cJSON_GetObjectItem(jsonPay, MSG_DEVICE_CODE_STR);
mac = cJSON_GetObjectItem(jsonPay, "mac"); //mac = cJSON_GetObjectItem(jsonPay, "mac");
mac = cJSON_GetObjectItem(jsonPay, MSG_DEVICE_CODE_STR);
if (proCode == NULL || devCode == NULL || mac == NULL){ if (proCode == NULL || devCode == NULL || mac == NULL){
ERROR_PRINT("productCode, deviceCode mac params are error\n"); ERROR_PRINT("productCode, deviceCode mac params are error\n");
goto error; goto error;
......
...@@ -387,10 +387,10 @@ static int kk_scene_check_trigger_exist(const char* deviceCode,int epNum,const c ...@@ -387,10 +387,10 @@ static int kk_scene_check_trigger_exist(const char* deviceCode,int epNum,const c
char *dbcompareType =NULL; char *dbcompareType =NULL;
char *dbsceneId =NULL; char *dbsceneId =NULL;
const char *selectCmd = "select * from SceneTriggerInfo WHERE deviceCode = '%s' and propertyName = '%s';"; const char *selectCmd = "select * from SceneTriggerInfo WHERE deviceCode = '%s' and propertyName = '%s' and epNum = '%d';";
_kk_scene_lock(); _kk_scene_lock();
sqlCmd = sqlite3_mprintf(selectCmd,deviceCode,propertyName); sqlCmd = sqlite3_mprintf(selectCmd,deviceCode,propertyName,epNum);
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){
dbepNum = sqlite3_column_int(stmt, DB_SCENETRIGGER_EPNUM); dbepNum = sqlite3_column_int(stmt, DB_SCENETRIGGER_EPNUM);
...@@ -434,6 +434,20 @@ int kk_scene_insert_scene_trigger(const char* type,const char* deviceCode,int ep ...@@ -434,6 +434,20 @@ int kk_scene_insert_scene_trigger(const char* type,const char* deviceCode,int ep
char *zErrMsg = 0; char *zErrMsg = 0;
/*此触发条件已经存在*/ /*此触发条件已经存在*/
if(kk_scene_check_trigger_exist(deviceCode,epNum,propertyName,compareType,compareValue,sceneId)){ if(kk_scene_check_trigger_exist(deviceCode,epNum,propertyName,compareType,compareValue,sceneId)){
sqlCmd = sqlite3_mprintf("UPDATE SceneTriggerInfo SET isAnd=%d WHERE deviceCode = '%s' and propertyName = '%s' and epNum = '%d' and sceneId= '%s';",isAnd,deviceCode,propertyName,epNum,sceneId);
printf("sqlCmd=%s\n",sqlCmd);
res = sqlite3_exec(ctx->pDb, sqlCmd, NULL, NULL, &zErrMsg);
if( res != SQLITE_OK ){
ERROR_PRINT("SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
sqlite3_free(sqlCmd);
_kk_scene_unlock();
return FAIL_RETURN;
}
sqlite3_free(sqlCmd);
_kk_scene_unlock();
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
const char *insertCmd = "insert into SceneTriggerInfo (type, deviceCode,epNum,propertyName,compareType,compareValue,sceneId,isAnd) \ const char *insertCmd = "insert into SceneTriggerInfo (type, deviceCode,epNum,propertyName,compareType,compareValue,sceneId,isAnd) \
......
...@@ -644,6 +644,7 @@ int kk_scene_parse_scene_trigger(const cJSON* str,const char *sceneId) ...@@ -644,6 +644,7 @@ int kk_scene_parse_scene_trigger(const cJSON* str,const char *sceneId)
if(type == NULL) return FAIL_RETURN; if(type == NULL) return FAIL_RETURN;
if(!strcmp("trigger/thing/property",type->valuestring)){ if(!strcmp("trigger/thing/property",type->valuestring)){
printf("---------------->isAnd=0\n");
res = kk_scene_parse_trigger_detail(type->valuestring,item,sceneId,0); res = kk_scene_parse_trigger_detail(type->valuestring,item,sceneId,0);
if(res != SUCCESS_RETURN){ if(res != SUCCESS_RETURN){
ERROR_PRINT("kk_scene_parse_scene_trigger fail!!!\n"); ERROR_PRINT("kk_scene_parse_scene_trigger fail!!!\n");
...@@ -859,6 +860,7 @@ int kk_scene_parse_scene_condition(const cJSON* str,const char *sceneId) ...@@ -859,6 +860,7 @@ int kk_scene_parse_scene_condition(const cJSON* str,const char *sceneId)
} }
} }
else if(!strcmp("trigger/thing/property",type->valuestring)){ else if(!strcmp("trigger/thing/property",type->valuestring)){
printf("---------------->isAnd=1\n");
kk_scene_parse_trigger_detail(type->valuestring,item,sceneId,1); kk_scene_parse_trigger_detail(type->valuestring,item,sceneId,1);
} }
else{ else{
...@@ -1052,12 +1054,13 @@ int kk_scene_parse_scene_muticontrol(const cJSON* str,const char *sceneId,int is ...@@ -1052,12 +1054,13 @@ int kk_scene_parse_scene_muticontrol(const cJSON* str,const char *sceneId,int is
} }
cJSON_AddItemToArray(array,arrayParam); cJSON_AddItemToArray(array,arrayParam);
//break; //break;
kk_scene_insert_scene_action(type->valuestring,deviceCode->valuestring,atoi(epNum->valuestring),
"","",0,sceneId,node->fatherDeviceCode);
} }
item = item->next; item = item->next;
} }
res = kk_scene_insert_scene_action(type->valuestring,deviceCode->valuestring,0,
"","",0,sceneId,node->fatherDeviceCode);
kk_scene_muticontrol_info_send(array,node->fatherDeviceCode,sceneId,isUpdate); kk_scene_muticontrol_info_send(array,node->fatherDeviceCode,sceneId,isUpdate);
return SUCCESS_RETURN; return SUCCESS_RETURN;
...@@ -1099,14 +1102,15 @@ int kk_scene_parse_addscene(const cJSON* args,char *sceneId,int isUpdate,const c ...@@ -1099,14 +1102,15 @@ int kk_scene_parse_addscene(const cJSON* args,char *sceneId,int isUpdate,const c
dm_msg_scene_event_post(MSG_SCENE_ADDNOTIFICATION,pSceneShadow,msgId); dm_msg_scene_event_post(MSG_SCENE_ADDNOTIFICATION,pSceneShadow,msgId);
} }
} }
char roomIdStr[32] = {0};
snprintf(roomIdStr,32,"%d",room_id->valueint);
res = kk_scene_insert_scene_info(roomIdStr,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){
kk_scene_parse_scene_muticontrol(args,sceneId,isUpdate); kk_scene_parse_scene_muticontrol(args,sceneId,isUpdate);
} }
else{ else{
char roomIdStr[32] = {0};
snprintf(roomIdStr,32,"%d",room_id->valueint);
res = kk_scene_insert_scene_info(roomIdStr,name->valuestring,sceneType->valueint,enable->valueint,sceneId);
if(res != SUCCESS_RETURN){ if(res != SUCCESS_RETURN){
INFO_PRINT("kk_scene_insert_scene_info fail!!!\n"); INFO_PRINT("kk_scene_insert_scene_info fail!!!\n");
return res; return res;
......
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