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
3be6986c
Commit
3be6986c
authored
Sep 27, 2021
by
尹佳钦
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1、场景动作所有类型触发,根据房间触发执行
2、人体红外场景支持无人几分钟触发场景 3、离线语音面板场景bug修复
parent
e872556d
Changes
13
Show whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
287 additions
and
51 deletions
+287
-51
application/klansdk/kk_data_handle.c
application/klansdk/kk_data_handle.c
+3
-0
application/klansdk/kk_voice_panel_cfg.c
application/klansdk/kk_voice_panel_cfg.c
+2
-2
application/klansdk/kk_voice_panel_handle.c
application/klansdk/kk_voice_panel_handle.c
+21
-6
application/klansdk/kk_voice_panel_handle.h
application/klansdk/kk_voice_panel_handle.h
+1
-0
midware/midware/area/kk_area_handle.c
midware/midware/area/kk_area_handle.c
+1
-0
midware/midware/area/kk_area_handle.h
midware/midware/area/kk_area_handle.h
+0
-1
midware/midware/dm/dm_fota.c
midware/midware/dm/dm_fota.c
+3
-3
midware/midware/dm/dm_ota.c
midware/midware/dm/dm_ota.c
+3
-2
midware/midware/dm/kk_dm_mng.c
midware/midware/dm/kk_dm_mng.c
+1
-1
midware/midware/dm/kk_linkkit.c
midware/midware/dm/kk_linkkit.c
+4
-4
midware/midware/dm/kk_sub_db.c
midware/midware/dm/kk_sub_db.c
+49
-29
midware/midware/midware.c
midware/midware/midware.c
+16
-1
midware/midware/scene/kk_scene_handle.c
midware/midware/scene/kk_scene_handle.c
+183
-2
No files found.
application/klansdk/kk_data_handle.c
View file @
3be6986c
...
...
@@ -825,6 +825,9 @@ void KK_Data_FromMid(void* str,int len)
}
else
if
(
strstr
(
msgtype
->
valuestring
,
"/thing/event/addSceneNotification/post"
)
!=
NULL
){
INFO_PRINT
(
"addSceneNotification handle!!!"
);
kk_lan_scene_handle
(
payload
,
1
);
}
else
if
(
strstr
(
msgtype
->
valuestring
,
"/thing/event/updateSceneNotification/post"
)
!=
NULL
){
INFO_PRINT
(
"updateSceneNotification handle!!!"
);
kk_lan_scene_handle
(
payload
,
1
);
}
else
if
(
strstr
(
msgtype
->
valuestring
,
"/thing/event/deleteSceneNotification/post"
)
!=
NULL
){
INFO_PRINT
(
"deleteSceneNotification handle!!!"
);
kk_lan_scene_handle
(
payload
,
0
);
...
...
application/klansdk/kk_voice_panel_cfg.c
View file @
3be6986c
...
...
@@ -167,7 +167,7 @@ static _OUT cJSON *kk_vp_sync_scences(_IN cJSON *data)
VP_SCENE_ITEM
*
pSceneList
=
NULL
;
VP_SCENE_ITEM
*
pScene
=
NULL
;
//
if
((
scenes
=
cJSON_GetObjectItem
(
data
,
SCENES_STR
))
==
NULL
||
scenes
->
type
!=
cJSON_Array
){
////printf("[%s][%d]\n",__FUNCTION__,__LINE__);
...
...
@@ -208,7 +208,7 @@ static _OUT cJSON *kk_vp_sync_scences(_IN cJSON *data)
snprintf
(
pScene
->
id
,
sizeof
(
pScene
->
id
)
-
1
,
"%d"
,
map_id
);
snprintf
(
pScene
->
type
,
sizeof
(
pScene
->
type
)
-
1
,
"%d"
,
sceneType
->
valueint
);
snprintf
(
pScene
->
name
,
sizeof
(
pScene
->
name
)
-
1
,
"%s"
,
sceneName
->
valuestring
);
//printf("[%s][%d]\n",__FUNCTION__,__LINE__
);
debug_log
(
LOG_NOTICE_LEVEL
,
"[%d]map_id=%d.
\n
"
,
i
,
map_id
);
}
}
vp_scene_id_map_save
();
...
...
application/klansdk/kk_voice_panel_handle.c
View file @
3be6986c
...
...
@@ -168,6 +168,8 @@ void vp_scene_id_map_deinit(void)
VP_SCENE_MAP
*
pNext
=
NULL
;
VP_SCENE_MAP
*
pScene
=
vp_scene_map
;
debug_log
(
LOG_NOTICE_LEVEL
,
"vp_scene_id_map_deinit.
\n
"
);
while
(
pScene
!=
NULL
){
pNext
=
pScene
->
next
;
if
(
pScene
!=
NULL
){
...
...
@@ -183,7 +185,7 @@ void vp_scene_id_map_deinit(void)
int
vp_scene_id_item_add
(
int
scene_id
)
{
VP_SCENE_MAP
*
ptr
=
NULL
;
VP_SCENE_MAP
*
ptr
=
NULL
,
*
pre
=
NULL
;
VP_SCENE_MAP
*
pScene
=
NULL
;
pScene
=
malloc
(
sizeof
(
VP_SCENE_MAP
));
...
...
@@ -197,7 +199,13 @@ int vp_scene_id_item_add(int scene_id)
if
(
vp_scene_map
==
NULL
){
vp_scene_map
=
pScene
;
}
else
{
vp_scene_map
->
next
=
pScene
;
ptr
=
vp_scene_map
;
while
(
ptr
){
pre
=
ptr
;
ptr
=
ptr
->
next
;
}
ptr
=
pre
;
ptr
->
next
=
pScene
;
}
return
pScene
->
map_id
;
...
...
@@ -205,7 +213,7 @@ int vp_scene_id_item_add(int scene_id)
int
vp_scene_id_item_load
(
int
scene_id
,
uint16_t
map_id
)
{
VP_SCENE_MAP
*
ptr
=
NULL
;
VP_SCENE_MAP
*
ptr
=
NULL
,
*
pre
=
NULL
;
VP_SCENE_MAP
*
pScene
=
NULL
;
pScene
=
malloc
(
sizeof
(
VP_SCENE_MAP
));
...
...
@@ -218,10 +226,17 @@ int vp_scene_id_item_load(int scene_id,uint16_t map_id)
if
(
vp_scene_map
==
NULL
){
vp_scene_map
=
pScene
;
}
else
{
vp_scene_map
->
next
=
pScene
;
ptr
=
vp_scene_map
;
while
(
ptr
){
pre
=
ptr
;
ptr
=
ptr
->
next
;
}
ptr
=
pre
;
ptr
->
next
=
pScene
;
}
return
pScene
->
map_id
;
...
...
@@ -230,7 +245,7 @@ int vp_scene_id_item_load(int scene_id,uint16_t map_id)
#define VP_SCENE_ID_STRING "scene_id"
#define VP_SCENE_ID_RAW_STRING "CCU"
#define VP_SCENE_ID_MAP_STRING "VP"
#define VP_SCENE_ID_FILE "scene_id_map.json"
cJSON
*
vp_scene_id_map_file_build
(
void
)
{
...
...
application/klansdk/kk_voice_panel_handle.h
View file @
3be6986c
...
...
@@ -10,6 +10,7 @@
#define VP_CONFIG_FILE_MD5 "/data/kk/voice_data.MD5"
#define VP_CONFIG_FILE_TAR_GZ "/data/kk/voice_data.tar.gz"
#define VP_OTA_FILE_BZIP "/data/kk/kk_voice.bzip"
#define VP_SCENE_ID_FILE "/data/kk/scene_id_map.json"
...
...
midware/midware/area/kk_area_handle.c
View file @
3be6986c
...
...
@@ -534,6 +534,7 @@ cJSON *kk_get_roomIds_ary(void)
kk_dev_list_t
*
kk_get_room_deviceCode
(
const
char
*
roomId
)
{
sqlite3_stmt
*
stmt
;
...
...
midware/midware/area/kk_area_handle.h
View file @
3be6986c
...
...
@@ -36,6 +36,5 @@ int kk_get_room_armingstate(const char* roomId);
int
kk_get_roomId_by_deviceCode
(
const
char
*
deviceCode
,
const
char
*
epNum
,
char
*
roomId
,
int
size
);
int
kk_get_device_roomInfo
(
const
char
*
deviceCode
,
int
epNum
,
char
*
roomName
,
char
*
roomId
);
int
kk_room_reset_armingstate
(
void
);
cJSON
*
kk_get_roomIds_ary
(
void
);
#endif
midware/midware/dm/dm_fota.c
View file @
3be6986c
midware/midware/dm/dm_ota.c
View file @
3be6986c
...
...
@@ -194,7 +194,7 @@ int kk_publishProgress(int process,int state)
cJSON_AddStringToObject
(
info
,
MSG_DEVICE_CODE_STR
,
ccuID
);
cJSON_AddStringToObject
(
info
,
MSG_PRODUCT_CODE_STR
,
productCode
);
char
*
infff
=
cJSON_Print
(
info
);
printf
(
"kk_publishProgress,process=%d,state=%d
\n
"
,
process
,
state
);
cJSON
*
payload
=
cJSON_CreateObject
();
cJSON_AddStringToObject
(
payload
,
"desc"
,
"success"
);
cJSON_AddStringToObject
(
payload
,
"version"
,
"1.0"
);
...
...
@@ -224,11 +224,12 @@ int progress_callback(void *clientp, double dltotal, double dlnow, double ultota
{
#if 1
char
processBuf
[
12
]
=
{
0
};
//
printf("progress_callback clientp:%s,dltotal:%g,dlnow:%g,ultotal:%g,ulnow:%g\n",clientp,dltotal,dlnow,ultotal,ulnow);
printf
(
"progress_callback clientp:%s,dltotal:%g,dlnow:%g,ultotal:%g,ulnow:%g
\n
"
,
clientp
,
dltotal
,
dlnow
,
ultotal
,
ulnow
);
if
(
dlnow
>
0
){
int
process
=
(
int
)
dlnow
*
100
.
0
/
dltotal
;
if
(
process
%
10
==
0
){
//sprintf(processBuf,"%d",process);
printf
(
"progress_callback ,process:%d
\n
"
,
process
);
INFO_PRINT
(
"progress_callback ,process:%d
\n
"
,
process
);
kk_publishProgress
(
process
,
OTA_STATE_DOWNLOAD_ING
);
//lua_event_notify((char*)"ota_process",(char*)"process", processBuf);
...
...
midware/midware/dm/kk_dm_mng.c
View file @
3be6986c
midware/midware/dm/kk_linkkit.c
View file @
3be6986c
midware/midware/dm/kk_sub_db.c
View file @
3be6986c
...
...
@@ -401,9 +401,11 @@ int kk_subDev_check_auth(int devType)
char
*
zErrMsg
=
0
;
const
char
*
searchCmd
=
"select * from SubDeviceInfo WHERE devType = '%d';"
;
kk_subDb_ctx_t
*
ctx
=
_kk_subDb_get_ctx
();
printf
(
"------------------------------------------------------->111
\n
"
);
sqlCmd
=
sqlite3_mprintf
(
searchCmd
,
devType
);
sqlite3_prepare_v2
(
ctx
->
pDb
,
sqlCmd
,
strlen
(
sqlCmd
),
&
stmt
,
NULL
);
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
printf
(
"------------------------------------------------------->222
\n
"
);
char
*
pDeviceCode
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SUB_DEVICECODE
);
char
*
pProductCode
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SUB_PRODUCTCODE
);
kk_msg_cloud_status_notify
(
pDeviceCode
,
pProductCode
);
...
...
@@ -650,7 +652,7 @@ static int _kk_indoor_air_handle(char* deviceCode, char *sceneId, char *property
}
return
0
;
}
int
kk_subDev_set_action_by_productType
(
c
har
*
productType
,
char
*
sceneId
,
char
*
propertyName
,
char
*
propertyValue
,
char
*
type
,
int
delay
)
int
kk_subDev_set_action_by_productType
(
c
onst
char
*
productType
,
const
char
*
roomId
,
const
char
*
sceneId
,
const
char
*
propertyName
,
const
char
*
propertyValue
,
const
char
*
type
,
int
delay
)
{
int
res
=
0
;
sqlite3_stmt
*
stmt
;
...
...
@@ -659,13 +661,15 @@ int kk_subDev_set_action_by_productType(char *productType,char *sceneId,char *pr
dm_mgr_dev_node_t
*
node
=
NULL
;
kk_subDb_ctx_t
*
ctx
=
_kk_subDb_get_ctx
();
const
char
*
searchCmd
=
"select * from SubDeviceInfo WHERE productType= '%s'"
;
int
idx
=
0
;
//
int gw_support_scene = 0;
int
gw_support_scene
=
0
;
kk_tsl_data_t
*
property
=
NULL
;
int
k
=
0
,
count
=
0
;
char
typeArray
[
10
][
32
]
=
{
0
};
int
size
=
0
;
char
*
pStart
=
NULL
;
int
allRoom
=
(
strcmp
(
roomId
,
"-1"
)
==
0
)
?
1
:
0
;
if
(
productType
==
NULL
){
ERROR_PRINT
(
"ERROR [%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
...
...
@@ -707,6 +711,7 @@ int kk_subDev_set_action_by_productType(char *productType,char *sceneId,char *pr
}
char
*
ptr
=
strstr
(
property
->
identifier
,
propertyName
);
if
(
ptr
!=
NULL
&&
(
ptr
-
property
->
identifier
==
0
)
){
if
(
gw_support_scene
){
kk_scene_action_detail_t
info
=
{
0
};
memcpy
(
info
.
deviceCode
,
node
->
deviceCode
,
strlen
(
node
->
deviceCode
));
memcpy
(
info
.
propertyName
,
property
->
identifier
,
strlen
(
property
->
identifier
));
...
...
@@ -719,6 +724,20 @@ int kk_subDev_set_action_by_productType(char *productType,char *sceneId,char *pr
}
else
{
info
.
epNum
=
1
;
}
if
(
allRoom
==
0
){
char
roomName
[
256
]
=
{
0
};
char
roomIdStr
[
10
]
=
{
0
};
if
(
kk_get_device_roomInfo
(
pDeviceCode
,
info
.
epNum
,
roomName
,
roomIdStr
)
==
0
){
continue
;
}
if
(
strcmp
(
roomIdStr
,
roomId
)
!=
0
){
continue
;
}
}
if
(
strcmp
(
node
->
productCode
,
"3098"
)
==
0
&&
info
.
epNum
!=
1
){
//风机盘管多合一只处理第一路
continue
;
}
...
...
@@ -728,6 +747,7 @@ int kk_subDev_set_action_by_productType(char *productType,char *sceneId,char *pr
else
if
(
strcmp
(
node
->
productCode
,
"3099"
)
==
0
&&
info
.
epNum
!=
3
){
//新风多合一只处理第三路
continue
;
}
info
.
delay
=
delay
;
kk_scene_action_add
(
node
->
fatherDeviceCode
,
sceneId
,
info
);
res
=
kk_scene_insert_scene_action
(
type
,
node
->
deviceCode
,
info
.
epNum
,
...
...
@@ -737,7 +757,7 @@ int kk_subDev_set_action_by_productType(char *productType,char *sceneId,char *pr
//return res;
continue
;
}
}
}
}
...
...
midware/midware/midware.c
View file @
3be6986c
...
...
@@ -871,9 +871,17 @@ void kk_platMsg_handle(void* data, char* chalMark){
kk_history_insert_Outlet_info
(
info_dcode
->
valuestring
,
buf
,
""
,
HAL_GetTime
());
}
}
kk_tsl_property_set_by_shadow
(
search_node
->
dev_shadow
,
outstr
,
strlen
(
outstr
)
+
1
);
dm_msg_thing_property_post_by_identify
(
info_dcode
->
valuestring
,
jsonPay
);
proCode
=
cJSON_GetObjectItem
(
info
,
MSG_PRODUCT_CODE_STR
);
if
(
strcmp
(
proCode
->
valuestring
,
"3053"
)
&&
strcmp
(
proCode
->
valuestring
,
"3042"
)){
kk_scene_iftt_check
(
info_dcode
->
valuestring
,
jsonPay
);
}
free
(
outstr
);
}
}
else
if
(
strstr
(
msgType
->
valuestring
,
KK_THING_TOPO_DELETE_MSG
)
!=
NULL
){
...
...
@@ -1368,6 +1376,9 @@ int main(const int argc, const char **argv)
//kk_tsl_t *dev_shadow[30] = {NULL};
mid_ctx_t
*
mid_ctx
=
kk_mid_get_ctx
();
openlog
(
"midware"
,
LOG_PID
,
LOG_USER
);
memset
(
mid_ctx
,
0
,
sizeof
(
mid_ctx_t
));
HAL_Ccuid_version
();
...
...
@@ -1396,6 +1407,7 @@ int main(const int argc, const char **argv)
//IOT_Linkkit_Close(mid_ctx->master_devid);
return
-
1
;
}
mid_ctx
->
g_ota_dispatch_thread_running
=
1
;
res
=
pthread_create
((
pthread_t
*
)
&
mid_ctx
->
g_ota_dispatch_thread
,
NULL
,
ota_dispatch_yield
,
NULL
);
if
(
res
<
0
)
{
...
...
@@ -1419,10 +1431,13 @@ int main(const int argc, const char **argv)
return
-
1
;
}
bodySensor_load
();
//int ct = 0;
for
(;;)
{
usleep
(
200000
);
kk_platMsg_dispatch
();
BodySensorTrigger_check
();
}
}
midware/midware/scene/kk_scene_handle.c
View file @
3be6986c
...
...
@@ -584,6 +584,179 @@ int kk_scene_action_add(const char *gwdeviceCode,const char *sceneId,kk_scene_ac
free
(
out
);
return
SUCCESS_RETURN
;
}
typedef
struct
BodySensorNoActive
{
char
deviceCode
[
DEVICE_CODE_LEN
];
int
ep
;
time_t
alarm_time
;
time_t
report_time
;
int
noActive_time
;
//minute
int
scene_id
;
struct
BodySensorNoActive
*
next
;
}
BodySensorNoActive
;
static
BodySensorNoActive
*
pBodySensor
=
NULL
;
int
bodySensor_insert
(
const
char
*
deviceCode
,
int
ep
,
int
noActive_time
,
int
scene_id
)
{
BodySensorNoActive
*
ptr
=
NULL
,
*
pre
=
NULL
;
if
(
deviceCode
==
NULL
){
return
0
;
}
if
(
pBodySensor
==
NULL
){
pBodySensor
=
(
BodySensorNoActive
*
)
malloc
(
sizeof
(
BodySensorNoActive
));
memset
(
pBodySensor
,
0
,
sizeof
(
BodySensorNoActive
));
snprintf
(
pBodySensor
->
deviceCode
,
sizeof
(
pBodySensor
->
deviceCode
),
"%s"
,
deviceCode
);
pBodySensor
->
ep
=
ep
;
pBodySensor
->
noActive_time
=
noActive_time
;
pBodySensor
->
scene_id
=
scene_id
;
}
else
{
ptr
=
pBodySensor
;
while
(
ptr
){
pre
=
ptr
;
ptr
=
ptr
->
next
;
}
ptr
=
(
BodySensorNoActive
*
)
malloc
(
sizeof
(
BodySensorNoActive
));
memset
(
ptr
,
0
,
sizeof
(
BodySensorNoActive
));
snprintf
(
ptr
->
deviceCode
,
sizeof
(
ptr
->
deviceCode
),
"%s"
,
deviceCode
);
ptr
->
ep
=
ep
;
ptr
->
noActive_time
=
noActive_time
;
ptr
->
scene_id
=
scene_id
;
pre
->
next
=
ptr
;
}
return
1
;
}
int
bodySensor_load
(
void
)
{
int
res
=
FAIL_RETURN
;
char
*
sqlCmd
=
NULL
;
char
*
sceneId
=
NULL
;
char
*
propertyName
=
NULL
;
char
*
deviceCode
=
NULL
;
char
*
compareValue
=
NULL
;
int
epNum
=
0
;
int
sceneType
=
0
,
isEnable
=
0
;
sqlite3_stmt
*
stmt
;
kk_scene_ctx_t
*
ctx
=
_kk_scene_get_ctx
();
printf
(
"-------2222222---------------->
\n
"
);
sqlCmd
=
sqlite3_mprintf
(
"select * from SceneTriggerInfo WHERE propertyName='%s'"
,
"BodySensorNoActive"
);
sqlite3_prepare_v2
(
ctx
->
pDb
,
sqlCmd
,
strlen
(
sqlCmd
),
&
stmt
,
NULL
);
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
printf
(
"-------333333---------------->
\n
"
);
sceneId
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENETRIGGER_SCENEID
);
deviceCode
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENETRIGGER_DEVICECODE
);
epNum
=
sqlite3_column_int
(
stmt
,
DB_SCENETRIGGER_EPNUM
);
compareValue
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENETRIGGER_COMPAREVALUE
);
DEBUG_PRINT
(
"deviceCode=%s,epNum=%d,BodySensorNoActive=%s,sceneId=%d
\n
"
,
deviceCode
,
epNum
,
compareValue
,
atoi
(
sceneId
));
bodySensor_insert
(
deviceCode
,
epNum
,
atoi
(
compareValue
),
atoi
(
sceneId
));
}
sqlite3_finalize
(
stmt
);
sqlite3_free
(
sqlCmd
);
return
res
;
}
int
kk_scene_query_body_sensor_trigger_info
(
const
char
*
deviceCode
,
int
scene_id
)
{
int
res
=
FAIL_RETURN
;
char
*
sqlCmd
=
NULL
;
char
*
sceneId
=
NULL
;
char
*
identifier
=
NULL
;
char
*
compareType
=
NULL
;
char
*
compareValue
=
NULL
;
int
propertyValueType
=
0
;
int
isAnd
=
0
;
int
sceneType
=
0
,
isEnable
=
0
;
sqlite3_stmt
*
stmt
;
kk_scene_ctx_t
*
ctx
=
_kk_scene_get_ctx
();
sqlCmd
=
sqlite3_mprintf
(
"select * from SceneTriggerInfo WHERE deviceCode='%s' and sceneId='%d'"
,
deviceCode
,
scene_id
);
sqlite3_prepare_v2
(
ctx
->
pDb
,
sqlCmd
,
strlen
(
sqlCmd
),
&
stmt
,
NULL
);
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
sceneId
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENETRIGGER_SCENEID
);
identifier
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENETRIGGER_PROPERTYNAME
);
compareType
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENETRIGGER_COMPARETYPE
);
compareValue
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENETRIGGER_COMPAREVALUE
);
isAnd
=
sqlite3_column_int
(
stmt
,
DB_SCENETRIGGER_ISAND
);
res
=
kk_scene_get_scene_info
(
sceneId
,
&
sceneType
,
&
isEnable
);
if
(
res
==
SUCCESS_RETURN
&&
isEnable
&&
isAnd
==
0
){
propertyValueType
=
kk_dm_get_property_type
(
deviceCode
,
identifier
);
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
);
}
}
}
}
sqlite3_finalize
(
stmt
);
sqlite3_free
(
sqlCmd
);
return
res
;
}
int
BodySensorTrigger_check
(
void
)
{
BodySensorNoActive
*
ptr
=
NULL
;
time_t
cur_time
=
time
(
NULL
);
ptr
=
pBodySensor
;
while
(
ptr
){
if
(
ptr
->
report_time
!=
0
&&
cur_time
>=
ptr
->
report_time
){
ptr
->
report_time
=
0
;
DEBUG_PRINT
(
"
\n\n
------------------>222
\n\n
"
);
kk_scene_query_body_sensor_trigger_info
(
ptr
->
deviceCode
,
ptr
->
scene_id
);
//上报
}
ptr
=
ptr
->
next
;
}
}
int
BodySensorTrigger_report
(
const
char
*
deviceCode
,
int
ep
,
cJSON
*
param
)
{
BodySensorNoActive
*
ptr
=
pBodySensor
;
int
flag
=
0
;
cJSON
*
item
=
cJSON_GetObjectItem
(
param
,
"MotionAlarmState"
);
printf
(
"
\n\n
------------------>param=%s
\n\n
"
,
cJSON_Print
(
param
));
if
(
item
==
NULL
||
item
->
type
!=
cJSON_Number
||
item
->
valueint
!=
1
){
return
0
;
}
while
(
ptr
){
if
(
!
strcmp
(
ptr
->
deviceCode
,
deviceCode
)){
if
(
ptr
->
noActive_time
){
ptr
->
alarm_time
=
time
(
NULL
);
ptr
->
report_time
=
ptr
->
alarm_time
+
(
ptr
->
noActive_time
*
60
);
printf
(
"
\n\n
------------------>111,ptr->alarm_time=%d,ptr->report_time=%d
\n\n
"
,
ptr
->
alarm_time
,
ptr
->
report_time
);
}
else
{
printf
(
"
\n\n
------------------>000
\n\n
"
);
//...
}
flag
=
1
;
}
ptr
=
ptr
->
next
;
}
return
flag
;
}
/************************************************************
*功能描述:解析场景触发条件的具体内容,解析后保存到数据库
*输入参数:type:触发类型;
...
...
@@ -629,6 +802,10 @@ static int kk_scene_parse_trigger_detail(const char *type,const cJSON *item,cons
if
(
!
strcmp
(
compareValue
->
valuestring
,
"0"
)){
res
=
kk_scene_insert_scene_trigger
(
type
,
deviceCode
->
valuestring
,
ep
,
"MotionAlarmState"
,
compareType
->
valuestring
,
"1"
,
sceneId
,
isAnd
);
}
else
{
bodySensor_insert
(
deviceCode
->
valuestring
,
ep
,
atoi
(
compareValue
->
valuestring
),
atoi
(
sceneId
));
res
=
kk_scene_insert_scene_trigger
(
type
,
deviceCode
->
valuestring
,
ep
,
propertyName
->
valuestring
,
compareType
->
valuestring
,
compareValue
->
valuestring
,
sceneId
,
isAnd
);
}
}
else
{
res
=
kk_scene_insert_scene_trigger
(
type
,
deviceCode
->
valuestring
,
ep
,
...
...
@@ -923,6 +1100,7 @@ int kk_scene_parse_scene_action(const cJSON* str,const char *sceneId,int isUpdat
cJSON
*
propertyName
;
cJSON
*
propertyValue
;
cJSON
*
productType
;
cJSON
*
roomId
;
cJSON
*
deviceCode
;
cJSON
*
epNum
;
int
ArmingStateFlag
=
0
;
...
...
@@ -969,18 +1147,19 @@ int kk_scene_parse_scene_action(const cJSON* str,const char *sceneId,int isUpdat
propertyValue
=
cJSON_GetObjectItem
(
item
,
MSG_SCENE_PROPERTYVALUE
);
if
(
propertyValue
==
NULL
)
return
FAIL_RETURN
;
productType
=
cJSON_GetObjectItem
(
item
,
MSG_PRODUCT_TYPE_STR
);
roomId
=
cJSON_GetObjectItem
(
item
,
MSG_AREA_ROOM_ROOMID
);
if
(
productType
!=
NULL
){
delay
=
cJSON_GetObjectItem
(
item
,
MSG_SCENE_DELAY
);
if
(
delay
==
NULL
)
return
FAIL_RETURN
;
int
idelay
=
delay
->
valueint
;
if
(
propertyValue
->
type
==
cJSON_String
){
kk_subDev_set_action_by_productType
(
productType
->
valuestring
,
(
char
*
)
sceneId
,
propertyName
->
valuestring
,
kk_subDev_set_action_by_productType
(
productType
->
valuestring
,
roomId
->
valuestring
,
sceneId
,
propertyName
->
valuestring
,
propertyValue
->
valuestring
,
type
->
valuestring
,
idelay
);
}
else
{
printf
(
"1111
\r\n
"
);
char
*
str
=
cJSON_PrintUnformatted
(
propertyValue
);
printf
(
"222
\r\n
"
);
kk_subDev_set_action_by_productType
(
productType
->
valuestring
,
(
char
*
)
sceneId
,
propertyName
->
valuestring
,
kk_subDev_set_action_by_productType
(
productType
->
valuestring
,
roomId
->
valuestring
,
sceneId
,
propertyName
->
valuestring
,
str
,
type
->
valuestring
,
idelay
);
printf
(
"333
\r\n
"
);
free
(
str
);
...
...
@@ -1032,6 +1211,7 @@ int kk_scene_parse_scene_action(const cJSON* str,const char *sceneId,int isUpdat
memcpy
(
info
.
propertyName
,
propertyName
->
valuestring
,
strlen
(
propertyName
->
valuestring
));
}
if
(
propertyValue
->
type
==
cJSON_Number
){
snprintf
(
propertyValueStr
,
sizeof
(
propertyValueStr
),
"%d"
,
propertyValue
->
valueint
);
}
else
if
(
propertyValue
->
type
==
cJSON_String
){
snprintf
(
propertyValueStr
,
sizeof
(
propertyValueStr
),
"%s"
,
propertyValue
->
valuestring
);
...
...
@@ -2089,6 +2269,7 @@ int kk_scene_query_trigger_info(const char *deviceCode,cJSON *param)
int
kk_scene_iftt_check
(
const
char
*
deviceCode
,
cJSON
*
param
)
{
INFO_PRINT
(
"deviceCode:%s
\n
"
,
deviceCode
);
BodySensorTrigger_report
(
deviceCode
,
1
,
param
);
return
kk_scene_query_trigger_info
(
deviceCode
,
param
);
}
...
...
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