Commit 09a5546a authored by chen.weican's avatar chen.weican

【修改内容】1,增加PowerSwitch与epNum的处理

【提交人】陈伟灿
parent 8fcfbe3a
...@@ -51,7 +51,7 @@ const char DM_MSG_TO_MIDDWARE[] = "{\"msgtype\":\"%s\",\"productCode\":\"%s\",\" ...@@ -51,7 +51,7 @@ const char DM_MSG_TO_MIDDWARE[] = "{\"msgtype\":\"%s\",\"productCode\":\"%s\",\"
#define KK_POWER_SWITCH_1 "PowerSwitch_1" #define KK_POWER_SWITCH_1 "PowerSwitch_1"
#define KK_POWER_SWITCH_2 "PowerSwitch_2" #define KK_POWER_SWITCH_2 "PowerSwitch_2"
#define KK_POWER_SWITCH_3 "PowerSwitch_3" #define KK_POWER_SWITCH_3 "PowerSwitch_3"
#define KK_POWER_SWITCH_4 "PowerSwitch_4"
extern char* KK_Make_Topic(cJSON *info); extern char* KK_Make_Topic(cJSON *info);
extern int KK_Subdev_UnSubscribe(cJSON *payload); extern int KK_Subdev_UnSubscribe(cJSON *payload);
extern int KK_Subdev_UnSubscribe_By_DeviceCode(const char *deviceCode,const char *productCode ); extern int KK_Subdev_UnSubscribe_By_DeviceCode(const char *deviceCode,const char *productCode );
...@@ -67,6 +67,7 @@ static char *s_split_product[] = { ...@@ -67,6 +67,7 @@ static char *s_split_product[] = {
"3024" //肖邦系列三路面板 "3024" //肖邦系列三路面板
}; };
static int kk_utils_memtok(_IN_ char *input, _IN_ int input_len, _IN_ char delimiter, _IN_ int index, _OU_ int *offset) static int kk_utils_memtok(_IN_ char *input, _IN_ int input_len, _IN_ char delimiter, _IN_ int index, _OU_ int *offset)
{ {
int item_index = 0; int item_index = 0;
...@@ -133,7 +134,8 @@ static int kk_split_send_data(cJSON *pData,const char* topic) ...@@ -133,7 +134,8 @@ static int kk_split_send_data(cJSON *pData,const char* topic)
cJSON *pParam_new = NULL; cJSON *pParam_new = NULL;
cJSON *powerswitch1 = NULL; cJSON *powerswitch1 = NULL;
cJSON *powerswitch2 = NULL; cJSON *powerswitch2 = NULL;
cJSON *powerswitch3 = NULL; cJSON *powerswitch3 = NULL;
cJSON *powerswitch4 = NULL;
if(pData == NULL){ if(pData == NULL){
return RETURN_FAIL; return RETURN_FAIL;
} }
...@@ -146,7 +148,8 @@ static int kk_split_send_data(cJSON *pData,const char* topic) ...@@ -146,7 +148,8 @@ static int kk_split_send_data(cJSON *pData,const char* topic)
if(powerswitch1 != NULL){ if(powerswitch1 != NULL){
cJSON_DeleteItemFromObject(pData,MSG_PARAMS_STR); cJSON_DeleteItemFromObject(pData,MSG_PARAMS_STR);
cJSON *pParam_new = cJSON_CreateObject(); cJSON *pParam_new = cJSON_CreateObject();
cJSON_AddNumberToObject(pParam_new, KK_POWER_SWITCH_1, powerswitch1->valueint); cJSON_AddNumberToObject(pParam_new, "PowerSwitch", powerswitch1->valueint);
cJSON_AddStringToObject(pParam_new, "epNum", "1");
cJSON_AddItemToObject(pData,MSG_PARAMS_STR,pParam_new); cJSON_AddItemToObject(pData,MSG_PARAMS_STR,pParam_new);
char* out=cJSON_Print(pData); char* out=cJSON_Print(pData);
KK_MQTT_SendMsg((char*)topic,(const char*)out); KK_MQTT_SendMsg((char*)topic,(const char*)out);
...@@ -158,7 +161,8 @@ static int kk_split_send_data(cJSON *pData,const char* topic) ...@@ -158,7 +161,8 @@ static int kk_split_send_data(cJSON *pData,const char* topic)
if(powerswitch2 != NULL){ if(powerswitch2 != NULL){
cJSON_DeleteItemFromObject(pData,MSG_PARAMS_STR); cJSON_DeleteItemFromObject(pData,MSG_PARAMS_STR);
pParam_new = cJSON_CreateObject(); pParam_new = cJSON_CreateObject();
cJSON_AddNumberToObject(pParam_new, KK_POWER_SWITCH_2, powerswitch2->valueint); cJSON_AddNumberToObject(pParam_new, "PowerSwitch", powerswitch2->valueint);
cJSON_AddStringToObject(pParam_new, "epNum", "2");
cJSON_AddItemToObject(pData,MSG_PARAMS_STR,pParam_new); cJSON_AddItemToObject(pData,MSG_PARAMS_STR,pParam_new);
char* out=cJSON_Print(pData); char* out=cJSON_Print(pData);
KK_MQTT_SendMsg((char*)topic,(const char*)out); KK_MQTT_SendMsg((char*)topic,(const char*)out);
...@@ -168,7 +172,19 @@ static int kk_split_send_data(cJSON *pData,const char* topic) ...@@ -168,7 +172,19 @@ static int kk_split_send_data(cJSON *pData,const char* topic)
if(powerswitch3 != NULL){ if(powerswitch3 != NULL){
cJSON_DeleteItemFromObject(pData,MSG_PARAMS_STR); cJSON_DeleteItemFromObject(pData,MSG_PARAMS_STR);
pParam_new = cJSON_CreateObject(); pParam_new = cJSON_CreateObject();
cJSON_AddNumberToObject(pParam_new, KK_POWER_SWITCH_3, powerswitch3->valueint); cJSON_AddNumberToObject(pParam_new, "PowerSwitch", powerswitch3->valueint);
cJSON_AddStringToObject(pParam_new, "epNum", "3");
cJSON_AddItemToObject(pData,MSG_PARAMS_STR,pParam_new);
char* out=cJSON_Print(pData);
KK_MQTT_SendMsg((char*)topic,(const char*)out);
free(out);
}
powerswitch4 = cJSON_GetObjectItem(pParam, KK_POWER_SWITCH_4);
if(powerswitch4 != NULL){
cJSON_DeleteItemFromObject(pData,MSG_PARAMS_STR);
pParam_new = cJSON_CreateObject();
cJSON_AddNumberToObject(pParam_new, "PowerSwitch", powerswitch4->valueint);
cJSON_AddStringToObject(pParam_new, "epNum", "4");
cJSON_AddItemToObject(pData,MSG_PARAMS_STR,pParam_new); cJSON_AddItemToObject(pData,MSG_PARAMS_STR,pParam_new);
char* out=cJSON_Print(pData); char* out=cJSON_Print(pData);
KK_MQTT_SendMsg((char*)topic,(const char*)out); KK_MQTT_SendMsg((char*)topic,(const char*)out);
...@@ -248,6 +264,26 @@ int _kk_sendto_cloud(cJSON *root) ...@@ -248,6 +264,26 @@ int _kk_sendto_cloud(cJSON *root)
kk_split_send_data(pData,topic); kk_split_send_data(pData,topic);
} }
else{ else{
cJSON *pParam = NULL;
cJSON *PowerSwitch = NULL;
int i = 0;
int tmpPS[32] = {0};
int tmpIdx[4] = {0};
pParam = cJSON_GetObjectItem(pData, MSG_PARAMS_STR);
if(pParam == NULL){
return RETURN_FAIL;
}
for(i = 0; i < 64; i++){
sprintf(tmpPS,"PowerSwitch_%d",i);
PowerSwitch = cJSON_GetObjectItem(pParam, tmpPS);
if(PowerSwitch != NULL){
cJSON_DeleteItemFromObject(pParam,tmpPS);
sprintf(tmpIdx,"%d",i);
cJSON_AddNumberToObject(pParam, "PowerSwitch", PowerSwitch->valueint);
cJSON_AddStringToObject(pParam, "epNum", tmpIdx);
break;
}
}
char* out=cJSON_Print(pData); char* out=cJSON_Print(pData);
KK_MQTT_SendMsg(topic,(const char*)out); KK_MQTT_SendMsg(topic,(const char*)out);
free(out); free(out);
...@@ -471,12 +507,29 @@ static char * _kk_data_create(const char *topic,const char *data) ...@@ -471,12 +507,29 @@ static char * _kk_data_create(const char *topic,const char *data)
free(msgStr); free(msgStr);
return NULL; return NULL;
} }
memset(infoStr,0x0,infoStr_len); memset(infoStr,0x0,infoStr_len);
snprintf(infoStr,infoStr_len,DM_MSG_TO_MIDDWARE,msgStr,productCode,deviceCode); snprintf(infoStr,infoStr_len,DM_MSG_TO_MIDDWARE,msgStr,productCode,deviceCode);
root=cJSON_CreateObject(); root=cJSON_CreateObject();
cJSON* infoObj = cJSON_Parse(infoStr); cJSON* infoObj = cJSON_Parse(infoStr);
cJSON* payloadObj = cJSON_Parse(data); cJSON* payloadObj = cJSON_Parse(data);
#if 1
cJSON * params = cJSON_GetObjectItem(payloadObj,"params");
if(params != NULL){
cJSON * PowerSwitch = cJSON_GetObjectItem(params,"PowerSwitch");
cJSON * epNUm = cJSON_GetObjectItem(params,"epNUm");
if(PowerSwitch != NULL && epNUm != NULL){
char tmpPS[32] = {0};
strcat(tmpPS,"PowerSwitch");
strcat(tmpPS,"_");
strcat(tmpPS,epNUm->valuestring);
cJSON_AddNumberToObject(params,tmpPS,PowerSwitch->valueint);
cJSON_DeleteItemFromObject(params, "PowerSwitch");
cJSON_DeleteItemFromObject(params, "epNUm");
}
}
#endif
cJSON_AddItemToObject(root, MSG_INFO_STR, infoObj); cJSON_AddItemToObject(root, MSG_INFO_STR, infoObj);
cJSON_AddItemToObject(root, MSG_PAYLOAD_STR,payloadObj); cJSON_AddItemToObject(root, MSG_PAYLOAD_STR,payloadObj);
if(strstr(topic,KK_TOPO_CHANGE_MSG_STR)){ if(strstr(topic,KK_TOPO_CHANGE_MSG_STR)){
...@@ -559,6 +612,7 @@ void KK_Sendto_DevData(const char *topic,const char *data) ...@@ -559,6 +612,7 @@ void KK_Sendto_DevData(const char *topic,const char *data)
return;//ingore the message return;//ingore the message
} }
INFO_PRINT("[%s][%d]receive from cloud,topic:%s\n",__FUNCTION__,__LINE__,topic); INFO_PRINT("[%s][%d]receive from cloud,topic:%s\n",__FUNCTION__,__LINE__,topic);
INFO_PRINT("[%s][%d]receive from cloud,data:%s\n",__FUNCTION__,__LINE__,data);
char *send_data = _kk_data_create(topic,data); char *send_data = _kk_data_create(topic,data);
if(send_data == NULL){ if(send_data == NULL){
return; return;
......
...@@ -315,11 +315,13 @@ int kk_start_ccu_register(void) ...@@ -315,11 +315,13 @@ int kk_start_ccu_register(void)
if (inet_pton(AF_INET, IPSTR, &servaddr.sin_addr) <= 0 ){ if (inet_pton(AF_INET, IPSTR, &servaddr.sin_addr) <= 0 ){
printf("--inet_pton error!\n"); printf("--inet_pton error!\n");
close(sockfd);
return -1; return -1;
}; };
if (connect(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr)) < 0){ if (connect(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr)) < 0){
printf("connect error!\n"); printf("connect error!\n");
close(sockfd);
return -1; return -1;
} }
printf("connect successful\n"); printf("connect successful\n");
......
...@@ -9,10 +9,10 @@ ...@@ -9,10 +9,10 @@
#include "kk_hal.h" #include "kk_hal.h"
#include "mqtt_api.h" #include "mqtt_api.h"
const char KK_URI_SYS_PREFIX[] = "biz/kk/%s/%s/thing/service/property/set"; const char KK_URI_SYS_PREFIX[] = "biz/newkk/%s/%s/thing/service/property/set";
const char KK_URI_SYS_PREFIX_SERVICE[] = "biz/kk/%s/%s/thing/service/+"; const char KK_URI_SYS_PREFIX_SERVICE[] = "biz/newkk/%s/%s/thing/service/+";
const char KK_URI_SYS_PREFIX_TOPO_CHANGE[] = "biz/kk/%s/%s/thing/topo/change"; const char KK_URI_SYS_PREFIX_TOPO_CHANGE[] = "biz/newkk/%s/%s/thing/topo/change";
const char KK_URI_SYS_PREFIX_EX[] = "biz/kk/%s/%s"; const char KK_URI_SYS_PREFIX_EX[] = "biz/newkk/%s/%s";
const char KK_URI_OTA_PREFIX[] = "ota/device/%s/%s/upgrade"; const char KK_URI_OTA_PREFIX[] = "ota/device/%s/%s/upgrade";
const char KK_URI_OTA_PROCESS[] = "/ota/device/progress/%s/%s"; const char KK_URI_OTA_PROCESS[] = "/ota/device/progress/%s/%s";
const char KK_URI_OTA_INFORM[] = "/ota/device/inform/%s/%s"; const char KK_URI_OTA_INFORM[] = "/ota/device/inform/%s/%s";
......
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