Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
K
k-sdk
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
陈伟灿
k-sdk
Commits
2360ed07
Commit
2360ed07
authored
Feb 25, 2022
by
陈伟灿
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'cwc' into 'master'
【修改内容】增加门锁的场景设置和同步 See merge request chenweican/k-sdk!196
parents
7fc8146e
48b5d7ed
Changes
14
Show whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
608 additions
and
79 deletions
+608
-79
common/api/com_api.h
common/api/com_api.h
+1
-0
midware/midware/area/kk_area_handle.c
midware/midware/area/kk_area_handle.c
+3
-3
midware/midware/dm/kk_dm_mng.c
midware/midware/dm/kk_dm_mng.c
+2
-1
midware/midware/dm/kk_dm_msg.h
midware/midware/dm/kk_dm_msg.h
+2
-2
midware/midware/dm/kk_linkkit.c
midware/midware/dm/kk_linkkit.c
+127
-35
midware/midware/dm/kk_sub_db.c
midware/midware/dm/kk_sub_db.c
+147
-1
midware/midware/dm/kk_sub_db.h
midware/midware/dm/kk_sub_db.h
+18
-1
midware/midware/dm/kk_sync_data.c
midware/midware/dm/kk_sync_data.c
+13
-5
midware/midware/midware.c
midware/midware/midware.c
+22
-2
midware/midware/scene/kk_scene_db.c
midware/midware/scene/kk_scene_db.c
+10
-3
midware/midware/scene/kk_scene_db.h
midware/midware/scene/kk_scene_db.h
+1
-0
midware/midware/scene/kk_scene_handle.c
midware/midware/scene/kk_scene_handle.c
+164
-22
tsl/product_3094.json
tsl/product_3094.json
+47
-0
tsl/product_3137.json
tsl/product_3137.json
+51
-4
No files found.
common/api/com_api.h
View file @
2360ed07
...
@@ -152,6 +152,7 @@ typedef enum {
...
@@ -152,6 +152,7 @@ typedef enum {
#define MAX_LISTEN_NUM 10
#define MAX_LISTEN_NUM 10
#define MAX_IP_LEN 16
#define MAX_IP_LEN 16
#define KK_DEVICE_SCREEN_MAX_SUPPORT 8
#define KK_DEVICE_SCREEN_MAX_SUPPORT 8
#define KK_DEVICE_LOCKUSR_MAX_SUPPORT 64
//#ifndef DEVICE_CODE_LEN
//#ifndef DEVICE_CODE_LEN
//#define DEVICE_CODE_LEN 33
//#define DEVICE_CODE_LEN 33
//#endif
//#endif
...
...
midware/midware/area/kk_area_handle.c
View file @
2360ed07
...
@@ -521,7 +521,7 @@ int kk_check_dev_exist_roomId(const char* deviceCode,const char *epNum,char *roo
...
@@ -521,7 +521,7 @@ int kk_check_dev_exist_roomId(const char* deviceCode,const char *epNum,char *roo
}
}
int
kk_room_dev_add
(
const
char
*
roomId
,
const
char
*
roomName
,
const
char
*
deviceCode
,
const
char
*
epNum
,
const
char
*
devName
)
int
kk_room_dev_add
(
const
char
*
roomId
,
const
char
*
roomName
,
const
char
*
deviceCode
,
const
char
*
epNum
,
const
char
*
devName
)
{
{
int
res
=
0
;
int
res
=
SUCCESS_RETURN
;
kk_area_ctx_t
*
ctx
=
_kk_area_get_ctx
();
kk_area_ctx_t
*
ctx
=
_kk_area_get_ctx
();
char
*
sqlCmd
=
NULL
;
char
*
sqlCmd
=
NULL
;
char
*
zErrMsg
=
0
;
char
*
zErrMsg
=
0
;
...
@@ -547,7 +547,7 @@ int kk_room_dev_add(const char *roomId,const char *roomName,const char *deviceCo
...
@@ -547,7 +547,7 @@ int kk_room_dev_add(const char *roomId,const char *roomName,const char *deviceCo
}
}
sqlite3_free
(
sqlCmd
);
sqlite3_free
(
sqlCmd
);
_kk_area_unlock
();
_kk_area_unlock
();
return
SUCCESS_RETURN
;
return
res
;
}
}
int
kk_room_reset_armingstate
(
void
)
int
kk_room_reset_armingstate
(
void
)
{
{
...
@@ -721,7 +721,7 @@ int kk_room_dev_remove(const char *deviceCode,const char *epNum)
...
@@ -721,7 +721,7 @@ int kk_room_dev_remove(const char *deviceCode,const char *epNum)
}
}
sqlite3_free
(
sqlCmd
);
sqlite3_free
(
sqlCmd
);
_kk_area_unlock
();
_kk_area_unlock
();
return
SUCCESS_RETURN
;
return
res
;
}
}
int
kk_room_device_list_add
(
const
char
*
deviceCode
)
int
kk_room_device_list_add
(
const
char
*
deviceCode
)
...
...
midware/midware/dm/kk_dm_mng.c
View file @
2360ed07
...
@@ -613,7 +613,7 @@ int dm_mgr_get_gw_deviceCode(_OU_ dm_mgr_dev_node_t **node)
...
@@ -613,7 +613,7 @@ int dm_mgr_get_gw_deviceCode(_OU_ dm_mgr_dev_node_t **node)
dm_mgr_dev_node_t
*
search_node
=
NULL
;
dm_mgr_dev_node_t
*
search_node
=
NULL
;
list_for_each_entry
(
search_node
,
&
ctx
->
dev_list
,
linked_list
,
dm_mgr_dev_node_t
)
{
list_for_each_entry
(
search_node
,
&
ctx
->
dev_list
,
linked_list
,
dm_mgr_dev_node_t
)
{
if
(
memcmp
(
search_node
->
productCode
,
"gateway_2"
,
strlen
(
"gateway_2"
))
==
0
)
{
if
(
memcmp
(
search_node
->
productCode
,
KK_GW_PRODUCTID
,
strlen
(
KK_GW_PRODUCTID
))
==
0
)
{
/* dm_log_debug("Device Found, Product Key: %s, Device Name: %s", product_key, device_name); */
/* dm_log_debug("Device Found, Product Key: %s, Device Name: %s", product_key, device_name); */
if
(
node
)
{
if
(
node
)
{
*
node
=
search_node
;
*
node
=
search_node
;
...
@@ -1756,6 +1756,7 @@ int dm_mgr_subdev_delete(_IN_ char deviceCode[DEVICE_CODE_MAXLEN])
...
@@ -1756,6 +1756,7 @@ int dm_mgr_subdev_delete(_IN_ char deviceCode[DEVICE_CODE_MAXLEN])
return
FAIL_RETURN
;
return
FAIL_RETURN
;
}
}
INFO_PRINT
(
"dm_mgr_subdev_delete deviceCode:%s
\n
"
,
deviceCode
);
INFO_PRINT
(
"dm_mgr_subdev_delete deviceCode:%s
\n
"
,
deviceCode
);
kk_delete_LockUser_info
((
const
char
*
)
deviceCode
);
kk_scene_deleteall_panel_scene_info
(
deviceCode
);
//如果是情景面板,删除对应信息
kk_scene_deleteall_panel_scene_info
(
deviceCode
);
//如果是情景面板,删除对应信息
/*房间信息中删除对应的设备*/
/*房间信息中删除对应的设备*/
kk_room_dev_remove
(
deviceCode
,
NULL
);
kk_room_dev_remove
(
deviceCode
,
NULL
);
...
...
midware/midware/dm/kk_dm_msg.h
View file @
2360ed07
...
@@ -78,7 +78,6 @@ typedef struct {
...
@@ -78,7 +78,6 @@ typedef struct {
#define KK_THING_SERVICE_GETLOCALTIMER "/thing/service/getLocalTimer"
#define KK_THING_SERVICE_GETLOCALTIMER "/thing/service/getLocalTimer"
#define KK_THING_SERVICE_SETCOUNTDOWN "/thing/service/setCountDown"
#define KK_THING_SERVICE_SETCOUNTDOWN "/thing/service/setCountDown"
#define KK_THING_SERVICE_GETCOUNTDOWN "/thing/service/getCountDown"
#define KK_THING_SERVICE_GETCOUNTDOWN "/thing/service/getCountDown"
#define KK_THING_SERVICE_GETKEYLIST "/thing/service/GetKeyList"
#define KK_THING_SERVICE_ADDKEY "/thing/service/AddKey"
#define KK_THING_SERVICE_ADDKEY "/thing/service/AddKey"
#define KK_THING_SERVICE_DELETEKEY "/thing/service/DeleteKey"
#define KK_THING_SERVICE_DELETEKEY "/thing/service/DeleteKey"
#define KK_THING_SERVICE_MODIFYKEY "/thing/service/ModifyKey"
#define KK_THING_SERVICE_MODIFYKEY "/thing/service/ModifyKey"
...
@@ -161,7 +160,8 @@ typedef struct {
...
@@ -161,7 +160,8 @@ typedef struct {
#define KK_THING_SERVICE_QUERYGROUP_REPLY "/thing/service/queryGroup_reply"
#define KK_THING_SERVICE_QUERYGROUP_REPLY "/thing/service/queryGroup_reply"
#define KK_THING_SERVICE_EXCUTEGROUP "/thing/service/excuteGroup"
#define KK_THING_SERVICE_EXCUTEGROUP "/thing/service/excuteGroup"
#define KK_THING_SERVICE_EXCUTEGROUP_REPLY "/thing/service/excuteGroup_reply"
#define KK_THING_SERVICE_EXCUTEGROUP_REPLY "/thing/service/excuteGroup_reply"
#define KK_THING_SERVICE_GETKEYLIST "/thing/service/getKeyList"
#define KK_THING_SERVICE_GETKEYLIST_REPLY "/thing/service/getKeyList_reply"
void
kk_sendData2app
(
void
*
info
,
void
*
payload
,
int
isAsync
);
void
kk_sendData2app
(
void
*
info
,
void
*
payload
,
int
isAsync
);
...
...
midware/midware/dm/kk_linkkit.c
View file @
2360ed07
...
@@ -415,7 +415,7 @@ int kk_topo_delete_handle(cJSON *payload,cJSON *buf)
...
@@ -415,7 +415,7 @@ int kk_topo_delete_handle(cJSON *payload,cJSON *buf)
}
}
cJSON
*
paramStr
=
cJSON_GetObjectItem
(
payload
,
MSG_PARAMS_STR
);
cJSON
*
paramStr
=
cJSON_GetObjectItem
(
payload
,
MSG_PARAMS_STR
);
cJSON
*
state
=
cJSON_GetObjectItem
(
paramStr
,
MSG_TOPO_CHANGE_TYPE_STR
);
cJSON
*
state
=
cJSON_GetObjectItem
(
paramStr
,
MSG_TOPO_CHANGE_TYPE_STR
);
kk_topo_delete_report
(
paramStr
);
//主动报topo delete
//
kk_topo_delete_report(paramStr);//主动报topo delete
if
(
state
!=
NULL
&&
state
->
valueint
==
1
){
if
(
state
!=
NULL
&&
state
->
valueint
==
1
){
cJSON
*
deviceArray
=
cJSON_GetObjectItem
(
paramStr
,
MSG_TOPO_CHANGE_DEVICES_STR
);
cJSON
*
deviceArray
=
cJSON_GetObjectItem
(
paramStr
,
MSG_TOPO_CHANGE_DEVICES_STR
);
if
(
deviceArray
==
NULL
){
if
(
deviceArray
==
NULL
){
...
@@ -446,6 +446,8 @@ int kk_topo_delete_handle(cJSON *payload,cJSON *buf)
...
@@ -446,6 +446,8 @@ int kk_topo_delete_handle(cJSON *payload,cJSON *buf)
cJSON_AddItemToObject
(
rootData
,
"payload"
,
payload
);
cJSON_AddItemToObject
(
rootData
,
"payload"
,
payload
);
char
*
pnewout
=
cJSON_Print
(
rootData
);
char
*
pnewout
=
cJSON_Print
(
rootData
);
kk_sendData2gw
(
pnewout
,
strlen
(
pnewout
),
node
->
fatherDeviceCode
);
//send to gw itself
kk_sendData2gw
(
pnewout
,
strlen
(
pnewout
),
node
->
fatherDeviceCode
);
//send to gw itself
kk_scene_update_device_active
(
deviceCode
,
-
1
,
0
);
kk_scene_rebuild_device_active
(
deviceCode
,
-
1
);
dm_mgr_subdev_delete
(
deviceCode
);
dm_mgr_subdev_delete
(
deviceCode
);
free
(
pnewout
);
free
(
pnewout
);
//cJSON_Delete(rootData);
//cJSON_Delete(rootData);
...
@@ -780,7 +782,7 @@ static int kk_service_addDeviceToRoom_handle(cJSON *params)
...
@@ -780,7 +782,7 @@ static int kk_service_addDeviceToRoom_handle(cJSON *params)
}
else
{
}
else
{
strcpy
(
epNumStr
,
epNum
->
valuestring
);
strcpy
(
epNumStr
,
epNum
->
valuestring
);
}
}
kk_room_dev_add
(
roomId
->
valuestring
,
room_name
->
valuestring
,
deviceCode
->
valuestring
,
epNumStr
,
dev_name
->
valuestring
);
res
=
kk_room_dev_add
(
roomId
->
valuestring
,
room_name
->
valuestring
,
deviceCode
->
valuestring
,
epNumStr
,
dev_name
->
valuestring
);
//kk_scene_update_device_active(deviceCode->valuestring,atoi(epNumStr),1);
//kk_scene_update_device_active(deviceCode->valuestring,atoi(epNumStr),1);
//kk_scene_rebuild_device_active(deviceCode->valuestring,atoi(epNumStr));
//kk_scene_rebuild_device_active(deviceCode->valuestring,atoi(epNumStr));
//内机默认添加到跟网关同个房间
//内机默认添加到跟网关同个房间
...
@@ -826,7 +828,7 @@ static int kk_service_addDeviceToRoom_handle(cJSON *params)
...
@@ -826,7 +828,7 @@ static int kk_service_addDeviceToRoom_handle(cJSON *params)
}
}
}
}
#endif
#endif
return
SUCCESS_RETURN
;
return
res
;
}
}
/************************************************************
/************************************************************
*功能描述:删除设备从房间处理函数
*功能描述:删除设备从房间处理函数
...
@@ -970,6 +972,7 @@ static int kk_service_setFloor_handle(cJSON *params)
...
@@ -970,6 +972,7 @@ static int kk_service_setFloor_handle(cJSON *params)
while
(
itemroom
!=
NULL
){
while
(
itemroom
!=
NULL
){
cJSON
*
roomid
=
cJSON_GetObjectItem
(
itemroom
,
MSG_AREA_ROOM_CCUROOMID
);
cJSON
*
roomid
=
cJSON_GetObjectItem
(
itemroom
,
MSG_AREA_ROOM_CCUROOMID
);
if
(
roomid
==
NULL
){
if
(
roomid
==
NULL
){
ERROR_PRINT
(
"DATA ERROR!!!
\n
"
);
return
INVALID_PARAMETER
;
return
INVALID_PARAMETER
;
}
}
kk_room_set_floor_info
(
floorId
->
valuestring
,
""
,
roomid
->
valuestring
);
kk_room_set_floor_info
(
floorId
->
valuestring
,
""
,
roomid
->
valuestring
);
...
@@ -1431,6 +1434,76 @@ static int kk_service_getScreenList_handle(cJSON *param,cJSON *msgId)
...
@@ -1431,6 +1434,76 @@ static int kk_service_getScreenList_handle(cJSON *param,cJSON *msgId)
cJSON_Delete
(
info
);
cJSON_Delete
(
info
);
return
res
;
return
res
;
}
}
/************************************************************
*功能描述:获取智能锁用户信息
*输入参数:params:云端下发数据,包含场景Id等
msgId:消息Id
*输出参数:无
*返 回 值: 0:成功;其他:失败
*其他说明:
*************************************************************/
static
int
kk_service_LockKeyList_handle
(
cJSON
*
inforoot
,
cJSON
*
msgId
)
{
int
res
=
0
;
int
i
=
0
,
num
=
0
;
LockKeyInfo_t
*
pList
=
NULL
;
if
(
inforoot
==
NULL
||
msgId
==
NULL
){
return
INVALID_PARAMETER
;
}
cJSON
*
deviceCode
=
cJSON_GetObjectItem
(
inforoot
,
MSG_DEVICE_CODE_STR
);
if
(
deviceCode
==
NULL
){
return
FAIL_RETURN
;
}
cJSON
*
productCode
=
cJSON_GetObjectItem
(
inforoot
,
MSG_PRODUCT_CODE_STR
);
if
(
productCode
==
NULL
){
return
FAIL_RETURN
;
}
cJSON
*
info
=
cJSON_CreateObject
();
cJSON_AddStringToObject
(
info
,
MSG_TYPE_STR
,
KK_THING_SERVICE_GETKEYLIST_REPLY
);
cJSON_AddStringToObject
(
info
,
MSG_DEVICE_CODE_STR
,
deviceCode
->
valuestring
);
cJSON_AddStringToObject
(
info
,
MSG_PRODUCT_CODE_STR
,
productCode
->
valuestring
);
char
*
infff
=
cJSON_Print
(
info
);
cJSON
*
payload
=
cJSON_CreateObject
();
cJSON_AddStringToObject
(
payload
,
"desc"
,
"success"
);
cJSON_AddStringToObject
(
payload
,
"version"
,
"1.0"
);
cJSON_AddStringToObject
(
payload
,
"code"
,
"0"
);
cJSON_AddStringToObject
(
payload
,
"msgId"
,
msgId
->
valuestring
);
cJSON_AddStringToObject
(
payload
,
"method"
,
"thing.service.getKeyList_reply"
);
pList
=
(
LockKeyInfo_t
*
)
malloc
(
sizeof
(
LockKeyInfo_t
)
*
KK_DEVICE_LOCKUSR_MAX_SUPPORT
);
if
(
pList
==
NULL
){
ERROR_PRINT
(
"MALLOC ERROR!!!"
);
cJSON_Delete
(
payload
);
cJSON_Delete
(
info
);
free
(
infff
);
return
-
1
;
}
memset
(
pList
,
0x0
,
sizeof
(
LockKeyInfo_t
)
*
KK_DEVICE_LOCKUSR_MAX_SUPPORT
);
cJSON
*
paramArray
=
cJSON_CreateArray
();
num
=
kk_get_LockUser_list
(
pList
,
deviceCode
->
valuestring
);
for
(
i
=
0
;
i
<
num
;
i
++
){
cJSON
*
Item
=
cJSON_CreateObject
();
cJSON_AddStringToObject
(
Item
,
"keyRole"
,
pList
[
i
].
keyRole
);
cJSON_AddStringToObject
(
Item
,
"keyName"
,
pList
[
i
].
keyName
);
cJSON_AddStringToObject
(
Item
,
"keyID"
,
pList
[
i
].
keyId
);
cJSON_AddStringToObject
(
Item
,
"keyType"
,
pList
[
i
].
keyType
);
cJSON_AddItemToArray
(
paramArray
,
Item
);
}
cJSON
*
data
=
cJSON_CreateObject
();
cJSON_AddItemToObject
(
data
,
"data"
,
paramArray
);
cJSON_AddItemToObject
(
payload
,
"params"
,
data
);
char
*
payload11
=
cJSON_Print
(
payload
);
kk_sendData2app
(
infff
,
payload11
,
0
);
free
(
payload11
);
free
(
infff
);
free
(
pList
);
cJSON_Delete
(
payload
);
cJSON_Delete
(
info
);
return
res
;
}
/************************************************************
/************************************************************
*功能描述:获取指定屏类数据
*功能描述:获取指定屏类数据
*输入参数:params:云端下发数据,包含场景Id等
*输入参数:params:云端下发数据,包含场景Id等
...
@@ -2191,58 +2264,66 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data)
...
@@ -2191,58 +2264,66 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data)
INFO_PRINT
(
" delete room
\n
"
);
INFO_PRINT
(
" delete room
\n
"
);
cJSON
*
paramStr
=
cJSON_GetObjectItem
(
payload
,
MSG_PARAMS_STR
);
cJSON
*
paramStr
=
cJSON_GetObjectItem
(
payload
,
MSG_PARAMS_STR
);
cJSON
*
msgId
=
cJSON_GetObjectItem
(
payload
,
MSG_COMMON_MSGID
);
cJSON
*
msgId
=
cJSON_GetObjectItem
(
payload
,
MSG_COMMON_MSGID
);
kk_service_deleteRoom_handle
(
paramStr
);
if
(
kk_service_deleteRoom_handle
(
paramStr
)
==
0
){
kk_service_deleteRoom_reply
(
info_root
,
msgId
);
kk_service_deleteRoom_reply
(
info_root
,
msgId
);
}
}
}
else
if
(
strcmp
(
typeJson
->
valuestring
,
KK_THING_SERVICE_ADDDEVICETOROOM
)
==
0
){
else
if
(
strcmp
(
typeJson
->
valuestring
,
KK_THING_SERVICE_ADDDEVICETOROOM
)
==
0
){
INFO_PRINT
(
" adddevicetoroom
\n
"
);
INFO_PRINT
(
" adddevicetoroom
\n
"
);
cJSON
*
paramStr
=
cJSON_GetObjectItem
(
payload
,
MSG_PARAMS_STR
);
cJSON
*
paramStr
=
cJSON_GetObjectItem
(
payload
,
MSG_PARAMS_STR
);
cJSON
*
msgId
=
cJSON_GetObjectItem
(
payload
,
MSG_COMMON_MSGID
);
cJSON
*
msgId
=
cJSON_GetObjectItem
(
payload
,
MSG_COMMON_MSGID
);
kk_service_addDeviceToRoom_handle
(
paramStr
);
if
(
kk_service_addDeviceToRoom_handle
(
paramStr
)
==
0
){
kk_service_common_reply
(
info_root
,
msgId
,
KK_THING_SERVICE_ADDDEVICETOROOM_REPLY
);
kk_service_common_reply
(
info_root
,
msgId
,
KK_THING_SERVICE_ADDDEVICETOROOM_REPLY
);
}
}
}
else
if
(
strcmp
(
typeJson
->
valuestring
,
KK_THING_SERVICE_REMOVEDEVICEFROMROOM
)
==
0
){
else
if
(
strcmp
(
typeJson
->
valuestring
,
KK_THING_SERVICE_REMOVEDEVICEFROMROOM
)
==
0
){
INFO_PRINT
(
" removedevicefromroom
\n
"
);
INFO_PRINT
(
" removedevicefromroom
\n
"
);
cJSON
*
paramStr
=
cJSON_GetObjectItem
(
payload
,
MSG_PARAMS_STR
);
cJSON
*
paramStr
=
cJSON_GetObjectItem
(
payload
,
MSG_PARAMS_STR
);
cJSON
*
msgId
=
cJSON_GetObjectItem
(
payload
,
MSG_COMMON_MSGID
);
cJSON
*
msgId
=
cJSON_GetObjectItem
(
payload
,
MSG_COMMON_MSGID
);
kk_service_removeDeviceFromRoom_handle
(
paramStr
);
if
(
kk_service_removeDeviceFromRoom_handle
(
paramStr
)
==
0
){
//kk_service_addDeviceToRoom_reply(info_root,msgId,1);
//kk_service_addDeviceToRoom_reply(info_root,msgId,1);
kk_service_common_reply
(
info_root
,
msgId
,
KK_THING_SERVICE_REMOVEDEVICEFROMROOM_REPLY
);
kk_service_common_reply
(
info_root
,
msgId
,
KK_THING_SERVICE_REMOVEDEVICEFROMROOM_REPLY
);
}
}
}
else
if
(
strcmp
(
typeJson
->
valuestring
,
KK_THING_SERVICE_ADDSCENC
)
==
0
){
else
if
(
strcmp
(
typeJson
->
valuestring
,
KK_THING_SERVICE_ADDSCENC
)
==
0
){
INFO_PRINT
(
" add scene
\n
"
);
INFO_PRINT
(
" add scene
\n
"
);
cJSON
*
paramStr
=
cJSON_GetObjectItem
(
payload
,
MSG_PARAMS_STR
);
cJSON
*
paramStr
=
cJSON_GetObjectItem
(
payload
,
MSG_PARAMS_STR
);
cJSON
*
msgId
=
cJSON_GetObjectItem
(
payload
,
MSG_COMMON_MSGID
);
cJSON
*
msgId
=
cJSON_GetObjectItem
(
payload
,
MSG_COMMON_MSGID
);
kk_service_addScene_handle
(
paramStr
,
msgId
);
if
(
kk_service_addScene_handle
(
paramStr
,
msgId
)
==
0
){
kk_service_common_reply
(
info_root
,
msgId
,
KK_THING_SERVICE_ADDSCENC_REPLY
);
kk_service_common_reply
(
info_root
,
msgId
,
KK_THING_SERVICE_ADDSCENC_REPLY
);
}
}
}
else
if
(
strcmp
(
typeJson
->
valuestring
,
KK_THING_SERVICE_UPDATESCENC
)
==
0
){
else
if
(
strcmp
(
typeJson
->
valuestring
,
KK_THING_SERVICE_UPDATESCENC
)
==
0
){
INFO_PRINT
(
" update scene
\n
"
);
INFO_PRINT
(
" update scene
\n
"
);
cJSON
*
paramStr
=
cJSON_GetObjectItem
(
payload
,
MSG_PARAMS_STR
);
cJSON
*
paramStr
=
cJSON_GetObjectItem
(
payload
,
MSG_PARAMS_STR
);
cJSON
*
msgId
=
cJSON_GetObjectItem
(
payload
,
MSG_COMMON_MSGID
);
cJSON
*
msgId
=
cJSON_GetObjectItem
(
payload
,
MSG_COMMON_MSGID
);
kk_service_updateScene_handle
(
paramStr
,
msgId
);
if
(
kk_service_updateScene_handle
(
paramStr
,
msgId
)
==
0
){
kk_service_common_reply
(
info_root
,
msgId
,
KK_THING_SERVICE_UPDATESCENC_REPLY
);
kk_service_common_reply
(
info_root
,
msgId
,
KK_THING_SERVICE_UPDATESCENC_REPLY
);
}
}
}
else
if
(
strcmp
(
typeJson
->
valuestring
,
KK_THING_SERVICE_ENABLESCENC
)
==
0
){
else
if
(
strcmp
(
typeJson
->
valuestring
,
KK_THING_SERVICE_ENABLESCENC
)
==
0
){
INFO_PRINT
(
" enable scene
\n
"
);
INFO_PRINT
(
" enable scene
\n
"
);
cJSON
*
paramStr
=
cJSON_GetObjectItem
(
payload
,
MSG_PARAMS_STR
);
cJSON
*
paramStr
=
cJSON_GetObjectItem
(
payload
,
MSG_PARAMS_STR
);
cJSON
*
msgId
=
cJSON_GetObjectItem
(
payload
,
MSG_COMMON_MSGID
);
cJSON
*
msgId
=
cJSON_GetObjectItem
(
payload
,
MSG_COMMON_MSGID
);
kk_service_enableScene_handle
(
paramStr
,
msgId
);
if
(
kk_service_enableScene_handle
(
paramStr
,
msgId
)
==
0
){
kk_service_common_reply
(
info_root
,
msgId
,
KK_THING_SERVICE_ENABLESCENC_REPLY
);
kk_service_common_reply
(
info_root
,
msgId
,
KK_THING_SERVICE_ENABLESCENC_REPLY
);
}
}
}
else
if
(
strcmp
(
typeJson
->
valuestring
,
KK_THING_SERVICE_DELETESCENC
)
==
0
){
else
if
(
strcmp
(
typeJson
->
valuestring
,
KK_THING_SERVICE_DELETESCENC
)
==
0
){
INFO_PRINT
(
"delete scene
\n
"
);
INFO_PRINT
(
"delete scene
\n
"
);
cJSON
*
paramStr
=
cJSON_GetObjectItem
(
payload
,
MSG_PARAMS_STR
);
cJSON
*
paramStr
=
cJSON_GetObjectItem
(
payload
,
MSG_PARAMS_STR
);
cJSON
*
msgId
=
cJSON_GetObjectItem
(
payload
,
MSG_COMMON_MSGID
);
cJSON
*
msgId
=
cJSON_GetObjectItem
(
payload
,
MSG_COMMON_MSGID
);
kk_service_deleteScene_handle
(
paramStr
,
msgId
);
if
(
kk_service_deleteScene_handle
(
paramStr
,
msgId
)
==
0
){
kk_service_common_reply
(
info_root
,
msgId
,
KK_THING_SERVICE_DELETESCENC_REPLY
);
kk_service_common_reply
(
info_root
,
msgId
,
KK_THING_SERVICE_DELETESCENC_REPLY
);
}
}
}
else
if
(
strcmp
(
typeJson
->
valuestring
,
KK_THING_SERVICE_EXECUTESCENE
)
==
0
){
else
if
(
strcmp
(
typeJson
->
valuestring
,
KK_THING_SERVICE_EXECUTESCENE
)
==
0
){
INFO_PRINT
(
"execute scene
\n
"
);
INFO_PRINT
(
"execute scene
\n
"
);
cJSON
*
paramStr
=
cJSON_GetObjectItem
(
payload
,
MSG_PARAMS_STR
);
cJSON
*
paramStr
=
cJSON_GetObjectItem
(
payload
,
MSG_PARAMS_STR
);
cJSON
*
msgId
=
cJSON_GetObjectItem
(
payload
,
MSG_COMMON_MSGID
);
cJSON
*
msgId
=
cJSON_GetObjectItem
(
payload
,
MSG_COMMON_MSGID
);
kk_service_executeScene_handle
(
paramStr
,
msgId
);
if
(
kk_service_executeScene_handle
(
paramStr
,
msgId
)
==
0
){
kk_service_common_reply
(
info_root
,
msgId
,
KK_THING_SERVICE_EXECUTESCENE_REPLY
);
kk_service_common_reply
(
info_root
,
msgId
,
KK_THING_SERVICE_EXECUTESCENE_REPLY
);
}
}
else
if
(
strcmp
(
typeJson
->
valuestring
,
KK_THING_SERVICE_SYNCDEVICEINFO
)
==
0
){
}
else
if
(
strcmp
(
typeJson
->
valuestring
,
KK_THING_SERVICE_SYNCDEVICEINFO
)
==
0
){
INFO_PRINT
(
"SYNCDEVICEINFO service
\n
"
);
INFO_PRINT
(
"SYNCDEVICEINFO service
\n
"
);
cJSON
*
msgId
=
cJSON_GetObjectItem
(
payload
,
MSG_COMMON_MSGID
);
cJSON
*
msgId
=
cJSON_GetObjectItem
(
payload
,
MSG_COMMON_MSGID
);
...
@@ -2287,11 +2368,12 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data)
...
@@ -2287,11 +2368,12 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data)
INFO_PRINT
(
"bind scene
\n
"
);
INFO_PRINT
(
"bind scene
\n
"
);
cJSON
*
paramStr
=
cJSON_GetObjectItem
(
payload
,
MSG_PARAMS_STR
);
cJSON
*
paramStr
=
cJSON_GetObjectItem
(
payload
,
MSG_PARAMS_STR
);
if
(
paramStr
!=
NULL
){
if
(
paramStr
!=
NULL
){
kk_service_bindScene_handle
(
paramStr
,
deviceCode
->
valuestring
);
if
(
kk_service_bindScene_handle
(
paramStr
,
deviceCode
->
valuestring
)
==
0
){
cJSON
*
msgId
=
cJSON_GetObjectItem
(
payload
,
MSG_COMMON_MSGID
);
cJSON
*
msgId
=
cJSON_GetObjectItem
(
payload
,
MSG_COMMON_MSGID
);
kk_service_common_reply
(
info_root
,
msgId
,
"/thing/service/bindScene_reply"
);
kk_service_common_reply
(
info_root
,
msgId
,
"/thing/service/bindScene_reply"
);
}
}
}
}
}
else
if
(
strcmp
(
typeJson
->
valuestring
,
KK_THING_SERVICE_UNBINDSBUTTTON
)
==
0
){
else
if
(
strcmp
(
typeJson
->
valuestring
,
KK_THING_SERVICE_UNBINDSBUTTTON
)
==
0
){
INFO_PRINT
(
"unbind button
\n
"
);
INFO_PRINT
(
"unbind button
\n
"
);
cJSON
*
paramStr
=
cJSON_GetObjectItem
(
payload
,
MSG_PARAMS_STR
);
cJSON
*
paramStr
=
cJSON_GetObjectItem
(
payload
,
MSG_PARAMS_STR
);
...
@@ -2319,11 +2401,12 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data)
...
@@ -2319,11 +2401,12 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data)
goto
directReturn
;
goto
directReturn
;
}
}
sprintf
(
btnId
,
"%d"
,
buttonId
->
valueint
);
sprintf
(
btnId
,
"%d"
,
buttonId
->
valueint
);
kk_scene_execute_quickpanel
(
btnId
,
deviceCode
->
valuestring
);
if
(
kk_scene_execute_quickpanel
(
btnId
,
deviceCode
->
valuestring
)
==
0
){
cJSON
*
msgId
=
cJSON_GetObjectItem
(
payload
,
MSG_COMMON_MSGID
);
cJSON
*
msgId
=
cJSON_GetObjectItem
(
payload
,
MSG_COMMON_MSGID
);
kk_service_common_reply
(
info_root
,
msgId
,
"/thing/service/activeButton_reply"
);
kk_service_common_reply
(
info_root
,
msgId
,
"/thing/service/activeButton_reply"
);
}
}
}
}
}
else
if
(
strcmp
(
typeJson
->
valuestring
,
KK_THING_SERVICE_GETCCUVERSION
)
==
0
){
else
if
(
strcmp
(
typeJson
->
valuestring
,
KK_THING_SERVICE_GETCCUVERSION
)
==
0
){
INFO_PRINT
(
"GET CCU VERISON
\n
"
);
INFO_PRINT
(
"GET CCU VERISON
\n
"
);
cJSON
*
msgId
=
cJSON_GetObjectItem
(
payload
,
MSG_COMMON_MSGID
);
cJSON
*
msgId
=
cJSON_GetObjectItem
(
payload
,
MSG_COMMON_MSGID
);
...
@@ -2356,9 +2439,10 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data)
...
@@ -2356,9 +2439,10 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data)
INFO_PRINT
(
"SETFLOOR
\n
"
);
INFO_PRINT
(
"SETFLOOR
\n
"
);
cJSON
*
msgId
=
cJSON_GetObjectItem
(
payload
,
MSG_COMMON_MSGID
);
cJSON
*
msgId
=
cJSON_GetObjectItem
(
payload
,
MSG_COMMON_MSGID
);
cJSON
*
paramStr
=
cJSON_GetObjectItem
(
payload
,
MSG_PARAMS_STR
);
cJSON
*
paramStr
=
cJSON_GetObjectItem
(
payload
,
MSG_PARAMS_STR
);
kk_service_setFloor_handle
(
paramStr
);
if
(
kk_service_setFloor_handle
(
paramStr
)
==
0
){
kk_service_common_reply
(
info_root
,
msgId
,
KK_THING_SERVICE_SETFLOOR_REPLY
);
kk_service_common_reply
(
info_root
,
msgId
,
KK_THING_SERVICE_SETFLOOR_REPLY
);
}
}
}
else
if
(
strcmp
(
typeJson
->
valuestring
,
KK_THING_SERVICE_ADDFLOORS
)
==
0
){
else
if
(
strcmp
(
typeJson
->
valuestring
,
KK_THING_SERVICE_ADDFLOORS
)
==
0
){
INFO_PRINT
(
"ADDFLOOR
\n
"
);
INFO_PRINT
(
"ADDFLOOR
\n
"
);
cJSON
*
msgId
=
cJSON_GetObjectItem
(
payload
,
MSG_COMMON_MSGID
);
cJSON
*
msgId
=
cJSON_GetObjectItem
(
payload
,
MSG_COMMON_MSGID
);
...
@@ -2369,9 +2453,10 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data)
...
@@ -2369,9 +2453,10 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data)
INFO_PRINT
(
"DELETEFLOOR
\n
"
);
INFO_PRINT
(
"DELETEFLOOR
\n
"
);
cJSON
*
msgId
=
cJSON_GetObjectItem
(
payload
,
MSG_COMMON_MSGID
);
cJSON
*
msgId
=
cJSON_GetObjectItem
(
payload
,
MSG_COMMON_MSGID
);
cJSON
*
paramStr
=
cJSON_GetObjectItem
(
payload
,
MSG_PARAMS_STR
);
cJSON
*
paramStr
=
cJSON_GetObjectItem
(
payload
,
MSG_PARAMS_STR
);
kk_service_deleteFloor_handle
(
paramStr
);
if
(
kk_service_deleteFloor_handle
(
paramStr
)
==
0
){
kk_service_common_reply
(
info_root
,
msgId
,
KK_THING_SERVICE_DELETEFLOORS_REPLY
);
kk_service_common_reply
(
info_root
,
msgId
,
KK_THING_SERVICE_DELETEFLOORS_REPLY
);
}
}
}
else
if
(
strcmp
(
typeJson
->
valuestring
,
KK_THING_SERVICE_GETFLOOR
)
==
0
){
else
if
(
strcmp
(
typeJson
->
valuestring
,
KK_THING_SERVICE_GETFLOOR
)
==
0
){
INFO_PRINT
(
"GETFLOOR
\n
"
);
INFO_PRINT
(
"GETFLOOR
\n
"
);
cJSON
*
msgId
=
cJSON_GetObjectItem
(
payload
,
MSG_COMMON_MSGID
);
cJSON
*
msgId
=
cJSON_GetObjectItem
(
payload
,
MSG_COMMON_MSGID
);
...
@@ -2382,9 +2467,10 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data)
...
@@ -2382,9 +2467,10 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data)
INFO_PRINT
(
"UPDATEFLOOR
\n
"
);
INFO_PRINT
(
"UPDATEFLOOR
\n
"
);
cJSON
*
msgId
=
cJSON_GetObjectItem
(
payload
,
MSG_COMMON_MSGID
);
cJSON
*
msgId
=
cJSON_GetObjectItem
(
payload
,
MSG_COMMON_MSGID
);
cJSON
*
paramStr
=
cJSON_GetObjectItem
(
payload
,
MSG_PARAMS_STR
);
cJSON
*
paramStr
=
cJSON_GetObjectItem
(
payload
,
MSG_PARAMS_STR
);
kk_service_updateFloor_handle
(
paramStr
);
if
(
kk_service_updateFloor_handle
(
paramStr
)
==
0
){
kk_service_common_reply
(
info_root
,
msgId
,
KK_THING_SERVICE_UPDATEFLOORS_REPLY
);
kk_service_common_reply
(
info_root
,
msgId
,
KK_THING_SERVICE_UPDATEFLOORS_REPLY
);
}
}
}
else
if
(
strcmp
(
typeJson
->
valuestring
,
KK_THING_SERVICE_CLIENTREPORT
)
==
0
){
else
if
(
strcmp
(
typeJson
->
valuestring
,
KK_THING_SERVICE_CLIENTREPORT
)
==
0
){
INFO_PRINT
(
"CLIENTREPORT
\n
"
);
INFO_PRINT
(
"CLIENTREPORT
\n
"
);
cJSON
*
msgId
=
cJSON_GetObjectItem
(
payload
,
MSG_COMMON_MSGID
);
cJSON
*
msgId
=
cJSON_GetObjectItem
(
payload
,
MSG_COMMON_MSGID
);
...
@@ -2395,9 +2481,10 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data)
...
@@ -2395,9 +2481,10 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data)
INFO_PRINT
(
"SPECIALDEV TO ROOM
\n
"
);
INFO_PRINT
(
"SPECIALDEV TO ROOM
\n
"
);
cJSON
*
msgId
=
cJSON_GetObjectItem
(
payload
,
MSG_COMMON_MSGID
);
cJSON
*
msgId
=
cJSON_GetObjectItem
(
payload
,
MSG_COMMON_MSGID
);
cJSON
*
paramStr
=
cJSON_GetObjectItem
(
payload
,
MSG_PARAMS_STR
);
cJSON
*
paramStr
=
cJSON_GetObjectItem
(
payload
,
MSG_PARAMS_STR
);
kk_service_addScreenToRoom_handle
(
paramStr
);
if
(
kk_service_addScreenToRoom_handle
(
paramStr
)
==
0
){
kk_service_common_reply
(
info_root
,
msgId
,
KK_THING_SERVICE_SPECIALDEVTOROOM_REPLY
);
kk_service_common_reply
(
info_root
,
msgId
,
KK_THING_SERVICE_SPECIALDEVTOROOM_REPLY
);
}
}
}
else
if
(
strcmp
(
typeJson
->
valuestring
,
KK_THING_SERVICE_RMSPECIALDEVFROMROOM
)
==
0
){
else
if
(
strcmp
(
typeJson
->
valuestring
,
KK_THING_SERVICE_RMSPECIALDEVFROMROOM
)
==
0
){
INFO_PRINT
(
"RM SPECIALDEV FROM ROOM
\n
"
);
INFO_PRINT
(
"RM SPECIALDEV FROM ROOM
\n
"
);
cJSON
*
msgId
=
cJSON_GetObjectItem
(
payload
,
MSG_COMMON_MSGID
);
cJSON
*
msgId
=
cJSON_GetObjectItem
(
payload
,
MSG_COMMON_MSGID
);
...
@@ -2452,6 +2539,11 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data)
...
@@ -2452,6 +2539,11 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data)
cJSON
*
paramStr
=
cJSON_GetObjectItem
(
payload
,
MSG_PARAMS_STR
);
cJSON
*
paramStr
=
cJSON_GetObjectItem
(
payload
,
MSG_PARAMS_STR
);
kk_service_executeGroup_handle
(
info_root
,
paramStr
,
msgId
);
kk_service_executeGroup_handle
(
info_root
,
paramStr
,
msgId
);
}
}
else
if
(
strcmp
(
typeJson
->
valuestring
,
KK_THING_SERVICE_GETKEYLIST
)
==
0
){
INFO_PRINT
(
"GETKEYLIST
\n
"
);
cJSON
*
msgId
=
cJSON_GetObjectItem
(
payload
,
MSG_COMMON_MSGID
);
kk_service_LockKeyList_handle
(
info_root
,
msgId
);
}
else
{
else
{
INFO_PRINT
(
"Error msgtype!!!
\n
"
);
INFO_PRINT
(
"Error msgtype!!!
\n
"
);
}
}
...
...
midware/midware/dm/kk_sub_db.c
View file @
2360ed07
...
@@ -114,6 +114,22 @@ static int kk_subDev_db_Init(void)
...
@@ -114,6 +114,22 @@ static int kk_subDev_db_Init(void)
sqlite3_free
(
pcErr
);
sqlite3_free
(
pcErr
);
return
FAIL_RETURN
;
return
FAIL_RETURN
;
}
}
const
char
*
pUserInfoTable
=
"CREATE TABLE IF NOT EXISTS LockUserInfo( \
idx INTEGER PRIMARY KEY , \
keyId varchar(32), \
keyType varchar(32), \
keyRole varchar(32), \
keyName varchar(255), \
deviceCode varchar(33), \
reverse varchar(128))"
;
if
(
sqlite3_exec
(
ctx
->
pDb
,
pUserInfoTable
,
NULL
,
NULL
,
&
pcErr
)
!=
SQLITE_OK
)
{
ERROR_PRINT
(
"Error creating table (%s)
\n
"
,
pcErr
);
sqlite3_free
(
pcErr
);
return
FAIL_RETURN
;
}
//eUtils_LockUnlock(&sLock);
//eUtils_LockUnlock(&sLock);
_kk_subDb_unlock
();
_kk_subDb_unlock
();
return
SUCCESS_RETURN
;
return
SUCCESS_RETURN
;
...
@@ -224,7 +240,7 @@ static int _kk_check_subDev_exist(const char* deviceCode)
...
@@ -224,7 +240,7 @@ static int _kk_check_subDev_exist(const char* deviceCode)
pmac
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SUB_DEVICECODE
);
pmac
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SUB_DEVICECODE
);
if
(
!
strcmp
(
deviceCode
,
pmac
))
if
(
!
strcmp
(
deviceCode
,
pmac
))
{
{
isExist
=
1
;
isExist
=
1
;
break
;
break
;
}
}
...
@@ -235,7 +251,137 @@ static int _kk_check_subDev_exist(const char* deviceCode)
...
@@ -235,7 +251,137 @@ static int _kk_check_subDev_exist(const char* deviceCode)
return
isExist
;
return
isExist
;
}
}
/************************************************************
*功能描述:保存设备信息到数据库
*输入参数:devType:设备类型
productCode:产品Id
deviceCode:设备deviceCode
fatherDeviceCode:上一级网关的deviceCode
mac: mac地址
version:版本号
heartbeat:心跳时间
*输出参数:无
*返 回 值:0:成功;其他:失败
*其他说明:
*************************************************************/
static
int
_kk_check_LockUser_exist
(
const
char
*
keyId
,
const
char
*
deviceCode
)
{
int
isExist
=
0
;
sqlite3_stmt
*
stmt
;
char
*
sqlCmd
=
NULL
;
kk_subDb_ctx_t
*
ctx
=
_kk_subDb_get_ctx
();
const
char
*
searchCmd
=
"select * from LockUserInfo where keyId = %s and deviceCode = %s;"
;
sqlCmd
=
sqlite3_mprintf
(
searchCmd
,
keyId
,
deviceCode
);
sqlite3_prepare_v2
(
ctx
->
pDb
,
sqlCmd
,
strlen
(
sqlCmd
),
&
stmt
,
NULL
);
//INFO_PRINT("total_column = %d\n", sqlite3_column_count(stmt));
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
isExist
=
1
;
break
;
}
INFO_PRINT
(
"
\n
"
);
sqlite3_free
(
sqlCmd
);
sqlite3_finalize
(
stmt
);
return
isExist
;
}
int
kk_LockUser_insert_db
(
char
*
keyId
,
char
*
keyType
,
char
*
keyRole
,
char
*
keyName
,
char
*
deviceCode
)
{
const
char
*
insertCmd
=
"insert into LockUserInfo (keyId,keyType,keyRole,keyName,deviceCode,reverse) \
values ('%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_LockUser_exist
((
const
char
*
)
keyId
,(
const
char
*
)
deviceCode
)
==
1
){
WARNING_PRINT
(
"[%s][%d] DATA ALREADY EXIST!!!
\n
"
,
__FUNCTION__
,
__LINE__
);
return
SUCCESS_RETURN
;
}
_kk_subDb_lock
();
sqlCmd
=
sqlite3_mprintf
(
insertCmd
,
keyId
,
keyType
,
keyRole
,
keyName
,
deviceCode
,
""
);
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
;
}
/************************************************************
*功能描述:获取屏类列表
*输入参数:deviceCode:设备deviceCode
isAuth:1,已注册;0,未注册
*输出参数:无
*返 回 值:0:成功;其他:失败
*其他说明:
*************************************************************/
int
kk_get_LockUser_list
(
LockKeyInfo_t
*
list
,
const
char
*
deviceCode
)
{
const
char
*
searchCmd
=
"select * from LockUserInfo where deviceCode = '%s'"
;
char
*
zErrMsg
=
0
;
sqlite3_stmt
*
stmt
;
kk_subDb_ctx_t
*
ctx
=
_kk_subDb_get_ctx
();
char
*
pkeyId
=
NULL
;
char
*
pkeyType
=
NULL
;
char
*
pkeyRole
=
NULL
;
char
*
pkeyName
=
NULL
;
int
count
=
0
;
char
*
sqlCmd
=
NULL
;
sqlCmd
=
sqlite3_mprintf
(
searchCmd
,
deviceCode
);
_kk_subDb_lock
();
sqlite3_prepare_v2
(
ctx
->
pDb
,
sqlCmd
,
strlen
(
sqlCmd
),
&
stmt
,
NULL
);
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
pkeyId
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_LOCKUSR_KEYID
);
pkeyType
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_LOCKUSR_KEYTYPE
);
pkeyRole
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_LOCKUSR_KEYROLE
);
pkeyName
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_LOCKUSR_KEYNAME
);
//printf("currentValue:%d\n",currentValue);
memcpy
(
list
[
count
].
keyId
,
pkeyId
,
strlen
(
pkeyId
));
memcpy
(
list
[
count
].
keyType
,
pkeyType
,
strlen
(
pkeyType
));
memcpy
(
list
[
count
].
keyRole
,
pkeyRole
,
strlen
(
pkeyRole
));
memcpy
(
list
[
count
].
keyName
,
pkeyName
,
strlen
(
pkeyName
));
count
++
;
}
sqlite3_finalize
(
stmt
);
sqlite3_free
(
sqlCmd
);
_kk_subDb_unlock
();
return
count
;
}
/************************************************************
*功能描述:获取屏类列表
*输入参数:deviceCode:设备deviceCode
isAuth:1,已注册;0,未注册
*输出参数:无
*返 回 值:0:成功;其他:失败
*其他说明:
*************************************************************/
int
kk_delete_LockUser_info
(
const
char
*
deviceCode
)
{
const
char
*
deleteCmd
=
"delete from LockUserInfo where deviceCode = '%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
,
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_subDb_unlock
();
return
SUCCESS_RETURN
;
}
/************************************************************
/************************************************************
*功能描述:保存设备信息到数据库
*功能描述:保存设备信息到数据库
*输入参数:devType:设备类型
*输入参数:devType:设备类型
...
...
midware/midware/dm/kk_sub_db.h
View file @
2360ed07
...
@@ -18,6 +18,12 @@ typedef struct {
...
@@ -18,6 +18,12 @@ typedef struct {
char
mac
[
32
];
char
mac
[
32
];
int
type
;
int
type
;
}
ScreenDevInfo_t
;
}
ScreenDevInfo_t
;
typedef
struct
{
char
keyId
[
17
];
char
keyType
[
8
];
char
keyRole
[
8
];
char
keyName
[
32
];
}
LockKeyInfo_t
;
int
kk_subDb_init
(
void
);
int
kk_subDb_init
(
void
);
int
kk_subDev_insert_db
(
int
devType
,
char
productCode
[
PRODUCT_CODE_MAXLEN
],
\
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
);
char
deviceCode
[
DEVICE_CODE_MAXLEN
],
char
fatherMac
[
DEVICE_MAC_MAXLEN
],
char
mac
[
DEVICE_MAC_MAXLEN
],
char
version
[
DEVICE_VERSION_MAXLEN
],
int
heartbeat
);
...
@@ -46,7 +52,9 @@ int kk_subDev_getDeviceCodes_byProductType(DeviceCode_t *list,char *type);
...
@@ -46,7 +52,9 @@ int kk_subDev_getDeviceCodes_byProductType(DeviceCode_t *list,char *type);
int
kk_indoor_air_action_add
(
char
*
propertyValue
,
char
*
deviceCode
,
int
delay
,
char
*
gwDeviceCode
,
char
*
sceneId
,
char
*
type
,
int
epnum
);
int
kk_indoor_air_action_add
(
char
*
propertyValue
,
char
*
deviceCode
,
int
delay
,
char
*
gwDeviceCode
,
char
*
sceneId
,
char
*
type
,
int
epnum
);
int
kk_subDev_update_fatherDeviceCode
(
char
*
fatherDeviceCode
,
const
char
*
deviceCode
);
int
kk_subDev_update_fatherDeviceCode
(
char
*
fatherDeviceCode
,
const
char
*
deviceCode
);
int
kk_subDev_find_fatherDeviceCode
(
const
char
*
deviceCode
,
char
*
fatherDeviceCode
);
int
kk_subDev_find_fatherDeviceCode
(
const
char
*
deviceCode
,
char
*
fatherDeviceCode
);
int
kk_LockUser_insert_db
(
char
*
keyId
,
char
*
keyType
,
char
*
keyRole
,
char
*
keyName
,
char
*
deviceCode
);
int
kk_get_LockUser_list
(
LockKeyInfo_t
*
list
,
const
char
*
deviceCode
);
int
kk_delete_LockUser_info
(
const
char
*
deviceCode
);
enum
{
enum
{
DB_SUB_IDX
=
0
,
DB_SUB_IDX
=
0
,
DB_SUB_ONLINE
,
DB_SUB_ONLINE
,
...
@@ -74,4 +82,13 @@ enum{
...
@@ -74,4 +82,13 @@ enum{
DB_SCREEN_ROOMNAME
,
DB_SCREEN_ROOMNAME
,
DB_SCREEN_EXPAND
,
DB_SCREEN_EXPAND
,
};
};
enum
{
DB_LOCKUSR_IDX
=
0
,
DB_LOCKUSR_KEYID
,
DB_LOCKUSR_KEYTYPE
,
DB_LOCKUSR_KEYROLE
,
DB_LOCKUSR_KEYNAME
,
DB_LOCKUSR_DEVICECODE
,
DB_LOCKUSR_REVERSE
,
};
#endif
#endif
midware/midware/dm/kk_sync_data.c
View file @
2360ed07
...
@@ -1247,18 +1247,26 @@ static int kk_get_scenes_trigger_info(cJSON *triggerObj,char *sceneId)
...
@@ -1247,18 +1247,26 @@ static int kk_get_scenes_trigger_info(cJSON *triggerObj,char *sceneId)
isAnd
=
sqlite3_column_int
(
stmt
,
DB_SCENETRIGGER_ISAND
);
isAnd
=
sqlite3_column_int
(
stmt
,
DB_SCENETRIGGER_ISAND
);
if
(
isAnd
==
0
){
if
(
isAnd
==
0
){
cJSON
*
triggerItem
=
cJSON_CreateObject
();
cJSON
*
triggerItem
=
cJSON_CreateObject
();
type
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENETRIGGER_TYPE
);
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
);
epNum
=
sqlite3_column_int
(
stmt
,
DB_SCENETRIGGER_EPNUM
);
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
);
cJSON_AddStringToObject
(
triggerItem
,
"type"
,
type
);
cJSON_AddStringToObject
(
triggerItem
,
"type"
,
type
);
cJSON_AddStringToObject
(
triggerItem
,
KK_SYNC_DEVICECODE_STR
,
(
char
*
)
deviceCode
);
cJSON_AddStringToObject
(
triggerItem
,
KK_SYNC_DEVICECODE_STR
,
(
char
*
)
deviceCode
);
cJSON_AddNumberToObject
(
triggerItem
,
KK_SYNC_SCENE_EPNUM_STR
,
epNum
);
cJSON_AddNumberToObject
(
triggerItem
,
KK_SYNC_SCENE_EPNUM_STR
,
epNum
);
if
(
strcmp
(
type
,
"trigger/thing/event"
)
==
0
){
//门锁场景同步
cJSON_AddStringToObject
(
triggerItem
,
"identifier"
,
(
char
*
)
propertyName
);
cJSON
*
comparesJson
=
cJSON_Parse
(
compareValue
);
if
(
comparesJson
!=
NULL
){
cJSON_AddItemToObject
(
triggerItem
,
"compares"
,
comparesJson
);
}
}
else
{
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
(
triggerAry
,
triggerItem
);
}
}
}
}
...
...
midware/midware/midware.c
View file @
2360ed07
...
@@ -63,6 +63,7 @@ char * g_filerToPlatTable[] =
...
@@ -63,6 +63,7 @@ char * g_filerToPlatTable[] =
(
char
*
){
KK_THING_SERVICE_ACTIVEBUTTON
},
(
char
*
){
KK_THING_SERVICE_ACTIVEBUTTON
},
(
char
*
){
KK_THING_SERVICE_HISTORYALARM
},
(
char
*
){
KK_THING_SERVICE_HISTORYALARM
},
(
char
*
){
KK_THING_SERVICE_DEL_HISTORYALARM
},
(
char
*
){
KK_THING_SERVICE_DEL_HISTORYALARM
},
(
char
*
){
KK_THING_SERVICE_GETKEYLIST
},
};
};
static
char
s_ccuid
[
DEVICE_CODE_LEN
]
=
{
0
};
static
char
s_ccuid
[
DEVICE_CODE_LEN
]
=
{
0
};
static
char
s_Version
[
VERSION_MAXLEN
]
=
{
0
};
static
char
s_Version
[
VERSION_MAXLEN
]
=
{
0
};
...
@@ -1534,6 +1535,7 @@ void kk_platMsg_handle(void* data, char* chalMark){
...
@@ -1534,6 +1535,7 @@ void kk_platMsg_handle(void* data, char* chalMark){
}
}
dm_mgr_update_timestamp_by_devicecode
(
node
->
deviceCode
,
0
);
dm_mgr_update_timestamp_by_devicecode
(
node
->
deviceCode
,
0
);
dm_mgr_set_dev_onoffline
(
node
,
1
);
dm_mgr_set_dev_onoffline
(
node
,
1
);
kk_delete_LockUser_info
((
const
char
*
)
node
->
deviceCode
);
//kk_ipc_send(IPC_MID2APP,data,strlen(data)+1);
//kk_ipc_send(IPC_MID2APP,data,strlen(data)+1);
//dm_mgr_subdev_delete(devCode->valuestring);
//dm_mgr_subdev_delete(devCode->valuestring);
...
@@ -1630,9 +1632,27 @@ void kk_platMsg_handle(void* data, char* chalMark){
...
@@ -1630,9 +1632,27 @@ void kk_platMsg_handle(void* data, char* chalMark){
if
(
pack
==
1
){
if
(
pack
==
1
){
INFO_PRINT
(
"kk_platMsg_handle data: event pack post
\n
"
);
INFO_PRINT
(
"kk_platMsg_handle data: event pack post
\n
"
);
dm_msg_thing_event_post
(
info_dcode
->
valuestring
,
eventItem
->
identifier
,
NULL
);
dm_msg_thing_event_post
(
info_dcode
->
valuestring
,
eventItem
->
identifier
,
NULL
);
if
(
strcmp
(
eventItem
->
identifier
,
"KeyAddNotification"
)
==
0
){
char
KeyTypeBuf
[
8
]
=
{
0
};
char
KeyRoleBuf
[
8
]
=
{
0
};
cJSON
*
keyId
=
cJSON_GetObjectItem
(
jsonPay
,
"KeyID"
);
cJSON
*
KeyRole
=
cJSON_GetObjectItem
(
jsonPay
,
"KeyRole"
);
cJSON
*
KeyType
=
cJSON_GetObjectItem
(
jsonPay
,
"KeyType"
);
if
(
keyId
!=
NULL
&&
KeyRole
!=
NULL
&&
KeyType
!=
NULL
){
if
(
KeyType
->
type
==
cJSON_Number
){
sprintf
(
KeyTypeBuf
,
"%d"
,
KeyType
->
valueint
);
}
if
(
KeyRole
->
type
==
cJSON_Number
){
sprintf
(
KeyRoleBuf
,
"%d"
,
KeyRole
->
valueint
);
}
kk_LockUser_insert_db
(
keyId
->
valuestring
,
KeyTypeBuf
,
KeyRoleBuf
,
""
,
info_dcode
->
valuestring
);
}
}
if
(
strcmp
(
eventItem
->
identifier
,
"LockOpenNotification"
)
==
0
){
kk_scene_iftt_check
(
info_dcode
->
valuestring
,
jsonPay
);
kk_scene_iftt_check
(
info_dcode
->
valuestring
,
jsonPay
);
}
}
}
}
}
else
if
(
strcmp
(
eventItem
->
identifier
,
MSG_PROPERTY_STR
)
!=
0
&&
else
if
(
strcmp
(
eventItem
->
identifier
,
MSG_PROPERTY_STR
)
!=
0
&&
eventItem
->
output_data_number
==
0
){
eventItem
->
output_data_number
==
0
){
itemStr
=
cJSON_GetObjectItem
(
jsonPay
,
eventItem
->
identifier
);
itemStr
=
cJSON_GetObjectItem
(
jsonPay
,
eventItem
->
identifier
);
...
...
midware/midware/scene/kk_scene_db.c
View file @
2360ed07
...
@@ -776,7 +776,11 @@ int kk_scene_update_device_active(char *deviceCode,int epNum,int value)
...
@@ -776,7 +776,11 @@ int kk_scene_update_device_active(char *deviceCode,int epNum,int value)
kk_scene_ctx_t
*
ctx
=
_kk_scene_get_ctx
();
kk_scene_ctx_t
*
ctx
=
_kk_scene_get_ctx
();
_kk_scene_lock
();
_kk_scene_lock
();
if
(
epNum
==
-
1
){
sqlCmd
=
sqlite3_mprintf
(
"UPDATE SceneActionInfo SET active='%d' WHERE deviceCode = '%s'"
,
value
,
deviceCode
);
}
else
{
sqlCmd
=
sqlite3_mprintf
(
"UPDATE SceneActionInfo SET active='%d' WHERE deviceCode = '%s' and epNum= '%d'"
,
value
,
deviceCode
,
epNum
);
sqlCmd
=
sqlite3_mprintf
(
"UPDATE SceneActionInfo SET active='%d' WHERE deviceCode = '%s' and epNum= '%d'"
,
value
,
deviceCode
,
epNum
);
}
INFO_PRINT
(
"kk_scene_update_device_active sqlCmd:%s
\n
"
,
sqlCmd
);
INFO_PRINT
(
"kk_scene_update_device_active sqlCmd:%s
\n
"
,
sqlCmd
);
rc
=
sqlite3_exec
(
ctx
->
pDb
,
sqlCmd
,
NULL
,
NULL
,
&
zErrMsg
);
rc
=
sqlite3_exec
(
ctx
->
pDb
,
sqlCmd
,
NULL
,
NULL
,
&
zErrMsg
);
if
(
rc
!=
SQLITE_OK
){
if
(
rc
!=
SQLITE_OK
){
...
@@ -784,8 +788,11 @@ int kk_scene_update_device_active(char *deviceCode,int epNum,int value)
...
@@ -784,8 +788,11 @@ int kk_scene_update_device_active(char *deviceCode,int epNum,int value)
sqlite3_free
(
zErrMsg
);
sqlite3_free
(
zErrMsg
);
}
}
sqlite3_free
(
sqlCmd
);
sqlite3_free
(
sqlCmd
);
if
(
epNum
==
-
1
){
sqlCmd
=
sqlite3_mprintf
(
"UPDATE SceneTriggerInfo SET active='%d' WHERE deviceCode = '%s'"
,
value
,
deviceCode
);
}
else
{
sqlCmd
=
sqlite3_mprintf
(
"UPDATE SceneTriggerInfo SET active='%d' WHERE deviceCode = '%s' and epNum= '%d'"
,
value
,
deviceCode
,
epNum
);
sqlCmd
=
sqlite3_mprintf
(
"UPDATE SceneTriggerInfo SET active='%d' WHERE deviceCode = '%s' and epNum= '%d'"
,
value
,
deviceCode
,
epNum
);
}
rc
=
sqlite3_exec
(
ctx
->
pDb
,
sqlCmd
,
NULL
,
NULL
,
&
zErrMsg
);
rc
=
sqlite3_exec
(
ctx
->
pDb
,
sqlCmd
,
NULL
,
NULL
,
&
zErrMsg
);
if
(
rc
!=
SQLITE_OK
){
if
(
rc
!=
SQLITE_OK
){
ERROR_PRINT
(
"SQL error: %s
\n
"
,
zErrMsg
);
ERROR_PRINT
(
"SQL error: %s
\n
"
,
zErrMsg
);
...
...
midware/midware/scene/kk_scene_db.h
View file @
2360ed07
...
@@ -49,6 +49,7 @@ enum{
...
@@ -49,6 +49,7 @@ enum{
DB_SCENEACTION_DELAY
,
DB_SCENEACTION_DELAY
,
DB_SCENEACTION_SCENEID
,
DB_SCENEACTION_SCENEID
,
DB_SCENEACTION_GWDEVICECODE
,
DB_SCENEACTION_GWDEVICECODE
,
DB_SCENEACTION_ACTIVE
,
};
};
enum
{
enum
{
...
...
midware/midware/scene/kk_scene_handle.c
View file @
2360ed07
...
@@ -583,6 +583,7 @@ int kk_scene_action_add(const char *gwdeviceCode,const char *sceneId,kk_scene_ac
...
@@ -583,6 +583,7 @@ int kk_scene_action_add(const char *gwdeviceCode,const char *sceneId,kk_scene_ac
if
(
action
==
NULL
||
gwdeviceCode
==
NULL
||
sceneId
==
NULL
){
if
(
action
==
NULL
||
gwdeviceCode
==
NULL
||
sceneId
==
NULL
){
return
INVALID_PARAMETER
;
return
INVALID_PARAMETER
;
}
}
cJSON
*
root
=
cJSON_CreateObject
();
cJSON
*
root
=
cJSON_CreateObject
();
cJSON_AddStringToObject
(
root
,
MSG_SCENE_SCENEID
,
sceneId
);
cJSON_AddStringToObject
(
root
,
MSG_SCENE_SCENEID
,
sceneId
);
cJSON_AddItemToObject
(
root
,
MSG_SCENE_ACTIONS
,
action
);
cJSON_AddItemToObject
(
root
,
MSG_SCENE_ACTIONS
,
action
);
...
@@ -982,6 +983,37 @@ static int kk_scene_parse_trigger_detail(const char *type,const cJSON *item,cons
...
@@ -982,6 +983,37 @@ static int kk_scene_parse_trigger_detail(const char *type,const cJSON *item,cons
return
res
;
return
res
;
}
}
static
int
kk_scene_parse_trigger_event_type
(
const
char
*
type
,
const
cJSON
*
item
,
const
char
*
sceneId
,
int
isAnd
)
{
int
res
=
FAIL_RETURN
;
cJSON
*
deviceCode
,
*
epNum
;
cJSON
*
propertyName
;
cJSON
*
compares
;
int
ep
=
0
;
if
(
type
==
NULL
||
item
==
NULL
||
sceneId
==
NULL
){
return
INVALID_PARAMETER
;
}
deviceCode
=
cJSON_GetObjectItem
(
item
,
MSG_DEVICE_CODE_STR
);
if
(
deviceCode
==
NULL
)
return
FAIL_RETURN
;
epNum
=
cJSON_GetObjectItem
(
item
,
MSG_SCENE_EPNUM
);
if
(
epNum
==
NULL
){
ep
=
1
;
}
else
{
if
(
epNum
->
type
==
cJSON_Number
){
ep
=
epNum
->
valueint
;
}
else
{
ep
=
atoi
(
epNum
->
valuestring
);
}
}
propertyName
=
cJSON_GetObjectItem
(
item
,
"identifier"
);
if
(
propertyName
==
NULL
)
return
FAIL_RETURN
;
compares
=
cJSON_GetObjectItem
(
item
,
"compares"
);
if
(
compares
==
NULL
)
return
FAIL_RETURN
;
char
*
compareValue
=
cJSON_PrintUnformatted
(
compares
);
res
=
kk_scene_insert_scene_trigger
(
type
,
deviceCode
->
valuestring
,
ep
,
propertyName
->
valuestring
,
""
,
compareValue
,
sceneId
,
isAnd
);
return
res
;
}
/************************************************************
/************************************************************
*功能描述:解析场景触发条件
*功能描述:解析场景触发条件
*输入参数:str:触发内容的CJSON字串;
*输入参数:str:触发内容的CJSON字串;
...
@@ -1028,6 +1060,12 @@ int kk_scene_parse_scene_trigger(const cJSON* str,const char *sceneId)
...
@@ -1028,6 +1060,12 @@ int kk_scene_parse_scene_trigger(const cJSON* str,const char *sceneId)
time_t
newStart
=
kk_scene_creat_timer_starttime
(
weekflag
,
atoi
(
timestr
->
valuestring
),
current
);
time_t
newStart
=
kk_scene_creat_timer_starttime
(
weekflag
,
atoi
(
timestr
->
valuestring
),
current
);
kk_scene_insert_scene_timer
(
newStart
,
weekflag
,
sceneId
);
kk_scene_insert_scene_timer
(
newStart
,
weekflag
,
sceneId
);
kk_scene_push_timer_info
(
newStart
,
weekflag
,(
char
*
)
sceneId
);
kk_scene_push_timer_info
(
newStart
,
weekflag
,(
char
*
)
sceneId
);
}
else
if
(
!
strcmp
(
"trigger/thing/event"
,
type
->
valuestring
)){
res
=
kk_scene_parse_trigger_event_type
(
type
->
valuestring
,
item
,
sceneId
,
0
);
if
(
res
!=
SUCCESS_RETURN
){
ERROR_PRINT
(
"kk_scene_parse_trigger_event_type fail!!!
\n
"
);
return
res
;
}
}
}
item
=
item
->
next
;
item
=
item
->
next
;
}
}
...
@@ -1610,7 +1648,7 @@ int kk_scene_parse_scene_muticontrol(const cJSON* str,const char *sceneId,int is
...
@@ -1610,7 +1648,7 @@ int kk_scene_parse_scene_muticontrol(const cJSON* str,const char *sceneId,int is
int
kk_scene_parse_addscene
(
const
cJSON
*
args
,
char
*
sceneId
,
int
isUpdate
,
const
char
*
msgId
)
int
kk_scene_parse_addscene
(
const
cJSON
*
args
,
char
*
sceneId
,
int
isUpdate
,
const
char
*
msgId
)
{
{
int
res
=
0
;
int
res
=
0
;
kk_tsl_t
*
pSceneShadow
=
NULL
;
if
(
args
==
NULL
||
sceneId
==
NULL
){
if
(
args
==
NULL
||
sceneId
==
NULL
){
ERROR_PRINT
(
"[%d]kk_scene_parse_addscene fail!!!
\n
"
,
__LINE__
);
ERROR_PRINT
(
"[%d]kk_scene_parse_addscene fail!!!
\n
"
,
__LINE__
);
return
INVALID_PARAMETER
;
return
INVALID_PARAMETER
;
...
@@ -1627,12 +1665,10 @@ int kk_scene_parse_addscene(const cJSON* args,char *sceneId,int isUpdate,const c
...
@@ -1627,12 +1665,10 @@ int kk_scene_parse_addscene(const cJSON* args,char *sceneId,int isUpdate,const c
cJSON
*
enable
=
cJSON_GetObjectItem
(
args
,
MSG_SCENE_ENABLE
);
cJSON
*
enable
=
cJSON_GetObjectItem
(
args
,
MSG_SCENE_ENABLE
);
if
(
enable
==
NULL
)
return
FAIL_RETURN
;
if
(
enable
==
NULL
)
return
FAIL_RETURN
;
if
(
!
isUpdate
){
if
(
!
isUpdate
){
kk_tsl_t
*
pSceneShadow
=
NULL
;
HAL_GetTime_s
(
sceneId
);
//use time to create the sceneId
HAL_GetTime_s
(
sceneId
);
//use time to create the sceneId
pSceneShadow
=
kk_scene_shadow
();
pSceneShadow
=
kk_scene_shadow
();
if
(
pSceneShadow
!=
NULL
){
if
(
pSceneShadow
!=
NULL
){
kk_tsl_set_value
(
kk_tsl_set_event_output_value
,
pSceneShadow
,
MSG_SCENE_ADDNOTIFICATION_SCENEID
,
NULL
,
sceneId
);
kk_tsl_set_value
(
kk_tsl_set_event_output_value
,
pSceneShadow
,
MSG_SCENE_ADDNOTIFICATION_SCENEID
,
NULL
,
sceneId
);
dm_msg_scene_event_post
(
MSG_SCENE_ADDNOTIFICATION
,
pSceneShadow
,
msgId
);
}
}
}
}
...
@@ -1672,6 +1708,9 @@ int kk_scene_parse_addscene(const cJSON* args,char *sceneId,int isUpdate,const c
...
@@ -1672,6 +1708,9 @@ int kk_scene_parse_addscene(const cJSON* args,char *sceneId,int isUpdate,const c
return
FAIL_RETURN
;
return
FAIL_RETURN
;
}
}
}
}
if
(
pSceneShadow
!=
NULL
){
dm_msg_scene_event_post
(
MSG_SCENE_ADDNOTIFICATION
,
pSceneShadow
,
msgId
);
}
return
SUCCESS_RETURN
;
return
SUCCESS_RETURN
;
}
}
...
@@ -2499,6 +2538,51 @@ static int kk_scene_invokeService_find(const char *sceneId)
...
@@ -2499,6 +2538,51 @@ static int kk_scene_invokeService_find(const char *sceneId)
sqlite3_free
(
sqlCmd
);
sqlite3_free
(
sqlCmd
);
return
find
;
return
find
;
}
}
static
int
_kk_check_lock_trigger_info
(
char
*
proName
,
char
*
value
,
char
*
keyId
,
char
*
keyRole
,
char
*
keyType
)
{
int
cnt
=
0
;
cJSON
*
compareValue
;
cJSON
*
propertyName
;
cJSON
*
pSub
;
if
(
proName
==
NULL
||
value
==
NULL
||
keyId
==
NULL
){
return
INVALID_PARAMETER
;
}
if
(
!
strcmp
(
proName
,
"LockOpenNotification"
)
&&
strstr
(
value
,
"["
)
!=
NULL
&&
strstr
(
value
,
"]"
)
!=
NULL
){
cJSON
*
json
=
cJSON_Parse
(
value
);
if
(
json
==
NULL
){
return
FAIL_RETURN
;
}
int
array_size
=
cJSON_GetArraySize
(
json
);
if
(
array_size
==
0
){
return
FAIL_RETURN
;
}
for
(
cnt
=
0
;
cnt
<
array_size
;
cnt
++
){
pSub
=
cJSON_GetArrayItem
(
json
,
cnt
);
if
(
NULL
==
pSub
){
continue
;
}
propertyName
=
cJSON_GetObjectItem
(
pSub
,
"propertyName"
);
if
(
propertyName
==
NULL
){
continue
;
}
if
(
strcmp
(
propertyName
->
valuestring
,
"KeyType"
)
==
0
){
compareValue
=
cJSON_GetObjectItem
(
pSub
,
"compareValue"
);
if
(
strcmp
(
compareValue
->
valuestring
,
keyType
)
!=
0
){
return
FAIL_RETURN
;
}
else
{
continue
;
}
}
if
(
strcmp
(
propertyName
->
valuestring
,
"KeyID"
)
!=
0
){
compareValue
=
cJSON_GetObjectItem
(
pSub
,
"compareValue"
);
if
(
strcmp
(
compareValue
->
valuestring
,
keyId
)
!=
0
){
return
FAIL_RETURN
;
}
}
}
return
SUCCESS_RETURN
;
}
else
if
(
!
strcmp
(
proName
,
"LockState"
)
&&
!
strcmp
(
value
,
"1"
)){
return
SUCCESS_RETURN
;
}
return
FAIL_RETURN
;
}
/************************************************************
/************************************************************
*功能描述:查找是否有场景触发
*功能描述:查找是否有场景触发
*输入参数:param:属性CJSON内容
*输入参数:param:属性CJSON内容
...
@@ -2515,12 +2599,33 @@ int kk_scene_query_trigger_info(const char *deviceCode,cJSON *param)
...
@@ -2515,12 +2599,33 @@ int kk_scene_query_trigger_info(const char *deviceCode,cJSON *param)
char
*
identifier
=
NULL
;
char
*
identifier
=
NULL
;
char
*
compareType
=
NULL
;
char
*
compareType
=
NULL
;
char
*
compareValue
=
NULL
;
char
*
compareValue
=
NULL
;
char
keyRoleBuf
[
8
]
=
{
0
};
char
keyTypeBuf
[
8
]
=
{
0
};
int
propertyValueType
=
0
;
int
propertyValueType
=
0
;
int
isAnd
=
0
;
int
isAnd
=
0
;
int
sceneType
=
0
,
isEnable
=
0
;
int
sceneType
=
0
,
isEnable
=
0
;
int
LockOpenTrigger
=
0
;
sqlite3_stmt
*
stmt
;
sqlite3_stmt
*
stmt
;
kk_scene_ctx_t
*
ctx
=
_kk_scene_get_ctx
();
kk_scene_ctx_t
*
ctx
=
_kk_scene_get_ctx
();
if
(
param
==
NULL
){
return
res
;
}
cJSON
*
KeyID
=
cJSON_GetObjectItem
(
param
,
"KeyID"
);
cJSON
*
KeyRole
=
cJSON_GetObjectItem
(
param
,
"KeyRole"
);
cJSON
*
KeyType
=
cJSON_GetObjectItem
(
param
,
"KeyType"
);
if
(
KeyID
!=
NULL
&&
KeyRole
!=
NULL
&&
KeyType
!=
NULL
){
LockOpenTrigger
=
1
;
if
(
KeyRole
->
type
==
cJSON_Number
){
sprintf
(
keyRoleBuf
,
"%d"
,
KeyRole
->
valueint
);
}
else
{
strcpy
(
keyRoleBuf
,
KeyRole
->
valuestring
);
}
if
(
KeyType
->
type
==
cJSON_Number
){
sprintf
(
keyTypeBuf
,
"%d"
,
KeyType
->
valueint
);
}
else
{
strcpy
(
keyTypeBuf
,
KeyType
->
valuestring
);
}
}
sqlCmd
=
sqlite3_mprintf
(
"select * from SceneTriggerInfo WHERE deviceCode= '%s' and active = '%d'"
,
deviceCode
,
1
);
//actice判断设备是否移入待分配
sqlCmd
=
sqlite3_mprintf
(
"select * from SceneTriggerInfo WHERE deviceCode= '%s' and active = '%d'"
,
deviceCode
,
1
);
//actice判断设备是否移入待分配
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
){
...
@@ -2531,14 +2636,25 @@ int kk_scene_query_trigger_info(const char *deviceCode,cJSON *param)
...
@@ -2531,14 +2636,25 @@ int kk_scene_query_trigger_info(const char *deviceCode,cJSON *param)
isAnd
=
sqlite3_column_int
(
stmt
,
DB_SCENETRIGGER_ISAND
);
isAnd
=
sqlite3_column_int
(
stmt
,
DB_SCENETRIGGER_ISAND
);
res
=
kk_scene_get_scene_info
(
sceneId
,
&
sceneType
,
&
isEnable
);
res
=
kk_scene_get_scene_info
(
sceneId
,
&
sceneType
,
&
isEnable
);
if
(
res
==
SUCCESS_RETURN
&&
isEnable
&&
isAnd
==
0
){
if
(
res
==
SUCCESS_RETURN
&&
isEnable
&&
isAnd
==
0
){
if
(
LockOpenTrigger
==
1
){
res
=
_kk_check_lock_trigger_info
(
identifier
,
compareValue
,
KeyID
->
valuestring
,
keyRoleBuf
,
keyTypeBuf
);
if
(
res
==
SUCCESS_RETURN
){
INFO_PRINT
(
"[%d]kk_scene_check_condition enter!!!
\n
"
,
__LINE__
);
res
=
kk_scene_check_condition
(
sceneId
);
if
(
res
==
SUCCESS_RETURN
){
res
=
kk_scene_check_trigger_condition
(
sceneId
);
if
(
res
==
SUCCESS_RETURN
){
/*check是否时场景嵌套类型*/
res
=
kk_scene_execute_action
(
sceneId
,
NULL
);
}
}
}
}
else
{
cJSON
*
item
=
cJSON_GetObjectItem
(
param
,
identifier
);
cJSON
*
item
=
cJSON_GetObjectItem
(
param
,
identifier
);
if
(
item
!=
NULL
){
if
(
item
!=
NULL
){
propertyValueType
=
kk_dm_get_property_type
(
deviceCode
,
identifier
);
propertyValueType
=
kk_dm_get_property_type
(
deviceCode
,
identifier
);
res
=
kk_scene_check_value
(
compareType
,
compareValue
,
item
,
propertyValueType
);
res
=
kk_scene_check_value
(
compareType
,
compareValue
,
item
,
propertyValueType
);
if
(
res
==
SUCCESS_RETURN
){
if
(
res
==
SUCCESS_RETURN
){
INFO_PRINT
(
"[%d]kk_scene_check_condition enter!!!
\n
"
,
__LINE__
);
INFO_PRINT
(
"[%d]kk_scene_check_condition enter!!!
\n
"
,
__LINE__
);
res
=
kk_scene_check_condition
(
sceneId
);
res
=
kk_scene_check_condition
(
sceneId
);
if
(
res
==
SUCCESS_RETURN
){
if
(
res
==
SUCCESS_RETURN
){
...
@@ -2551,6 +2667,8 @@ int kk_scene_query_trigger_info(const char *deviceCode,cJSON *param)
...
@@ -2551,6 +2667,8 @@ int kk_scene_query_trigger_info(const char *deviceCode,cJSON *param)
}
}
}
}
}
}
}
}
}
sqlite3_finalize
(
stmt
);
sqlite3_finalize
(
stmt
);
sqlite3_free
(
sqlCmd
);
sqlite3_free
(
sqlCmd
);
...
@@ -2687,7 +2805,8 @@ static int _kk_rebuild_device_active(char *sceneid)
...
@@ -2687,7 +2805,8 @@ static int _kk_rebuild_device_active(char *sceneid)
sqlite3_stmt
*
stmt
;
sqlite3_stmt
*
stmt
;
char
*
pDeviceCode
=
NULL
;
char
*
pDeviceCode
=
NULL
;
char
*
pSceneType
=
NULL
;
char
*
pSceneType
=
NULL
;
char
*
gwDeviceCode
=
NULL
;
const
unsigned
char
*
gwDeviceCode
=
NULL
;
char
gwDeviceCodeBuf
[
32
]
=
{
0
};
int
epNum
=
0
;
int
epNum
=
0
;
int
isMuti
=
0
;
int
isMuti
=
0
;
int
count
=
0
;
int
count
=
0
;
...
@@ -2695,7 +2814,7 @@ static int _kk_rebuild_device_active(char *sceneid)
...
@@ -2695,7 +2814,7 @@ static int _kk_rebuild_device_active(char *sceneid)
dm_mgr_dev_node_t
*
node
=
NULL
;
dm_mgr_dev_node_t
*
node
=
NULL
;
kk_scene_ctx_t
*
ctx
=
_kk_scene_get_ctx
();
kk_scene_ctx_t
*
ctx
=
_kk_scene_get_ctx
();
sqlCmd
=
sqlite3_mprintf
(
"select * from SceneActionInfo WHERE sceneid = '%s' and active
= '%d'"
,
sceneid
,
1
);
sqlCmd
=
sqlite3_mprintf
(
"select * from SceneActionInfo WHERE sceneid = '%s' and active
!= '%d'"
,
sceneid
,
0
);
sqlite3_prepare_v2
(
ctx
->
pDb
,
sqlCmd
,
strlen
(
sqlCmd
),
&
stmt
,
NULL
);
sqlite3_prepare_v2
(
ctx
->
pDb
,
sqlCmd
,
strlen
(
sqlCmd
),
&
stmt
,
NULL
);
cJSON
*
array
=
cJSON_CreateArray
();
cJSON
*
array
=
cJSON_CreateArray
();
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
...
@@ -2706,7 +2825,7 @@ static int _kk_rebuild_device_active(char *sceneid)
...
@@ -2706,7 +2825,7 @@ static int _kk_rebuild_device_active(char *sceneid)
}
}
count
++
;
count
++
;
epNum
=
sqlite3_column_int
(
stmt
,
DB_SCENEACTION_EPNUM
);
epNum
=
sqlite3_column_int
(
stmt
,
DB_SCENEACTION_EPNUM
);
gwDeviceCode
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENEACTION_GWDEVICECODE
);
gwDeviceCode
=
sqlite3_column_text
(
stmt
,
DB_SCENEACTION_GWDEVICECODE
);
if
(
strcmp
(
pSceneType
,
"action/thing/group"
)
==
0
){
if
(
strcmp
(
pSceneType
,
"action/thing/group"
)
==
0
){
cJSON
*
arrayParam
=
cJSON_CreateObject
();
cJSON
*
arrayParam
=
cJSON_CreateObject
();
cJSON_AddStringToObject
(
arrayParam
,
MSG_SCENE_TYPE
,
pSceneType
);
cJSON_AddStringToObject
(
arrayParam
,
MSG_SCENE_TYPE
,
pSceneType
);
...
@@ -2714,6 +2833,7 @@ static int _kk_rebuild_device_active(char *sceneid)
...
@@ -2714,6 +2833,7 @@ static int _kk_rebuild_device_active(char *sceneid)
cJSON_AddNumberToObject
(
arrayParam
,
MSG_SCENE_EPNUM
,
epNum
);
cJSON_AddNumberToObject
(
arrayParam
,
MSG_SCENE_EPNUM
,
epNum
);
isMuti
=
1
;
isMuti
=
1
;
cJSON_AddItemToArray
(
array
,
arrayParam
);
cJSON_AddItemToArray
(
array
,
arrayParam
);
memcpy
(
gwDeviceCodeBuf
,(
char
*
)
gwDeviceCode
,
strlen
((
char
*
)
gwDeviceCode
));
}
else
{
}
else
{
kk_scene_action_detail_t
info
=
{
0
};
kk_scene_action_detail_t
info
=
{
0
};
char
*
propertyName
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENEACTION_PROPERTYNAME
);
char
*
propertyName
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENEACTION_PROPERTYNAME
);
...
@@ -2725,7 +2845,6 @@ static int _kk_rebuild_device_active(char *sceneid)
...
@@ -2725,7 +2845,6 @@ static int _kk_rebuild_device_active(char *sceneid)
info
.
epNum
=
epNum
;
info
.
epNum
=
epNum
;
info
.
delay
=
idelay
;
info
.
delay
=
idelay
;
isMuti
=
0
;
isMuti
=
0
;
if
(
strcmp
(
propertyName
,
"LightStripSpecialAction"
)
==
0
){
if
(
strcmp
(
propertyName
,
"LightStripSpecialAction"
)
==
0
){
if
(
strstr
(
propertyValueStr
,
"{"
)
!=
NULL
&&
strstr
(
propertyValueStr
,
"}"
)
!=
NULL
){
if
(
strstr
(
propertyValueStr
,
"{"
)
!=
NULL
&&
strstr
(
propertyValueStr
,
"}"
)
!=
NULL
){
cJSON
*
propertyValueJson
=
cJSON_Parse
(
propertyValueStr
);
cJSON
*
propertyValueJson
=
cJSON_Parse
(
propertyValueStr
);
...
@@ -2733,7 +2852,7 @@ static int _kk_rebuild_device_active(char *sceneid)
...
@@ -2733,7 +2852,7 @@ static int _kk_rebuild_device_active(char *sceneid)
ERROR_PRINT
(
"cJSON_Parse ERROR!!!"
);
ERROR_PRINT
(
"cJSON_Parse ERROR!!!"
);
return
FAIL_RETURN
;
return
FAIL_RETURN
;
}
}
_kk_scene_LightStripSpecialAction_handle
(
propertyValueJson
,
pDeviceCode
,
epNum
,
idelay
,(
char
*
)
sceneid
,
gwDeviceCode
);
_kk_scene_LightStripSpecialAction_handle
(
propertyValueJson
,
pDeviceCode
,
epNum
,
idelay
,(
char
*
)
sceneid
,
(
char
*
)
gwDeviceCode
);
cJSON_Delete
(
propertyValueJson
);
cJSON_Delete
(
propertyValueJson
);
}
}
}
else
if
(
strcmp
(
propertyName
,
"CustomAction"
)
==
0
){
//空调内机的场景属性
}
else
if
(
strcmp
(
propertyName
,
"CustomAction"
)
==
0
){
//空调内机的场景属性
...
@@ -2745,12 +2864,12 @@ static int _kk_rebuild_device_active(char *sceneid)
...
@@ -2745,12 +2864,12 @@ static int _kk_rebuild_device_active(char *sceneid)
}
}
if
(
strcmp
(
node
->
productType
,
KK_DM_AIR_GATEWAY_TYPE
)
==
0
||
strcmp
(
node
->
productType
,
"airConditioning"
)
==
0
if
(
strcmp
(
node
->
productType
,
KK_DM_AIR_GATEWAY_TYPE
)
==
0
||
strcmp
(
node
->
productType
,
"airConditioning"
)
==
0
||
strcmp
(
node
->
productType
,
"fanCoil"
)
==
0
){
||
strcmp
(
node
->
productType
,
"fanCoil"
)
==
0
){
kk_indoor_air_action_add
(
propertyValueStr
,
pDeviceCode
,
idelay
,
gwDeviceCode
,
sceneid
,
"action/thing/setProperty"
,
epNum
);
kk_indoor_air_action_add
(
propertyValueStr
,
pDeviceCode
,
idelay
,
(
char
*
)
gwDeviceCode
,
sceneid
,
"action/thing/setProperty"
,
epNum
);
}
}
}
}
}
else
{
}
else
{
memcpy
(
info
.
propertyValue
,
propertyValueStr
,
strlen
(
propertyValueStr
));
memcpy
(
info
.
propertyValue
,
propertyValueStr
,
strlen
(
propertyValueStr
));
kk_scene_action_add
(
gwDeviceCode
,
sceneid
,
info
);
kk_scene_action_add
(
(
char
*
)
gwDeviceCode
,
sceneid
,
info
);
}
}
}
}
}
}
...
@@ -2758,7 +2877,9 @@ static int _kk_rebuild_device_active(char *sceneid)
...
@@ -2758,7 +2877,9 @@ static int _kk_rebuild_device_active(char *sceneid)
kk_scene_delete_send_to_gw
(
sceneid
);
kk_scene_delete_send_to_gw
(
sceneid
);
}
else
{
}
else
{
if
(
isMuti
){
if
(
isMuti
){
kk_scene_muticontrol_info_send
(
array
,
gwDeviceCode
,
sceneid
,
1
);
kk_scene_delete_send_to_gw
(
sceneid
);
usleep
(
1000
*
500
);
kk_scene_muticontrol_info_send
(
array
,
gwDeviceCodeBuf
,
sceneid
,
1
);
}
else
{
}
else
{
kk_scene_action_info_send
(
1
);
kk_scene_action_info_send
(
1
);
}
}
...
@@ -2774,14 +2895,35 @@ int kk_scene_rebuild_device_active(char *deviceCode,int epNum)
...
@@ -2774,14 +2895,35 @@ int kk_scene_rebuild_device_active(char *deviceCode,int epNum)
sqlite3_stmt
*
stmt
;
sqlite3_stmt
*
stmt
;
char
*
zErrMsg
=
0
;
char
*
zErrMsg
=
0
;
char
*
scene_id
=
NULL
;
char
*
scene_id
=
NULL
;
char
scene_id_bak
[
64
][
16
]
=
{
0
};
int
i
=
0
,
count
=
0
;
int
repeat
=
0
;
kk_scene_ctx_t
*
ctx
=
_kk_scene_get_ctx
();
kk_scene_ctx_t
*
ctx
=
_kk_scene_get_ctx
();
sqlCmd
=
sqlite3_mprintf
(
"select * from SceneActionInfo WHERE deviceCode = '%s' and epNum= '%d'"
,
deviceCode
,
epNum
);
if
(
epNum
==
-
1
){
sqlCmd
=
sqlite3_mprintf
(
"select * from SceneActionInfo WHERE deviceCode = '%s'"
,
deviceCode
);
//删除设备情况下
}
else
{
sqlCmd
=
sqlite3_mprintf
(
"select * from SceneActionInfo WHERE deviceCode = '%s' and epNum= '%d'"
,
deviceCode
,
epNum
);
//移动到待分配情况下
}
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
){
repeat
=
0
;
scene_id
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENEACTION_SCENEID
);
scene_id
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENEACTION_SCENEID
);
for
(
i
=
0
;
i
<
count
;
i
++
){
//检测同个设备在同个场景中设置不同的动作,只需rebuild一次
if
(
strcmp
(
scene_id_bak
[
i
],
scene_id
)
==
0
){
repeat
=
1
;
break
;
}
}
if
(
repeat
){
continue
;
}
_kk_rebuild_device_active
(
scene_id
);
_kk_rebuild_device_active
(
scene_id
);
usleep
(
100
*
1000
);
if
(
count
<
64
){
memcpy
(
scene_id_bak
[
count
],
scene_id
,
strlen
(
scene_id
));
count
++
;
}
usleep
(
500
*
1000
);
}
}
sqlite3_free
(
sqlCmd
);
sqlite3_free
(
sqlCmd
);
sqlite3_finalize
(
stmt
);
sqlite3_finalize
(
stmt
);
...
...
tsl/product_3094.json
View file @
2360ed07
...
@@ -51,6 +51,17 @@
...
@@ -51,6 +51,17 @@
},
},
"name"
:
"色温"
"name"
:
"色温"
},
},
{
"identifier"
:
"ColorTempSwitch"
,
"dataType"
:
{
"specs"
:
{
"0"
:
"关闭"
,
"1"
:
"打开"
},
"type"
:
"bool"
},
"name"
:
"色温开关使能"
},
{
{
"identifier"
:
"FadeTime"
,
"identifier"
:
"FadeTime"
,
"dataType"
:
{
"dataType"
:
{
...
@@ -141,6 +152,17 @@
...
@@ -141,6 +152,17 @@
},
},
"name"
:
"色温"
"name"
:
"色温"
},
},
{
"identifier"
:
"ColorTempSwitch"
,
"dataType"
:
{
"specs"
:
{
"0"
:
"关闭"
,
"1"
:
"打开"
},
"type"
:
"bool"
},
"name"
:
"色温开关使能"
},
{
{
"identifier"
:
"FadeTime"
,
"identifier"
:
"FadeTime"
,
"dataType"
:
{
"dataType"
:
{
...
@@ -189,6 +211,7 @@
...
@@ -189,6 +211,7 @@
"PowerSwitch"
,
"PowerSwitch"
,
"Brightness"
,
"Brightness"
,
"ColorTemperature"
,
"ColorTemperature"
,
"ColorTempSwitch"
,
"FadeTime"
,
"FadeTime"
,
"LowBrightness"
,
"LowBrightness"
,
"HighBrightness"
"HighBrightness"
...
@@ -260,6 +283,19 @@
...
@@ -260,6 +283,19 @@
},
},
"name"
:
"色温"
"name"
:
"色温"
},
},
{
"identifier"
:
"ColorTempSwitch"
,
"accessMode"
:
"rw"
,
"required"
:
true
,
"dataType"
:
{
"specs"
:
{
"0"
:
"关闭"
,
"1"
:
"打开"
},
"type"
:
"bool"
},
"name"
:
"色温开关使能"
},
{
{
"identifier"
:
"FadeTime"
,
"identifier"
:
"FadeTime"
,
"accessMode"
:
"rw"
,
"accessMode"
:
"rw"
,
...
@@ -352,6 +388,17 @@
...
@@ -352,6 +388,17 @@
},
},
"name"
:
"色温"
"name"
:
"色温"
},
},
{
"identifier"
:
"ColorTempSwitch"
,
"dataType"
:
{
"specs"
:
{
"0"
:
"关闭"
,
"1"
:
"打开"
},
"type"
:
"bool"
},
"name"
:
"色温开关使能"
},
{
{
"identifier"
:
"FadeTime"
,
"identifier"
:
"FadeTime"
,
"dataType"
:
{
"dataType"
:
{
...
...
tsl/product_3137.json
View file @
2360ed07
...
@@ -44,13 +44,24 @@
...
@@ -44,13 +44,24 @@
"specs"
:
{
"specs"
:
{
"min"
:
"0"
,
"min"
:
"0"
,
"max"
:
"100"
,
"max"
:
"100"
,
"unit"
:
"
K
"
,
"unit"
:
"
%
"
,
"unitName"
:
"百分比"
,
"unitName"
:
"百分比"
,
"step"
:
"1"
"step"
:
"1"
}
}
},
},
"name"
:
"色温"
"name"
:
"色温"
},
},
{
"identifier"
:
"ColorTempSwitch"
,
"dataType"
:
{
"specs"
:
{
"0"
:
"关闭"
,
"1"
:
"打开"
},
"type"
:
"bool"
},
"name"
:
"色温开关使能"
},
{
{
"identifier"
:
"FadeTime"
,
"identifier"
:
"FadeTime"
,
"dataType"
:
{
"dataType"
:
{
...
@@ -134,13 +145,24 @@
...
@@ -134,13 +145,24 @@
"specs"
:
{
"specs"
:
{
"min"
:
"0"
,
"min"
:
"0"
,
"max"
:
"100"
,
"max"
:
"100"
,
"unit"
:
"
K
"
,
"unit"
:
"
%
"
,
"unitName"
:
"百分比"
,
"unitName"
:
"百分比"
,
"step"
:
"1"
"step"
:
"1"
}
}
},
},
"name"
:
"色温"
"name"
:
"色温"
},
},
{
"identifier"
:
"ColorTempSwitch"
,
"dataType"
:
{
"specs"
:
{
"0"
:
"关闭"
,
"1"
:
"打开"
},
"type"
:
"bool"
},
"name"
:
"色温开关使能"
},
{
{
"identifier"
:
"FadeTime"
,
"identifier"
:
"FadeTime"
,
"dataType"
:
{
"dataType"
:
{
...
@@ -189,6 +211,7 @@
...
@@ -189,6 +211,7 @@
"PowerSwitch"
,
"PowerSwitch"
,
"Brightness"
,
"Brightness"
,
"ColorTemperature"
,
"ColorTemperature"
,
"ColorTempSwitch"
,
"FadeTime"
,
"FadeTime"
,
"LowBrightness"
,
"LowBrightness"
,
"HighBrightness"
"HighBrightness"
...
@@ -253,13 +276,26 @@
...
@@ -253,13 +276,26 @@
"specs"
:
{
"specs"
:
{
"min"
:
"0"
,
"min"
:
"0"
,
"max"
:
"100"
,
"max"
:
"100"
,
"unit"
:
"
K
"
,
"unit"
:
"
%
"
,
"unitName"
:
"百分比"
,
"unitName"
:
"百分比"
,
"step"
:
"1"
"step"
:
"1"
}
}
},
},
"name"
:
"色温"
"name"
:
"色温"
},
},
{
"identifier"
:
"ColorTempSwitch"
,
"accessMode"
:
"rw"
,
"required"
:
true
,
"dataType"
:
{
"specs"
:
{
"0"
:
"关闭"
,
"1"
:
"打开"
},
"type"
:
"bool"
},
"name"
:
"色温开关使能"
},
{
{
"identifier"
:
"FadeTime"
,
"identifier"
:
"FadeTime"
,
"accessMode"
:
"rw"
,
"accessMode"
:
"rw"
,
...
@@ -345,13 +381,24 @@
...
@@ -345,13 +381,24 @@
"specs"
:
{
"specs"
:
{
"min"
:
"0"
,
"min"
:
"0"
,
"max"
:
"100"
,
"max"
:
"100"
,
"unit"
:
"
K
"
,
"unit"
:
"
%
"
,
"unitName"
:
"百分比"
,
"unitName"
:
"百分比"
,
"step"
:
"1"
"step"
:
"1"
}
}
},
},
"name"
:
"色温"
"name"
:
"色温"
},
},
{
"identifier"
:
"ColorTempSwitch"
,
"dataType"
:
{
"specs"
:
{
"0"
:
"关闭"
,
"1"
:
"打开"
},
"type"
:
"bool"
},
"name"
:
"色温开关使能"
},
{
{
"identifier"
:
"FadeTime"
,
"identifier"
:
"FadeTime"
,
"dataType"
:
{
"dataType"
:
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment