Commit 750c1fa7 authored by 尹佳钦's avatar 尹佳钦
parents 4d03d5a7 2abbf7f2
...@@ -13,7 +13,8 @@ ...@@ -13,7 +13,8 @@
/*******获取同步数据json*******/ /*******获取同步数据json*******/
static cJSON *kk_get_sync_data(cJSON *payload) static cJSON *kk_get_sync_data(cJSON *payload)
{ {
return cJSON_GetObjectItem(payload,DATA_STR); cJSON *data = cJSON_GetObjectItem(payload,DATA_STR);
return cJSON_GetObjectItem(data,DATA_STR);
} }
...@@ -65,7 +66,6 @@ cJSON *kk_sync_rooms_to_sdk(cJSON *root,cJSON *data) ...@@ -65,7 +66,6 @@ cJSON *kk_sync_rooms_to_sdk(cJSON *root,cJSON *data)
for(i=0;i<num;i++,item++){ for(i=0;i<num;i++,item++){
room = cJSON_GetArrayItem(rooms,i); room = cJSON_GetArrayItem(rooms,i);
roomId = cJSON_GetObjectItem(room,ROOMS_ID_STR); roomId = cJSON_GetObjectItem(room,ROOMS_ID_STR);
name = cJSON_GetObjectItem(room,NAME_STR); name = cJSON_GetObjectItem(room,NAME_STR);
devices = cJSON_GetObjectItem(room,DEVICES_STR); devices = cJSON_GetObjectItem(room,DEVICES_STR);
...@@ -79,9 +79,6 @@ cJSON *kk_sync_rooms_to_sdk(cJSON *root,cJSON *data) ...@@ -79,9 +79,6 @@ cJSON *kk_sync_rooms_to_sdk(cJSON *root,cJSON *data)
item->room_status = NULL; item->room_status = NULL;
} }
roomsAry = _kk_syn_rooms_info(num,items); roomsAry = _kk_syn_rooms_info(num,items);
cJSON_AddItemToObject(root, ROOMS_STR, roomsAry); cJSON_AddItemToObject(root, ROOMS_STR, roomsAry);
return root; return root;
...@@ -175,7 +172,6 @@ int kk_sync_actions(cJSON *actions,SYN_SCENE_ACTION **act,char **room_id) ...@@ -175,7 +172,6 @@ int kk_sync_actions(cJSON *actions,SYN_SCENE_ACTION **act,char **room_id)
for(i=0;i<num;i++,ptr++){ for(i=0;i<num;i++,ptr++){
cJSON *item; cJSON *item;
item = cJSON_GetArrayItem(actions,i); item = cJSON_GetArrayItem(actions,i);
...@@ -210,26 +206,20 @@ int kk_sync_actions(cJSON *actions,SYN_SCENE_ACTION **act,char **room_id) ...@@ -210,26 +206,20 @@ int kk_sync_actions(cJSON *actions,SYN_SCENE_ACTION **act,char **room_id)
static int kk_sync_scene_condition(cJSON *condition,SYN_SCENE_ITEM **build) static int kk_sync_scene_condition(cJSON *condition,SYN_SCENE_ITEM **build)
{ {
cJSON *itemAry = NULL;
cJSON *startTime,*endTime,*crossDay,*repeat_days; cJSON *startTime,*endTime,*crossDay,*repeat_days;
if(condition==NULL ||build==NULL||*build==NULL){ if(condition==NULL ||build==NULL||*build==NULL){
return -1; return -1;
} }
if((itemAry = cJSON_GetObjectItem(condition,"items"))==NULL){
return -1;
}
int i,j,num = cJSON_GetArraySize(itemAry); int i,j,num = cJSON_GetArraySize(condition);
int repeat; int repeat;
int get_flag = 0; int get_flag = 0;
SYN_SCENE_ITEM *ptr=*build; SYN_SCENE_ITEM *ptr=*build;
printf("kk_sync_scene_condition,num=%d\n",num);
for(i=0;i<num;i++){ for(i=0;i<num;i++){
cJSON *item; cJSON *item;
printf("i=%d\n",i);
item = cJSON_GetArrayItem(condition,i); item = cJSON_GetArrayItem(condition,i);
startTime = cJSON_GetObjectItem(item,"startTime"); startTime = cJSON_GetObjectItem(item,"startTime");
...@@ -275,10 +265,7 @@ cJSON *kk_sync_scence_to_sdk(cJSON *root,cJSON *data) ...@@ -275,10 +265,7 @@ cJSON *kk_sync_scence_to_sdk(cJSON *root,cJSON *data)
cJSON *scenesAry = cJSON_CreateArray(); cJSON *scenesAry = cJSON_CreateArray();
cJSON *sceneItem; cJSON *sceneItem;
SYN_SCENE_ITEM *pScene = build; for(i=0;i<num;i++,build++){
for(i=0;i<num;i++,pScene++){
printf("i=%d\n",i);
cJSON *item = cJSON_GetArrayItem(scenes,i); cJSON *item = cJSON_GetArrayItem(scenes,i);
actions = cJSON_GetObjectItem(item,ACTIONS_STR); actions = cJSON_GetObjectItem(item,ACTIONS_STR);
enable = cJSON_GetObjectItem(item,ENABLE_STR); enable = cJSON_GetObjectItem(item,ENABLE_STR);
...@@ -293,20 +280,18 @@ cJSON *kk_sync_scence_to_sdk(cJSON *root,cJSON *data) ...@@ -293,20 +280,18 @@ cJSON *kk_sync_scence_to_sdk(cJSON *root,cJSON *data)
if(strcmp(sceneType->valuestring,"")==){ if(strcmp(sceneType->valuestring,"")==){
}*/ }*/
//printf("--------------------------->[%s][%d]\n",__FUNCTION__,__LINE__);
pScene->act_num = kk_sync_actions(actions,&pScene->act,&pScene->room_id); pScene->act_num = kk_sync_actions(actions,&pScene->act,&pScene->room_id);
//printf("--------------------------->[%s][%d]\n",__FUNCTION__,__LINE__);
kk_sync_scene_condition(condition,&pScene); kk_sync_scene_condition(condition,&pScene);
//printf("--------------------------->[%s][%d]\n",__FUNCTION__,__LINE__);
pScene->scene_id = sceneId->valuestring; pScene->scene_id = sceneId->valuestring;
pScene->name = name->valuestring; pScene->name = name->valuestring;
pScene->pannel_id = NULL; pScene->pannel_id = NULL;
sceneItem = kk_scene_build(&pScene); sceneItem = kk_scene_build(&pScene);
//printf("--------------------------->[%s][%d]\n",__FUNCTION__,__LINE__);
cJSON_AddItemToArray(scenesAry,sceneItem); cJSON_AddItemToArray(scenesAry,sceneItem);
// printf("[%s][%d]%s\n",__FUNCTION__,__LINE__,cJSON_Print(sceneItem));
} }
...@@ -316,26 +301,21 @@ cJSON *kk_sync_scence_to_sdk(cJSON *root,cJSON *data) ...@@ -316,26 +301,21 @@ cJSON *kk_sync_scence_to_sdk(cJSON *root,cJSON *data)
} }
//同步设备 //同步设备
int _kk_sync_device_item(cJSON *deviceCode,cJSON *epNum,cJSON *name,cJSON *roomId,cJSON *deviceAry) int kk_sync_devices_to_sdk(cJSON *root)
{ {
kk_map_dev_node_t *node = NULL; kk_map_dev_node_t *node = NULL;
char nodeid[32] = {0}; char nodeid[32] = {0};
char gwmac[32] = {0}; char gwmac[32] = {0};
char submac[32] = {0}; char submac[32] = {0};
char channel[4] = {0};
int idx = 1;
kk_map_dev_ctx *ctx = _kk_map_dev_ctx(); kk_map_dev_ctx *ctx = _kk_map_dev_ctx();
cJSON *devices = cJSON_CreateArray();
if(deviceCode == NULL || deviceAry==NULL){
return -1;
}
list_for_each_entry(node, &ctx->dev_list, linked_list, kk_map_dev_node_t) { list_for_each_entry(node, &ctx->dev_list, linked_list, kk_map_dev_node_t) {
if (node != NULL) { if (node != NULL) {
printf("node->deviceCode=%s,%s\n",node->deviceCode,deviceCode->valuestring);
if(strlen(node->deviceCode)==strlen(deviceCode->valuestring) && if(strlen(node->deviceCode)==strlen(deviceCode->valuestring) &&
!strcmp(node->deviceCode,deviceCode->valuestring)){ !strcmp(node->deviceCode,deviceCode->valuestring)){
cJSON *subdevicesItem = cJSON_CreateObject(); cJSON *subdevicesItem = cJSON_CreateObject();
if(epNum==NULL ||epNum->type!=cJSON_String){ if(epNum==NULL ||epNum->type!=cJSON_String){
...@@ -370,6 +350,7 @@ int _kk_sync_device_item(cJSON *deviceCode,cJSON *epNum,cJSON *name,cJSON *roomI ...@@ -370,6 +350,7 @@ int _kk_sync_device_item(cJSON *deviceCode,cJSON *epNum,cJSON *name,cJSON *roomI
cJSON_AddStringToObject(subdevicesItem, MAC_STRING, submac); cJSON_AddStringToObject(subdevicesItem, MAC_STRING, submac);
cJSON_AddStringToObject(subdevicesItem, OPERATE_TYPE_STRING, node->opearteType); cJSON_AddStringToObject(subdevicesItem, OPERATE_TYPE_STRING, node->opearteType);
cJSON_AddItemToArray(deviceAry, subdevicesItem); cJSON_AddItemToArray(deviceAry, subdevicesItem);
} }
} }
...@@ -393,7 +374,6 @@ int kk_sync_device(cJSON *roomId,cJSON *inDevAry,cJSON *outDevAry) ...@@ -393,7 +374,6 @@ int kk_sync_device(cJSON *roomId,cJSON *inDevAry,cJSON *outDevAry)
num = cJSON_GetArraySize(inDevAry); num = cJSON_GetArraySize(inDevAry);
for(i=0;i<num;i++){ for(i=0;i<num;i++){
printf("...i=%d\n",i);
cJSON *item = cJSON_GetArrayItem(inDevAry,i); cJSON *item = cJSON_GetArrayItem(inDevAry,i);
deviceCode = cJSON_GetObjectItem(item,"deviceCode"); deviceCode = cJSON_GetObjectItem(item,"deviceCode");
epNum = cJSON_GetObjectItem(item,"epNum"); epNum = cJSON_GetObjectItem(item,"epNum");
...@@ -412,16 +392,11 @@ int kk_sync_devices_to_sdk(cJSON *root,cJSON *data) ...@@ -412,16 +392,11 @@ int kk_sync_devices_to_sdk(cJSON *root,cJSON *data)
int i,num = cJSON_GetArraySize(rooms); int i,num = cJSON_GetArraySize(rooms);
cJSON *roomId,*devices; cJSON *roomId,*devices;
printf("kk_sync_devices_to_sdk,num=%d\n",num);
for(i=0;i<num;i++){ for(i=0;i<num;i++){
printf("i=%d\n",i);
cJSON *room = cJSON_GetArrayItem(rooms,i); cJSON *room = cJSON_GetArrayItem(rooms,i);
roomId = cJSON_GetObjectItem(room,ROOMS_ID_STR); roomId = cJSON_GetObjectItem(room,ROOMS_ID_STR);
devices = cJSON_GetObjectItem(room,DEVICES_STR); devices = cJSON_GetObjectItem(room,DEVICES_STR);
printf("devices...=%s\n",cJSON_Print(devices));
kk_sync_device(roomId,devices,deviceAry); kk_sync_device(roomId,devices,deviceAry);
} }
...@@ -438,6 +413,7 @@ cJSON *_kk_sync_devicestatus_arg_build(kk_map_dev_node_t *node) ...@@ -438,6 +413,7 @@ cJSON *_kk_sync_devicestatus_arg_build(kk_map_dev_node_t *node)
cJSON *newccu,*oldccu; cJSON *newccu,*oldccu;
cJSON *arg = cJSON_CreateObject(); cJSON *arg = cJSON_CreateObject();
kk_map_dev_ctx *ctx = _kk_map_dev_ctx();
if(node == NULL ||node->syn_type!=1||node->syn_opcode==NULL){ if(node == NULL ||node->syn_type!=1||node->syn_opcode==NULL){
return arg; return arg;
...@@ -502,6 +478,7 @@ static int _kk_sync_devices_status_arg_str(kk_map_dev_node_t *node,cJSON *devSta ...@@ -502,6 +478,7 @@ static int _kk_sync_devices_status_arg_str(kk_map_dev_node_t *node,cJSON *devSta
cJSON *newccu = NULL,*oldccu = NULL; cJSON *newccu = NULL,*oldccu = NULL;
cJSON *dev_status = NULL; cJSON *dev_status = NULL;
kk_map_dev_ctx *ctx = _kk_map_dev_ctx();
if(node == NULL ||devStatusAry==NULL||index==NULL){ if(node == NULL ||devStatusAry==NULL||index==NULL){
return -1; return -1;
...@@ -594,7 +571,6 @@ int kk_sync_devices_status_to_sdk(cJSON *root) ...@@ -594,7 +571,6 @@ int kk_sync_devices_status_to_sdk(cJSON *root)
kk_map_dev_node_t *n = NULL; kk_map_dev_node_t *n = NULL;
cJSON *devStatusAry = cJSON_CreateArray(); cJSON *devStatusAry = cJSON_CreateArray();
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
_kk_map_dev_mutex_lock(); _kk_map_dev_mutex_lock();
list_for_each_entry_safe(node,n, &ctx->dev_list, linked_list, kk_map_dev_node_t){ list_for_each_entry_safe(node,n, &ctx->dev_list, linked_list, kk_map_dev_node_t){
...@@ -609,7 +585,7 @@ int kk_sync_devices_status_to_sdk(cJSON *root) ...@@ -609,7 +585,7 @@ int kk_sync_devices_status_to_sdk(cJSON *root)
} }
} }
_kk_map_dev_mutex_unlock();
cJSON_AddItemToObject(root, DEVICE_STATUS_STRING, devStatusAry); cJSON_AddItemToObject(root, DEVICE_STATUS_STRING, devStatusAry);
...@@ -681,94 +657,65 @@ typedef struct{ ...@@ -681,94 +657,65 @@ typedef struct{
char *nodeId; char *nodeId;
char *sensor_type; char *sensor_type;
}SYN_GUARD_SENSORS; }SYN_GUARD_SENSORS;
static int _kk_guard_sensors_build(cJSON *guard_sensors,int num,SYN_GUARD_SENSORS *sensors) static cJSON *_kk_guard_sensors_build(int num,SYN_GUARD_SENSORS *sensors)
{ {
int i; int i;
SYN_GUARD_SENSORS *pSensor; cJSON *item;
cJSON *guard_sensors = cJSON_CreateArray();
SYN_GUARD_SENSORS *pSensor = sensors;
if(num<=0 || sensors==NULL){
return -1;
}
pSensor = sensors;
for(i=0;i<num;i++,pSensor++){ for(i=0;i<num;i++,pSensor++){
cJSON *item = cJSON_CreateObject(); item = cJSON_CreateObject();
cJSON_AddStringToObject(item,"nodeid",(pSensor->nodeId)?pSensor->nodeId:"-1"); cJSON_AddStringToObject(item,"nodeid",(pSensor->nodeId)?pSensor->nodeId:"-1");
cJSON_AddStringToObject(item,"sensor_type",(pSensor->sensor_type)?pSensor->sensor_type:"0"); cJSON_AddStringToObject(item,"sensor_type",(pSensor->sensor_type)?pSensor->sensor_type:"0");
cJSON_AddItemToArray(guard_sensors,item); cJSON_AddItemToArray(guard_sensors,item);
} }
return 0; return guard_sensors;
} }
static cJSON *_kk_guard_custom_zone_build(int num,char *roomId)
{
int i;
cJSON *custom_guard_zone = cJSON_CreateArray();
char *pRoomId = roomId;
for(i=0;i<num;i++,pRoomId++){
cJSON_AddItemToArray(custom_guard_zone,cJSON_CreateString(pRoomId));
}
return custom_guard_zone;
}
int kk_sync_guard_to_sdk(cJSON *root,cJSON *data)
cJSON *kk_sync_guard_to_sdk(cJSON *root,cJSON *data)
{ {
char *armingStr = NULL; char modeStr[8] = {0};
cJSON *guard = cJSON_CreateObject(); cJSON *guard = cJSON_CreateObject();
cJSON *custom_guard_zone = cJSON_CreateArray(); cJSON *custom_guard_zone;
cJSON *guard_sensors = cJSON_CreateArray(); cJSON *guard_sensors;
//todo 撤防布防
cJSON *properties = cJSON_GetObjectItem(data,"properties");
cJSON *ArmingState = NULL,*RoomIdsAry = NULL; int guardMode = 0;
snprintf(modeStr,sizeof(modeStr),"%d",guardMode);
cJSON_AddStringToObject(guard, "arming_status", "1"); cJSON_AddStringToObject(guard, "arming_status", modeStr);
cJSON_AddItemToObject(guard,"custom_guard_zone",custom_guard_zone);
cJSON_AddItemToObject(guard,"guard_sensors",guard_sensors); SYN_GUARD_SENSORS sensors;
sensors.nodeId = malloc(10);
memset(sensors.nodeId,0,10);
memcpy(sensors.nodeId,"1234",strlen("1234"));
sensors.sensor_type = malloc(10);
memset(sensors.sensor_type,0,10);
memcpy(sensors.sensor_type,"5678",strlen("5678"));
cJSON_AddItemToObject(root, "guard", guard); guard_sensors = _kk_guard_sensors_build(1,&sensors);
char roomId[12] = "abcd";
custom_guard_zone = _kk_guard_custom_zone_build(1,roomId);
cJSON_AddItemToObject(guard, "custom_guard_zone", custom_guard_zone);
cJSON_AddItemToObject(guard, "guard_sensors", guard_sensors);
if(properties==NULL||properties->type!=cJSON_Object){ cJSON_AddItemToObject(root, "guard", guard);
return -1;
}
ArmingState = cJSON_GetObjectItem(properties,"ArmingState");
if(ArmingState==NULL||ArmingState->type!=cJSON_Number){
return -1;
}
/*
"0": "离家布防",
"1": "撤防",
"2": "在家布防",
"3": "区域布防"
*/
//1:离家布防,2:撤防,3:在家布防,4:自定义防区布防。
if(ArmingState->valueint==0){
armingStr = "1";
}else if(ArmingState->valueint==2){
armingStr = "3";
}else if(ArmingState->valueint==3){
armingStr = "4";
}else {
armingStr = "2";
}
cJSON_ReplaceItemInObject(guard, "arming_status", cJSON_CreateString(armingStr));
if(ArmingState->valueint == 3){
int i,num;
cJSON *item = NULL;
char roomIdStr[16] = {0};
RoomIdsAry = cJSON_GetObjectItem(properties,"RoomIds");
if(RoomIdsAry==NULL||RoomIdsAry->type!=cJSON_Array){
return -1;
}
num = cJSON_GetArraySize(RoomIdsAry);
for(i=0;i<num;i++){
item = cJSON_GetArrayItem(RoomIdsAry,i);
if(item->type!=cJSON_Number){
continue ;
}
memset(roomIdStr,0,sizeof(roomIdStr));
snprintf(roomIdStr,sizeof(roomIdStr),"%d",item->valueint);
cJSON_AddItemToArray(custom_guard_zone,cJSON_CreateString(roomIdStr));
}
}
//新中控同步接口未有安防类传感器列表,故只保留实现接口,未具体实现转换
_kk_guard_sensors_build(guard_sensors,-1,NULL);
return 0;
} }
...@@ -1067,7 +1014,6 @@ int kk_create_syncinfo_to_sdk(cJSON *payload) ...@@ -1067,7 +1014,6 @@ int kk_create_syncinfo_to_sdk(cJSON *payload)
cJSON *code_lib_controllers; cJSON *code_lib_controllers;
cJSON *controllers; cJSON *controllers;
cJSON *expand_rules; cJSON *expand_rules;
cJSON *data = kk_get_sync_data(payload);
char *out = NULL; char *out = NULL;
printf("!!!!!!!!!!!!!!!!!!!!------>%x\n",&out); printf("!!!!!!!!!!!!!!!!!!!!------>%x\n",&out);
...@@ -1085,23 +1031,19 @@ int kk_create_syncinfo_to_sdk(cJSON *payload) ...@@ -1085,23 +1031,19 @@ int kk_create_syncinfo_to_sdk(cJSON *payload)
cJSON_AddItemToObject(root, "ccu_link_status", ccu_link_status); cJSON_AddItemToObject(root, "ccu_link_status", ccu_link_status);
printf("[%s][%d]\n",__FUNCTION__,__LINE__); printf("[%s][%d]\n",__FUNCTION__,__LINE__);
cnwise_music_controllers = cJSON_CreateArray(); cnwise_music_controllers = cJSON_CreateArray();
cJSON_AddItemToObject(root, "cnwise_music_controllers", cnwise_music_controllers); cJSON_AddItemToObject(root, "cnwise_music_controllers", cnwise_music_controllers);
code_lib_controllers = cJSON_CreateArray(); code_lib_controllers = cJSON_CreateArray();
cJSON_AddItemToObject(root, "code_lib_controllers", code_lib_controllers); cJSON_AddItemToObject(root, "code_lib_controllers", code_lib_controllers);
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
controllers = cJSON_CreateArray(); controllers = cJSON_CreateArray();
cJSON_AddItemToObject(root, "controllers", controllers); cJSON_AddItemToObject(root, "controllers", controllers);
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
kk_sync_devices_status_to_sdk(root); kk_sync_devices_status_to_sdk(root);
printf("[%s][%d]\n",__FUNCTION__,__LINE__); printf("[%s][%d]\n",__FUNCTION__,__LINE__);
...@@ -1109,46 +1051,28 @@ int kk_create_syncinfo_to_sdk(cJSON *payload) ...@@ -1109,46 +1051,28 @@ int kk_create_syncinfo_to_sdk(cJSON *payload)
kk_sync_devices_to_sdk(root,data); kk_sync_devices_to_sdk(root,data);
printf("[%s][%d]\n",__FUNCTION__,__LINE__); printf("[%s][%d]\n",__FUNCTION__,__LINE__);
printf("[%s][%d]%s\n",__FUNCTION__,__LINE__,(root==NULL)?"NULL":"1");
kk_sync_rooms_to_sdk(root,data); kk_sync_rooms_to_sdk(root,data);
printf("[%s][%d]\n",__FUNCTION__,__LINE__); printf("[%s][%d]\n",__FUNCTION__,__LINE__);
printf("[%s][%d]%s\n",__FUNCTION__,__LINE__,(root==NULL)?"NULL":"1");
kk_sync_scence_to_sdk(root,data); kk_sync_scence_to_sdk(root,data);
printf("[%s][%d]\n",__FUNCTION__,__LINE__); printf("[%s][%d]\n",__FUNCTION__,__LINE__);
printf("[%s][%d]%s\n",__FUNCTION__,__LINE__,(root==NULL)?"NULL":"1");
kk_sync_gw_version_to_sdk(root,data); kk_sync_gw_version_to_sdk(root,data);
printf("[%s][%d]\n",__FUNCTION__,__LINE__); printf("[%s][%d]\n",__FUNCTION__,__LINE__);
printf("[%s][%d]%s\n",__FUNCTION__,__LINE__,(root==NULL)?"NULL":"1");
kk_sync_ccu_version_to_sdk(root,data); kk_sync_ccu_version_to_sdk(root,data);
printf("[%s][%d]\n",__FUNCTION__,__LINE__); printf("[%s][%d]\n",__FUNCTION__,__LINE__);
printf("[%s][%d]%s\n",__FUNCTION__,__LINE__,(root==NULL)?"NULL":"1");
kk_sync_guard_to_sdk(root,data); kk_sync_guard_to_sdk(root,data);
printf("[%s][%d]%s\n",__FUNCTION__,__LINE__,(root==NULL)?"NULL":"1");
printf("[%s][%d]\n",__FUNCTION__,__LINE__); printf("[%s][%d]\n",__FUNCTION__,__LINE__);
kk_sync_central_ac_to_sdk(root,data); kk_sync_central_ac_to_sdk(root,data);
printf("[%s][%d]%s\n",__FUNCTION__,__LINE__,(root==NULL)?"NULL":"1");
kk_sync_central_ac_indoorunits_to_sdk(root,data); kk_sync_central_ac_indoorunits_to_sdk(root,data);
printf("[%s][%d]%s\n",__FUNCTION__,__LINE__,(root==NULL)?"NULL":"1");
kk_sync_groups_to_sdk(root,data); kk_sync_groups_to_sdk(root,data);
printf("[%s][%d]%s\n",__FUNCTION__,__LINE__,(root==NULL)?"NULL":"1");
kk_create_floors_to_sdk(root,data); kk_create_floors_to_sdk(root,data);
printf("[%s][%d]%s\n",__FUNCTION__,__LINE__,(root==NULL)?"NULL":"1");
#if 1 #if 1
......
...@@ -19,6 +19,7 @@ void kk_sendData2app(void *info, void *payload,int isAsync){ ...@@ -19,6 +19,7 @@ void kk_sendData2app(void *info, void *payload,int isAsync){
cJSON_AddItemToObject(root, "info", infoObj); cJSON_AddItemToObject(root, "info", infoObj);
cJSON_AddItemToObject(root, "payload",payloadObj); cJSON_AddItemToObject(root, "payload",payloadObj);
buf = cJSON_Print(root); buf = cJSON_Print(root);
cJSON_Minify(buf);
if(isAsync){ if(isAsync){
dm_queue_msg_insert4(buf); dm_queue_msg_insert4(buf);
......
...@@ -25,11 +25,9 @@ ...@@ -25,11 +25,9 @@
#include "kk_hal.h" #include "kk_hal.h"
extern sqlite3 *g_kk_pDb; extern sqlite3 *g_kk_pDb;
static int kk_check_multi_ep_num(char *deviceCode);
static int kk_get_scenes_actions_info(cJSON *actionArray,int id); static int kk_get_scenes_actions_info(cJSON *actionArray,int id);
static int kk_get_panel_scenes_actions_info(cJSON *actionArray,int id); static int kk_get_panel_scenes_actions_info(cJSON *actionArray,int id);
typedef struct { typedef struct {
void *mutex; void *mutex;
sqlite3 *pDb; sqlite3 *pDb;
...@@ -79,12 +77,12 @@ int kk_sync_init(void) ...@@ -79,12 +77,12 @@ int kk_sync_init(void)
static cJSON * kk_get_room_devices(const char *roomId) static cJSON * kk_get_room_devices(const char *roomId)
{ {
const char *selectCmd = "select * from AreaDevInfo WHERE roomId = '%s';"; const char *selectCmd = "select * from AreaDevInfo WHERE roomId = '%s' and epNum = 1;";
char *sqlCmd = NULL; char *sqlCmd = NULL;
sqlite3_stmt *stmt; sqlite3_stmt *stmt;
char *deviceCode = NULL; char *deviceCode = NULL;
char *epNum = NULL;
cJSON *devs = cJSON_CreateArray(); cJSON *devs = cJSON_CreateArray();
kk_sync_ctx_t *ctx = _kk_sync_get_ctx(); kk_sync_ctx_t *ctx = _kk_sync_get_ctx();
...@@ -92,21 +90,8 @@ static cJSON * kk_get_room_devices(const char *roomId) ...@@ -92,21 +90,8 @@ static cJSON * kk_get_room_devices(const char *roomId)
sqlite3_prepare_v2(ctx->pDb, sqlCmd, strlen(sqlCmd), &stmt, NULL); sqlite3_prepare_v2(ctx->pDb, sqlCmd, strlen(sqlCmd), &stmt, NULL);
while(sqlite3_step(stmt) == SQLITE_ROW){ while(sqlite3_step(stmt) == SQLITE_ROW){
cJSON *dev = cJSON_CreateObject(); cJSON *dev = cJSON_CreateObject();
char devName[64] = {0};
deviceCode = (char*)sqlite3_column_text(stmt, DB_DEV_DEVICECODE); deviceCode = (char*)sqlite3_column_text(stmt, DB_DEV_DEVICECODE);
epNum = (char*)sqlite3_column_text(stmt, DB_DEV_EPNUM);
if(kk_check_multi_ep_num(deviceCode)){
cJSON_AddStringToObject(dev,KK_SYNC_SCENE_EPNUM_STR,epNum);
}
cJSON_AddStringToObject(dev,KK_SYNC_DEVICECODE_STR,deviceCode); cJSON_AddStringToObject(dev,KK_SYNC_DEVICECODE_STR,deviceCode);
//cJSON_AddStringToObject(dev,KK_SYNC_SCENE_EPNUM_STR,epNum);
kk_get_device_name(deviceCode,epNum,devName,sizeof(devName));
cJSON_AddStringToObject(dev,"name",devName);
cJSON_AddItemToArray(devs, dev); cJSON_AddItemToArray(devs, dev);
} }
sqlite3_free(sqlCmd); sqlite3_free(sqlCmd);
...@@ -115,7 +100,6 @@ static cJSON * kk_get_room_devices(const char *roomId) ...@@ -115,7 +100,6 @@ static cJSON * kk_get_room_devices(const char *roomId)
return devs; return devs;
} }
static cJSON * kk_get_room_sences(const char *roomId) static cJSON * kk_get_room_sences(const char *roomId)
{ {
const char *selectCmd = "select * from SceneInfo where roomId = '%s';"; const char *selectCmd = "select * from SceneInfo where roomId = '%s';";
...@@ -123,7 +107,7 @@ static cJSON * kk_get_room_sences(const char *roomId) ...@@ -123,7 +107,7 @@ static cJSON * kk_get_room_sences(const char *roomId)
char *sqlCmd = NULL; char *sqlCmd = NULL;
sqlite3_stmt *stmt; sqlite3_stmt *stmt;
char *sceneId = NULL; char *sceneId = NULL;
char *sceneType = NULL;
cJSON *scenes = cJSON_CreateArray(); cJSON *scenes = cJSON_CreateArray();
kk_sync_ctx_t *ctx = _kk_sync_get_ctx(); kk_sync_ctx_t *ctx = _kk_sync_get_ctx();
...@@ -132,14 +116,13 @@ static cJSON * kk_get_room_sences(const char *roomId) ...@@ -132,14 +116,13 @@ static cJSON * kk_get_room_sences(const char *roomId)
while(sqlite3_step(stmt) == SQLITE_ROW){ while(sqlite3_step(stmt) == SQLITE_ROW){
cJSON *scene = cJSON_CreateObject(); cJSON *scene = cJSON_CreateObject();
sceneId = (char*)sqlite3_column_text(stmt, DB_SCENEINFO_SCENEID); sceneId = (char*)sqlite3_column_text(stmt, DB_SCENEINFO_SCENEID);
sceneType = (char*)sqlite3_column_text(stmt, DB_SCENEINFO_SCENETYPE);
cJSON_AddStringToObject(scene,KK_SYNC_SCENEID_STR,sceneId); cJSON_AddStringToObject(scene,KK_SYNC_SCENEID_STR,sceneId);
cJSON_AddStringToObject(scene,KK_SYNC_SCENE_SCENETYPE_STR,sceneType);
cJSON_AddItemToArray(scenes, scene); cJSON_AddItemToArray(scenes, scene);
} }
sqlite3_free(sqlCmd); sqlite3_free(sqlCmd);
sqlite3_finalize(stmt); sqlite3_finalize(stmt);
return scenes; return scenes;
} }
...@@ -162,7 +145,7 @@ static int kk_get_rooms_info(cJSON *data) ...@@ -162,7 +145,7 @@ static int kk_get_rooms_info(cJSON *data)
cJSON *scenesArray = NULL; cJSON *scenesArray = NULL;
_kk_sync_lock(); _kk_sync_lock();
sqlCmd = sqlite3_mprintf("select * from AreaInfo"); sqlCmd = sqlite3_mprintf("select * from AreaInfo");
sqlite3_prepare_v2(ctx->pDb, sqlCmd, strlen(sqlCmd), &stmt, NULL); sqlite3_prepare_v2(ctx->pDb, sqlCmd, strlen(sqlCmd), &stmt, NULL);
while(sqlite3_step(stmt) == SQLITE_ROW){ while(sqlite3_step(stmt) == SQLITE_ROW){
roomItem = cJSON_CreateObject(); roomItem = cJSON_CreateObject();
...@@ -187,123 +170,7 @@ static int kk_get_rooms_info(cJSON *data) ...@@ -187,123 +170,7 @@ static int kk_get_rooms_info(cJSON *data)
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
static int kk_get_properties_info(char *deviceCode,cJSON *obj)
static int kk_check_multi_ep_num(char *deviceCode)
{
char *sqlCmd = NULL;
//char *zErrMsg = 0;
sqlite3_stmt *stmt;
char *propertyStr = NULL;
char *valueStr = NULL;
int valueType = 0;
kk_sync_ctx_t *ctx = _kk_sync_get_ctx();
if(deviceCode == NULL){
return 0;
}
sqlCmd = sqlite3_mprintf("select * from PropertiesInfo WHERE deviceCode = '%s' and devType=%d;",deviceCode,KK_DM_DEVICE_SUBDEV);
sqlite3_prepare_v2(ctx->pDb, sqlCmd, strlen(sqlCmd), &stmt, NULL);
while(sqlite3_step(stmt) == SQLITE_ROW){
propertyStr = (char*)sqlite3_column_text(stmt, DB_IDENTIFITER);
char *propertiesbuf[64] = {0};
int num = 0;
split(propertyStr,"_",propertiesbuf,&num);
if(num>=2){
return 1;
}
}
sqlite3_free(sqlCmd);
sqlite3_finalize(stmt);
return 0;
}
static cJSON *kk_get_gw_properties_info(cJSON *data)
{
char *sqlCmd = NULL;
sqlite3_stmt *stmt;
char *propertyStr = NULL;
char *valueStr = NULL;
int valueType = 0;
kk_sync_ctx_t *ctx = _kk_sync_get_ctx();
cJSON *roomIdsAry = NULL;
cJSON *property = cJSON_CreateObject();
sqlCmd = sqlite3_mprintf("select * from PropertiesInfo WHERE devType = '%d' ",KK_DM_DEVICE_GATEWAY);
sqlite3_prepare_v2(ctx->pDb, sqlCmd, strlen(sqlCmd), &stmt, NULL);
while(sqlite3_step(stmt) == SQLITE_ROW){
propertyStr = (char*)sqlite3_column_text(stmt, DB_IDENTIFITER);
valueType = sqlite3_column_int(stmt, DB_VALUETYPE);
valueStr = (char*)sqlite3_column_text(stmt, DB_VALUE);
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
if(valueType == KK_TSL_DATA_TYPE_TEXT){
cJSON_AddStringToObject(property, propertyStr, valueStr);
}else if(valueType == KK_TSL_DATA_TYPE_INT||
valueType == KK_TSL_DATA_TYPE_ENUM||
valueType == KK_TSL_DATA_TYPE_BOOL){
cJSON_AddNumberToObject(property, propertyStr, atoi(valueStr));
}else if(valueType == KK_TSL_DATA_TYPE_DOUBLE){
cJSON_AddNumberToObject(property, propertyStr, atof(valueStr));
}
}
cJSON_AddItemToObject(data, KK_SYNC_PROPERTY_STR, property);
sqlite3_free(sqlCmd);
sqlite3_finalize(stmt);
return property;
}
static cJSON *kk_get_ccu_properties_info(cJSON *data)
{
char *sqlCmd = NULL;
//char *zErrMsg = 0;
sqlite3_stmt *stmt;
char *propertyStr = NULL;
char *valueStr = NULL;
int valueType = 0;
kk_sync_ctx_t *ctx = _kk_sync_get_ctx();
cJSON *roomIdsAry = NULL;
cJSON *property = cJSON_CreateObject();
sqlCmd = sqlite3_mprintf("select * from PropertiesInfo WHERE devType = '%d' ",KK_DM_DEVICE_CCU);
sqlite3_prepare_v2(ctx->pDb, sqlCmd, strlen(sqlCmd), &stmt, NULL);
while(sqlite3_step(stmt) == SQLITE_ROW){
propertyStr = (char*)sqlite3_column_text(stmt, DB_IDENTIFITER);
valueType = sqlite3_column_int(stmt, DB_VALUETYPE);
valueStr = (char*)sqlite3_column_text(stmt, DB_VALUE);
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
if(valueType == KK_TSL_DATA_TYPE_TEXT){
if(!strcmp(propertyStr,"ArmingState")){
cJSON_AddNumberToObject(property, propertyStr, atoi(valueStr));
}else{
cJSON_AddStringToObject(property, propertyStr, valueStr);
}
}else if(valueType == KK_TSL_DATA_TYPE_INT||
valueType == KK_TSL_DATA_TYPE_ENUM||
valueType == KK_TSL_DATA_TYPE_BOOL){
cJSON_AddNumberToObject(property, propertyStr, atoi(valueStr));
}else if(valueType == KK_TSL_DATA_TYPE_DOUBLE){
cJSON_AddNumberToObject(property, propertyStr, atof(valueStr));
}
}
if((roomIdsAry = kk_get_roomIds_ary())!=NULL){
cJSON_AddItemToObject(property, "RoomIds", roomIdsAry);
}
cJSON_AddItemToObject(data, KK_SYNC_PROPERTY_STR, property);
sqlite3_free(sqlCmd);
sqlite3_finalize(stmt);
return property;
}
static cJSON *kk_get_properties_info(char *deviceCode,int devType)
{ {
char *sqlCmd = NULL; char *sqlCmd = NULL;
//char *zErrMsg = 0; //char *zErrMsg = 0;
...@@ -311,98 +178,32 @@ static cJSON *kk_get_properties_info(char *deviceCode,int devType) ...@@ -311,98 +178,32 @@ static cJSON *kk_get_properties_info(char *deviceCode,int devType)
char *propertyStr = NULL; char *propertyStr = NULL;
char *valueStr = NULL; char *valueStr = NULL;
int valueType = 0; int valueType = 0;
char *ptr = NULL;
kk_sync_ctx_t *ctx = _kk_sync_get_ctx(); kk_sync_ctx_t *ctx = _kk_sync_get_ctx();
if(deviceCode == NULL){ if(deviceCode == NULL || obj == NULL){
return NULL; return FAIL_RETURN;
}
cJSON *obj = cJSON_CreateObject();
cJSON *eps = cJSON_CreateArray();
sqlCmd = sqlite3_mprintf("select * from PropertiesInfo WHERE deviceCode = '%s' and devType=%d;",deviceCode,devType);
sqlite3_prepare_v2(ctx->pDb, sqlCmd, strlen(sqlCmd), &stmt, NULL);
while(sqlite3_step(stmt) == SQLITE_ROW){
cJSON *propertyItem = cJSON_CreateObject();
propertyStr = (char*)sqlite3_column_text(stmt, DB_IDENTIFITER);
valueType = sqlite3_column_int(stmt, DB_VALUETYPE);
valueStr = (char*)sqlite3_column_text(stmt, DB_VALUE);
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
char *propertiesbuf[64] = {0};
int num = 0;
split(propertyStr,"_",propertiesbuf,&num);
if(num==2){
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
cJSON_AddStringToObject(propertyItem, "epNum",propertiesbuf[1]);
if(valueType == KK_TSL_DATA_TYPE_TEXT){
cJSON_AddStringToObject(propertyItem, propertiesbuf[0], valueStr);
}else if(valueType == KK_TSL_DATA_TYPE_INT||
valueType == KK_TSL_DATA_TYPE_ENUM||
valueType == KK_TSL_DATA_TYPE_BOOL){
cJSON_AddNumberToObject(propertyItem, propertiesbuf[0], atoi(valueStr));
}else if(valueType == KK_TSL_DATA_TYPE_DOUBLE){
cJSON_AddNumberToObject(propertyItem, propertiesbuf[0], atof(valueStr));
}
}else{
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
cJSON_AddStringToObject(propertyItem, "epNum","1");
if(valueType == KK_TSL_DATA_TYPE_TEXT){
cJSON_AddStringToObject(propertyItem, propertyStr, valueStr);
}else if(valueType == KK_TSL_DATA_TYPE_INT||
valueType == KK_TSL_DATA_TYPE_ENUM||
valueType == KK_TSL_DATA_TYPE_BOOL){
cJSON_AddNumberToObject(propertyItem, propertyStr, atoi(valueStr));
}else if(valueType == KK_TSL_DATA_TYPE_DOUBLE){
cJSON_AddNumberToObject(propertyItem, propertyStr, atof(valueStr));
}
}
cJSON_AddItemToArray(eps,propertyItem);
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
}
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
cJSON_AddItemToObject(obj, "eps", eps);
sqlite3_free(sqlCmd);
sqlite3_finalize(stmt);
return obj;
}
static int kk_get_properties_info_obj(char *deviceCode)
{
char *sqlCmd = NULL;
//char *zErrMsg = 0;
sqlite3_stmt *stmt;
char *propertyStr = NULL;
char *valueStr = NULL;
int valueType = 0;
kk_sync_ctx_t *ctx = _kk_sync_get_ctx();
cJSON *obj = cJSON_CreateObject();
if(deviceCode == NULL ){
return NULL;
} }
cJSON *propertyItem = cJSON_CreateObject();
sqlCmd = sqlite3_mprintf("select * from PropertiesInfo WHERE deviceCode = '%s' and devType=%d;",deviceCode,KK_DM_DEVICE_SUBDEV); sqlCmd = sqlite3_mprintf("select * from PropertiesInfo WHERE deviceCode = '%s' ",deviceCode);
sqlite3_prepare_v2(ctx->pDb, sqlCmd, strlen(sqlCmd), &stmt, NULL); sqlite3_prepare_v2(ctx->pDb, sqlCmd, strlen(sqlCmd), &stmt, NULL);
while(sqlite3_step(stmt) == SQLITE_ROW){ while(sqlite3_step(stmt) == SQLITE_ROW){
propertyStr = (char*)sqlite3_column_text(stmt, DB_IDENTIFITER); propertyStr = (char*)sqlite3_column_text(stmt, DB_IDENTIFITER);
valueType = sqlite3_column_int(stmt, DB_VALUETYPE); valueType = sqlite3_column_int(stmt, DB_VALUETYPE);
valueStr = (char*)sqlite3_column_text(stmt, DB_VALUE); valueStr = (char*)sqlite3_column_text(stmt, DB_VALUE);
printf("[%s][%d]\n",__FUNCTION__,__LINE__); printf("[%s][%d]\n",__FUNCTION__,__LINE__);
if(valueType == KK_TSL_DATA_TYPE_TEXT){ if(valueType == KK_TSL_DATA_TYPE_TEXT){
cJSON_AddStringToObject(obj, propertyStr, valueStr); cJSON_AddStringToObject(propertyItem, propertyStr, valueStr);
}else if(valueType == KK_TSL_DATA_TYPE_INT|| }else if(valueType == KK_TSL_DATA_TYPE_INT||
valueType == KK_TSL_DATA_TYPE_ENUM|| valueType == KK_TSL_DATA_TYPE_ENUM||
valueType == KK_TSL_DATA_TYPE_BOOL){ valueType == KK_TSL_DATA_TYPE_BOOL){
cJSON_AddNumberToObject(obj, propertyStr, atoi(valueStr)); cJSON_AddNumberToObject(propertyItem, propertyStr, atoi(valueStr));
}else if(valueType == KK_TSL_DATA_TYPE_DOUBLE){ }else if(valueType == KK_TSL_DATA_TYPE_DOUBLE){
cJSON_AddNumberToObject(obj, propertyStr, atof(valueStr)); cJSON_AddNumberToObject(propertyItem, propertyStr, atof(valueStr));
} }
} }
cJSON_AddItemToObject(obj, KK_SYNC_PROPERTY_STR, propertyItem);
sqlite3_free(sqlCmd); sqlite3_free(sqlCmd);
sqlite3_finalize(stmt); sqlite3_finalize(stmt);
return obj; return SUCCESS_RETURN;
} }
...@@ -478,13 +279,11 @@ static int kk_get_sub_devices_info(cJSON *gwdevicesItem,char *deviceCode) ...@@ -478,13 +279,11 @@ static int kk_get_sub_devices_info(cJSON *gwdevicesItem,char *deviceCode)
} }
cJSON *subDevices = cJSON_CreateArray(); cJSON *subDevices = cJSON_CreateArray();
#if 1 #if 1
sqlCmd = sqlite3_mprintf("select * from SubDeviceInfo WHERE fatherDeviceCode = '%s' ",deviceCode); sqlCmd = sqlite3_mprintf("select * from SubDeviceInfo WHERE fatherDeviceCode = '%s' ",deviceCode);
sqlite3_prepare_v2(ctx->pDb, sqlCmd, strlen(sqlCmd), &stmt, NULL); sqlite3_prepare_v2(ctx->pDb, sqlCmd, strlen(sqlCmd), &stmt, NULL);
while(sqlite3_step(stmt) == SQLITE_ROW){ while(sqlite3_step(stmt) == SQLITE_ROW){
cJSON *subdevicesItem = cJSON_CreateObject(); cJSON *subdevicesItem = cJSON_CreateObject();
cJSON *properties = NULL; char devName[64] = {0};
subDeviceCode = (char*)sqlite3_column_text(stmt, DB_SUB_DEVICECODE); subDeviceCode = (char*)sqlite3_column_text(stmt, DB_SUB_DEVICECODE);
subProductCode = (char*)sqlite3_column_text(stmt, DB_SUB_PRODUCTCODE); subProductCode = (char*)sqlite3_column_text(stmt, DB_SUB_PRODUCTCODE);
subVersion = (char*)sqlite3_column_text(stmt, DB_SUB_VERSION); subVersion = (char*)sqlite3_column_text(stmt, DB_SUB_VERSION);
...@@ -492,30 +291,22 @@ static int kk_get_sub_devices_info(cJSON *gwdevicesItem,char *deviceCode) ...@@ -492,30 +291,22 @@ static int kk_get_sub_devices_info(cJSON *gwdevicesItem,char *deviceCode)
cJSON_AddStringToObject(subdevicesItem, KK_SYNC_DEVICECODE_STR, subDeviceCode); cJSON_AddStringToObject(subdevicesItem, KK_SYNC_DEVICECODE_STR, subDeviceCode);
cJSON_AddStringToObject(subdevicesItem, KK_SYNC_VERSION_STR, subVersion); cJSON_AddStringToObject(subdevicesItem, KK_SYNC_VERSION_STR, subVersion);
cJSON_AddStringToObject(subdevicesItem, KK_SYNC_MAC_STR, subDeviceCode); cJSON_AddStringToObject(subdevicesItem, KK_SYNC_MAC_STR, subDeviceCode);
kk_get_device_name(subDeviceCode,"1",devName,sizeof(devName));
cJSON_AddNumberToObject(subdevicesItem, KK_SYNC_ONLINE_STR, (strcmp(subIsline,"0")==0)?1:0); cJSON_AddStringToObject(subdevicesItem, KK_SYNC_NANE_STR, devName);
cJSON_AddStringToObject(subdevicesItem, KK_SYNC_ONLINE_STR, subIsline);
kk_get_panelConfig_info(subdevicesItem,subDeviceCode); kk_get_panelConfig_info(subdevicesItem,subDeviceCode);
cJSON_AddStringToObject(subdevicesItem, KK_SYNC_PRODUCTCODE_STR, subProductCode); cJSON_AddStringToObject(subdevicesItem, KK_SYNC_PRODUCTCODE_STR, subProductCode);
cJSON_AddStringToObject(subdevicesItem, KK_SYNC_SN_STR, ""); cJSON_AddStringToObject(subdevicesItem, KK_SYNC_SN_STR, "");
cJSON_AddNumberToObject(subdevicesItem, KK_SYNC_STATUS_STR, 1); cJSON_AddStringToObject(subdevicesItem, KK_SYNC_STATUS_STR, "启动");
kk_get_properties_info(subDeviceCode,subdevicesItem);
if(kk_check_multi_ep_num(subDeviceCode)){
properties=kk_get_properties_info(subDeviceCode,KK_DM_DEVICE_SUBDEV);
}else{
properties=kk_get_properties_info_obj(subDeviceCode);
}
cJSON_AddItemToObject(subdevicesItem, "properties", properties);
cJSON_AddItemToArray(subDevices, subdevicesItem); cJSON_AddItemToArray(subDevices, subdevicesItem);
} }
#endif #endif
cJSON_AddItemToObject(gwdevicesItem, KK_SYNC_DEVICES_STR, subDevices); cJSON_AddItemToObject(gwdevicesItem, KK_SYNC_DEVICES_STR, subDevices);
sqlite3_free(sqlCmd); sqlite3_free(sqlCmd);
sqlite3_finalize(stmt); sqlite3_finalize(stmt);
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
static int kk_get_gw_devices_info(cJSON *gwdevices) static int kk_get_gw_devices_info(cJSON *gwdevices)
...@@ -550,17 +341,12 @@ static int kk_get_gw_devices_info(cJSON *gwdevices) ...@@ -550,17 +341,12 @@ static int kk_get_gw_devices_info(cJSON *gwdevices)
cJSON_AddStringToObject(gwdevicesItem, KK_SYNC_VERSION_STR, gw_version); cJSON_AddStringToObject(gwdevicesItem, KK_SYNC_VERSION_STR, gw_version);
cJSON_AddStringToObject(gwdevicesItem, KK_SYNC_MAC_STR, gw_deviceCode); cJSON_AddStringToObject(gwdevicesItem, KK_SYNC_MAC_STR, gw_deviceCode);
cJSON_AddStringToObject(gwdevicesItem, KK_SYNC_NANE_STR, "GW"); cJSON_AddStringToObject(gwdevicesItem, KK_SYNC_NANE_STR, "GW");
cJSON_AddNumberToObject(gwdevicesItem, KK_SYNC_ONLINE_STR, (strcmp(gw_isline,"0")==0)?1:0); cJSON_AddStringToObject(gwdevicesItem, KK_SYNC_ONLINE_STR, gw_isline);
cJSON_AddStringToObject(gwdevicesItem, KK_SYNC_PRODUCTCODE_STR, gw_productCode); cJSON_AddStringToObject(gwdevicesItem, KK_SYNC_PRODUCTCODE_STR, gw_productCode);
cJSON_AddStringToObject(gwdevicesItem, KK_SYNC_SN_STR, ""); cJSON_AddStringToObject(gwdevicesItem, KK_SYNC_SN_STR, "");
cJSON_AddNumberToObject(gwdevicesItem, KK_SYNC_STATUS_STR, 1); cJSON_AddStringToObject(gwdevicesItem, KK_SYNC_STATUS_STR, "启动");
printf("[%s][%d]\n",__FUNCTION__,__LINE__); kk_get_properties_info(gw_deviceCode,gwdevicesItem);
kk_get_gw_properties_info(gwdevicesItem);
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
kk_get_sub_devices_info(gwdevicesItem,gw_deviceCode); kk_get_sub_devices_info(gwdevicesItem,gw_deviceCode);
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
cJSON_AddItemToArray(gwdevices, gwdevicesItem); cJSON_AddItemToArray(gwdevices, gwdevicesItem);
} }
sqlite3_free(sqlCmd); sqlite3_free(sqlCmd);
...@@ -711,19 +497,10 @@ static int kk_get_scenes_actions_info(cJSON *actionArray,int id) ...@@ -711,19 +497,10 @@ static int kk_get_scenes_actions_info(cJSON *actionArray,int id)
cJSON_AddStringToObject(actionItem, KK_SYNC_DEVICECODE_STR, deviceCode); cJSON_AddStringToObject(actionItem, KK_SYNC_DEVICECODE_STR, deviceCode);
cJSON_AddNumberToObject(actionItem, KK_SYNC_SCENE_DELAY_STR, delay); cJSON_AddNumberToObject(actionItem, KK_SYNC_SCENE_DELAY_STR, delay);
char *propertiesbuf[64] = {0};
int num = 0;
split(propertyName,"_",propertiesbuf,&num);
if(num==2){
cJSON_AddStringToObject(actionItem, KK_SYNC_SCENE_PROPERTYNAME_STR, propertiesbuf[0]);
cJSON_AddNumberToObject(actionItem, KK_SYNC_SCENE_EPNUM_STR, atoi(propertiesbuf[1])); cJSON_AddNumberToObject(actionItem, KK_SYNC_SCENE_EPNUM_STR, atoi(propertiesbuf[1]));
}else{ cJSON_AddStringToObject(actionItem, KK_SYNC_SCENE_PROPERTYNAME_STR, propertyName);
cJSON_AddStringToObject(actionItem, KK_SYNC_SCENE_PROPERTYNAME_STR, propertyName);
cJSON_AddNumberToObject(actionItem, KK_SYNC_SCENE_EPNUM_STR, epNum); cJSON_AddNumberToObject(actionItem, KK_SYNC_SCENE_EPNUM_STR, epNum);
}
//cJSON_AddNumberToObject(actionItem, KK_SYNC_SCENE_EPNUM_STR, epNum);
cJSON_AddStringToObject(actionItem, KK_SYNC_SCENE_TYPE_STR, type); cJSON_AddStringToObject(actionItem, KK_SYNC_SCENE_TYPE_STR, type);
cJSON_AddStringToObject(actionItem, KK_SYNC_SCENE_PROPERTYVALUE_STR, propertyValue); cJSON_AddStringToObject(actionItem, KK_SYNC_SCENE_PROPERTYVALUE_STR, propertyValue);
cJSON_AddStringToObject(actionItem, KK_SYNC_ROOMID_STR, room_name); cJSON_AddStringToObject(actionItem, KK_SYNC_ROOMID_STR, room_name);
...@@ -783,7 +560,7 @@ static int kk_creat_starttime_build(time_t current) ...@@ -783,7 +560,7 @@ static int kk_creat_starttime_build(time_t current)
} }
static int kk_get_scenes_trigger_info(cJSON *triggerObj,char *sceneId) static int kk_get_scenes_trigger_info(cJSON *triggerArray,char *sceneId)
{ {
char *sqlCmd = NULL; char *sqlCmd = NULL;
//char *zErrMsg = 0; //char *zErrMsg = 0;
...@@ -792,7 +569,6 @@ static int kk_get_scenes_trigger_info(cJSON *triggerObj,char *sceneId) ...@@ -792,7 +569,6 @@ static int kk_get_scenes_trigger_info(cJSON *triggerObj,char *sceneId)
char *propertyName = NULL; char *propertyName = NULL;
char *compareType = NULL; char *compareType = NULL;
char *compareValue = NULL; char *compareValue = NULL;
cJSON *triggerAry;
char *type = NULL; char *type = NULL;
int epNum = 0; int epNum = 0;
...@@ -800,11 +576,10 @@ static int kk_get_scenes_trigger_info(cJSON *triggerObj,char *sceneId) ...@@ -800,11 +576,10 @@ static int kk_get_scenes_trigger_info(cJSON *triggerObj,char *sceneId)
int time; int time;
kk_sync_ctx_t *ctx = _kk_sync_get_ctx(); kk_sync_ctx_t *ctx = _kk_sync_get_ctx();
if(triggerObj == NULL || sceneId == NULL){ if(triggerArray == NULL || sceneId == NULL){
return FAIL_RETURN; return FAIL_RETURN;
} }
triggerAry = cJSON_CreateArray();
sqlCmd = sqlite3_mprintf("select * from SceneTimerInfo where sceneId = %s",sceneId); sqlCmd = sqlite3_mprintf("select * from SceneTimerInfo where sceneId = %s",sceneId);
sqlite3_prepare_v2(ctx->pDb, sqlCmd, strlen(sqlCmd), &stmt, NULL); sqlite3_prepare_v2(ctx->pDb, sqlCmd, strlen(sqlCmd), &stmt, NULL);
...@@ -844,17 +619,14 @@ static int kk_get_scenes_trigger_info(cJSON *triggerObj,char *sceneId) ...@@ -844,17 +619,14 @@ static int kk_get_scenes_trigger_info(cJSON *triggerObj,char *sceneId)
cJSON_AddStringToObject(triggerItem, KK_SYNC_SCENE_PROPERTYNAME_STR, (char*)propertyName); cJSON_AddStringToObject(triggerItem, KK_SYNC_SCENE_PROPERTYNAME_STR, (char*)propertyName);
cJSON_AddStringToObject(triggerItem, KK_SYNC_SCENE_COMPARETYPE_STR, (char*)compareType); cJSON_AddStringToObject(triggerItem, KK_SYNC_SCENE_COMPARETYPE_STR, (char*)compareType);
cJSON_AddStringToObject(triggerItem, KK_SYNC_SCENE_COMPAREValue_STR, (char*)compareValue); cJSON_AddStringToObject(triggerItem, KK_SYNC_SCENE_COMPAREValue_STR, (char*)compareValue);
cJSON_AddItemToArray(triggerAry, triggerItem); cJSON_AddItemToArray(triggerArray, triggerItem);
} }
cJSON_AddItemToObject(triggerObj, "items",triggerAry);
sqlite3_free(sqlCmd); sqlite3_free(sqlCmd);
sqlite3_finalize(stmt); sqlite3_finalize(stmt);
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
static cJSON *kk_build_repeatday_array(int repeatday) static cJSON *kk_build_repeatday_array(int repeatday)
{ {
int i = 0; int i = 0;
...@@ -866,8 +638,7 @@ static cJSON *kk_build_repeatday_array(int repeatday) ...@@ -866,8 +638,7 @@ static cJSON *kk_build_repeatday_array(int repeatday)
} }
return repeatAry; return repeatAry;
} }
static int kk_get_scenes_condition_info(cJSON *conditionArray,char *sceneId)
static int kk_get_scenes_condition_info(cJSON *conditionObj,char *sceneId)
{ {
char *sqlCmd = NULL; char *sqlCmd = NULL;
//char *zErrMsg = 0; //char *zErrMsg = 0;
...@@ -878,15 +649,10 @@ static int kk_get_scenes_condition_info(cJSON *conditionObj,char *sceneId) ...@@ -878,15 +649,10 @@ static int kk_get_scenes_condition_info(cJSON *conditionObj,char *sceneId)
int crossDay = 0; int crossDay = 0;
int repeat = 0; int repeat = 0;
kk_sync_ctx_t *ctx = _kk_sync_get_ctx();
if(conditionArray == NULL || sceneId == NULL){
cJSON *conditionAry;
kk_sync_ctx_t *ctx = _kk_sync_get_ctx();
if(conditionObj == NULL || sceneId == NULL){
return FAIL_RETURN; return FAIL_RETURN;
} }
conditionAry = cJSON_CreateArray();
sqlCmd = sqlite3_mprintf("select * from SceneConditionInfo where sceneId = %s",sceneId); sqlCmd = sqlite3_mprintf("select * from SceneConditionInfo where sceneId = %s",sceneId);
sqlite3_prepare_v2(ctx->pDb, sqlCmd, strlen(sqlCmd), &stmt, NULL); sqlite3_prepare_v2(ctx->pDb, sqlCmd, strlen(sqlCmd), &stmt, NULL);
...@@ -908,9 +674,8 @@ static int kk_get_scenes_condition_info(cJSON *conditionObj,char *sceneId) ...@@ -908,9 +674,8 @@ static int kk_get_scenes_condition_info(cJSON *conditionObj,char *sceneId)
cJSON_AddItemToObject(conditionItem,KK_SYNC_SCENE_REPEATDAY_STR,repeatAry); cJSON_AddItemToObject(conditionItem,KK_SYNC_SCENE_REPEATDAY_STR,repeatAry);
cJSON_AddItemToArray(conditionAry, conditionItem); cJSON_AddItemToArray(conditionArray, conditionItem);
} }
char *deviceCode = NULL; char *deviceCode = NULL;
char *propertyName = NULL; char *propertyName = NULL;
char *compareType = NULL; char *compareType = NULL;
...@@ -919,34 +684,28 @@ static int kk_get_scenes_condition_info(cJSON *conditionObj,char *sceneId) ...@@ -919,34 +684,28 @@ static int kk_get_scenes_condition_info(cJSON *conditionObj,char *sceneId)
int epNum = 0; int epNum = 0;
int isAnd; int isAnd;
sqlCmd = sqlite3_mprintf("select * from SceneTriggerInfo where sceneId = %s",sceneId); sqlCmd = sqlite3_mprintf("select * from SceneTimerInfo where sceneId = %s",sceneId);
sqlite3_prepare_v2(ctx->pDb, sqlCmd, strlen(sqlCmd), &stmt, NULL);
while(sqlite3_step(stmt) == SQLITE_ROW){
isAnd = sqlite3_column_int(stmt, DB_SCENETRIGGER_ISAND); isAnd = sqlite3_column_int(stmt, DB_SCENETRIGGER_ISAND);
if(isAnd==1){ if(isAnd==1){
cJSON *triggerItem = cJSON_CreateObject(); cJSON *conditionItem = cJSON_CreateObject();
deviceCode = (char*)sqlite3_column_text(stmt, DB_SCENETRIGGER_DEVICECODE); deviceCode = (char*)sqlite3_column_text(stmt, DB_SCENETRIGGER_DEVICECODE);
epNum = sqlite3_column_int(stmt, DB_SCENETRIGGER_EPNUM); week = sqlite3_column_int(stmt, DB_SCENETIMER_WEEK);
propertyName = (char*)sqlite3_column_text(stmt, DB_SCENETRIGGER_PROPERTYNAME); propertyName = (char*)sqlite3_column_text(stmt, DB_SCENETRIGGER_PROPERTYNAME);
compareType = (char*)sqlite3_column_text(stmt, DB_SCENETRIGGER_COMPARETYPE); compareType = (char*)sqlite3_column_text(stmt, DB_SCENETRIGGER_COMPARETYPE);
compareValue = (char*)sqlite3_column_text(stmt, DB_SCENETRIGGER_COMPAREVALUE); compareValue = (char*)sqlite3_column_text(stmt, DB_SCENETRIGGER_COMPAREVALUE);
type = (char*)sqlite3_column_text(stmt, DB_SCENETRIGGER_TYPE); time = sqlite3_column_int(stmt, DB_SCENETIMER_TIME);
cJSON_AddStringToObject(triggerItem, KK_SYNC_SCENE_TYPE_STR, (char*)type); cJSON_AddStringToObject(triggerItem, KK_SYNC_SCENE_TYPE_STR, (char*)type);
cJSON_AddStringToObject(triggerItem, KK_SYNC_DEVICECODE_STR, (char*)deviceCode); cJSON_AddNumberToObject(conditionItem, "week", week);
cJSON_AddNumberToObject(triggerItem, KK_SYNC_SCENE_EPNUM_STR, epNum); cJSON_AddNumberToObject(triggerItem, KK_SYNC_SCENE_EPNUM_STR, epNum);
cJSON_AddStringToObject(triggerItem, KK_SYNC_SCENE_PROPERTYNAME_STR, (char*)propertyName); cJSON_AddStringToObject(triggerItem, KK_SYNC_SCENE_PROPERTYNAME_STR, (char*)propertyName);
cJSON_AddStringToObject(triggerItem, KK_SYNC_SCENE_COMPARETYPE_STR, (char*)compareType); cJSON_AddStringToObject(triggerItem, KK_SYNC_SCENE_COMPARETYPE_STR, (char*)compareType);
cJSON_AddStringToObject(triggerItem, KK_SYNC_SCENE_COMPAREValue_STR, (char*)compareValue); cJSON_AddStringToObject(triggerItem, KK_SYNC_SCENE_COMPAREValue_STR, (char*)compareValue);
cJSON_AddItemToArray(conditionAry, triggerItem); cJSON_AddNumberToObject(conditionItem, "time", time);
} }
}
cJSON_AddItemToObject(conditionObj, "items",conditionAry);
sqlite3_free(sqlCmd); sqlite3_free(sqlCmd);
sqlite3_finalize(stmt); sqlite3_finalize(stmt);
return SUCCESS_RETURN; return SUCCESS_RETURN;
...@@ -971,9 +730,9 @@ static int kk_get_scenes_info(cJSON *data) ...@@ -971,9 +730,9 @@ static int kk_get_scenes_info(cJSON *data)
cJSON *sceneArrayItem = cJSON_CreateObject(); cJSON *sceneArrayItem = cJSON_CreateObject();
enable = sqlite3_column_int(stmt, DB_SCENEINFO_ENABLE); enable = sqlite3_column_int(stmt, DB_SCENEINFO_ENABLE);
if(enable == 1){ if(enable == 1){
cJSON_AddNumberToObject(sceneArrayItem, KK_SYNC_SCENE_ENABLE_STR, 1); cJSON_AddStringToObject(sceneArrayItem, KK_SYNC_SCENE_ENABLE_STR, "启动");
}else{ }else{
cJSON_AddNumberToObject(sceneArrayItem, KK_SYNC_SCENE_ENABLE_STR, 0); cJSON_AddStringToObject(sceneArrayItem, KK_SYNC_SCENE_ENABLE_STR, "禁用");
} }
type = sqlite3_column_int(stmt, DB_SCENEINFO_SCENETYPE); type = sqlite3_column_int(stmt, DB_SCENEINFO_SCENETYPE);
...@@ -985,13 +744,13 @@ static int kk_get_scenes_info(cJSON *data) ...@@ -985,13 +744,13 @@ static int kk_get_scenes_info(cJSON *data)
cJSON *actionArray = cJSON_CreateArray(); cJSON *actionArray = cJSON_CreateArray();
kk_get_scenes_actions_info(actionArray,atoi(sceneId)); kk_get_scenes_actions_info(actionArray,atoi(sceneId));
cJSON_AddItemToObject(sceneArrayItem, KK_SYNC_SCENE_ACTIONS_STR, actionArray); cJSON_AddItemToObject(sceneArrayItem, KK_SYNC_SCENE_ACTIONS_STR, actionArray);
cJSON *triggerObj = cJSON_CreateObject(); cJSON *triggerArray = cJSON_CreateArray();
kk_get_scenes_trigger_info(triggerObj,sceneId); kk_get_scenes_trigger_info(triggerArray,sceneId);
cJSON_AddItemToObject(sceneArrayItem, KK_SYNC_SCENE_TRIGGER_STR, triggerObj); cJSON_AddItemToObject(sceneArrayItem, KK_SYNC_SCENE_TRIGGER_STR, triggerArray);
if(kk_is_trigger_timing(sceneId)!=1){ if(kk_is_trigger_timing(sceneId)!=1){
cJSON *conditionObj = cJSON_CreateObject(); cJSON *conditionArray = cJSON_CreateArray();
kk_get_scenes_condition_info(conditionObj,sceneId); kk_get_scenes_condition_info(conditionArray,sceneId);
cJSON_AddItemToObject(sceneArrayItem, KK_SYNC_SCENE_CONDITION_STR, conditionObj); cJSON_AddItemToObject(sceneArrayItem, KK_SYNC_SCENE_CONDITION_STR, conditionArray);
} }
cJSON_AddItemToArray(sceneArray, sceneArrayItem); cJSON_AddItemToArray(sceneArray, sceneArrayItem);
...@@ -1001,8 +760,6 @@ static int kk_get_scenes_info(cJSON *data) ...@@ -1001,8 +760,6 @@ static int kk_get_scenes_info(cJSON *data)
sqlite3_finalize(stmt); sqlite3_finalize(stmt);
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
/*
static int kk_get_ccu_properties(cJSON *property) static int kk_get_ccu_properties(cJSON *property)
{ {
char *sqlCmd = NULL; char *sqlCmd = NULL;
...@@ -1036,7 +793,6 @@ static int kk_get_ccu_properties(cJSON *property) ...@@ -1036,7 +793,6 @@ static int kk_get_ccu_properties(cJSON *property)
_kk_sync_unlock(); _kk_sync_unlock();
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
*/
/************************************************************ /************************************************************
*功能描述:检查设备是否有重复 *功能描述:检查设备是否有重复
*输入参数:deviceCode:设备deviceCode *输入参数:deviceCode:设备deviceCode
...@@ -1051,36 +807,36 @@ char *kk_sync_get_info() ...@@ -1051,36 +807,36 @@ char *kk_sync_get_info()
char ccu_productCode[PRODUCT_CODE_MAXLEN] = {0}; char ccu_productCode[PRODUCT_CODE_MAXLEN] = {0};
char version[32] = {0}; char version[32] = {0};
char cloudstatus_str[16] = {0}; char cloudstatus_str[16] = {0};
cJSON *root=cJSON_CreateObject();
cJSON_AddStringToObject(root,KK_SYNC_CODE_STR,"0");
cJSON *data = cJSON_CreateObject(); cJSON *data = cJSON_CreateObject();
cJSON_AddItemToObject(root, KK_SYNC_DATA_STR, data);
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
kk_get_rooms_info(data); kk_get_rooms_info(data);
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
kk_get_devices_info(data); kk_get_devices_info(data);
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
kk_get_scenes_info(data); kk_get_scenes_info(data);
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
//HAL_GetDevice_Code(ccu_deviceCode); HAL_GetDevice_Code(ccu_deviceCode);
HAL_Get_ccuid(ccu_deviceCode);
HAL_GetProduct_Code(ccu_productCode); HAL_GetProduct_Code(ccu_productCode);
HAL_GetVersion(version); HAL_GetVersion(version);
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
cJSON_AddStringToObject(data, KK_SYNC_DEVICECODE_STR,ccu_deviceCode); cJSON_AddStringToObject(data, KK_SYNC_DEVICECODE_STR,ccu_deviceCode);
cJSON_AddStringToObject(data, KK_SYNC_NANE_STR, "newccu"); cJSON_AddStringToObject(data, KK_SYNC_NANE_STR, "newccu");
sprintf(cloudstatus_str, "%d", kk_get_cloudstatus()); sprintf(cloudstatus_str, "%d", kk_get_cloudstatus());
cJSON_AddStringToObject(data, KK_SYNC_ONLINE_STR, cloudstatus_str); cJSON_AddStringToObject(data, KK_SYNC_ONLINE_STR, cloudstatus_str);
cJSON_AddStringToObject(data, KK_SYNC_PRODUCTCODE_STR, ccu_productCode); cJSON_AddStringToObject(data, KK_SYNC_PRODUCTCODE_STR, ccu_productCode);
cJSON_AddStringToObject(data, KK_SYNC_VERSION_STR, version); cJSON_AddStringToObject(data, KK_SYNC_VERSION_STR, version);
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
kk_get_ccu_properties_info(data); cJSON *property = cJSON_CreateObject();
kk_get_ccu_properties(property);
cJSON_AddItemToObject(data, KK_SYNC_PROPERTY_STR, property);
out=cJSON_Print(data); out=cJSON_Print(root);
printf("kk_sync_get_info:%s\n",out); printf("kk_sync_get_info:%s\n",out);
cJSON_Delete(data); cJSON_Delete(root);
//free(out); //free(out);
return out; return out;
} }
......
...@@ -653,7 +653,10 @@ void kk_platMsg_handle(void* data, char* chalMark){ ...@@ -653,7 +653,10 @@ void kk_platMsg_handle(void* data, char* chalMark){
if(jsonPay == NULL) goto error; if(jsonPay == NULL) goto error;
proCode = cJSON_GetObjectItem(jsonPay, MSG_PRODUCT_CODE_STR); proCode = cJSON_GetObjectItem(jsonPay, MSG_PRODUCT_CODE_STR);
devCode = cJSON_GetObjectItem(jsonPay, MSG_DEVICE_CODE_STR); devCode = cJSON_GetObjectItem(jsonPay, MSG_DEVICE_CODE_STR);
mac = cJSON_GetObjectItem(jsonPay, "mac"); //mac = cJSON_GetObjectItem(jsonPay, "mac");
mac = cJSON_GetObjectItem(jsonPay, MSG_DEVICE_CODE_STR);
if (proCode == NULL || devCode == NULL || mac == NULL){ if (proCode == NULL || devCode == NULL || mac == NULL){
ERROR_PRINT("productCode, deviceCode mac params are error\n"); ERROR_PRINT("productCode, deviceCode mac params are error\n");
goto error; goto error;
......
{ {
"productCode":"3020", "productCode":"3020",
"operateType":"2001", "operateType":"2001",
"channel":1, "channel":1,
"syn_type":1, "syn_type":1,
"syn_opcode":"STATUS", "syn_opcode":"STATUS",
"newccu":[ "newccu":[
{ {
"identifier":"PowerSwitch", "identifier":"PowerSwitch",
"opcodemap":"SWITCH", "opcodemap":"SWITCH",
"dataType":"int", "dataType":"int",
"channel":"1", "channel":"1",
"valueRange":[0,1], "valueRange":[0,1],
"value": 0 "value": 0
}, },
{ {
"identifier":"Power", "identifier":"Power",
"opcodemap":"GET_DEV_POWER", "opcodemap":"GET_DEV_POWER",
"dataType":"double", "dataType":"double",
"channel":"1", "channel":"1",
"valueRange":[], "valueRange":[],
"value": 0 "value": 0
}, },
{ {
"identifier":"Electric", "identifier":"Electric",
"opcodemap":"GET_ELECTRICAL", "opcodemap":"GET_ELECTRICAL",
"dataType":"double", "dataType":"double",
"channel":"1", "channel":"1",
"valueRange":[], "valueRange":[],
"value": 0 "value": 0
}, },
{ {
"identifier":"", "identifier":"",
"opcodemap":"STATUS", "opcodemap":"STATUS",
"dataType":"int", "dataType":"int",
"channel":"1", "channel":"1",
"valueRange":[], "valueRange":[],
"value": 1 "value": 1
} }
], ],
"oldccu":[ "oldccu":[
{ {
"opcode":"SWITCH", "opcode":"SWITCH",
"identifiermap":"PowerSwitch", "identifiermap":"PowerSwitch",
"dataType":"map", "dataType":"map",
"channel":"1", "channel":"1",
"valueRange":["OFF","ON"], "valueRange":["OFF","ON"],
"syn":"switch", "syn":"switch",
"synType":"map" "synType":"map"
}, },
{ {
"opcode":"GET_DEV_POWER", "opcode":"GET_DEV_POWER",
"identifiermap":"Power", "identifiermap":"Power",
"dataType":"string_double", "dataType":"string_double",
"channel":"1", "channel":"1",
"valueRange":[], "valueRange":[],
"syn":"", "syn":"",
"synType":"dummy" "synType":"dummy"
}, },
{ {
"opcode":"GET_ELECTRICAL", "opcode":"GET_ELECTRICAL",
"identifiermap":"Electric", "identifiermap":"Electric",
"dataType":"string_double", "dataType":"string_double",
"channel":"1", "channel":"1",
"valueRange":[], "valueRange":[],
"syn":"", "syn":"",
"synType":"dummy" "synType":"dummy"
}, },
{ {
"opcode":"STATUS", "opcode":"STATUS",
"identifiermap":"", "identifiermap":"",
"dataType":"dummy", "dataType":"dummy",
"channel":"1", "channel":"1",
"valueRange":[], "valueRange":[],
"syn":"light_switch", "syn":"light_switch",
"synType":"bool" "synType":"bool"
} }
] ]
} }
\ No newline at end of file
{ {
"productCode":"3023", "productCode":"3023",
"operateType":"3", "operateType":"3",
"channel":2, "channel":2,
"newccu":[ "newccu":[
{ {
"identifier":"PowerSwitch", "identifier":"PowerSwitch",
"opcodemap":"SWITCH", "opcodemap":"SWITCH",
"dataType":"int", "dataType":"int",
"channel":"1", "channel":"1",
"valueRange":[0,1], "valueRange":[0,1],
"value": 0 "value": 0
}, },
{ {
"identifier":"PowerSwitch", "identifier":"PowerSwitch",
"opcodemap":"SWITCH", "opcodemap":"SWITCH",
"dataType":"int", "dataType":"int",
"channel":"2", "channel":"2",
"valueRange":[0,1], "valueRange":[0,1],
"value": 0 "value": 0
} }
], ],
"oldccu":[ "oldccu":[
{ {
"opcode":"SWITCH", "opcode":"SWITCH",
"identifiermap":"PowerSwitch", "identifiermap":"PowerSwitch",
"dataType":"map", "dataType":"map",
"channel":"1", "channel":"1",
"valueRange":["OFF","ON"] "valueRange":["OFF","ON"]
}, },
{ {
"opcode":"SWITCH", "opcode":"SWITCH",
"identifiermap":"PowerSwitch", "identifiermap":"PowerSwitch",
"dataType":"map", "dataType":"map",
"channel":"2", "channel":"2",
"valueRange":["OFF","ON"] "valueRange":["OFF","ON"]
} }
] ]
} }
\ No newline at end of file
{ {
"productCode":"3027", "productCode":"3027",
"operateType":"1003", "operateType":"1003",
"channel":2, "channel":2,
"newccu":[ "newccu":[
{ {
"identifier":"OperationMode", "identifier":"OperationMode",
"opcodemap":"SWITCH", "opcodemap":"SWITCH",
"dataType":"int", "dataType":"int",
"channel":"1", "channel":"1",
"valueRange":[0,1,2], "valueRange":[0,1,2],
"value": 2 "value": 2
}, },
{ {
"identifier":"OperationMode", "identifier":"OperationMode",
"opcodemap":"SWITCH", "opcodemap":"SWITCH",
"dataType":"int", "dataType":"int",
"channel":"2", "channel":"2",
"valueRange":[0,1,2], "valueRange":[0,1,2],
"value": 2 "value": 2
} }
], ],
"oldccu":[ "oldccu":[
{ {
"opcode":"SWITCH", "opcode":"SWITCH",
"identifiermap":"OperationMode", "identifiermap":"OperationMode",
"dataType":"map", "dataType":"map",
"channel":"1", "channel":"1",
"valueRange":["CLOSE","OPEN","STOP"] "valueRange":["CLOSE","OPEN","STOP"]
}, },
{ {
"opcode":"SWITCH", "opcode":"SWITCH",
"identifiermap":"OperationMode", "identifiermap":"OperationMode",
"dataType":"map", "dataType":"map",
"channel":"2", "channel":"2",
"valueRange":["CLOSE","OPEN","STOP"] "valueRange":["CLOSE","OPEN","STOP"]
} }
] ]
} }
\ No newline at end of file
{ {
"productCode":"3032", "productCode":"3032",
"operateType":"14002", "operateType":"14002",
"channel":1, "channel":1,
"syn_type":1, "syn_type":1,
"syn_opcode":"CHOPIN_FRESH_AIR_STATUS", "syn_opcode":"CHOPIN_FRESH_AIR_STATUS",
"newccu":[ "newccu":[
{ {
"identifier":"PowerSwitch", "identifier":"PowerSwitch",
"opcodemap":"FRESH_AIR_SWITCH", "opcodemap":"FRESH_AIR_SWITCH",
"dataType":"int", "dataType":"int",
"channel":"1", "channel":"1",
"valueRange":[0,1], "valueRange":[0,1],
"value": 0 "value": 0
},{ },{
"identifier":"WorkMode", "identifier":"WorkMode",
"opcodemap":"FRESH_AIR_RUN_MODEL", "opcodemap":"FRESH_AIR_RUN_MODEL",
"dataType":"int", "dataType":"int",
"channel":"1", "channel":"1",
"valueRange":[0,1], "valueRange":[0,1],
"value": 1 "value": 1
},{ },{
"identifier":"WindSpeed", "identifier":"WindSpeed",
"opcodemap":"FRESH_AIR_SPEED_SET", "opcodemap":"FRESH_AIR_SPEED_SET",
"dataType":"int", "dataType":"int",
"channel":"1", "channel":"1",
"valueRange":[0,1,2,3], "valueRange":[0,1,2,3],
"value": 1 "value": 1
},{ },{
"identifier":"ChildLockState", "identifier":"ChildLockState",
"opcodemap":"FRESH_AIR_SET_LOCK_STATUS", "opcodemap":"FRESH_AIR_SET_LOCK_STATUS",
"dataType":"int", "dataType":"int",
"channel":"1", "channel":"1",
"valueRange":[0,1], "valueRange":[0,1],
"value": 0 "value": 0
},{ },{
"identifier":"TimingOffTime", "identifier":"TimingOffTime",
"opcodemap":"FRESH_AIR_SET_TIME_OFF", "opcodemap":"FRESH_AIR_SET_TIME_OFF",
"dataType":"double", "dataType":"double",
"channel":"1", "channel":"1",
"valueRange":[], "valueRange":[],
"value": 0 "value": 0
},{ },{
"identifier":"StrainerUsageTime", "identifier":"StrainerUsageTime",
"opcodemap":"CHOPIN_FRESH_AIR_STATUS", "opcodemap":"CHOPIN_FRESH_AIR_STATUS",
"dataType":"int", "dataType":"int",
"channel":"1", "channel":"1",
"valueRange":[], "valueRange":[],
"value": 0 "value": 0
},{ },{
"identifier":"StrainerAlarmTime", "identifier":"StrainerAlarmTime",
"opcodemap":"CHOPIN_FRESH_AIR_STATUS", "opcodemap":"CHOPIN_FRESH_AIR_STATUS",
"dataType":"int", "dataType":"int",
"channel":"1", "channel":"1",
"valueRange":[], "valueRange":[],
"value": 0 "value": 0
},{ },{
"identifier":"CurrentTemperature", "identifier":"CurrentTemperature",
"opcodemap":"CHOPIN_FRESH_AIR_STATUS", "opcodemap":"CHOPIN_FRESH_AIR_STATUS",
"dataType":"double", "dataType":"double",
"channel":"1", "channel":"1",
"valueRange":[], "valueRange":[],
"value": 0 "value": 0
} }
], ],
"oldccu":[ "oldccu":[
{ {
"opcode":"FRESH_AIR_SWITCH", "opcode":"FRESH_AIR_SWITCH",
"identifiermap":"PowerSwitch", "identifiermap":"PowerSwitch",
"dataType":"map", "dataType":"map",
"channel":"1", "channel":"1",
"valueRange":["OFF","ON"], "valueRange":["OFF","ON"],
"syn":"on", "syn":"on",
"synType":"bool" "synType":"bool"
},{ },{
"opcode":"FRESH_AIR_RUN_MODEL", "opcode":"FRESH_AIR_RUN_MODEL",
"identifiermap":"WorkMode", "identifiermap":"WorkMode",
"dataType":"map", "dataType":"map",
"channel":"1", "channel":"1",
"valueRange":["AUTO","MANUAL"], "valueRange":["AUTO","MANUAL"],
"syn":"runModel", "syn":"runModel",
"synType":"map" "synType":"map"
},{ },{
"opcode":"FRESH_AIR_SPEED_SET", "opcode":"FRESH_AIR_SPEED_SET",
"identifiermap":"WindSpeed", "identifiermap":"WindSpeed",
"dataType":"map", "dataType":"map",
"channel":"1", "channel":"1",
"valueRange":["STOP","LOW","MID","HIGH"], "valueRange":["STOP","LOW","MID","HIGH"],
"syn":"speed", "syn":"speed",
"synType":"int" "synType":"int"
},{ },{
"opcode":"FRESH_AIR_SET_LOCK_STATUS", "opcode":"FRESH_AIR_SET_LOCK_STATUS",
"identifiermap":"ChildLockState", "identifiermap":"ChildLockState",
"dataType":"bool", "dataType":"bool",
"channel":"1", "channel":"1",
"valueRange":[], "valueRange":[],
"syn":"ChildLockState", "syn":"ChildLockState",
"synType":"double" "synType":"double"
},{ },{
"opcode":"FRESH_AIR_SET_TIME_OFF", "opcode":"FRESH_AIR_SET_TIME_OFF",
"identifiermap":"TimingOffTime", "identifiermap":"TimingOffTime",
"dataType":"string_time", "dataType":"string_time",
"channel":"1", "channel":"1",
"valueRange":[], "valueRange":[],
"syn":"time_off", "syn":"time_off",
"synType":"string_time" "synType":"string_time"
},{ },{
"opcode":"CHOPIN_FRESH_AIR_STATUS ", "opcode":"CHOPIN_FRESH_AIR_STATUS ",
"identifiermap":"StrainerUsageTime", "identifiermap":"StrainerUsageTime",
"dataType":"int", "dataType":"int",
"channel":"1", "channel":"1",
"valueRange":[], "valueRange":[],
"syn":"filterScreenWorkTime", "syn":"filterScreenWorkTime",
"synType":"int" "synType":"int"
},{ },{
"opcode":"CHOPIN_FRESH_AIR_STATUS", "opcode":"CHOPIN_FRESH_AIR_STATUS",
"identifiermap":"StrainerAlarmTime", "identifiermap":"StrainerAlarmTime",
"dataType":"int", "dataType":"int",
"channel":"1", "channel":"1",
"valueRange":[], "valueRange":[],
"syn":"filterScreenAlarmTime", "syn":"filterScreenAlarmTime",
"synType":"int" "synType":"int"
},{ },{
"opcode":"CHOPIN_FRESH_AIR_STATUS", "opcode":"CHOPIN_FRESH_AIR_STATUS",
"identifiermap":"CurrentTemperature", "identifiermap":"CurrentTemperature",
"dataType":"double", "dataType":"double",
"channel":"1", "channel":"1",
"valueRange":[], "valueRange":[],
"syn":"cur_temperature", "syn":"cur_temperature",
"synType":"double" "synType":"double"
} }
] ]
} }
{ {
"productCode":"3034", "productCode":"3034",
"operateType":"15003", "operateType":"15003",
"channel":1, "channel":1,
"syn_type":1, "syn_type":1,
"syn_opcode":"FAN_COIL_STATUS", "syn_opcode":"FAN_COIL_STATUS",
"newccu":[ "newccu":[
{ {
"identifier":"PowerSwitch", "identifier":"PowerSwitch",
"opcodemap":"SWITCH", "opcodemap":"SWITCH",
"dataType":"int", "dataType":"int",
"channel":"1", "channel":"1",
"valueRange":[0,1], "valueRange":[0,1],
"value": 0 "value": 0
},{ },{
"identifier":"WorkMode", "identifier":"WorkMode",
"opcodemap":"FAN_COIL_SET_RUN_MODEL", "opcodemap":"FAN_COIL_SET_RUN_MODEL",
"dataType":"int", "dataType":"int",
"channel":"1", "channel":"1",
"valueRange":[1,2,3,4], "valueRange":[1,2,3,4],
"value": 1 "value": 1
},{ },{
"identifier":"WindSpeed", "identifier":"WindSpeed",
"opcodemap":"FAN_COIL_SET_FUN_SPEED", "opcodemap":"FAN_COIL_SET_FUN_SPEED",
"dataType":"int", "dataType":"int",
"channel":"1", "channel":"1",
"valueRange":[1,2,3,4], "valueRange":[1,2,3,4],
"value": 1 "value": 1
},{ },{
"identifier":"TargetTemperature", "identifier":"TargetTemperature",
"opcodemap":"FAN_COIL_SET_TEMPERATURE", "opcodemap":"FAN_COIL_SET_TEMPERATURE",
"dataType":"double", "dataType":"double",
"channel":"1", "channel":"1",
"valueRange":[], "valueRange":[],
"value": 16 "value": 16
},{ },{
"identifier":"TimingOffTime", "identifier":"TimingOffTime",
"opcodemap":"FAN_COIL_SET_DELAY_SWITCH_TASK", "opcodemap":"FAN_COIL_SET_DELAY_SWITCH_TASK",
"dataType":"double", "dataType":"double",
"channel":"1", "channel":"1",
"valueRange":[], "valueRange":[],
"value": 0 "value": 0
},{ },{
"identifier":"ChildLockState", "identifier":"ChildLockState",
"opcodemap":"FAN_COIL_SET_LOCK_STATUS", "opcodemap":"FAN_COIL_SET_LOCK_STATUS",
"dataType":"int", "dataType":"int",
"channel":"1", "channel":"1",
"valueRange":[0,1], "valueRange":[0,1],
"value": 0 "value": 0
},{ },{
"identifier":"CurrentTemperature", "identifier":"CurrentTemperature",
"opcodemap":"room_temperature", "opcodemap":"room_temperature",
"dataType":"double", "dataType":"double",
"channel":"1", "channel":"1",
"valueRange":[], "valueRange":[],
"value": 22 "value": 22
},{ },{
"identifier":"smart_model_id", "identifier":"smart_model_id",
"opcodemap":"FAN_COIL_STATUS", "opcodemap":"FAN_COIL_STATUS",
"dataType":"dummy", "dataType":"dummy",
"channel":"1", "channel":"1",
"valueRange":[], "valueRange":[],
"value": 0 "value": 0
},{ },{
"identifier":"smart_model_time_index", "identifier":"smart_model_time_index",
"opcodemap":"FAN_COIL_STATUS", "opcodemap":"FAN_COIL_STATUS",
"dataType":"dummy", "dataType":"dummy",
"channel":"1", "channel":"1",
"valueRange":[], "valueRange":[],
"value": 0 "value": 0
},{ },{
"identifier":"system_time", "identifier":"system_time",
"opcodemap":"FAN_COIL_STATUS", "opcodemap":"FAN_COIL_STATUS",
"dataType":"dummy", "dataType":"dummy",
"channel":"1", "channel":"1",
"valueRange":[], "valueRange":[],
"value": "1970-01-01 00:00:00" "value": "1970-01-01 00:00:00"
},{ },{
"identifier":"week_day", "identifier":"week_day",
"opcodemap":"FAN_COIL_STATUS", "opcodemap":"FAN_COIL_STATUS",
"dataType":"dummy", "dataType":"dummy",
"channel":"1", "channel":"1",
"valueRange":[], "valueRange":[],
"value": 0 "value": 0
},{ },{
"identifier":"total_work_time", "identifier":"total_work_time",
"opcodemap":"FAN_COIL_STATUS", "opcodemap":"FAN_COIL_STATUS",
"dataType":"dummy", "dataType":"dummy",
"channel":"1", "channel":"1",
"valueRange":[], "valueRange":[],
"value": 0 "value": 0
},{ },{
"identifier":"timing_boot", "identifier":"timing_boot",
"opcodemap":"FAN_COIL_STATUS", "opcodemap":"FAN_COIL_STATUS",
"dataType":"dummy", "dataType":"dummy",
"channel":"1", "channel":"1",
"valueRange":[], "valueRange":[],
"value": { "value": {
"enable ": false, "enable ": false,
"time": "00:00" "time": "00:00"
} }
} }
], ],
"oldccu":[ "oldccu":[
{ {
"opcode":"SWITCH", "opcode":"SWITCH",
"identifiermap":"PowerSwitch", "identifiermap":"PowerSwitch",
"dataType":"map", "dataType":"map",
"channel":"1", "channel":"1",
"valueRange":["OFF","ON"], "valueRange":["OFF","ON"],
"syn":"on", "syn":"on",
"synType":"bool" "synType":"bool"
},{ },{
"opcode":"FAN_COIL_SET_RUN_MODEL", "opcode":"FAN_COIL_SET_RUN_MODEL",
"identifiermap":"WorkMode", "identifiermap":"WorkMode",
"dataType":"map", "dataType":"map",
"channel":"1", "channel":"1",
"valueRange":["COLD","HOT","WIND","DEHUMIDIFICATION"], "valueRange":["COLD","HOT","WIND","DEHUMIDIFICATION"],
"syn":"run_model", "syn":"run_model",
"synType":"map" "synType":"map"
},{ },{
"opcode":"FAN_COIL_SET_FUN_SPEED", "opcode":"FAN_COIL_SET_FUN_SPEED",
"identifiermap":"WindSpeed", "identifiermap":"WindSpeed",
"dataType":"map", "dataType":"map",
"channel":"1", "channel":"1",
"valueRange":["AUTO","HIGH","MID","LOW"], "valueRange":["AUTO","HIGH","MID","LOW"],
"syn":"fan_speed", "syn":"fan_speed",
"synType":"map" "synType":"map"
},{ },{
"opcode":"FAN_COIL_SET_TEMPERATURE", "opcode":"FAN_COIL_SET_TEMPERATURE",
"identifiermap":"TargetTemperature", "identifiermap":"TargetTemperature",
"dataType":"double", "dataType":"double",
"channel":"1", "channel":"1",
"valueRange":[], "valueRange":[],
"syn":"setting_temperature", "syn":"setting_temperature",
"synType":"double" "synType":"double"
},{ },{
"opcode":"FAN_COIL_SET_DELAY_SWITCH_TASK", "opcode":"FAN_COIL_SET_DELAY_SWITCH_TASK",
"identifiermap":"TimingOffTime", "identifiermap":"TimingOffTime",
"dataType":"double", "dataType":"double",
"channel":"1", "channel":"1",
"valueRange":[], "valueRange":[],
"syn":"timing_shutdown", "syn":"timing_shutdown",
"synType":"timing_shutdown" "synType":"timing_shutdown"
},{ },{
"opcode":"FAN_COIL_SET_LOCK_STATUS", "opcode":"FAN_COIL_SET_LOCK_STATUS",
"identifiermap":"ChildLockState", "identifiermap":"ChildLockState",
"dataType":"double", "dataType":"double",
"channel":"1", "channel":"1",
"valueRange":[], "valueRange":[],
"syn":"", "syn":"",
"synType":"dummy" "synType":"dummy"
},{ },{
"opcode":"room_temperature", "opcode":"room_temperature",
"identifiermap":"CurrentTemperature", "identifiermap":"CurrentTemperature",
"dataType":"double", "dataType":"double",
"channel":"1", "channel":"1",
"valueRange":[], "valueRange":[],
"syn":"room_temperature", "syn":"room_temperature",
"synType":"double" "synType":"double"
},{ },{
"opcode":"FAN_COIL_STATUS", "opcode":"FAN_COIL_STATUS",
"identifiermap":"smart_model_id", "identifiermap":"smart_model_id",
"dataType":"double", "dataType":"double",
"channel":"1", "channel":"1",
"valueRange":[], "valueRange":[],
"syn":"smart_model_id", "syn":"smart_model_id",
"synType":"double" "synType":"double"
},{ },{
"opcode":"FAN_COIL_STATUS", "opcode":"FAN_COIL_STATUS",
"identifiermap":"smart_model_time_index", "identifiermap":"smart_model_time_index",
"dataType":"double", "dataType":"double",
"channel":"1", "channel":"1",
"valueRange":[], "valueRange":[],
"syn":"smart_model_time_index", "syn":"smart_model_time_index",
"synType":"double" "synType":"double"
},{ },{
"opcode":"FAN_COIL_STATUS", "opcode":"FAN_COIL_STATUS",
"identifiermap":"system_time", "identifiermap":"system_time",
"dataType":"double", "dataType":"double",
"channel":"1", "channel":"1",
"valueRange":[], "valueRange":[],
"syn":"system_time", "syn":"system_time",
"synType":"map" "synType":"map"
},{ },{
"opcode":"FAN_COIL_STATUS", "opcode":"FAN_COIL_STATUS",
"identifiermap":"week_day", "identifiermap":"week_day",
"dataType":"double", "dataType":"double",
"channel":"1", "channel":"1",
"valueRange":[], "valueRange":[],
"syn":"week_day", "syn":"week_day",
"synType":"int" "synType":"int"
},{ },{
"opcode":"FAN_COIL_STATUS", "opcode":"FAN_COIL_STATUS",
"identifiermap":"total_work_time", "identifiermap":"total_work_time",
"dataType":"double", "dataType":"double",
"channel":"1", "channel":"1",
"valueRange":[], "valueRange":[],
"syn":"total_work_time", "syn":"total_work_time",
"synType":"int" "synType":"int"
},{ },{
"opcode":"FAN_COIL_STATUS", "opcode":"FAN_COIL_STATUS",
"identifiermap":"timing_boot", "identifiermap":"timing_boot",
"dataType":"double", "dataType":"double",
"channel":"1", "channel":"1",
"valueRange":[], "valueRange":[],
"syn":"timing_boot", "syn":"timing_boot",
"synType":"def" "synType":"def"
} }
] ]
} }
{ {
"productCode":"3051", "productCode":"3051",
"operateType":"3499", "operateType":"3499",
"channel":1, "channel":1,
"syn_type":1, "syn_type":1,
"syn_opcode":"DOOR_CONTACT_STATUS", "syn_opcode":"DOOR_CONTACT_STATUS",
"newccu":[ "newccu":[
{ {
"identifier":"ContactState", "identifier":"ContactState",
"opcodemap":"DOOR_CONTACT_NOTIFY", "opcodemap":"DOOR_CONTACT_NOTIFY",
"dataType":"int", "dataType":"int",
"channel":"1", "channel":"1",
"valueRange":[0,1], "valueRange":[0,1],
"value": 0 "value": 0
}, },
{ {
"identifier":"Battery", "identifier":"Battery",
"opcodemap":"POWER_NOTIFY", "opcodemap":"POWER_NOTIFY",
"dataType":"double", "dataType":"double",
"channel":"1", "channel":"1",
"valueRange":[], "valueRange":[],
"value": 0 "value": 0
} }
], ],
"oldccu":[ "oldccu":[
{ {
"opcode":"DOOR_CONTACT_NOTIFY", "opcode":"DOOR_CONTACT_NOTIFY",
"identifiermap":"ContactState", "identifiermap":"ContactState",
"dataType":"map", "dataType":"map",
"channel":"1", "channel":"1",
"valueRange":["CLOSE","OPEN"], "valueRange":["CLOSE","OPEN"],
"syn":"status", "syn":"status",
"synType":"map" "synType":"map"
}, },
{ {
"opcode":"POWER_NOTIFY", "opcode":"POWER_NOTIFY",
"identifiermap":"Battery", "identifiermap":"Battery",
"dataType":"string_double", "dataType":"string_double",
"channel":"1", "channel":"1",
"valueRange":[], "valueRange":[],
"syn":"power", "syn":"power",
"synType":"string_double" "synType":"string_double"
} }
] ]
} }
\ 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