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

【修改内容】1,增加房间勿扰模式的功能设置

【提交人】陈伟灿
parent e13e0d1f
...@@ -114,13 +114,15 @@ void onConnectFailure(void* context, MQTTAsync_failureData* response) ...@@ -114,13 +114,15 @@ void onConnectFailure(void* context, MQTTAsync_failureData* response)
} }
void onConnect(void* context, MQTTAsync_successData* response) void onConnect(void* context, MQTTAsync_successData* response)
{ {
INFO_PRINT("Successful connection\n"); INFO_PRINT("-----------Successful connection\n");
s_cloudStatus = DEVICE_ONLINE;
kk_remove_disconnect_flag(); kk_remove_disconnect_flag();
KK_Send_CloudState(s_cloudStatus); if(s_cloudStatus != DEVICE_ONLINE){
s_cloudStatus = DEVICE_ONLINE;
KK_Send_CloudState(s_cloudStatus);
}
} }
...@@ -145,15 +147,18 @@ static void onDeliveryComplete(void* context, MQTTAsync_token token) ...@@ -145,15 +147,18 @@ static void onDeliveryComplete(void* context, MQTTAsync_token token)
} }
static void onConnectBuild(void *context, char *cause) static void onConnectBuild(void *context, char *cause)
{ {
INFO_PRINT("onConnectBuild:%s \n",cause); INFO_PRINT("----onConnectBuild:%s \n",cause);
//rc = KK_Client_Gateway_Subscribe(); //rc = KK_Client_Gateway_Subscribe();
//if(rc != 0) //if(rc != 0)
//{ //{
//ERROR_PRINT("KK_MQTT_SubTopic ERROR rc = %d\n",rc); //ERROR_PRINT("KK_MQTT_SubTopic ERROR rc = %d\n",rc);
//} //}
s_cloudStatus = DEVICE_ONLINE;
kk_remove_disconnect_flag(); kk_remove_disconnect_flag();
KK_Send_CloudState(s_cloudStatus); if(s_cloudStatus != DEVICE_ONLINE){
s_cloudStatus = DEVICE_ONLINE;
INFO_PRINT("--11--onConnectBuild:%s \n",cause);
KK_Send_CloudState(s_cloudStatus);
}
} }
static void onDisConnected(void *context, MQTTProperties* properties,enum MQTTReasonCodes reasonCode) static void onDisConnected(void *context, MQTTProperties* properties,enum MQTTReasonCodes reasonCode)
{ {
...@@ -242,7 +247,7 @@ MQTTAsync KK_MQTT_Connect(void) ...@@ -242,7 +247,7 @@ MQTTAsync KK_MQTT_Connect(void)
/*Set the mqtt callback*/ /*Set the mqtt callback*/
mqtt_set_callbacks(); mqtt_set_callbacks();
conn_opts.keepAliveInterval = 60; conn_opts.keepAliveInterval = 30;
conn_opts.connectTimeout = CONNECT_TIMEOUT; conn_opts.connectTimeout = CONNECT_TIMEOUT;
conn_opts.automaticReconnect = AUTO_CONN; conn_opts.automaticReconnect = AUTO_CONN;
conn_opts.minRetryInterval = 1; conn_opts.minRetryInterval = 1;
...@@ -269,7 +274,6 @@ int KK_MQTT_SubTopic(char *topicName) ...@@ -269,7 +274,6 @@ int KK_MQTT_SubTopic(char *topicName)
MQTTAsync_responseOptions opts = MQTTAsync_responseOptions_initializer; MQTTAsync_responseOptions opts = MQTTAsync_responseOptions_initializer;
int rc; int rc;
opts.onSuccess = onOptSuccess; opts.onSuccess = onOptSuccess;
opts.onFailure = onOptFail; opts.onFailure = onOptFail;
opts.context = (void*)OPT_SUB; opts.context = (void*)OPT_SUB;
......
...@@ -539,7 +539,7 @@ kk_dev_list_t* kk_get_room_deviceCode(const char* roomId) ...@@ -539,7 +539,7 @@ kk_dev_list_t* kk_get_room_deviceCode(const char* roomId)
sqlite3_stmt *stmt; sqlite3_stmt *stmt;
char *sqlCmd = NULL; char *sqlCmd = NULL;
kk_area_ctx_t *ctx = _kk_area_get_ctx(); kk_area_ctx_t *ctx = _kk_area_get_ctx();
const char *searchCmd = "select * from AreaDevInfo;"; const char *searchCmd = "select * from AreaDevInfo where epNum = 1;";
_kk_area_lock(); _kk_area_lock();
sqlCmd = sqlite3_mprintf(searchCmd,roomId); sqlCmd = sqlite3_mprintf(searchCmd,roomId);
sqlite3_prepare_v2(ctx->pDb, sqlCmd, strlen(sqlCmd), &stmt, NULL); sqlite3_prepare_v2(ctx->pDb, sqlCmd, strlen(sqlCmd), &stmt, NULL);
......
...@@ -87,6 +87,7 @@ const char DM_MSG_INFO[] DM_READ_ONLY; ...@@ -87,6 +87,7 @@ const char DM_MSG_INFO[] DM_READ_ONLY;
#define KK_THING_SERVICE_SYNCDEVICEINFO "/thing/service/syncDeviceInfo" #define KK_THING_SERVICE_SYNCDEVICEINFO "/thing/service/syncDeviceInfo"
#define KK_THING_SERVICE_SYNCDEVICEINFO_REPLY "/thing/service/syncDeviceInfo_reply" #define KK_THING_SERVICE_SYNCDEVICEINFO_REPLY "/thing/service/syncDeviceInfo_reply"
#define KK_THING_SERVICE_CLOUDSTATUS "/thing/service/cloudStatus" #define KK_THING_SERVICE_CLOUDSTATUS "/thing/service/cloudStatus"
#define KK_THING_SERVICE_EXECUTEDNDMODE "/thing/service/executeDNDMode"
......
...@@ -639,6 +639,57 @@ static int kk_service_execute_action(cJSON *action,dm_mgr_dev_node_t *node) ...@@ -639,6 +639,57 @@ static int kk_service_execute_action(cJSON *action,dm_mgr_dev_node_t *node)
} }
/************************************************************
*功能描述:设置房间勿让模式
*输入参数:params:云端下发数据,包含房间号等
*输出参数:无
*返 回 值: 0:成功;其他:失败
*其他说明:
*************************************************************/
static int kk_service_executeDNDMode_handle(cJSON *params)
{
int res = 0;
char roomIdStr[16] = {0};
kk_dev_list_t *pList = NULL;
dm_mgr_dev_node_t *search_node = NULL;
if(params == NULL){
return INVALID_PARAMETER;
}
cJSON *roomId = cJSON_GetObjectItem(params, MSG_AREA_ROOM_ROOMID);
if(roomId == NULL || roomId->type != cJSON_Number){
ERROR_PRINT("DATA ERROR!!!\n");
return INVALID_PARAMETER;
}
sprintf(roomIdStr,"%d",roomId->valueint);
pList = kk_get_room_deviceCode(roomIdStr);
while(pList != NULL){
res = kk_check_property_exist(pList->deviceCode,"NoDisturbMode");
if (res != 1) {
pList = pList->next;
continue;
}
res = dm_mgr_get_device_by_devicecode(pList->deviceCode,&search_node);
if (res != SUCCESS_RETURN) {
pList = pList->next;
continue;
}
cJSON *DNDMode = cJSON_GetObjectItem(params, "DNDMode");
if(DNDMode != NULL && DNDMode->type == cJSON_Number){
cJSON *param = cJSON_CreateObject();
cJSON_AddNumberToObject(param, "NoDisturbMode", DNDMode->valueint);
char *paramstr=cJSON_Print(param);
kk_msg_execute_property_set(search_node->productCode,search_node->deviceCode,paramstr,search_node->fatherDeviceCode);
free(paramstr);
usleep(200000);
}
pList = pList->next;
}
kk_free_room_dev_list();
return SUCCESS_RETURN;
}
/************************************************************ /************************************************************
*功能描述:批量执行房间设备处理 *功能描述:批量执行房间设备处理
*输入参数:params:云端下发数据,包含房间号,productCode等 *输入参数:params:云端下发数据,包含房间号,productCode等
...@@ -1465,6 +1516,13 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data) ...@@ -1465,6 +1516,13 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data)
INFO_PRINT("TOPO CHANGE \n"); INFO_PRINT("TOPO CHANGE \n");
kk_topo_delete_handle(payload,info_root); kk_topo_delete_handle(payload,info_root);
//kk_sendData2gw(data, strlen(data), deviceCode->valuestring);//send to gw itself //kk_sendData2gw(data, strlen(data), deviceCode->valuestring);//send to gw itself
}
else if(strcmp(typeJson->valuestring,KK_THING_SERVICE_EXECUTEDNDMODE) == 0){
INFO_PRINT("EXECUREDNDMODE \n");
cJSON *msgId = cJSON_GetObjectItem(payload, MSG_COMMON_MSGID);
kk_service_common_reply(info_root,msgId,"/thing/service/executeDNDMode_reply");
cJSON *paramStr = cJSON_GetObjectItem(payload,MSG_PARAMS_STR);
kk_service_executeDNDMode_handle(paramStr);
} }
else{ else{
INFO_PRINT("Error msgtype!!! \n"); INFO_PRINT("Error msgtype!!! \n");
......
...@@ -154,7 +154,7 @@ int kk_property_db_init(void) ...@@ -154,7 +154,7 @@ int kk_property_db_init(void)
*返 回 值: 1:已经存在;0:不存在 *返 回 值: 1:已经存在;0:不存在
*其他说明: *其他说明:
*************************************************************/ *************************************************************/
static int _kk_check_property_exist(const char* deviceCode,const char* identifier) int kk_check_property_exist(const char* deviceCode,const char* identifier)
{ {
int isExist = 0; int isExist = 0;
sqlite3_stmt *stmt; sqlite3_stmt *stmt;
...@@ -179,6 +179,7 @@ static int _kk_check_property_exist(const char* deviceCode,const char* identifie ...@@ -179,6 +179,7 @@ static int _kk_check_property_exist(const char* deviceCode,const char* identifie
_kk_property_db_unlock(); _kk_property_db_unlock();
return isExist; return isExist;
} }
char *human_induction_device[] = { char *human_induction_device[] = {
(char*){"3049"}, (char*){"3049"},
(char*){"3042"}, (char*){"3042"},
...@@ -236,7 +237,7 @@ int kk_property_db_insert(const char *deviceCode,const char *identifier,kk_tsl_d ...@@ -236,7 +237,7 @@ int kk_property_db_insert(const char *deviceCode,const char *identifier,kk_tsl_d
int rc = 0; int rc = 0;
char *zErrMsg = 0; char *zErrMsg = 0;
kk_property_db_ctx_t *ctx = _kk_property_db_get_ctx(); kk_property_db_ctx_t *ctx = _kk_property_db_get_ctx();
if(_kk_check_property_exist(deviceCode,identifier) == 1) if(kk_check_property_exist(deviceCode,identifier) == 1)
{ {
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
......
...@@ -56,5 +56,6 @@ int kk_property_delete_lockkeys(char deviceCode[DEVICE_CODE_MAXLEN],char *keyId) ...@@ -56,5 +56,6 @@ int kk_property_delete_lockkeys(char deviceCode[DEVICE_CODE_MAXLEN],char *keyId)
int kk_indoorAir_db_insert(const char *deviceCode,const char *identifier,kk_tsl_data_type_e valuetype,int epNum); int kk_indoorAir_db_insert(const char *deviceCode,const char *identifier,kk_tsl_data_type_e valuetype,int epNum);
int kk_indoorAir_db_update_value(const char *deviceCode,const char *identifier,const char* value,int epNum); int kk_indoorAir_db_update_value(const char *deviceCode,const char *identifier,const char* value,int epNum);
int kk_indoorAir_query_epnums(const char *deviceCode,int epList[]); int kk_indoorAir_query_epnums(const char *deviceCode,int epList[]);
int kk_check_property_exist(const char* deviceCode,const char* identifier);
#endif #endif
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