Commit 414f92af authored by chen.weican's avatar chen.weican

【修改内容】1,增加新风多合一面板的支持

【提交人】陈伟灿
parent f49071b9
......@@ -441,9 +441,6 @@ static int kk_parse_syncinfo(cJSON *payload)
properties = cJSON_GetObjectItem(subitem,MSG_PROPERTIES_STR);
kk_map_dev_node_add(deviceCode,productCode,gwdevicecode,(onlineStatus->valueint==1)?"1":"0");
kk_lan_property_syn_deal(deviceCode,properties);
......@@ -537,6 +534,7 @@ typedef struct{
}alarmcontext_map_s;
static alarmcontext_map_s alarmContext[] = {
{"3049","检测到有人 告警时间戳"},
{"3053","检测到有人 告警时间戳"},
{"3054","SOS 按钮触发报警 告警时间戳"},
{"3083","检测到浓雾 告警时间戳"},
{"3082","检测到燃气 告警时间戳"},
......@@ -545,6 +543,7 @@ static alarmcontext_map_s alarmContext[] = {
};
static alarmcontext_map_s lowbatteryContext[] = {
{"3049","人体感应设备电量低 告警时间戳"},
{"3053","人体感应设备电量低 告警时间戳"},
{"3054","SOS按钮电量低 告警时间戳"},
{"3083","烟感电量低 告警时间戳"},
{"3082","气感电量低 告警时间戳"},
......
......@@ -43,6 +43,7 @@ void _kk_map_dev_mutex_lock(void);
void _kk_map_dev_mutex_unlock(void);
void kk_map_dev_deinit(void);
int kk_creater_nodeid(char *deviceCode,int channel,char *nodeId);
#define AIR_FRESH_MUTI_DEVICE "3099"
#endif
......@@ -604,7 +604,12 @@ static int _kk_sync_devices_status_arg_obj(kk_map_dev_node_t *node,cJSON *devSta
cJSON_AddItemToObject(dev_status,ARG_STRING,arg);
cJSON_AddStringToObject(dev_status, OPCODE_STRING,node->syn_opcode);
kk_creater_nodeid(node->deviceCode,1,nodeid);
//新风多合一面板需要获取第三路状态
if(strcmp(node->productCode,AIR_FRESH_MUTI_DEVICE) == 0){
kk_creater_nodeid(node->deviceCode,3,nodeid);
}else{
kk_creater_nodeid(node->deviceCode,1,nodeid);
}
cJSON_AddNumberToObject(dev_status, NODEID_STRING, atoi(nodeid));
memset(indexId,0,sizeof(indexId));
......@@ -630,12 +635,9 @@ int kk_sync_devices_status_to_sdk(cJSON *root)
list_for_each_entry_safe(node,n, &ctx->dev_list, linked_list, kk_map_dev_node_t){
if(node->syn_type==1){
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
_kk_sync_devices_status_arg_obj(node,devStatusAry,&idx);
}else{
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
_kk_sync_devices_status_arg_str(node,devStatusAry,&idx);
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
//_kk_sync_devicestatus(node,devStatusAry);
}
......
......@@ -205,16 +205,21 @@ static int _kk_lan_sync_device_status(const char *deviceCode,kk_map_dev_node_t *
if(devNode==NULL||devNode->syn_type!=1||devNode->syn_opcode==NULL){
return -1;
}
if((arg =_kk_sync_devicestatus_arg_build(devNode))==NULL){
debug_log(LOG_DEBUG_LEVEL,"[err] arg.\n");
return -1;
}
if((nodeId = kk_lan_db_node_get(deviceCode,1))==-1){
debug_log(LOG_DEBUG_LEVEL,"[err] nodeId.\n");
return -1;
if(strcmp(devNode->productCode,AIR_FRESH_MUTI_DEVICE) == 0){
if((nodeId = kk_lan_db_node_get(deviceCode,3))==-1){
debug_log(LOG_DEBUG_LEVEL,"[err] nodeId.\n");
return -1;
}
}else{
if((nodeId = kk_lan_db_node_get(deviceCode,1))==-1){
debug_log(LOG_DEBUG_LEVEL,"[err] nodeId.\n");
return -1;
}
}
debug_log(LOG_FOCUS_LEVEL,"[sync] device status.\n");
......@@ -249,12 +254,9 @@ static int kk_lan_property_convert(const char *deviceCode,kk_map_dev_node_t *dev
int o_item_size=0,n_item_size=0;
int item_size = 0;
cJSON *epsAry = NULL,*epAryItem = NULL,*epAryEpNumObj = NULL;
int j,mFlag=0,epsArySize = 0;
if(deviceCode==NULL||devNode==NULL||
params==NULL||params->type!=cJSON_Object){
debug_log(LOG_DEBUG_LEVEL,"[err] para.\n");
......@@ -351,16 +353,7 @@ static int kk_lan_property_convert(const char *deviceCode,kk_map_dev_node_t *dev
continue;
}
kk_lan_replace_val_to_obj(n_item,valObj,"value");
if((args = ccu_value_convert(n_dataType,n_valueRange,o_dataType,o_valueRange,valObj))!=NULL){
......
......@@ -308,7 +308,18 @@ static cJSON *kk_get_ccu_properties_info(cJSON *data)
}
static void _kk_value_set(cJSON * item,int valueType,char * identifier,char *value)
{
if(valueType == KK_TSL_DATA_TYPE_TEXT){
cJSON_AddStringToObject(item, identifier, value);
}else if(valueType == KK_TSL_DATA_TYPE_INT||
valueType == KK_TSL_DATA_TYPE_ENUM||
valueType == KK_TSL_DATA_TYPE_BOOL){
cJSON_AddNumberToObject(item, identifier, atoi(value));
}else if(valueType == KK_TSL_DATA_TYPE_DOUBLE){
cJSON_AddNumberToObject(item, identifier, atof(value));
}
}
static cJSON *kk_get_properties_info(char *deviceCode,int devType)
{
......@@ -319,6 +330,10 @@ static cJSON *kk_get_properties_info(char *deviceCode,int devType)
char *valueStr = NULL;
int valueType = 0;
char *ptr = NULL;
cJSON *propertyItem1 = NULL;
cJSON *propertyItem2 = NULL;
cJSON *propertyItem3 = NULL;
cJSON *propertyItem4 = NULL;
kk_sync_ctx_t *ctx = _kk_sync_get_ctx();
if(deviceCode == NULL){
return NULL;
......@@ -328,41 +343,73 @@ static cJSON *kk_get_properties_info(char *deviceCode,int devType)
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);
//printf("[%s][%d]\n",__FUNCTION__,__LINE__);
while(sqlite3_step(stmt) == SQLITE_ROW){
cJSON *propertyItem = cJSON_CreateObject();
//printf("[%s][%d]\n",__FUNCTION__,__LINE__);
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){
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));
if(strcmp(propertiesbuf[1],"1") == 0){
if(propertyItem1 == NULL){
//printf("[%s][%d]\n",__FUNCTION__,__LINE__);
propertyItem1= cJSON_CreateObject();
cJSON_AddStringToObject(propertyItem1, "epNum",propertiesbuf[1]);
}
//printf("[%s][%d]\n",__FUNCTION__,__LINE__);
_kk_value_set(propertyItem1,valueType,propertiesbuf[0],valueStr);
}else if(strcmp(propertiesbuf[1],"2") == 0){
if(propertyItem2 == NULL){
propertyItem2= cJSON_CreateObject();
cJSON_AddStringToObject(propertyItem2, "epNum",propertiesbuf[1]);
}
_kk_value_set(propertyItem2,valueType,propertiesbuf[0],valueStr);
}else if(strcmp(propertiesbuf[1],"3") == 0){
if(propertyItem3 == NULL){
propertyItem3= cJSON_CreateObject();
cJSON_AddStringToObject(propertyItem3, "epNum",propertiesbuf[1]);
}
_kk_value_set(propertyItem3,valueType,propertiesbuf[0],valueStr);
}else if(strcmp(propertiesbuf[1],"4") == 0){
if(propertyItem4 == NULL){
propertyItem4= cJSON_CreateObject();
cJSON_AddStringToObject(propertyItem4, "epNum",propertiesbuf[1]);
}
_kk_value_set(propertyItem4,valueType,propertiesbuf[0],valueStr);
}
}else{
cJSON_AddStringToObject(propertyItem, "epNum","1");
cJSON_AddStringToObject(propertyItem1, "epNum","1");
if(valueType == KK_TSL_DATA_TYPE_TEXT){
cJSON_AddStringToObject(propertyItem, propertyStr, valueStr);
cJSON_AddStringToObject(propertyItem1, 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));
cJSON_AddNumberToObject(propertyItem1, propertyStr, atoi(valueStr));
}else if(valueType == KK_TSL_DATA_TYPE_DOUBLE){
cJSON_AddNumberToObject(propertyItem, propertyStr, atof(valueStr));
cJSON_AddNumberToObject(propertyItem1, propertyStr, atof(valueStr));
}
}
cJSON_AddItemToArray(eps,propertyItem);
}
if(propertyItem1 != NULL){
cJSON_AddItemToArray(eps,propertyItem1);
}
if(propertyItem2 != NULL){
cJSON_AddItemToArray(eps,propertyItem2);
}
if(propertyItem3 != NULL){
cJSON_AddItemToArray(eps,propertyItem3);
}
if(propertyItem4 != NULL){
cJSON_AddItemToArray(eps,propertyItem4);
}
//printf("[%s][%d]\n",__FUNCTION__,__LINE__);
cJSON_AddItemToObject(obj, "eps", eps);
sqlite3_free(sqlCmd);
sqlite3_finalize(stmt);
......
......@@ -29,13 +29,16 @@ sqlite_File="$filepath/lib/libsqlite3.so.0"
run_Dir="/data/kk"
tsl_Dir="${run_Dir}/tsl"
map_Dir="${run_Dir}/map"
smt_Dir="/etc/smarthome"
#dev_cfg_Dir="${run_Dir}/dev_config_table"
#cd /sbin/
#insmod /sbin/ssd1306-revision.ko
#/sbin/oled >/dev/null 2>&1 &
#sleep 1
if [ ! -d "$smt_Dir" ]; then
mkdir ${smt_Dir}
fi
if [ ! -d "$run_Dir" ]; then
mkdir ${run_Dir}
fi
......
{
"productCode":"3078",
"operateType":"3",
"channel":4,
"newccu":[
{
"identifier":"PowerSwitch",
"opcodemap":"SWITCH",
"dataType":"int",
"channel":"1",
"valueRange":[0,1],
"value": 0
},
{
"identifier":"PowerSwitch",
"opcodemap":"SWITCH",
"dataType":"int",
"channel":"2",
"valueRange":[0,1],
"value": 0
},
{
"identifier":"PowerSwitch",
"opcodemap":"SWITCH",
"dataType":"int",
"channel":"3",
"valueRange":[0,1],
"value": 0
},
{
"identifier":"PowerSwitch",
"opcodemap":"SWITCH",
"dataType":"int",
"channel":"4",
"valueRange":[0,1],
"value": 0
}
],
"oldccu":[
{
"opcode":"SWITCH",
"identifiermap":"PowerSwitch",
"dataType":"map",
"channel":"1",
"valueRange":["OFF","ON"]
},
{
"opcode":"SWITCH",
"identifiermap":"PowerSwitch",
"dataType":"map",
"channel":"2",
"valueRange":["OFF","ON"]
},
{
"opcode":"SWITCH",
"identifiermap":"PowerSwitch",
"dataType":"map",
"channel":"3",
"valueRange":["OFF","ON"]
},
{
"opcode":"SWITCH",
"identifiermap":"PowerSwitch",
"dataType":"map",
"channel":"4",
"valueRange":["OFF","ON"]
}
]
}
\ No newline at end of file
{
"productCode":"3099",
"operateType":"14002",
"channel":3,
"syn_type":1,
"syn_opcode":"CHOPIN_FRESH_AIR_STATUS",
"newccu":[
{
"identifier":"PowerSwitch",
"opcodemap":"FRESH_AIR_SWITCH",
"dataType":"int",
"channel":"3",
"valueRange":[0,1],
"value": 0
},{
"identifier":"WorkMode",
"opcodemap":"FRESH_AIR_RUN_MODEL",
"dataType":"int",
"channel":"3",
"valueRange":[0,1],
"value": 1
},{
"identifier":"WindSpeed",
"opcodemap":"FRESH_AIR_SPEED_SET",
"dataType":"int",
"channel":"3",
"valueRange":[0,1,2,3],
"value": 1
},{
"identifier":"ChildLockState",
"opcodemap":"FRESH_AIR_SET_LOCK_STATUS",
"dataType":"int",
"channel":"3",
"valueRange":[0,1],
"value": 0
},{
"identifier":"TimingOffTime",
"opcodemap":"FRESH_AIR_SET_TIME_OFF",
"dataType":"double",
"channel":"3",
"valueRange":[],
"value": 0
},{
"identifier":"StrainerUsageTime",
"opcodemap":"CHOPIN_FRESH_AIR_STATUS",
"dataType":"int",
"channel":"3",
"valueRange":[],
"value": 0
},{
"identifier":"StrainerAlarmTime",
"opcodemap":"CHOPIN_FRESH_AIR_STATUS",
"dataType":"int",
"channel":"3",
"valueRange":[],
"value": 0
},{
"identifier":"CurrentTemperature",
"opcodemap":"CHOPIN_FRESH_AIR_STATUS",
"dataType":"double",
"channel":"3",
"valueRange":[],
"value": 0
}
],
"oldccu":[
{
"opcode":"FRESH_AIR_SWITCH",
"identifiermap":"PowerSwitch",
"dataType":"map",
"channel":"3",
"valueRange":["OFF","ON"],
"syn":"on",
"synType":"bool"
},{
"opcode":"FRESH_AIR_RUN_MODEL",
"identifiermap":"WorkMode",
"dataType":"map",
"channel":"3",
"valueRange":["AUTO","MANUAL"],
"syn":"runModel",
"synType":"map"
},{
"opcode":"FRESH_AIR_SPEED_SET",
"identifiermap":"WindSpeed",
"dataType":"map",
"channel":"3",
"valueRange":["STOP","LOW","MID","HIGH"],
"syn":"speed",
"synType":"int"
},{
"opcode":"FRESH_AIR_SET_LOCK_STATUS",
"identifiermap":"ChildLockState",
"dataType":"bool",
"channel":"3",
"valueRange":[],
"syn":"ChildLockState",
"synType":"double"
},{
"opcode":"FRESH_AIR_SET_TIME_OFF",
"identifiermap":"TimingOffTime",
"dataType":"string_time",
"channel":"3",
"valueRange":[],
"syn":"time_off",
"synType":"string_time"
},{
"opcode":"CHOPIN_FRESH_AIR_STATUS ",
"identifiermap":"StrainerUsageTime",
"dataType":"int",
"channel":"3",
"valueRange":[],
"syn":"filterScreenWorkTime",
"synType":"int"
},{
"opcode":"CHOPIN_FRESH_AIR_STATUS",
"identifiermap":"StrainerAlarmTime",
"dataType":"int",
"channel":"3",
"valueRange":[],
"syn":"filterScreenAlarmTime",
"synType":"int"
},{
"opcode":"CHOPIN_FRESH_AIR_STATUS",
"identifiermap":"CurrentTemperature",
"dataType":"double",
"channel":"3",
"valueRange":[],
"syn":"cur_temperature",
"synType":"double"
}
]
}
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