Commit 62c805fd authored by chen.weican's avatar chen.weican

【修改内容】1,增加3A认证;2,增加MOORE屏接入支持

【提交人】陈伟灿
parent f810862d
......@@ -14,13 +14,16 @@ ifeq ($(CONFIG_MODEL),x86)
LDFLAGS += -L$(TOP_DIR)/common/nanomsg -lnanomsg_ubuntu
LDFLAGS += -L$(TOP_DIR)/common/ev -lev_ubuntu
else ifeq ($(CONFIG_MODEL),nx5)
LDFLAGS += -L$(TOP_DIR)/common/nanomsg -lnanomsg_nx5
LDFLAGS += -L$(TOP_DIR)/common/nanomsg -lnanomsg_nx5 -lcurl
LDFLAGS += -L$(TOP_DIR)/common/ev -lev_nx5
else ifeq ($(CONFIG_MODEL),8197)
LDFLAGS += -L$(TOP_DIR)/common/nanomsg -lnanomsg_8197 -lubacktrace
LDFLAGS += -L$(TOP_DIR)/common/ev -lev_8197
else
LDFLAGS += -L$(TOP_DIR)/common/nanomsg -lnanomsg
LDFLAGS += -L$(TOP_DIR)/common/ev -lev
endif
LDFLAGS += -liot_cjson -liot_mqtt -ldl -lm -lanl -lkk_hal
LDFLAGS += -liot_cjson -liot_mqtt -ldl -lm -lkk_hal
......@@ -22,5 +22,7 @@ typedef enum {
#define MQTT_AUTH_HOST_NAME "test.dev.nj-ikonke.site"
int KK_Get_ccuid( char *device_code);
int kk_check_config_file(char* path,char **config);
int kk_cloud_get_pid(char *productId);
#endif
......@@ -199,6 +199,9 @@ char * g_filerToCloudTable[] =
(char *){"/thing/service/delAlarm_reply"},
(char *){"/thing/service/syncinfo_reply"},
(char *){"/thing/service/syncinfopush_reply"},
(char *){"/thing/service/clientReport_reply"},
(char *){"/thing/service/clientOnlinePush"},
(char *){"/thing/service/getClientInfo_reply"},
};
/************************************************************
*功能描述:过滤不需要下发给网关的消息
......
......@@ -58,6 +58,28 @@ static int KK_Ccuid_init(void)
}
return 0;
}
char s_pid[PRODUCT_CODE_LEN] = {0};
static int kk_cloud_pid_init(void)
{
char pid[PRODUCT_CODE_LEN] = {0};
int pid_len = 0;
HAL_Execel_cmd(GET_PRODUCTID_CMD,(char *)pid,sizeof(pid),&pid_len);
if(pid_len > 0 && pid_len <= PRODUCT_CODE_LEN){
memcpy(s_pid,pid,pid_len-1);
INFO_PRINT("s_pid:%s\n",s_pid);
}else{
return -1;
}
return 0;
}
int kk_cloud_get_pid(char *productId)
{
strncpy(productId, s_pid, strlen(s_pid));
printf("kk_cloud_get_pid:%s\n",s_pid);
return strlen(s_pid);
}
static int mqtt_start(void)
{
int count = 0;
......@@ -94,9 +116,55 @@ static int mqtt_start(void)
MQTTAsync_destroy(&mqttClient);
return -1;
}
extern MQTTAsync kk_mqtt_connect();
extern MQTTAsync kk_connect_default(void);
static int mqtt_start_ex(int isdefault)
{
int count = 0;
MQTTAsync mqttClient;
int rc = 0;
if(isdefault){
mqttClient = kk_connect_default();
}else{
mqttClient = kk_mqtt_connect();
}
if(mqttClient == NULL){
WARNING_PRINT("KK_MQTT_Connect FAIL!!!\n");
return -1;
}
while(1)
{
usleep(100000L);
if(kk_get_cloud_status() == 0){
//printf("------------------------------>count:%d\n",count);
count++;
if(count>500)
{
count = 0;
WARNING_PRINT("---------------------------------->CONNECT FAIL!!!\n");
break;
//INFO_PRINT("i am send now\n");
//KK_MQTT_SendMsg(TOPIC,"hello my world",2);
}
}else{
if(count > 0){
count = 0;
}
}
//INFO_PRINT(" %s \n",testStr);
}
INFO_PRINT("MQTTAsync_destroy\n");
MQTTAsync_destroy(&mqttClient);
return -1;
}
int kk_start_ccu_register(void);
extern int kk_info_report_start(void);
extern int kk_dl_config();
extern int kk_register_auth_get();
int main(int argc, char* argv[])
{
int rc = 0;
......@@ -107,8 +175,34 @@ int main(int argc, char* argv[])
ERROR_PRINT("CCUID GET FAIL!!!!!!!!!!!\n");
return 0;
}
kk_cloud_pid_init();
kk_ipc_init(IPC_APP2MID,(ipc_cb*)KK_Data_FromDev,NULL,NULL);
//kk_info_report_start();
//
#if 1
kk_dl_config();
again:
rc = kk_register_auth_get();
if(rc == 0){
rc = mqtt_start_ex(0);
if(rc < 0){
kk_write_disconnect_flag();
sleep(2);
goto again;
}
}else if(rc == -2){
rc = mqtt_start_ex(1);
if(rc < 0){
kk_write_disconnect_flag();
sleep(2);
goto again;
}
}else{
kk_write_disconnect_flag();
sleep(2);
goto again;
}
#else
again:
rc = kk_start_ccu_register();
if(rc == 0){
......@@ -123,6 +217,6 @@ again:
sleep(2);
goto again;
}
#endif
return rc;
}
......@@ -41,12 +41,14 @@ static int kk_info_get(char *str)
char version[VERSION_MAXLEN] = {0};
char *str_tmp = NULL;
char ccuid[32] = {0};
char pid[32] = {0};
if(str == NULL){
return -1;
}
//HAL_GetVersion(version);
KK_Get_ccuid(ccuid);
kk_cloud_get_pid(pid);
cJSON *root = cJSON_CreateObject();
if (root)
{
......@@ -100,7 +102,7 @@ static int kk_info_get(char *str)
if (qr_code)
{
char qrcodeStr[256] = {0};
sprintf(qrcodeStr,"KONKE-CCU:%s:%s:BBE3C5A5FC1FDB6CA1A386AB321D02AB",KK_CCU_PRODUCTID,&ccuid[4]);
sprintf(qrcodeStr,"KONKE-CCU:%s:%s:BBE3C5A5FC1FDB6CA1A386AB321D02AB",pid,&ccuid[4]);
cJSON_AddItemToObject(args, "qr_code", qr_code);
cJSON_AddStringToObject(qr_code, "string", qrcodeStr);
cJSON_AddBoolToObject(qr_code, "show", 1);
......
This diff is collapsed.
......@@ -114,17 +114,17 @@ void KK_reset_sub_flag(void)
}
int KK_CCU_TOPIC_Subscribe(void)
{
char productCode[PRODUCT_CODE_LEN] = {0};
if(s_ccu_topic_sub == 1){
INFO_PRINT("[%s][%d] already Subscribe\n",__FUNCTION__,__LINE__);
//return -1;
}
char ccuid[32] = {0};
KK_Get_ccuid(ccuid);
char pid[32] = {0};
kk_cloud_get_pid(pid);
s_ccu_topic_sub = 1;
HAL_GetProduct_Code(productCode);
return _kk_ccu_topic_subscribe(productCode,ccuid);
return _kk_ccu_topic_subscribe(pid,ccuid);
}
static int _kk_utils_topic(_IN_ const char *name, _IN_ char *product_code,
......@@ -241,8 +241,9 @@ char* KK_Make_Topic(cJSON *info,cJSON *data)
{
cJSON *type,*product_code,*device_code;
char *topic = NULL;
char pid[32] = {0};
//root=cJSON_Parse((char*)info->valuestring);
kk_cloud_get_pid(pid);
type = cJSON_GetObjectItem(info, MSG_TYPE_STR);
if(type == NULL){
goto errorreturn;
......@@ -256,7 +257,7 @@ char* KK_Make_Topic(cJSON *info,cJSON *data)
if(device_code == NULL){
goto errorreturn;
}
if((!strcmp(product_code->valuestring,"15") || !strcmp(product_code->valuestring,KK_CCU_PRODUCTID)) && \
if((!strcmp(product_code->valuestring,pid)) && \
(strstr(type->valuestring,"thing/status/online") != NULL)){
KK_CCU_TOPIC_Subscribe();
}
......
......@@ -232,8 +232,10 @@ MQTTAsync KK_MQTT_Connect(void)
}
HAL_Get_mac(mac);
char ccuid[32] = {0};
char pid[32] = {0};
KK_Get_ccuid(ccuid);
sprintf(usrname, "%s.%s", ccuid,KK_CCU_PRODUCTID);
kk_cloud_get_pid(pid);
sprintf(usrname, "%s.%s", ccuid,pid);
INFO_PRINT("cliendid:%s,usrname:%s\n",g_clientId,usrname);
INFO_PRINT("------------>token:%s\n",token);
sprintf(temp_address,"tcp://%s:1983",s_ServerIp);
......@@ -266,7 +268,45 @@ MQTTAsync KK_MQTT_Connect(void)
}
return s_Client;
}
MQTTAsync KK_MQTT_Connect_ex(char *usrname,char*pwd,char*cliendId,char*host,char*port)
{
int rc = 0;
char temp_address[256] = {0};
FILE *fp;
MQTTAsync_createOptions opts = MQTTAsync_createOptions_initializer;
MQTTAsync_connectOptions conn_opts = MQTTAsync_connectOptions_initializer;
MQTTAsync_setTraceCallback(mqttTraceCallback);
opts.MQTTVersion = MQTTVERSION_3_1_1;
sprintf(temp_address,"tcp://%s:%s",host,port);
INFO_PRINT("------------>temp_address:%s\n",temp_address);
if ((rc = MQTTAsync_createWithOptions(&s_Client, temp_address, cliendId, MQTTCLIENT_PERSISTENCE_NONE, NULL,&opts)) != MQTTASYNC_SUCCESS)
{
ERROR_PRINT("Failed to create client object, return code %d\n", rc);
return NULL;
}
/*Set the mqtt callback*/
mqtt_set_callbacks();
conn_opts.keepAliveInterval = 30;
conn_opts.connectTimeout = CONNECT_TIMEOUT;
conn_opts.automaticReconnect = AUTO_CONN;
conn_opts.minRetryInterval = 1;
conn_opts.maxRetryInterval = 32;
//conn_opts.username = USRNAME;
//conn_opts.password = PASSWORD;
conn_opts.username = usrname;
conn_opts.password = pwd;
conn_opts.cleansession = 1;
conn_opts.onSuccess = onConnect;
conn_opts.onFailure = onConnectFailure;
conn_opts.context = s_Client;
if ((rc = MQTTAsync_connect(s_Client, &conn_opts)) != MQTTASYNC_SUCCESS)
{
ERROR_PRINT("Failed to start connect, return code %d\n", rc);
return NULL;
}
return s_Client;
}
int KK_MQTT_SubTopic(char *topicName)
{
INFO_PRINT("to subtopic:%s \n",topicName);
......
......@@ -17,5 +17,6 @@ extern int KK_MQTT_UnsubTopic(const char *topicName);
extern MQTTAsync KK_MQTT_Connect(void);
int kk_get_cloud_status(void);
void kk_write_disconnect_flag(void);
MQTTAsync KK_MQTT_Connect_ex(char *usrname,char*pwd,char*cliendId,char*host,char*port);
#endif
......@@ -19,11 +19,14 @@ ifeq ($(CONFIG_MODEL),x86)
else ifeq ($(CONFIG_MODEL),nx5)
LDFLAGS += -L$(TOP_DIR)/common/nanomsg -lnanomsg_nx5
LDFLAGS += -L$(TOP_DIR)/common/ev -lev_nx5
else ifeq ($(CONFIG_MODEL),8197)
LDFLAGS += -L$(TOP_DIR)/common/nanomsg -lnanomsg_8197 -lubacktrace
LDFLAGS += -L$(TOP_DIR)/common/ev -lev_8197
else
LDFLAGS += -L$(TOP_DIR)/common/nanomsg -lnanomsg
LDFLAGS += -L$(TOP_DIR)/common/ev -lev
endif
LDFLAGS += -liot_cjson -ldl -lm -lanl -lkk_hal
LDFLAGS += -liot_cjson -ldl -lm -lkk_hal
......@@ -384,7 +384,8 @@ int kk_data_handle(cJSON *json,int sockfd)
if(vol != NULL){
kk_voice_control(atoi(vol->valuestring));
}
}else if(strcmp(opcode->valuestring,VOICE_SWITCH_CTRL) == 0){
}
else if(strcmp(opcode->valuestring,VOICE_SWITCH_CTRL) == 0){
cJSON *onff = cJSON_GetObjectItem(json, "arg");
int value = 0;
if(onff != NULL){
......@@ -469,9 +470,11 @@ static int kk_parse_syncinfo(cJSON *payload)
int is_ccu_msg(cJSON *productCode,cJSON *deviceCode)
{
char ccuid[33] = {0};
char pid[33] = {0};
kk_lan_get_ccuid(ccuid);
if((strlen(productCode->valuestring)==strlen(KK_CCU_PRODUCTID) &&
!strcmp(productCode->valuestring,KK_CCU_PRODUCTID)) &&
kk_lan_get_pid(pid);
if((strlen(productCode->valuestring)==strlen(pid) &&
!strcmp(productCode->valuestring,pid)) &&
(strlen(deviceCode->valuestring)==strlen(ccuid) &&
!strcmp(deviceCode->valuestring,ccuid))){
return 1;
......@@ -781,7 +784,82 @@ static int kk_lan_scene_handle(cJSON *payload,int isAdd)
}
static int kk_client_reoprt_reply_handle(cJSON *payload)
{
int nodeId = 0;
if(payload == NULL){
return -1;
}
cJSON *params = cJSON_GetObjectItem(payload,"params");
if(params == NULL){
return -1;
}
cJSON *serialId = cJSON_GetObjectItem(params, "serialId");
if(serialId == NULL){
return -1;
}
cJSON *arg = cJSON_CreateObject();
cJSON_AddStringToObject(arg, "serialId", serialId->valuestring);
cJSON *root=cJSON_CreateObject();
cJSON_AddStringToObject(root, "nodeid", "*");
cJSON_AddStringToObject(root, "opcode", "CCU_CLIENT_REPORT");
cJSON_AddStringToObject(root, "status", "success");
cJSON_AddItemToObject(root, "arg", arg);
send_msg_to_module(root);
cJSON_Delete(root);
return 0;
}
static int kk_client_online_push_handle(cJSON *payload)
{
int nodeId = 0;
if(payload == NULL){
return -1;
}
cJSON *params = cJSON_GetObjectItem(payload,"params");
if(params == NULL){
return -1;
}
cJSON *serialId = cJSON_GetObjectItem(params, "serialId");
if(serialId == NULL){
return -1;
}
cJSON *online = cJSON_GetObjectItem(params, "online");
if(online == NULL){
return -1;
}
cJSON *arg = cJSON_CreateObject();
cJSON_AddStringToObject(arg, "serialId", serialId->valuestring);
cJSON_AddNumberToObject(arg, "online", online->valueint);
cJSON *root=cJSON_CreateObject();
cJSON_AddStringToObject(root, "nodeid", "*");
cJSON_AddStringToObject(root, "opcode", "CCU_CLIENT_ONLINE_PUSH");
cJSON_AddStringToObject(root, "status", "success");
cJSON_AddItemToObject(root, "arg", arg);
send_msg_to_module(root);
cJSON_Delete(root);
return 0;
}
static int kk_client_info_push_handle(cJSON *payload)
{
int nodeId = 0;
if(payload == NULL){
return -1;
}
cJSON *params = cJSON_GetObjectItem(payload,"params");
if(params == NULL){
return -1;
}
char* pData = cJSON_Print(params);
cJSON *root=cJSON_CreateObject();
cJSON_AddStringToObject(root, "nodeid", "*");
cJSON_AddStringToObject(root, "opcode", "GET_CCU_CLIENT_INFO");
cJSON_AddStringToObject(root, "status", "success");
cJSON_AddItemToObject(root, "arg", cJSON_Parse(pData));
send_msg_to_module(root);
cJSON_Delete(root);
free(pData);
return 0;
}
void KK_Data_FromMid(void* str,int len)
{
cJSON *json = NULL;
......@@ -869,9 +947,16 @@ void KK_Data_FromMid(void* str,int len)
}else if(strstr(msgtype->valuestring,"/thing/event/deleteSceneNotification/post")!= NULL){
INFO_PRINT("deleteSceneNotification handle!!!");
kk_lan_scene_handle(payload,0);
}else if(strstr(msgtype->valuestring,"/thing/service/clientReport_reply")!= NULL){
INFO_PRINT("clientReport_reply handle!!!");
kk_client_reoprt_reply_handle(payload);
}else if(strstr(msgtype->valuestring,"/thing/service/clientOnlinePush")!= NULL){
INFO_PRINT("clientOnlinePush handle!!!");
kk_client_online_push_handle(payload);
}else if(strstr(msgtype->valuestring,"/thing/service/getClientInfo_reply")!= NULL){
INFO_PRINT("getClientInfo_reply handle!!!");
kk_client_info_push_handle(payload);
}
//
cJSON_Delete(json);
}
......
......@@ -17,5 +17,5 @@
int kk_lan_get_ccuid(_OU_ char *device_code);
int kk_findccu_handle_init(void);
int kk_lan_get_pid(_OU_ char *productId);
#endif
\ No newline at end of file
......@@ -11,7 +11,7 @@
#include "kk_oldccu_msg.h"
#include "kk_newccu_msg.h"
#include "kk_lan_node_db.h"
#include "kk_findccu_handle.h"
extern int kk_lan_get_ccuid(_OU_ char *device_code);
......@@ -163,7 +163,9 @@ cJSON * kk_control_protocol_convert(kk_map_dev_node_t *devNode,int nodeId,cJSON
static int kk_guard_ctrl_handle(int status)
{
char ccuid[33]={0};
char pid[33]={0};
kk_lan_get_ccuid(ccuid);
kk_lan_get_pid(pid);
cJSON *root = cJSON_CreateObject();
cJSON *params = cJSON_CreateObject();
cJSON_AddStringToObject(params,"epNum","1");
......@@ -174,13 +176,53 @@ static int kk_guard_ctrl_handle(int status)
}else{ //³··À
cJSON_AddStringToObject(params,"ArmingState","1");
}
cJSON *info = property_info_build("/thing/service/property/set",KK_CCU_PRODUCTID,ccuid);
cJSON *info = property_info_build("/thing/service/property/set",pid,ccuid);
cJSON *payload = property_payload_build("thing.service.property.set","1","v1.0",params);
cJSON_AddItemToObject(root,INFO_STRING,info);
cJSON_AddItemToObject(root,PAYLOAD_STRING,payload);
kk_ipc_send_json(root);
return 0;
}
static int kk_client_report_handle(cJSON *arg)
{
char ccuid[33]={0};
char pid[33]={0};
if(arg == NULL){
return -1;
}
char* pData = cJSON_Print(arg);
kk_lan_get_ccuid(ccuid);
kk_lan_get_pid(pid);
cJSON *root = cJSON_CreateObject();
cJSON *info = property_info_build("/thing/service/clientReport",pid,ccuid);
cJSON *payload = property_payload_build("thing.service.clientReport","1","v1.0",cJSON_Parse(pData));
cJSON_AddItemToObject(root,INFO_STRING,info);
cJSON_AddItemToObject(root,PAYLOAD_STRING,payload);
//printf("----------------------------------------DEBUG-------------------------[%s][%d]\n",__FUNCTION__,__LINE__);
kk_ipc_send_json(root);
//printf("----------------------------------------DEBUG-------------------------[%s][%d]\n",__FUNCTION__,__LINE__);
free(pData);
return 0;
}
static int kk_get_client_info_handle(cJSON *arg)
{
char ccuid[33]={0};
char pid[33]={0};
if(arg == NULL){
return -1;
}
char* pData = cJSON_Print(arg);
kk_lan_get_ccuid(ccuid);
kk_lan_get_pid(pid);
cJSON *root = cJSON_CreateObject();
cJSON *info = property_info_build("/thing/service/getClientInfo",pid,ccuid);
cJSON *payload = property_payload_build("thing.service.getClientInfo","1","v1.0",cJSON_Parse(pData));
cJSON_AddItemToObject(root,INFO_STRING,info);
cJSON_AddItemToObject(root,PAYLOAD_STRING,payload);
kk_ipc_send_json(root);
free(pData);
return 0;
}
static int kk_indoorAir_ctrl_handle(char *epNum,cJSON *arg)
{
kk_map_dev_node_t *dev = NULL;
......@@ -310,12 +352,9 @@ int kk_ccu_opcode_handle(cJSON *root)
if(opcode==NULL||opcode->type!=cJSON_String){
return -1;
}
if(nodeId==NULL||opcode==NULL||arg==NULL ){
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
return -1;
}
if(requester!=NULL){
WARNING_PRINT("[requester]%s\n",requester->valuestring);
if(strcmp(requester->valuestring,"HJ_CentralAC") == 0 &&
......@@ -337,13 +376,17 @@ int kk_ccu_opcode_handle(cJSON *root)
}else if(strcmp(opcode->valuestring,"DISARMING") == 0){
kk_guard_ctrl_handle(1);
return 0;
}else if(strcmp(opcode->valuestring,"CCU_CLIENT_REPORT") == 0){
kk_client_report_handle(arg);
return 0;
}else if(strcmp(opcode->valuestring,GET_CCU_CLIENT_INFO) == 0){
kk_get_client_info_handle(arg);
return 0;
}
}
}
kk_lan_db_deviceCode_get(atoi(nodeId->valuestring),deviceCode);
//execute scene
if((requester!=NULL) &&(strcmp(requester->valuestring,HJ_PROFILE)==0) &&
(strcmp(opcode->valuestring,"SWITCH")==0)){
......
......@@ -35,7 +35,7 @@
#include "kk_data_mng.h"
#include "kk_lan_debug.h"
extern char * _kk_data_create(char *msgtype,const char *productCode,const char *deviceCode,const char *param);
extern int HAL_Execel_cmd(char * cmd,char * buf,int buf_len,int* ret_len);
static char s_ccuid[DEVICE_CODE_LEN] = {0};
int kk_lan_get_ccuid(_OU_ char *device_code)
......@@ -51,7 +51,27 @@ static int _setDevice_Code(_IN_ char *device_code,int len)
strncpy(s_ccuid, device_code, len);
return len;
}
extern int HAL_Execel_cmd(char * cmd,char * buf,int buf_len,int* ret_len);
char s_pid[PRODUCT_CODE_LEN] = {0};
static int kk_lan_pid_init(void)
{
char pid[PRODUCT_CODE_LEN] = {0};
int pid_len = 0;
HAL_Execel_cmd(GET_PRODUCTID_CMD,(char *)pid,sizeof(pid),&pid_len);
if(pid_len > 0 && pid_len <= PRODUCT_CODE_LEN){
memcpy(s_pid,pid,pid_len-1);
INFO_PRINT("s_pid:%s\n",s_pid);
}else{
return -1;
}
return 0;
}
int kk_lan_get_pid(_OU_ char *productId)
{
strncpy(productId, s_pid, strlen(s_pid));
printf("kk_lan_get_ccuid:%s\n",s_pid);
return strlen(s_pid);
}
static void kk_lan_ccuid_init(void)
{
uint8_t ccuid[DEVICE_CODE_LEN] = {0};
......@@ -188,7 +208,7 @@ int main(int argc, char* argv[])
//debug_log(LOG_CRITICAL_LEVEL,"[%s]run singleton fail!\n",argv[0]);
//return -1;
//}
kk_lan_pid_init();
kk_lan_ccuid_init();
/*set the callback to get the device date to cloud*/
......
......@@ -811,7 +811,7 @@ int kk_sync_guard_to_sdk(cJSON *root,cJSON *data)
int i,num;
cJSON *item = NULL;
char roomIdStr[16] = {0};
RoomIdsAry = cJSON_GetObjectItem(properties,"RoomIds");
RoomIdsAry = cJSON_GetObjectItem(properties,"ccuRoomIds");
if(RoomIdsAry==NULL||RoomIdsAry->type!=cJSON_Array){
return -1;
}
......
#include "kk_log.h"
#include "klist.h"
#include "kk_product.h"
#include "com_api.h"
#include "kk_opcode.h"
#include "kk_lan_ctrl.h"
#include "kk_data_mng.h"
#include "kk_newccu_msg.h"
#include "kk_product.h"
#include "kk_lan_node_db.h"
#include "kk_findccu_handle.h"
static pthread_mutex_t *mutex = NULL;
int kk_new_msg_init(void)
......@@ -89,10 +85,12 @@ extern int kk_lan_get_ccuid(_OU_ char *device_code);
cJSON *scene_payload_build(const char*method,const char *msgId,cJSON *params)
{
char ccuid[33] = {0};
char pid[33] = {0};
cJSON *payload=cJSON_CreateObject();
kk_lan_get_ccuid(ccuid);
cJSON_AddStringToObject(payload, "productCode",KK_CCU_PRODUCTID);
kk_lan_get_pid(pid);
cJSON_AddStringToObject(payload, "productCode",pid);
cJSON_AddStringToObject(payload, "deviceCode",ccuid);
cJSON_AddStringToObject(payload, "identity","executeScene");
......@@ -111,16 +109,18 @@ cJSON * scene_execute(const char *sceneId)
{
char msgId[32] = {0};
char ccuid[33] = {0};
char pid[33] = {0};
cJSON *root=cJSON_CreateObject();
cJSON *params=cJSON_CreateObject();
cJSON *info,*payload;
kk_lan_get_ccuid(ccuid);
kk_lan_get_pid(pid);
printf("[execute scene]sceneId=%s\n",sceneId);
kk_lan_get_msg_id_str(msgId,sizeof(msgId));
cJSON_AddStringToObject(params,"sceneId",sceneId);
info = property_info_build("/thing/service/executeScene",KK_CCU_PRODUCTID,ccuid);
info = property_info_build("/thing/service/executeScene",pid,ccuid);
payload = scene_payload_build("thing.service.executeScene",msgId,params);
cJSON_AddItemToObject(root,INFO_STRING,info);
......@@ -136,6 +136,7 @@ int kk_ipc_send_json(cJSON *root)
char *msg;
if(root==NULL){
//printf("----------------------------------------DEBUG-------------------------[%s][%d]\n",__FUNCTION__,__LINE__);
return -1;
}
......
......@@ -37,7 +37,7 @@
#define SWITCH_OPCODE "SWITCH"
#define GET_HISTORY_MSG_TYPE "/thing/service/historyAlarm"
#define DEL_HISTORY_MSG_TYPE "/thing/service/delAlarm"
#define GET_CCU_CLIENT_INFO "GET_CCU_CLIENT_INFO"
......
......@@ -39,10 +39,12 @@ typedef enum {
#define MSG_INFO_STR "info"
#define MSG_INDENTIFIER_STR "identifier"
#define MSG_DATA_TYPE_STR "dataType"
#define MSG_DEVICE_IP "ip"
#define MSG_DEVICE_VERSION "version"
#define MSG_DEVICE_SERIALID "serialId"
#define MSG_DEVICE_DEVICEINFO "deviceInfo"
#define MSG_DEVICE_TYPE "type"
#define MSG_DEVICE_EXPAND "expand"
#define MSG_PARAMS_STR "params"
#define MSG_IOTClOUDSTATE_STR "IOTCloudState"
#define MSG_TOPO_CHANGE_TYPE_STR "changeType"
......@@ -52,6 +54,8 @@ typedef enum {
#define MSG_AREA_ADDROOM_DEVICENAME "name"
#define MSG_AREA_ADDROOM_ROOMNAME "roomName"
#define MSG_AREA_ROOM_ROOMID "roomId"
#define MSG_AREA_ROOM_CCUROOMIDS "ccuRoomIds"
#define MSG_AREA_ROOM_CCUROOMID "ccuRoomId"
#define MSG_AREA_ROOM_EPNUM "epNum"
#define MSG_AREA_ROOM_ACTION "action"
#define MSG_AREA_ADDROOM_NOTIFICATION "addRoomNotification"
......@@ -111,7 +115,6 @@ typedef enum {
#define MSG_SCENE_SUPPORT "sceneSupport"
#define MSG_SCENE_MSGID "msgId"
#define MSG_SCENE_SCENE_NAME "name"
#define MSG_SCENE_ROOM_ID "roomId"
#define MSG_SCENE_ROOM_NAME "roomName"
#define MSG_SCENE_SCENCTYPE "sceneType"
#define MSG_SCENE_ENABLE "enable"
......@@ -146,6 +149,7 @@ typedef enum {
#define BUFFER_SIZE 1024
#define MAX_LISTEN_NUM 10
#define MAX_IP_LEN 16
#define KK_DEVICE_SCREEN_MAX_SUPPORT 8
//#ifndef DEVICE_CODE_LEN
//#define DEVICE_CODE_LEN 33
//#endif
......
......@@ -273,27 +273,6 @@ int HAL_SetProduct_Type(_IN_ char *product_type)
return len;
}
int HAL_SetProduct_Code(_IN_ char *product_code)
{
int len = strlen(product_code);
if (len > PRODUCT_CODE_LEN) {
return -1;
}
memset(g_product_code, 0x0, PRODUCT_CODE_LEN);
strncpy(g_product_code, product_code, len);
return len;
}
int HAL_GetProduct_Code(_OU_ char *product_code)
{
strncpy(product_code, KK_CCU_PRODUCTID, strlen(KK_CCU_PRODUCTID));
product_code[strlen(KK_CCU_PRODUCTID)] = '\0';
return strlen(KK_CCU_PRODUCTID);
}
/*
* This need to be same with app version as in uOTA module (ota_version.h)
......
......@@ -2,6 +2,7 @@
#ifndef __KK_HAL_H__
#define __KK_HAL_H__
#include <stdio.h>
#include <stdarg.h>
#include <sys/time.h>
#include <time.h>
#include "kk_product.h"
......@@ -42,8 +43,6 @@ int HAL_Get_SN(char sn[SN_ADDR_LEN]);
int HAL_Execel_cmd(char * cmd,char * buf,int buf_len,int* ret_len);
int HAL_SetProduct_Type(_IN_ char *product_type);
int HAL_SetProduct_Code(_IN_ char *product_code);
int HAL_GetProduct_Code(_OU_ char *product_code);
void HAL_Firmware_Persistence_Start(void* fileName);
int HAL_Firmware_Persistence_Write(_IN_ char *buffer, _IN_ uint32_t length);
int HAL_Firmware_Persistence_Stop(void);
......
......@@ -31,13 +31,13 @@
#define PRODUCT_TPYE "kk"
#define CCU_LAN "eth0"
#define KK_CCU_ID "CCU_77771"
#define KK_CCU_PRODUCTID "ccu_n12"
#define KK_GW_PRODUCTID "gateway_2"
#define KK_CCU_RANDOM "0000000000"
#define KK_CCU_NAME "NEW_CCU"
#define KK_DEVICE_MAP_FILE_PATH "/data/kk/map/device_%s.json"
#define GET_CCUID_CMD "fw_printenv uuid -n"
#define GET_KEY_CMD "fw_printenv key -n"
#define GET_PRODUCTID_CMD "fw_printenv pid -n"
#define KK_DB_FILE "/data/kk/kk_database.db"
#define TSL_SUBDEVICE_PATH_FILE "/data/kk/tsl/product_%s.json"
#define TSL_GATEWAY_PATH_FILE "/data/kk/tsl/gateway_%s.json"
......@@ -48,6 +48,9 @@
#define OTA_IMG_FILE_MD5 "/data/OTA/app_squashfs.img.md5"
#define KK_DEVICESECRET_PATH "/data/kk/kk_deviceSecret.txt"
#define KK_TOKEN_PATH "/data/kk/kk_token.txt"
#define KK_CONFIG_FILE_PATH "/data/kk/kk_cloud_conf.json"
#define KK_DEFAULT_CONFIG_FILE_PATH "/app/ccuApps/config/cloud_default_config.json"
#define KK_AUTH_CONFIG_FILE_PATH "/tmp/auth_conf.json"
enum {
DEVICE_OFFLINE = 0,
DEVICE_ONLINE,
......
......@@ -24,7 +24,7 @@ int dm_ota_init(void)
dm_ota_ctx_t *ctx = _dm_ota_get_ctx();
memset(ctx, 0, sizeof(dm_ota_ctx_t));
HAL_GetProduct_Code(ctx->deviceCode);
kk_get_pid(ctx->deviceCode);
return SUCCESS_RETURN;
}
......@@ -186,7 +186,7 @@ int kk_publishProgress(int process,int state)
char productCode[PRODUCT_CODE_LEN] = {0};
char ccuID[PRODUCT_CODE_LEN] = {0};
char msgId[MSG_MAX_LEN] = {0};
HAL_GetProduct_Code(productCode);
kk_get_pid(productCode);
HAL_Get_ccuid(ccuID);
iotx_report_id(msgId);
cJSON *info = cJSON_CreateObject();
......
......@@ -594,6 +594,26 @@ static void _dm_mgr_destroy_devlist(void)
free(del_node);
}
}
char s_pid[PRODUCT_CODE_LEN] = {0};
static int kk_pid_init(void)
{
char pid[PRODUCT_CODE_LEN] = {0};
int pid_len = 0;
HAL_Execel_cmd(GET_PRODUCTID_CMD,(char *)pid,sizeof(pid),&pid_len);
if(pid_len > 0 && pid_len <= PRODUCT_CODE_LEN){
memcpy(s_pid,pid,pid_len-1);
INFO_PRINT("s_pid:%s\n",s_pid);
}else{
return -1;
}
return 0;
}
int kk_get_pid(char *productId)
{
strncpy(productId, s_pid, strlen(s_pid));
printf("kk_lan_get_ccuid:%s\n",s_pid);
return strlen(s_pid);
}
extern char *kk_sync_get_info();
int dm_mgr_init(void)
{
......@@ -614,12 +634,13 @@ int dm_mgr_init(void)
ctx->global_devid = 1;
kk_property_db_init();
HAL_Get_ccuid(ccuid);
kk_pid_init();
/* Init Device List */
INIT_LIST_HEAD(&ctx->dev_list);
HAL_Get_mac(mac);
kk_sync_init();
//kk_sync_get_info();
res = dm_mgr_device_create(KK_DM_DEVICE_CCU,KK_DM_CCU_DEVICE_PRODUCT_CODE,ccuid,mac,"",KK_DEV_UNKNOW,&devId,&heartbeat);
res = dm_mgr_device_create(KK_DM_DEVICE_CCU,s_pid,ccuid,mac,"",KK_DEV_UNKNOW,&devId,&heartbeat);
if (res != SUCCESS_RETURN) {
goto ERROR;
}
......@@ -1687,6 +1708,9 @@ int dm_mgr_subdev_delete(_IN_ char deviceCode[DEVICE_CODE_MAXLEN])
if(strcmp(node->productType,KK_DM_AIR_SWITCH_GATEWAY_TYPE) == 0){
kk_subAirSwitch_delete_by_dcode(deviceCode);
}
if(strcmp(node->productType,KK_DM_FRESHAIR_GATEWAY_TYPE) == 0){
kk_subFreshAir_delete_by_dcode(deviceCode);
}
if(node->dev_type == KK_DM_DEVICE_CCU){
ERROR_PRINT("ERROR [%s][%d]\n",__FUNCTION__,__LINE__);
return FAIL_RETURN;
......
......@@ -12,11 +12,11 @@
#define KK_MID_SYNC_DEFAULT_TIMEOUT_MS (200)
#define IDENTIFY_MAXLEN (64 + 1)
#define KK_DM_CCU_DEVICE_PRODUCT_TYPE "ccu"
#define KK_DM_CCU_DEVICE_PRODUCT_CODE KK_CCU_PRODUCTID
#define KK_DM_GW_DEVICE_PRODUCT_TYPE "gw"
#define KK_DM_GW_DEVICE_PRODUCT_CODE "2"
#define KK_DM_AIR_GATEWAY_TYPE "air conditioning gateway"
#define KK_DM_AIR_SWITCH_GATEWAY_TYPE "airswitch gateway"
#define KK_DM_FRESHAIR_GATEWAY_TYPE "freshAir Gateway"
#define KK_DM_DEVICE_CCU_DEVICEID (0x00)
#define MSG_MAX_LEN (64)
......@@ -124,4 +124,5 @@ int dm_mgr_subdev_delete(_IN_ char deviceCode[DEVICE_CODE_MAXLEN]);
int dm_msg_thing_property_post_all(char *deviceCode);
int dm_mgr_get_gw_deviceCode(_OU_ dm_mgr_dev_node_t **node);
void dm_mgr_resubscribe(void);
int kk_get_pid(char *productId);
#endif
......@@ -120,6 +120,19 @@ typedef struct {
#define KK_THING_SERVICE_DELETEFLOORS_REPLY "/thing/service/deleteFloors_reply"
#define KK_THING_SERVICE_UPDATEFLOORS "/thing/service/updateFloors"
#define KK_THING_SERVICE_UPDATEFLOORS_REPLY "/thing/service/updateFloors_reply"
#define KK_THING_SERVICE_CLIENTREPORT "/thing/service/clientReport"
#define KK_THING_SERVICE_CLIENTREPORT_REPLY "/thing/service/clientReport_reply"
#define KK_THING_SERVICE_SPECIALDEVTOROOM "/thing/service/addSpecialDeviceToRoom"
#define KK_THING_SERVICE_SPECIALDEVTOROOM_REPLY "/thing/service/addSpecialDeviceToRoom_reply"
#define KK_THING_SERVICE_RMSPECIALDEVFROMROOM "/thing/service/removeSpecialDeviceFromRoom"
#define KK_THING_SERVICE_RMSPECIALDEVFROM_REPLY "/thing/service/removeSpecialDeviceFromRoom_reply"
#define KK_THING_SERVICE_DELETESPECIALDEV "/thing/service/relieveMooreDevice"
#define KK_THING_SERVICE_DELETESPECIALDEV_REPLY "/thing/service/relieveMooreDevice_reply"
#define KK_THING_SERVICE_GETMOORELIST "/thing/service/getMooreList"
#define KK_THING_SERVICE_GETMOORELIST_REPLY "/thing/service/getMooreList_reply"
#define KK_THING_SERVICE_CLIENTONLINEPUSH "/thing/service/clientOnlinePush"
#define KK_THING_SERVICE_GETCLIENTINFO "/thing/service/getClientInfo"
#define KK_THING_SERVICE_GETCLIENTINFO_REPLY "/thing/service/getClientInfo_reply"
void kk_sendData2app(void *info, void *payload,int isAsync);
int dm_msg_thing_sub_register(_IN_ char productCode[DEVICE_CODE_MAXLEN], _IN_ char deviceCode[DEVICE_CODE_MAXLEN],
......
This diff is collapsed.
......@@ -122,7 +122,6 @@ static int _kk_property_db_Init(void)
value varchar(33), \
valueType INTEGER, \
epNum INTEGER)";
if (sqlite3_exec(ctx->pDb, pSubAirSwitchtable, NULL, NULL, &pcErr) != SQLITE_OK)
{
ERROR_PRINT("Error creating table (%s)\n", pcErr);
......@@ -131,6 +130,22 @@ static int _kk_property_db_Init(void)
_kk_property_db_unlock();
return FAIL_RETURN;
}
const char *pSubFreshAirtable = "CREATE TABLE IF NOT EXISTS subFreshAirProperties( \
idx INTEGER PRIMARY KEY, \
deviceCode varchar(33), \
identifier varchar(33), \
value varchar(33), \
valueType INTEGER, \
epNum INTEGER)";
if (sqlite3_exec(ctx->pDb, pSubFreshAirtable, NULL, NULL, &pcErr) != SQLITE_OK)
{
ERROR_PRINT("Error creating table (%s)\n", pcErr);
sqlite3_free(pcErr);
//eUtils_LockUnlock(&sLock);
_kk_property_db_unlock();
return FAIL_RETURN;
}
//eUtils_LockUnlock(&sLock);
_kk_property_db_unlock();
return SUCCESS_RETURN;
......@@ -504,6 +519,167 @@ int kk_subAirSwitch_db_update_value(const char *deviceCode,const char *identifie
_kk_property_db_unlock();
return SUCCESS_RETURN;
}
static int _kk_check_subFreshAir_exist(const char* deviceCode,const char *identifier,int epNum)
{
int isExist = 0;
sqlite3_stmt *stmt;
char *pDeviceCode = NULL;
char *pIdentifier = NULL;
int epNumDb = 0;
kk_property_db_ctx_t *ctx = _kk_property_db_get_ctx();
const char *searchCmd = "select * from subFreshAirProperties;";
_kk_property_db_lock();
sqlite3_prepare_v2(ctx->pDb, searchCmd, strlen(searchCmd), &stmt, NULL);
//INFO_PRINT("total_column = %d\n", sqlite3_column_count(stmt));
while(sqlite3_step(stmt) == SQLITE_ROW){
pDeviceCode = (char*)sqlite3_column_text(stmt, DB_SUBFRESHAIR_DEVICECODE);
pIdentifier = (char*)sqlite3_column_text(stmt, DB_SUBFRESHAIR_IDENTIFITER);
epNumDb = sqlite3_column_int(stmt, DB_SUBFRESHAIR_EPNUM);
if((strcmp(deviceCode,pDeviceCode) == 0) && (strcmp(identifier,pIdentifier) == 0)&& (epNumDb == epNum))
{
isExist = 1;
break;
}
}
//INFO_PRINT("\n");
sqlite3_finalize(stmt);
_kk_property_db_unlock();
return isExist;
}
/************************************************************
*功能描述: 插入新风子设备属性到数据库
*输入参数: deviceCode:设备deviceCode
epNum:端点
*输出参数: 无
*返 回 值: 0:成功;其他:失败
*其他说明:属性的值插入的时候先置空,后续再update
*************************************************************/
int kk_subFreshAir_db_insert(const char *deviceCode,const char *identifier,kk_tsl_data_type_e valuetype,int epNum)
{
const char *insertCmd = "insert into subFreshAirProperties (deviceCode,identifier,value,valueType,epNum) \
values ('%s','%s','%s','%d','%d');";
char *sqlCmd = NULL;
int rc = 0;
char *zErrMsg = 0;
kk_property_db_ctx_t *ctx = _kk_property_db_get_ctx();
if(_kk_check_subFreshAir_exist(deviceCode,identifier,epNum) == 1){
return SUCCESS_RETURN;
}
_kk_property_db_lock();
sqlCmd = sqlite3_mprintf(insertCmd,deviceCode,identifier,"",valuetype,epNum);
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("sub device insert data successfully\n");
}
sqlite3_free(sqlCmd);
_kk_property_db_unlock();
return SUCCESS_RETURN;
}
/************************************************************
*功能描述: 查询新风子设备数量
*输入参数: deviceCode:设备deviceCode
epList:端点列表
*输出参数: 子设备个数
*返 回 值: 0:成功;其他:失败
*其他说明:
*************************************************************/
int kk_subFreshAir_query_epnums(const char *deviceCode,int epList[])
{
char *sqlCmd = NULL;
//int rc = 0;
//char *zErrMsg = 0;
sqlite3_stmt *stmt;
char *valueStr = NULL;
int count = 0;
kk_property_db_ctx_t *ctx = _kk_property_db_get_ctx();
_kk_property_db_lock();
sqlCmd = sqlite3_mprintf("select * from subFreshAirProperties WHERE deviceCode= '%s' and identifier = '%s'",deviceCode,"PowerSwitch");
sqlite3_prepare_v2(ctx->pDb, sqlCmd, strlen(sqlCmd), &stmt, NULL);
while(sqlite3_step(stmt) == SQLITE_ROW){
if(count > 32){
return count;
}
epList[count] = sqlite3_column_int(stmt, DB_SUBFRESHAIR_EPNUM);
printf("epList[count] :%d\n",epList[count]);
count++;
}
sqlite3_free(sqlCmd);
_kk_property_db_unlock();
sqlite3_finalize(stmt);
return count;
}
/************************************************************
*功能描述:通过deviceCode删除新风子设备
*输入参数: deviceCode:设备deviceCode
*输出参数: 无
*返 回 值: 0:成功;其他:失败
*其他说明:
*************************************************************/
int kk_subFreshAir_delete_by_dcode(char deviceCode[DEVICE_CODE_MAXLEN])
{
const char *deleteCmd = "delete from subFreshAirProperties where deviceCode = '%s';";
char *sqlCmd = NULL;
int rc = 0;
char *zErrMsg = 0;
kk_property_db_ctx_t *ctx = _kk_property_db_get_ctx();
_kk_property_db_lock();
sqlCmd = sqlite3_mprintf(deleteCmd,deviceCode);
INFO_PRINT("Table delete data 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 delete data successfully\n");
}
sqlite3_free(sqlCmd);
_kk_property_db_unlock();
return SUCCESS_RETURN;
}
/************************************************************
*功能描述: 更新属性值
*输入参数: deviceCode:设备deviceCode
identifier:属性名称
value:属性值
*输出参数: 无
*返 回 值: 0:成功;其他:失败
*其他说明:
*************************************************************/
int kk_subFreshAir_db_update_value(const char *deviceCode,const char *identifier,const char* value,int epNum)
{
char *sqlCmd = NULL;
int rc = 0;
char *zErrMsg = 0;
kk_property_db_ctx_t *ctx = _kk_property_db_get_ctx();
_kk_property_db_lock();
//if()
sqlCmd = sqlite3_mprintf("UPDATE subFreshAirProperties SET value='%s' WHERE (deviceCode= '%s' and epNum = '%d') and (identifier = '%s') ",value,deviceCode,epNum,identifier);
//DEBUG_PRINT("kk_property_db_update_value 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{
//DEBUG_PRINT("kk_property_db_update_value successfully\n");
}
sqlite3_free(sqlCmd);
_kk_property_db_unlock();
return SUCCESS_RETURN;
}
/************************************************************
*功能描述: 插入空调内机属性到数据库
*输入参数: deviceCode:设备deviceCode
......
......@@ -48,6 +48,14 @@ enum{
DB_SUBAIRSWITCH_VALUETYPE,
DB_SUBAIRSWITCH_EPNUM
};
enum{
DB_SUBFRESHAIR_IDX = 0,
DB_SUBFRESHAIR_DEVICECODE,
DB_SUBFRESHAIR_IDENTIFITER,
DB_SUBFRESHAIR_VALUE,
DB_SUBFRESHAIR_VALUETYPE,
DB_SUBFRESHAIR_EPNUM
};
int kk_property_db_init(void);
int kk_property_db_get_rawdata(const char *identifier,const int dev_type, kk_prop_raw_struct_t* raw, int count);
int kk_property_db_update_value(const char *deviceCode,const char *identifier,const char* value);
......@@ -69,5 +77,9 @@ int kk_subAirSwitch_db_update_value(const char *deviceCode,const char *identifie
int kk_subAirSwitch_delete_by_dcode(char deviceCode[DEVICE_CODE_MAXLEN]);
int kk_subAirSwitch_query_epnums(const char *deviceCode,int epList[]);
int kk_subAirSwitch_db_insert(const char *deviceCode,const char *identifier,kk_tsl_data_type_e valuetype,int epNum);
int kk_subFreshAir_db_insert(const char *deviceCode,const char *identifier,kk_tsl_data_type_e valuetype,int epNum);
int kk_subFreshAir_query_epnums(const char *deviceCode,int epList[]);
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);
#endif
......@@ -67,8 +67,7 @@ static int kk_subDev_db_Init(void)
ctx->pDb = g_kk_pDb;
INFO_PRINT("sub db Database opened\n");
{
const char *pSubDevTable = "CREATE TABLE IF NOT EXISTS SubDeviceInfo( \
idx INTEGER, \
isOffline INTEGER, \
......@@ -95,8 +94,26 @@ static int kk_subDev_db_Init(void)
_kk_subDb_unlock();
return FAIL_RETURN;
}
}
const char *pScreenDevTable = "CREATE TABLE IF NOT EXISTS ScreenDeviceInfo( \
idx INTEGER PRIMARY KEY , \
isOffline INTEGER, \
type INTEGER, \
serialId varchar(128), \
deviceIp varchar(32), \
deviceName varchar(128), \
mac varchar(33), \
version varchar(33), \
roomId varchar(33), \
roomName varchar(128), \
expand varchar(256))";
if (sqlite3_exec(ctx->pDb, pScreenDevTable, NULL, NULL, &pcErr) != SQLITE_OK)
{
ERROR_PRINT("Error creating table (%s)\n", pcErr);
sqlite3_free(pcErr);
return FAIL_RETURN;
}
//eUtils_LockUnlock(&sLock);
_kk_subDb_unlock();
return SUCCESS_RETURN;
......@@ -810,3 +827,242 @@ int kk_subDev_getSensors_reply(SensorType_t*list)
/************************************************************
*功能描述:检查屏类设备是否有重复
*输入参数:deviceCode:设备deviceCode
*输出参数:无
*返 回 值:1:存在;0:不存在
*其他说明:
*************************************************************/
static int _kk_check_screenDev_exist(const char* sId)
{
int isExist = 0;
sqlite3_stmt *stmt;
char *serialId = NULL;
kk_subDb_ctx_t *ctx = _kk_subDb_get_ctx();
const char *searchCmd = "select * from ScreenDeviceInfo;";
_kk_subDb_lock();
sqlite3_prepare_v2(ctx->pDb, searchCmd, strlen(searchCmd), &stmt, NULL);
//INFO_PRINT("total_column = %d\n", sqlite3_column_count(stmt));
while(sqlite3_step(stmt) == SQLITE_ROW){
serialId = (char*)sqlite3_column_text(stmt, DB_SCREEN_SERIALID);
if(!strcmp(sId,serialId))
{
isExist = 1;
break;
}
}
sqlite3_finalize(stmt);
_kk_subDb_unlock();
return isExist;
}
/************************************************************
*功能描述:保存设备信息到数据库
*输入参数:devType:设备类型
serialId:产品Id
ip:设备ip
mac: mac地址
version:版本号
expand:预留
*输出参数:无
*返 回 值:0:成功;其他:失败
*其他说明:
*************************************************************/
int kk_screenDev_insert_db(int devType,char *serialId, \
char *ip,char *mac,char *version,char *expand)
{
const char *insertCmd = "insert into ScreenDeviceInfo (isOffline,type,serialId,deviceIp,deviceName,mac,version,roomId,roomName,expand) \
values ('%d','%d','%s','%s','%s','%s','%s','%s','%s','%s');";
char *sqlCmd = NULL;
int rc = 0;
char *zErrMsg = 0;
kk_subDb_ctx_t *ctx = _kk_subDb_get_ctx();
if(_kk_check_screenDev_exist((const char*)serialId) == 1)
{
WARNING_PRINT("[%s][%d] DATA ALREADY EXIST!!!\n",__FUNCTION__,__LINE__);
return SUCCESS_RETURN;
}
_kk_subDb_lock();
sqlCmd = sqlite3_mprintf(insertCmd,1,devType,serialId,ip,"MOOR4C",mac,version,"","",expand);
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("sub device insert data successfully\n");
}
sqlite3_free(sqlCmd);
_kk_subDb_unlock();
return SUCCESS_RETURN;
}
/************************************************************
*功能描述:更新设备信息到数据库
*输入参数:devType:设备类型
serialId:产品Id
ip:设备ip
mac: mac地址
version:版本号
expand:预留
*输出参数:无
*返 回 值:0:成功;其他:失败
*其他说明:
*************************************************************/
int kk_screenDev_update_room(char *serialId,char *roomid,char *roomname,char* name)
{
char *sqlCmd = NULL;
int rc = 0;
char *zErrMsg = 0;
kk_subDb_ctx_t *ctx = _kk_subDb_get_ctx();
_kk_subDb_lock();
sqlCmd = sqlite3_mprintf("UPDATE ScreenDeviceInfo SET roomId= '%s',roomName ='%s',deviceName = '%s' WHERE serialId= '%s'",roomid,roomname,name,serialId);
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_subDb_unlock();
return SUCCESS_RETURN;
}
/************************************************************
*功能描述:删除设备信息到数据库
*输入参数:devType:设备类型
serialId:产品Id
ip:设备ip
mac: mac地址
version:版本号
expand:预留
*输出参数:无
*返 回 值:0:成功;其他:失败
*其他说明:
*************************************************************/
int kk_screenDev_delete_by_serialId(char *serialId)
{
const char *deleteCmd = "delete from ScreenDeviceInfo where serialId = '%s';";
char *sqlCmd = NULL;
int rc = 0;
char *zErrMsg = 0;
kk_subDb_ctx_t *ctx = _kk_subDb_get_ctx();
_kk_subDb_lock();
sqlCmd = sqlite3_mprintf(deleteCmd,serialId);
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 delete data successfully\n");
}
sqlite3_free(sqlCmd);
_kk_subDb_unlock();
return SUCCESS_RETURN;
}
/************************************************************
*功能描述:获取屏类列表
*输入参数:deviceCode:设备deviceCode
isAuth:1,已注册;0,未注册
*输出参数:无
*返 回 值:0:成功;其他:失败
*其他说明:
*************************************************************/
int kk_get_screenDev_list(ScreenDevInfo_t*list)
{
const char *searchCmd = "select * from ScreenDeviceInfo";
char *zErrMsg = 0;
sqlite3_stmt *stmt;
kk_subDb_ctx_t *ctx = _kk_subDb_get_ctx();
char *pSerialId = NULL;
char *pIp = NULL;
char *pDevName = NULL;
char *pMac = NULL;
char *pRoomId = NULL;
char *pVer = NULL;
int type = 0;
int count = 0;
_kk_subDb_lock();
sqlite3_prepare_v2(ctx->pDb, searchCmd, strlen(searchCmd), &stmt, NULL);
while(sqlite3_step(stmt) == SQLITE_ROW){
pSerialId = (char*)sqlite3_column_text(stmt, DB_SCREEN_SERIALID);
pIp = (char*)sqlite3_column_text(stmt, DB_SCREEN_IP);
pDevName = (char*)sqlite3_column_text(stmt, DB_SCREEN_NAME);
pRoomId = (char*)sqlite3_column_text(stmt, DB_SCREEN_ROOMID);
pMac = (char*)sqlite3_column_text(stmt, DB_SCREEN_MAC);
pVer = (char*)sqlite3_column_text(stmt, DB_SCREEN_VERSION);
type = sqlite3_column_int(stmt, DB_SCREEN_TYPE);
//printf("currentValue:%d\n",currentValue);
memcpy(list[count].serialId,pSerialId,strlen(pSerialId));
memcpy(list[count].ip,pIp,strlen(pIp));
memcpy(list[count].mac,pMac,strlen(pMac));
memcpy(list[count].name,pDevName,strlen(pDevName));
memcpy(list[count].roomid,pRoomId,strlen(pRoomId));
memcpy(list[count].version,pVer,strlen(pVer));
list[count].type = type;
count++;
}
sqlite3_finalize(stmt);
_kk_subDb_unlock();
return count;
}
/************************************************************
*功能描述:获取屏类信息
*输入参数:deviceCode:设备deviceCode
isAuth:1,已注册;0,未注册
*输出参数:无
*返 回 值:0:成功;其他:失败
*其他说明:
*************************************************************/
int kk_get_screenDev_info(ScreenDevInfo_t *devInfo,char*serialId)
{
const char *searchCmd = "select * from ScreenDeviceInfo where serialId = '%s';";
char *zErrMsg = 0;
sqlite3_stmt *stmt;
kk_subDb_ctx_t *ctx = _kk_subDb_get_ctx();
char *pSerialId = NULL;
char *pIp = NULL;
char *pDevName = NULL;
char *pMac = NULL;
char *pRoomId = NULL;
char *pVer = NULL;
int type = 0;
char *sqlCmd = NULL;
if(devInfo == NULL || serialId == NULL){
return -1;
}
_kk_subDb_lock();
sqlCmd = sqlite3_mprintf(searchCmd,serialId);
sqlite3_prepare_v2(ctx->pDb, sqlCmd, strlen(sqlCmd), &stmt, NULL);
while(sqlite3_step(stmt) == SQLITE_ROW){
pSerialId = (char*)sqlite3_column_text(stmt, DB_SCREEN_SERIALID);
pIp = (char*)sqlite3_column_text(stmt, DB_SCREEN_IP);
pDevName = (char*)sqlite3_column_text(stmt, DB_SCREEN_NAME);
pRoomId = (char*)sqlite3_column_text(stmt, DB_SCREEN_ROOMID);
pMac = (char*)sqlite3_column_text(stmt, DB_SCREEN_MAC);
pVer = (char*)sqlite3_column_text(stmt, DB_SCREEN_VERSION);
type = sqlite3_column_int(stmt, DB_SCREEN_TYPE);
//printf("currentValue:%d\n",currentValue);
memcpy(devInfo->serialId,pSerialId,strlen(pSerialId));
memcpy(devInfo->ip,pIp,strlen(pIp));
memcpy(devInfo->mac,pMac,strlen(pMac));
memcpy(devInfo->name,pDevName,strlen(pDevName));
memcpy(devInfo->roomid,pRoomId,strlen(pRoomId));
memcpy(devInfo->version,pVer,strlen(pVer));
devInfo->type = type;
break;
}
sqlite3_finalize(stmt);
_kk_subDb_unlock();
sqlite3_free(sqlCmd);
return 0;
}
\ No newline at end of file
......@@ -6,6 +6,15 @@ typedef struct {
char deviceCode[DEVICE_CODE_MAXLEN];
int SensorType;
} SensorType_t;
typedef struct {
char ip[17];
char name[128];
char serialId[128];
char roomid[32];
char version[32];
char mac[32];
int type;
} ScreenDevInfo_t;
int kk_subDb_init(void);
int kk_subDev_insert_db(int devType,char productCode[PRODUCT_CODE_MAXLEN], \
char deviceCode[DEVICE_CODE_MAXLEN],char fatherMac[DEVICE_MAC_MAXLEN],char mac[DEVICE_MAC_MAXLEN], char version[DEVICE_VERSION_MAXLEN],int heartbeat);
......@@ -24,6 +33,12 @@ int kk_subDev_update_offline(int isOffline,const char *deviceCode);
int kk_subDev_getSensors_reply(SensorType_t*list);
int kk_load_subDevice(void);
int kk_subDev_check_auth(int devType);
int kk_screenDev_insert_db(int devType,char *serialId, \
char *ip,char *mac,char *version,char *expand);
int kk_screenDev_update_room(char *serialId,char *roomid,char *roomname,char* name);
int kk_screenDev_delete_by_serialId(char *serialId);
int kk_get_screenDev_list(ScreenDevInfo_t*list);
int kk_get_screenDev_info(ScreenDevInfo_t *devInfo,char*serialId);
enum{
DB_SUB_IDX = 0,
DB_SUB_ONLINE,
......@@ -38,5 +53,17 @@ enum{
DB_SUB_PRODUCTTYPE,
DB_SUB_SCENESUPPORT
};
enum{
DB_SCREEN_IDX = 0,
DB_SCREEN_ONLINE,
DB_SCREEN_TYPE,
DB_SCREEN_SERIALID,
DB_SCREEN_IP,
DB_SCREEN_NAME,
DB_SCREEN_MAC,
DB_SCREEN_VERSION,
DB_SCREEN_ROOMID,
DB_SCREEN_ROOMNAME,
DB_SCREEN_EXPAND,
};
#endif
......@@ -106,12 +106,8 @@ static cJSON * kk_get_room_devices(const char *roomId)
}
if(kk_check_multi_ep_num(deviceCode)){
cJSON_AddStringToObject(dev,KK_SYNC_SCENE_EPNUM_STR,epNum);
}else if(strcmp(node->productType,KK_DM_AIR_GATEWAY_TYPE) == 0){
//if(atoi(epNum) == 1){//epNum为1的是空调网关
// continue;
//}else{
}else if(strcmp(node->productType,KK_DM_AIR_GATEWAY_TYPE) == 0 || strcmp(node->productType,KK_DM_FRESHAIR_GATEWAY_TYPE) == 0){
cJSON_AddStringToObject(dev,KK_SYNC_SCENE_EPNUM_STR,epNum);
//}
}
cJSON_AddStringToObject(dev,KK_SYNC_DEVICECODE_STR,deviceCode);
//cJSON_AddStringToObject(dev,KK_SYNC_SCENE_EPNUM_STR,epNum);
......@@ -464,6 +460,53 @@ static cJSON *kk_get_indoor_properties_info(char *deviceCode)
sqlite3_finalize(stmt);
return obj;
}
static cJSON *kk_get_subfreshair_properties_info(char *deviceCode)
{
char *sqlCmd = NULL;
//char *zErrMsg = 0;
sqlite3_stmt *stmt;
char *propertyStr = NULL;
char *valueStr = NULL;
int valueType = 0;
int eplist[65] = {0};
int count = 0,i = 0;
char *ptr = NULL;
kk_sync_ctx_t *ctx = _kk_sync_get_ctx();
if(deviceCode == NULL){
return NULL;
}
cJSON *obj = cJSON_CreateObject();
cJSON *eps = cJSON_CreateArray();
count = kk_subFreshAir_query_epnums(deviceCode,eplist);
for(i = 0; i < count; i++){
sqlCmd = sqlite3_mprintf("select * from subFreshAirProperties WHERE deviceCode = '%s' and epNum=%d;",deviceCode,eplist[i]);
sqlite3_prepare_v2(ctx->pDb, sqlCmd, strlen(sqlCmd), &stmt, NULL);
cJSON *propertyItem = cJSON_CreateObject();
cJSON_AddNumberToObject(propertyItem, "epNum",eplist[i]);
while(sqlite3_step(stmt) == SQLITE_ROW){
propertyStr = (char*)sqlite3_column_text(stmt, DB_SUBFRESHAIR_IDENTIFITER);
valueType = sqlite3_column_int(stmt, DB_SUBFRESHAIR_VALUETYPE);
valueStr = (char*)sqlite3_column_text(stmt, DB_SUBFRESHAIR_VALUE);
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);
}
cJSON_AddItemToObject(obj, "eps", eps);
cJSON_AddNumberToObject(obj, "EpTotal", count);
cJSON_AddNumberToObject(obj, "CombineDeviceFlag", 1);
sqlite3_free(sqlCmd);
sqlite3_finalize(stmt);
return obj;
}
static cJSON * kk_get_properties_info_obj(char *deviceCode)
{
char *sqlCmd = NULL;
......@@ -638,8 +681,9 @@ static int kk_get_sub_devices_info(cJSON *gwdevicesItem,char *deviceCode)
properties=kk_get_properties_info(subDeviceCode,KK_DM_DEVICE_SUBDEV);
}else if(strcmp(subproductType,KK_DM_AIR_GATEWAY_TYPE) == 0){
properties=kk_get_indoor_properties_info(subDeviceCode);
}
else{
}else if(strcmp(subproductType,KK_DM_FRESHAIR_GATEWAY_TYPE) == 0){
properties=kk_get_subfreshair_properties_info(subDeviceCode);
}else{
properties=kk_get_properties_info_obj(subDeviceCode);
}
......@@ -1202,7 +1246,7 @@ char *kk_sync_get_info()
kk_get_devices_info(data);
kk_get_scenes_info(data);
HAL_Get_ccuid(ccu_deviceCode);
HAL_GetProduct_Code(ccu_productCode);
kk_get_pid(ccu_productCode);
HAL_GetVersion(version);
cJSON_AddStringToObject(data, KK_SYNC_DEVICECODE_STR,ccu_deviceCode);
cJSON_AddStringToObject(data, KK_SYNC_NANE_STR, "newccu");
......
......@@ -11,14 +11,17 @@ CFLAGS += -I$(TOP_DIR)/common/sqlite
CFLAGS += -I$(TOP_DIR)/src/tsl/tsl_handle
LDFLAGS += -lapi_com -liot_cjson -lkk_tsl
LDFLAGS += -lm -lkk_hal
LDFLAGS += -lsqlite -ldl -lcurl
LDFLAGS += -lsqlite -ldl
ifeq ($(CONFIG_MODEL),x86)
LDFLAGS += -L$(TOP_DIR)/common/nanomsg -lnanomsg_ubuntu -lanl
LDFLAGS += -L$(TOP_DIR)/common/ev -lev_ubuntu
else ifeq ($(CONFIG_MODEL),nx5)
LDFLAGS += -L$(TOP_DIR)/common/nanomsg -lnanomsg_nx5 -lanl
LDFLAGS += -L$(TOP_DIR)/common/nanomsg -lnanomsg_nx5 -lanl -lcurl
LDFLAGS += -L$(TOP_DIR)/common/ev -lev_nx5
else ifeq ($(CONFIG_MODEL),8197)
LDFLAGS += -L$(TOP_DIR)/common/nanomsg -lnanomsg_8197 -lubacktrace
LDFLAGS += -L$(TOP_DIR)/common/ev -lev_8197
else
LDFLAGS += -L$(TOP_DIR)/common/nanomsg -lnanomsg -lanl
LDFLAGS += -L$(TOP_DIR)/common/ev -lev
......
......@@ -702,6 +702,8 @@ static int kk_subDevice_property_save(cJSON *payload,char *deviceCode,int type)
kk_indoorAir_db_update_value(deviceCode,property->identifier,valBuf,epNumInt);
}else if(type == 1){
kk_subAirSwitch_db_update_value(deviceCode,property->identifier,valBuf,epNumInt);
}else if(type == 2){
kk_subFreshAir_db_update_value(deviceCode,property->identifier,valBuf,epNumInt);
}
}else if(property->data_value.type == KK_TSL_DATA_TYPE_FLOAT || property->data_value.type == KK_TSL_DATA_TYPE_DOUBLE){
char valBuf[16] = {0};
......@@ -710,15 +712,17 @@ static int kk_subDevice_property_save(cJSON *payload,char *deviceCode,int type)
kk_indoorAir_db_update_value(deviceCode,property->identifier,valBuf,epNumInt);
}else if(type == 1){
kk_subAirSwitch_db_update_value(deviceCode,property->identifier,valBuf,epNumInt);
}else if(type == 2){
kk_subFreshAir_db_update_value(deviceCode,property->identifier,valBuf,epNumInt);
}
}else if(property->data_value.type == KK_TSL_DATA_TYPE_TEXT ){
if(type == 0){
kk_indoorAir_db_update_value(deviceCode,property->identifier,propertyItem->valuestring,epNumInt);
}else if(type == 1){
kk_subAirSwitch_db_update_value(deviceCode,property->identifier,propertyItem->valuestring,epNumInt);
}else if(type == 2){
kk_subFreshAir_db_update_value(deviceCode,property->identifier,propertyItem->valuestring,epNumInt);
}
}
}
......@@ -727,7 +731,7 @@ static int kk_subDevice_property_save(cJSON *payload,char *deviceCode,int type)
}
return 0;
}
/*type : 0,air condition gw;1,air switch gw*/
/*type : 0,air condition gw;1,air switch gw;2,fresh air switch*/
static int kk_subDevice_property_handle(cJSON *info,cJSON *payload,char *deviceCode,int type)
{
kk_subDevice_property_save(payload,deviceCode,type);
......@@ -795,6 +799,34 @@ static int kk_subAirSwitch_online_handle(dm_mgr_dev_node_t *node ,char *deviceCo
}
return 0;
}
static int kk_subFreshair_online_handle(dm_mgr_dev_node_t *node ,char *deviceCode,int epNum)
{
int idx = 0;
int gwExist = 0;
char roomId[32] = {0};
char roomName[256] = {0};
char epNumStr[10] = {0};
kk_tsl_data_t *property = NULL;
if(node == NULL){
return -1;
}
for(idx = 0; idx < node->dev_shadow->property_number; idx++){
property = (kk_tsl_data_t *)(node->dev_shadow->properties + idx);
if(property == NULL){
continue;
}
kk_subFreshAir_db_insert(deviceCode,property->identifier,property->data_value.type,epNum);
}
gwExist = kk_get_device_roomInfo(deviceCode,1,roomName,roomId);//获取网关房间信息
if(gwExist){
char name[128] = {0};
sprintf(name,"新风%d",epNum);
sprintf(epNumStr,"%d",epNum);
kk_room_dev_add(roomId,roomName,deviceCode,epNumStr,name);
}
return 0;
}
void kk_platMsg_handle(void* data, char* chalMark){
int res = 0;
cJSON *json;
......@@ -875,6 +907,10 @@ void kk_platMsg_handle(void* data, char* chalMark){
cJSON *epNumJson = cJSON_GetObjectItem(jsonPay, "epNum");
if(epNumJson == NULL) goto error;
kk_subAirSwitch_online_handle(search_node,devCode->valuestring,epNumJson->valueint);
}else if(strcmp(search_node->productType,KK_DM_FRESHAIR_GATEWAY_TYPE) == 0){
cJSON *epNumJson = cJSON_GetObjectItem(jsonPay, "epNum");
if(epNumJson == NULL) goto error;
kk_subFreshair_online_handle(search_node,devCode->valuestring,epNumJson->valueint);
}
}
else if (strstr(msgType->valuestring, KK_THING_TOPO_BATCH_ADD_MSG) != NULL){
......@@ -909,6 +945,8 @@ void kk_platMsg_handle(void* data, char* chalMark){
kk_subDevice_property_handle(info,payload,info_dcode->valuestring,0);
}else if(strcmp(search_node->productType ,KK_DM_AIR_SWITCH_GATEWAY_TYPE) == 0){
kk_subDevice_property_handle(info,payload,info_dcode->valuestring,1);
}else if(strcmp(search_node->productType ,KK_DM_FRESHAIR_GATEWAY_TYPE) == 0){
kk_subDevice_property_handle(info,payload,info_dcode->valuestring,2);
}
else{
/*插座类设备保存功率历史记录*/
......
......@@ -1173,7 +1173,7 @@ int kk_scene_parse_scene_action(const cJSON* str,const char *sceneId,int isUpdat
propertyValue = cJSON_GetObjectItem(item,MSG_SCENE_PROPERTYVALUE);
if(propertyValue == NULL) return FAIL_RETURN;
productType = cJSON_GetObjectItem(item,MSG_PRODUCT_TYPE_STR);
roomId = cJSON_GetObjectItem(item,MSG_AREA_ROOM_ROOMID);
roomId = cJSON_GetObjectItem(item,MSG_AREA_ROOM_CCUROOMID);
if(productType != NULL){
delay = cJSON_GetObjectItem(item,MSG_SCENE_DELAY);
if(delay == NULL) return FAIL_RETURN;
......@@ -1349,7 +1349,7 @@ int kk_scene_parse_addscene(const cJSON* args,char *sceneId,int isUpdate,const c
ERROR_PRINT("[%d]kk_scene_parse_addscene fail!!!\n",__LINE__);
return INVALID_PARAMETER;
}
cJSON *room_id = cJSON_GetObjectItem(args,MSG_SCENE_ROOM_ID);
cJSON *room_id = cJSON_GetObjectItem(args,MSG_AREA_ROOM_CCUROOMID);
if(room_id == NULL)
{
INFO_PRINT("NOT Contain the room info\n");
......
......@@ -1953,7 +1953,7 @@
]
},
{
"pid": "00800000",
"pid": "00803122",
"name": "BL Fresh Air Gateway",
"type": "ZR",
"ota": true,
......@@ -2067,6 +2067,25 @@
}
]
},
{
"pid": "01021000",
"name": "YY Dimmalbe Light 5W",
"type": "ZR",
"ota": true,
"b_pid": 3137,
"productType":"lightPanel",
"eps": [
{
"zid": "0103",
"cluster": {
"client": "0003:0019",
"server": "0000:0003:0004:0005:0006:0008:0300"
}
}
]
},
{
"pid": "01000004",
"name": "Four Lamp Control Module",
......@@ -2447,6 +2466,234 @@
}
]
},
{
"pid": "01010004",
"name": "YY Linear Dimmalbe Light Model G4 With Level",
"type": "ZR",
"ota": true,
"b_pid": 3166,
"productType":"lightPanel",
"eps": [
{
"zid": "0103",
"cluster": {
"client": "0003:0019",
"server": "0000:0003:0004:0005:0006:0008:0300"
}
}
]
},
{
"pid": "010C0002",
"name": "YY Linear Dimmalbe Light Model G4 With ColorTemp",
"type": "ZR",
"ota": true,
"b_pid": 3167,
"productType":"lightPanel",
"eps": [
{
"zid": "0103",
"cluster": {
"client": "0003:0019",
"server": "0000:0003:0004:0005:0006:0008:0300"
}
}
]
},
{
"pid": "010C0021",
"name": "YY Dimmalbe Light Controler 12W With ColorTemp",
"type": "ZR",
"ota": true,
"b_pid": 3169,
"productType":"lightPanel",
"eps": [
{
"zid": "0103",
"cluster": {
"client": "0003:0019",
"server": "0000:0003:0004:0005:0006:0008:0300"
}
}
]
},
{
"pid": "01010021",
"name": "YY Dimmalbe Light Controler 12W With Level",
"type": "ZR",
"ota": true,
"b_pid": 3170,
"productType":"lightPanel",
"eps": [
{
"zid": "0103",
"cluster": {
"client": "0003:0019",
"server": "0000:0003:0004:0005:0006:0008:0300"
}
}
]
},
{
"pid": "010C0031",
"name": "YY Dimmalbe Light Controler 20W With ColorTemp",
"type": "ZR",
"ota": true,
"b_pid": 3171,
"productType":"lightPanel",
"eps": [
{
"zid": "0103",
"cluster": {
"client": "0003:0019",
"server": "0000:0003:0004:0005:0006:0008:0300"
}
}
]
},
{
"pid": "01010031",
"name": "YY Dimmalbe Light Controler 20W With Level",
"type": "ZR",
"ota": true,
"b_pid": 3172,
"productType":"lightPanel",
"eps": [
{
"zid": "0103",
"cluster": {
"client": "0003:0019",
"server": "0000:0003:0004:0005:0006:0008:0300"
}
}
]
},
{
"pid": "010C0041",
"name": "YY Dimmalbe Light Controler 8W With ColorTemp",
"type": "ZR",
"ota": true,
"b_pid": 3173,
"productType":"lightPanel",
"eps": [
{
"zid": "0103",
"cluster": {
"client": "0003:0019",
"server": "0000:0003:0004:0005:0006:0008:0300"
}
}
]
},
{
"pid": "01010041",
"name": "YY Dimmalbe Light Controler 8W With Level",
"type": "ZR",
"ota": true,
"b_pid": 3174,
"productType":"lightPanel",
"eps": [
{
"zid": "0103",
"cluster": {
"client": "0003:0019",
"server": "0000:0003:0004:0005:0006:0008:0300"
}
}
]
},
{
"pid": "010C0051",
"name": "YY Dimmalbe Light Controler 14W With ColorTemp",
"type": "ZR",
"ota": true,
"b_pid": 3175,
"productType":"lightPanel",
"eps": [
{
"zid": "0103",
"cluster": {
"client": "0003:0019",
"server": "0000:0003:0004:0005:0006:0008:0300"
}
}
]
},
{
"pid": "01010051",
"name": "YY Dimmalbe Light Controler 14W With Level",
"type": "ZR",
"ota": true,
"b_pid": 3176,
"productType":"lightPanel",
"eps": [
{
"zid": "0103",
"cluster": {
"client": "0003:0019",
"server": "0000:0003:0004:0005:0006:0008:0300"
}
}
]
},
{
"pid": "010D0062",
"name": "YY RGBCW Light Belt Controller",
"type": "ZR",
"ota": true,
"b_pid": 3177,
"productType": "colorDimmableLight",
"eps": [
{
"zid": "0102",
"cluster": {
"client": "0003:0019",
"server": "0000:0003:0004:0005:0006:0008:0300"
}
}
]
},
{
"pid": "010D0061",
"name": "YY CW Light Belt Controller",
"type": "ZR",
"ota": true,
"b_pid": 3178,
"productType":"lightPanel",
"eps": [
{
"zid": "0103",
"cluster": {
"client": "0003:0019",
"server": "0000:0003:0004:0005:0006:0008:0300"
}
}
]
},
{
"pid": "00041002",
"name": "XB KeyBord Panel G3",
......
{
"productCode":"3094",
"operateType":"512",
"operateType":"501",
"channel":1,
"syn_type":1,
"syn_opcode":"DIMMABLE_LIGHT_STATUS",
......
......@@ -88,10 +88,10 @@ $filepath/bin/kk_lan --uart=/dev/ttyS3&
sleep 2
$filepath/bin/kk_cloud &
sleep 5
$filepath/bin/smarthome_z3gw_nx5 -r0 -l3 --device-def=$filepath/kk_device_def.json --db=/data/kk/kk_z3gw.db --uart=/dev/ttyS1&
$filepath/bin/smarthome_z3gw_nx5 -r0 -l3 --device-def=$filepath/config/kk_device_def.json --db=/data/kk/kk_z3gw.db --uart=/dev/ttyS1&
sleep 1
if [ ! -f /etc/cron.d/ccu ]; then
echo "*/1 * * * * /app/ccuApps/process_check.sh" > /etc/cron.d/ccu || { echo "ERROR:add ccu crontab rule failed."; exit 1;}
echo "*/1 * * * * /app/ccuApps/script/process_check.sh" > /etc/cron.d/ccu || { echo "ERROR:add ccu crontab rule failed."; exit 1;}
fi
/etc/init.d/S90dcron restart
ntpd -n -q -d -p stdtime.gov.hk &
......
......@@ -4,7 +4,7 @@
ccuApps="/app/ccuApps"
restart_process()
{
$ccuApps/killall.sh
$ccuApps/script/killall.sh
$ccuApps/onboot.sh
}
PIDS=`ps|grep kk_midware |grep -v grep | awk '{print $1}'`
......
CONFIG_ENV_CFLAGS += \
-DBOARD_ESP8266 -u call_user_start \
-fno-inline-functions \
-ffunction-sections \
-fdata-sections \
-mlongcalls \
-DESPOS_FOR_ESP8266 -Wl,-static \
-DXT_USE_THREAD_SAFE_CLIB=0 \
CONFIG_ENV_CFLAGS += \
-Os \
-DCONFIG_HTTP_AUTH_TIMEOUT=500 \
-DCONFIG_MID_HTTP_TIMEOUT=500 \
-DCONFIG_GUIDER_AUTH_TIMEOUT=500 \
-DCONFIG_MQTT_TX_MAXLEN=640 \
-DCONFIG_MQTT_RX_MAXLEN=1200 \
CONFIG_external_libs/mbedtls :=
CONFIG_tests :=
CROSS_PREFIX := xtensa-lx106-elf-
......@@ -204,15 +204,17 @@ package:
mkdir $(releaseDir)/lib
mkdir $(releaseDir)/bin
mkdir $(releaseDir)/map
mkdir $(releaseDir)/config
mkdir $(releaseDir)/script
cp -rf $(TOP_DIR)/tsl $(TOP_DIR)/$(releaseDir)
cp -rf $(TOP_DIR)/output/release/lib/*.so $(TOP_DIR)/$(releaseDir)/lib
cp -rf $(TOP_DIR)/output/release/bin/* $(TOP_DIR)/$(releaseDir)/bin
cp -rf $(TOP_DIR)/process_check.sh $(TOP_DIR)/$(releaseDir)/
cp -rf $(TOP_DIR)/onboot.sh $(TOP_DIR)/$(releaseDir)/
cp -rf $(TOP_DIR)/killall.sh $(TOP_DIR)/$(releaseDir)/
cp -rf $(TOP_DIR)/script/* $(TOP_DIR)/$(releaseDir)/script
mv $(TOP_DIR)/$(releaseDir)/script/onboot.sh $(TOP_DIR)/$(releaseDir)/
cp -rf $(TOP_DIR)/VERSION $(TOP_DIR)/$(releaseDir)/
cp -rf $(TOP_DIR)/opcodeMapCfg/* $(TOP_DIR)/$(releaseDir)/map
cp -rf $(TOP_DIR)/config/* $(TOP_DIR)/$(releaseDir)/config
#cp -rf $(TOP_DIR)/platform/zigbee/app/builder/Z3GatewayHost/ZB/dev_config_table $(TOP_DIR)/$(releaseDir)/
#cp -rf $(TOP_DIR)/platform/zigbee/app/builder/Z3GatewayHost/ZB/dev_map_table.json $(TOP_DIR)/$(releaseDir)/dev_config_table/
ifeq ($(CONFIG_MODEL),ubuntu)
......@@ -224,7 +226,7 @@ else ifeq ($(CONFIG_MODEL),nx5)
cp -rf $(TOP_DIR)/common/ev/libev_nx5.so $(TOP_DIR)/$(releaseDir)/lib/libev.so
cp -rf $(TOP_DIR)/common/sqlite/libsqlite3_nx5.so $(TOP_DIR)/$(releaseDir)/lib/libsqlite3.so
cp -rf $(TOP_DIR)/nx5_soc_gw/smarthome_z3gw_nx5 $(TOP_DIR)/$(releaseDir)/bin/
cp -rf $(TOP_DIR)/nx5_soc_gw/kk_device_def.json $(TOP_DIR)/$(releaseDir)/
cp -rf $(TOP_DIR)/nx5_soc_gw/kk_device_def.json $(TOP_DIR)/$(releaseDir)/config/
cp -rf $(TOP_DIR)/upgrade $(TOP_DIR)/$(releaseDir)/
else
cp -rf $(TOP_DIR)/common/nanomsg/libnanomsg.so $(TOP_DIR)/$(releaseDir)/lib
......@@ -232,7 +234,7 @@ else
cp -rf $(TOP_DIR)/common/sqlite/libsqlite3.so $(TOP_DIR)/$(releaseDir)/lib
endif
#cp -rf $(TOP_DIR)/platform/zigbee/app/builder/Z3GatewayHost/build/exe/Z3GatewayHost $(TOP_DIR)/$(releaseDir)/
fromdos $(releaseDir)/*.sh
fromdos $(releaseDir)/script/*.sh
echo $(PWD)
squashfs: package
......
1.1.5
\ No newline at end of file
1.1.0
\ No newline at end of file
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