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
5880d2e5
Commit
5880d2e5
authored
Jan 18, 2022
by
尹佳钦
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
kk_lan新增get ccu info
parent
4f152160
Changes
11
Show whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
318 additions
and
33 deletions
+318
-33
application/klansdk/kk_data_handle.c
application/klansdk/kk_data_handle.c
+38
-0
application/klansdk/kk_lan_main.c
application/klansdk/kk_lan_main.c
+0
-1
application/klansdk/kk_opcode.h
application/klansdk/kk_opcode.h
+5
-0
midware/midware/dm/kk_dm_mng.c
midware/midware/dm/kk_dm_mng.c
+98
-0
midware/midware/dm/kk_dm_mng.h
midware/midware/dm/kk_dm_mng.h
+2
-1
midware/midware/dm/kk_dm_msg.c
midware/midware/dm/kk_dm_msg.c
+22
-1
midware/midware/dm/kk_dm_msg.h
midware/midware/dm/kk_dm_msg.h
+4
-2
midware/midware/dm/kk_linkkit.c
midware/midware/dm/kk_linkkit.c
+0
-1
midware/midware/midware.c
midware/midware/midware.c
+44
-22
midware/midware/scene/kk_scene_handle.c
midware/midware/scene/kk_scene_handle.c
+102
-5
midware/midware/scene/kk_scene_handle.h
midware/midware/scene/kk_scene_handle.h
+3
-0
No files found.
application/klansdk/kk_data_handle.c
View file @
5880d2e5
...
...
@@ -22,6 +22,7 @@
#include "kk_voice_panel_handle.h"
#include "kk_lan_node_db.h"
#include "kk_oldccu_msg.h"
#include "kk_login_handle.h"
const
char
DM_MSG_TO_MIDDWARE
[]
=
"{
\"
msgtype
\"
:
\"
%s
\"
,
\"
productCode
\"
:
\"
%s
\"
,
\"
deviceCode
\"
:
\"
%s
\"
}"
;
...
...
@@ -355,6 +356,12 @@ static void kk_handle_del_history_info(char *key)
free
(
send_data
);
}
int
kk_data_handle
(
cJSON
*
json
,
int
sockfd
)
{
cJSON
*
opcode
=
NULL
;
...
...
@@ -379,6 +386,9 @@ int kk_data_handle(cJSON *json,int sockfd)
if
(
key
!=
NULL
){
kk_handle_del_history_info
(
key
->
valuestring
);
}
}
else
if
(
strcmp
(
opcode
->
valuestring
,
GET_CCU_INFO
)
==
0
){
char
*
send_data
=
_kk_data_create
(
KK_THING_SERVICE_GET_CCU_INFO
,
"*"
,
"*"
,
"*"
);
kk_ipc_send
(
IPC_APP2MID
,
send_data
,
strlen
(
send_data
)
+
1
);
}
#ifdef VOICE_SUPPORT
else
if
(
strcmp
(
opcode
->
valuestring
,
VOICE_VOLUME_CTRL
)
==
0
){
...
...
@@ -863,6 +873,26 @@ static int kk_client_info_push_handle(cJSON *payload)
free
(
pData
);
return
0
;
}
static
int
kk_get_ccu_info_handle
(
cJSON
*
param
)
{
cJSON
*
root
=
cJSON_CreateObject
();
cJSON_AddStringToObject
(
root
,
"nodeid"
,
"*"
);
cJSON_AddStringToObject
(
root
,
"opcode"
,
"GET_CCU_INFO"
);
cJSON_AddStringToObject
(
root
,
"status"
,
"success"
);
cJSON_AddItemToObject
(
root
,
"arg"
,
param
);
char
*
data
=
cJSON_Print
(
root
);
kk_send_data_to_sdk
(
data
);
cJSON_Delete
(
root
);
free
(
data
);
return
0
;
}
void
KK_Data_FromMid
(
void
*
str
,
int
len
,
char
*
chalMark
)
{
cJSON
*
json
=
NULL
;
...
...
@@ -893,6 +923,14 @@ void KK_Data_FromMid(void* str,int len, char* chalMark)
}
msgtype
=
cJSON_GetObjectItem
(
info
,
MSG_TYPE_STR
);
//
if
(
strstr
(
msgtype
->
valuestring
,
KK_THING_SERVICE_GET_CCU_INFO_REPLY
)
!=
NULL
){
INFO_PRINT
(
"getCCUInfo_reply!!!"
);
kk_get_ccu_info_handle
(
payload
);
return
;
}
productCode
=
cJSON_GetObjectItem
(
info
,
MSG_PRODUCT_CODE_STR
);
deviceCode
=
cJSON_GetObjectItem
(
info
,
MSG_DEVICE_CODE_STR
);
...
...
application/klansdk/kk_lan_main.c
View file @
5880d2e5
...
...
@@ -253,7 +253,6 @@ int main(int argc, char* argv[])
while
(
1
){
if
(
kk_sync_timer_is_running
()
==
0
&&
g_sync_flag
!=
0
){
char
*
send_data
=
NULL
;
...
...
application/klansdk/kk_opcode.h
View file @
5880d2e5
#ifndef KK_OPCODE_H_
#define KK_OPCODE_H_
#define KK_THING_SERVICE_GET_CCU_INFO "/thing/service/getCCUInfo"
#define KK_THING_SERVICE_GET_CCU_INFO_REPLY "/thing/service/getCCUInfo_reply"
#define SYNC_MSG_TYPE "/thing/service/syncinfo"
#define SYNC_MSG_TYPE_REPLY "/thing/service/syncinfo_reply"
#define SYNCPUSH_MSG_TYPE "/thing/service/syncinfopush"
...
...
@@ -38,6 +41,8 @@
#define GET_HISTORY_MSG_TYPE "/thing/service/historyAlarm"
#define DEL_HISTORY_MSG_TYPE "/thing/service/delAlarm"
#define GET_CCU_CLIENT_INFO "GET_CCU_CLIENT_INFO"
#define GET_CCU_INFO "GET_CCU_INFO"
...
...
midware/midware/dm/kk_dm_mng.c
View file @
5880d2e5
...
...
@@ -18,6 +18,7 @@
#include "kk_area_handle.h"
#include "kk_sync_data.h"
#include "kk_motor_bind_db.h"
#include "cJSON.h"
//const char DM_URI_SYS_PREFIX[] DM_READ_ONLY = "/sys/%s/%s/";
...
...
@@ -1765,3 +1766,100 @@ int dm_mgr_subdev_delete(_IN_ char deviceCode[DEVICE_CODE_MAXLEN])
return
SUCCESS_RETURN
;
}
cJSON
*
dm_mgr_get_ccu_info
(
void
)
{
dm_mgr_ctx
*
ctx
=
_dm_mgr_get_ctx
();
dm_mgr_dev_node_t
*
node
=
NULL
;
dm_mgr_dev_node_t
*
n
=
NULL
;
kk_tsl_t
*
shadow
=
NULL
;
int
property_number
;
kk_tsl_data_t
*
properties
;
cJSON
*
root
=
cJSON_CreateObject
();
cJSON
*
args
=
cJSON_CreateObject
();
cJSON
*
hue_gw_list
=
cJSON_CreateArray
();
cJSON
*
gw_list
=
cJSON_CreateArray
();
_dm_mgr_mutex_lock
();
/* CCU */
list_for_each_entry_safe
(
node
,
n
,
&
ctx
->
dev_list
,
linked_list
,
dm_mgr_dev_node_t
)
{
if
(
node
->
dev_type
==
KK_DM_DEVICE_CCU
)
{
shadow
=
node
->
dev_shadow
;
property_number
=
shadow
->
property_number
;
for
(
int
i
=
0
;
i
<
property_number
;
i
++
){
properties
=
&
shadow
->
properties
[
i
];
if
(
properties
->
identifier
==
NULL
)
continue
;
if
(
strcmp
(
properties
->
identifier
,
"lanIPAddress"
)
==
0
){
cJSON_AddStringToObject
(
args
,
"local_ip"
,
properties
->
data_value
.
value
);
}
if
(
strcmp
(
properties
->
identifier
,
"wanState"
)
==
0
){
cJSON_AddNumberToObject
(
args
,
"wan_status"
,
properties
->
data_value
.
value_int
);
}
if
(
strcmp
(
properties
->
identifier
,
"iotCloudState"
)
==
0
){
cJSON_AddNumberToObject
(
args
,
"cloud_status"
,
properties
->
data_value
.
value_int
);
}
}
break
;
}
}
/* GW */
list_for_each_entry_safe
(
node
,
n
,
&
ctx
->
dev_list
,
linked_list
,
dm_mgr_dev_node_t
)
{
if
(
node
->
dev_type
==
KK_DM_DEVICE_GATEWAY
)
{
shadow
=
node
->
dev_shadow
;
property_number
=
shadow
->
property_number
;
cJSON
*
gw_list_item
=
cJSON_CreateObject
();
cJSON_AddStringToObject
(
gw_list_item
,
"gw_name"
,
node
->
deviceCode
);
//网关MAC。
cJSON_AddNumberToObject
(
gw_list_item
,
"gw_type"
,
2
);
//网关类型
//cJSON_AddStringToObject(gw_list_item,"download_version",);//网关下载版本
for
(
int
i
=
0
;
i
<
property_number
;
i
++
){
properties
=
&
shadow
->
properties
[
i
];
if
(
properties
->
identifier
==
NULL
)
continue
;
if
(
strcmp
(
properties
->
identifier
,
"lanIPAddress"
)
==
0
){
cJSON_AddStringToObject
(
gw_list_item
,
"gw_ip"
,
properties
->
data_value
.
value
);
//网关链路状况
}
if
(
strcmp
(
properties
->
identifier
,
"Version"
)
==
0
){
char
*
ptr
=
strchr
(
properties
->
data_value
.
value
,
'_'
);
if
(
ptr
==
NULL
){
cJSON_AddStringToObject
(
gw_list_item
,
"run_version"
,
properties
->
data_value
.
value
);
//网关当前运行版本
cJSON_AddStringToObject
(
gw_list_item
,
"download_version"
,
properties
->
data_value
.
value
);
//网关当前运行版本
}
else
{
char
verBuf
[
32
];
memset
(
verBuf
,
0
,
32
);
memcpy
(
verBuf
,
properties
->
data_value
.
value
,
ptr
-
(
char
*
)
properties
->
data_value
.
value
);
cJSON_AddStringToObject
(
gw_list_item
,
"run_version"
,
verBuf
);
//网关当前运行版本
cJSON_AddStringToObject
(
gw_list_item
,
"download_version"
,
verBuf
);
//网关当前运行版本
}
}
}
cJSON_AddItemToArray
(
gw_list
,
gw_list_item
);
}
}
_dm_mgr_mutex_unlock
();
cJSON_AddItemToObject
(
args
,
"hue_gw_list"
,
hue_gw_list
);
cJSON_AddItemToObject
(
args
,
"gw_list"
,
gw_list
);
cJSON_AddItemToObject
(
root
,
"arg"
,
args
);
cJSON_AddStringToObject
(
root
,
"nodeid"
,
"*"
);
cJSON_AddStringToObject
(
root
,
"opcode"
,
"GET_CCU_INFO"
);
cJSON_AddStringToObject
(
root
,
"status"
,
"success"
);
return
root
;
}
midware/midware/dm/kk_dm_mng.h
View file @
5880d2e5
...
...
@@ -126,5 +126,6 @@ int dm_mgr_get_gw_deviceCode(_OU_ dm_mgr_dev_node_t **node);
void
dm_mgr_resubscribe
(
void
);
int
kk_get_pid
(
char
*
productId
);
int
dm_mgr_ccu_heartbeat_cloud
(
_IN_
int
devid
);
cJSON
*
dm_mgr_get_ccu_info
(
void
);
#endif
midware/midware/dm/kk_dm_msg.c
View file @
5880d2e5
...
...
@@ -7,6 +7,9 @@
#include "kk_log.h"
#include "kk_utils.h"
#include "kk_sync_data.h"
#include "kk_scene_handle.h"
int
HAL_Get_ccuid
(
_OU_
char
*
device_code
);
const
char
DM_MSG_REQUEST
[]
DM_READ_ONLY
=
"{
\"
msgId
\"
:
\"
%s
\"
,
\"
version
\"
:
\"
%s
\"
,
\"
params
\"
:%s,
\"
time
\"
:
\"
%lld
\"
,
\"
method
\"
:
\"
%s
\"
}"
;
const
char
DM_MSG_INFO
[]
DM_READ_ONLY
=
"{
\"
msgtype
\"
:
\"
%s
\"
,
\"
productCode
\"
:
\"
%s
\"
,
\"
deviceCode
\"
:
\"
%s
\"
}"
;
...
...
@@ -21,6 +24,7 @@ void kk_sendData2app(void *info, void *payload,int isAsync){
cJSON_AddItemToObject
(
root
,
"payload"
,
payloadObj
);
buf
=
cJSON_Print
(
root
);
cJSON_Minify
(
buf
);
if
(
isAsync
){
dm_queue_msg_insert4
(
buf
);
...
...
@@ -1041,7 +1045,9 @@ static int _kk_property_handle(kk_dm_property_e_t *pro,int type,char* identifier
return
0
;
}
int
dm_msg_thing_property_post_by_identify
(
char
*
deviceCode
,
cJSON
*
params
)
int
dm_msg_thing_property_post_by_identify
(
char
*
productCode
,
char
*
deviceCode
,
cJSON
*
params
)
{
int
res
=
0
;
int
nums
=
0
;
...
...
@@ -1231,6 +1237,21 @@ int dm_msg_thing_property_post_by_identify(char *deviceCode,cJSON *params)
cJSON_AddItemToObject
(
rootData
,
propertyInfoBuf
[
idx
].
info
[
i
].
property
,
subroot
);
}
}
//红外幕帘/人体传感器
if
(
is_BodySensor_dev
(
productCode
)){
//char buf[24] = {0};
//int val = bodySensor_find(productCode,atoi(epIdx));
//snprintf(buf,sizeof(buf),"%d",val);
cJSON
*
MotionAlarmState
=
cJSON_GetObjectItem
(
rootData
,
"MotionAlarmState"
);
if
(
MotionAlarmState
->
type
==
cJSON_Number
&&
MotionAlarmState
->
valueint
==
1
){
cJSON_AddStringToObject
(
rootData
,
"BodySensorNoActive"
,
"0"
);
}
}
char
*
outstr
=
cJSON_Print
(
rootData
);
dm_mgr_upstream_thing_property_post
(
node
->
devid
,
outstr
,
strlen
(
outstr
),
0
);
cJSON_Delete
(
rootData
);
...
...
midware/midware/dm/kk_dm_msg.h
View file @
5880d2e5
...
...
@@ -145,6 +145,8 @@ typedef struct {
#define KK_THING_SERVICE_UNBIND_MOTORS_REPLY "/thing/service/unBindMotors_reply"
#define KK_THING_SERVICE_QUERY_BIND_MOTORS "/thing/service/queryBindMotors"
#define KK_THING_SERVICE_QUERY_BIND_MOTORS_REPLY "/thing/service/queryBindMotors_reply"
#define KK_THING_SERVICE_GET_CCU_INFO "/thing/service/getCCUInfo"
#define KK_THING_SERVICE_GET_CCU_INFO_REPLY "/thing/service/getCCUInfo_reply"
void
kk_sendData2app
(
void
*
info
,
void
*
payload
,
int
isAsync
);
int
dm_msg_thing_sub_register
(
_IN_
char
productCode
[
DEVICE_CODE_MAXLEN
],
_IN_
char
deviceCode
[
DEVICE_CODE_MAXLEN
],
...
...
@@ -154,7 +156,7 @@ int dm_msg_thing_topo_add(_IN_ char productCode[PRODUCT_CODE_MAXLEN],
_IN_
char
deviceCode
[
DEVICE_CODE_MAXLEN
],
_IN_
char
mac
[
DEVICE_MAC_MAXLEN
],
_OU_
dm_msg_request_t
*
request
);
int
dm_msg_ccu_property_post
(
dm_mgr_dev_node_t
*
node
);
int
dm_msg_thing_property_post_by_identify
(
char
*
deviceCode
,
cJSON
*
params
);
int
dm_msg_thing_topo_delete
(
_IN_
char
deviceCode
[
DEVICE_CODE_MAXLEN
],
_OU_
dm_msg_request_t
*
request
);
int
dm_msg_thing_topo_get
(
_OU_
dm_msg_request_t
*
request
);
int
dm_msg_thing_list_found
(
_IN_
char
deviceCode
[
DEVICE_CODE_MAXLEN
],
...
...
@@ -182,7 +184,7 @@ int dm_msg_scene_event_post(const char *identifier,kk_tsl_t *dev_shadow,const ch
int
dm_msg_thing_service_post
(
const
char
*
deviceCode
,
const
char
*
identifier
);
int
dm_msg_thing_property_post_all
(
char
*
deviceCode
);
int
dm_msg_ccu_property_post
(
dm_mgr_dev_node_t
*
node
);
int
dm_msg_thing_property_post_by_identify
(
char
*
deviceCode
,
cJSON
*
params
);
int
dm_msg_thing_property_post_by_identify
(
char
*
productCode
,
char
*
deviceCode
,
cJSON
*
params
);
int
kk_msg_execute_property_set
(
const
char
*
productCode
,
const
char
*
deviceCode
,
const
char
*
params
,
const
char
*
fatherDeviceCode
);
int
kk_msg_execute_property_get
(
dm_mgr_dev_node_t
*
node
);
int
kk_msg_parse_productType
(
char
*
str
,
char
*
productType
);
...
...
midware/midware/dm/kk_linkkit.c
View file @
5880d2e5
...
...
@@ -1400,7 +1400,6 @@ static int kk_service_getScreenInfo_handle(cJSON *inforoot,cJSON *param,cJSON *m
cJSON_AddItemToObject
(
payload
,
"params"
,
paramInfo
);
char
*
payload11
=
cJSON_Print
(
payload
);
printf
(
"------------------------------>payload11:%s
\n
"
,
payload11
);
kk_sendData2app
(
infff
,
payload11
,
0
);
free
(
payload11
);
free
(
infff
);
...
...
midware/midware/midware.c
View file @
5880d2e5
...
...
@@ -791,6 +791,33 @@ int kk_dm_device_subdev_filter(char *data)
}
static
int
kk_get_ccu_info_reply
(
cJSON
*
param
,
char
*
msgType
)
{
int
res
=
0
;
int
i
=
0
,
num
=
0
;
SensorType_t
*
pList
=
NULL
;
char
version
[
VERSION_MAXLEN
]
=
{
0
};
if
(
param
==
NULL
){
return
INVALID_PARAMETER
;
}
cJSON
*
info
=
cJSON_CreateObject
();
cJSON_AddStringToObject
(
info
,
MSG_TYPE_STR
,
msgType
);
char
*
infff
=
cJSON_Print
(
info
);
cJSON
*
payload
=
cJSON_CreateObject
();
cJSON_AddItemToObject
(
payload
,
"params"
,
param
);
char
*
payload11
=
cJSON_Print
(
payload
);
kk_sendData2app
(
infff
,
payload11
,
0
);
free
(
payload11
);
free
(
infff
);
cJSON_Delete
(
payload
);
cJSON_Delete
(
info
);
return
res
;
}
/************************************************************
*功能描述:nanomsg数据回调,app to mid
*输入参数:data:从app 层发来的数据
...
...
@@ -821,6 +848,7 @@ void mid_cb(void* data, int len){
}
deviceCode
=
cJSON_GetObjectItem
(
info_root
,
MSG_DEVICE_CODE_STR
);
type
=
cJSON_GetObjectItem
(
info_root
,
MSG_TYPE_STR
);
if
(
deviceCode
==
NULL
||
type
==
NULL
){
ERROR_PRINT
(
" params [%s] or [%s] can't find
\n
"
,
MSG_DEVICE_CODE_STR
,
MSG_TYPE_STR
);
cJSON_Delete
(
json
);
...
...
@@ -832,6 +860,15 @@ void mid_cb(void* data, int len){
cJSON_Delete
(
json
);
return
;
}
if
(
strcmp
(
type
->
valuestring
,
KK_THING_SERVICE_GET_CCU_INFO
)
==
0
){
cJSON
*
param
=
dm_mgr_get_ccu_info
();
kk_get_ccu_info_reply
(
param
,
KK_THING_SERVICE_GET_CCU_INFO_REPLY
);
cJSON_Delete
(
json
);
return
;
}
/*****属性设置需要先检测设置参数是否超出物模型给定范围*******/
if
(
strcmp
(
type
->
valuestring
,
KK_THING_SERVICE_PROPERTY_SET
)
==
0
){
res
=
kk_property_set_data_check
(
payload
,
deviceCode
->
valuestring
);
...
...
@@ -1163,17 +1200,6 @@ static int kk_subDevice_property_handle(cJSON *info,cJSON *payload,char *deviceC
free
(
infff
);
return
0
;
}
static
int
_kk_subDevice_online_to_app
(
cJSON
*
info
,
cJSON
*
payload
)
{
char
*
payload11
=
cJSON_Print
(
payload
);
char
*
infff
=
cJSON_Print
(
info
);
printf
(
"------------------------payload11:%s
\n
"
,
payload11
);
printf
(
"------------------------infff:%s
\n
"
,
infff
);
kk_sendData2app
(
infff
,
payload11
,
0
);
free
(
payload11
);
free
(
infff
);
return
0
;
}
static
int
kk_indoorAir_online_handle
(
dm_mgr_dev_node_t
*
node
,
char
*
deviceCode
,
int
epNum
)
{
int
idx
=
0
;
...
...
@@ -1345,17 +1371,14 @@ void kk_platMsg_handle(void* data, char* chalMark){
cJSON
*
epNumJson
=
cJSON_GetObjectItem
(
jsonPay
,
"epNum"
);
if
(
epNumJson
==
NULL
)
goto
error
;
kk_indoorAir_online_handle
(
search_node
,
devCode
->
valuestring
,
epNumJson
->
valueint
);
_kk_subDevice_online_to_app
(
info
,
payload
);
}
else
if
(
strcmp
(
search_node
->
productType
,
KK_DM_AIR_SWITCH_GATEWAY_TYPE
)
==
0
){
cJSON
*
epNumJson
=
cJSON_GetObjectItem
(
jsonPay
,
"epNum"
);
if
(
epNumJson
==
NULL
)
goto
error
;
kk_subAirSwitch_online_handle
(
search_node
,
devCode
->
valuestring
,
epNumJson
->
valueint
);
_kk_subDevice_online_to_app
(
info
,
payload
);
}
else
if
(
strcmp
(
search_node
->
productType
,
KK_DM_FRESHAIR_GATEWAY_TYPE
)
==
0
){
cJSON
*
epNumJson
=
cJSON_GetObjectItem
(
jsonPay
,
"epNum"
);
if
(
epNumJson
==
NULL
)
goto
error
;
kk_subFreshair_online_handle
(
search_node
,
devCode
->
valuestring
,
epNumJson
->
valueint
);
_kk_subDevice_online_to_app
(
info
,
payload
);
}
}
else
if
(
strstr
(
msgType
->
valuestring
,
KK_THING_TOPO_BATCH_ADD_MSG
)
!=
NULL
){
...
...
@@ -1405,16 +1428,13 @@ void kk_platMsg_handle(void* data, char* chalMark){
}
char
*
outstr
=
cJSON_Print
(
payload
);
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"
)){
//如果带version,代表的是快照信息,快照信息不需要触发iftt
cJSON
*
version
=
cJSON_GetObjectItem
(
jsonPay
,
"version"
);
if
(
version
==
NULL
){
dm_msg_thing_property_post_by_identify
(
proCode
->
valuestring
,
info_dcode
->
valuestring
,
jsonPay
);
if
(
is_BodySensor_dev
(
proCode
->
valuestring
)
==
0
){
kk_scene_iftt_check
(
info_dcode
->
valuestring
,
jsonPay
);
}
}
free
(
outstr
);
}
}
else
if
(
strstr
(
msgType
->
valuestring
,
KK_THING_TOPO_DELETE_MSG
)
!=
NULL
){
...
...
@@ -1979,5 +1999,7 @@ int main(const int argc, const char **argv)
kk_platMsg_dispatch
();
BodySensorTrigger_check
();
}
}
midware/midware/scene/kk_scene_handle.c
View file @
5880d2e5
...
...
@@ -606,6 +606,19 @@ typedef struct BodySensorNoActive{
static
BodySensorNoActive
*
pBodySensor
=
NULL
;
int
is_BodySensor_dev
(
const
char
*
productCode
)
{
if
(
productCode
!=
NULL
){
if
(
strcmp
(
productCode
,
"3053"
)
==
0
||
strcmp
(
productCode
,
"3049"
)
==
0
||
strcmp
(
productCode
,
"3043"
)
==
0
||
strcmp
(
productCode
,
"3042"
)
==
0
){
return
1
;
}
}
return
0
;
}
int
bodySensor_delete
(
int
scene_id
)
{
BodySensorNoActive
*
ptr
=
NULL
,
*
pre
=
NULL
;
...
...
@@ -639,6 +652,8 @@ int bodySensor_insert(const char *deviceCode,int ep,int noActive_time,int scene_
if
(
deviceCode
==
NULL
){
return
0
;
}
INFO_PRINT
(
"
\n\n
---------------->BodySensorNoActive insert<----------------
\n\n
"
);
INFO_PRINT
(
"deviceCode=%s,ep=%d,noActive_time=%d,scene_id=%d
\n
"
,
deviceCode
,
ep
,
noActive_time
,
scene_id
);
if
(
pBodySensor
==
NULL
){
pBodySensor
=
(
BodySensorNoActive
*
)
malloc
(
sizeof
(
BodySensorNoActive
));
...
...
@@ -648,6 +663,11 @@ int bodySensor_insert(const char *deviceCode,int ep,int noActive_time,int scene_
pBodySensor
->
noActive_time
=
noActive_time
;
pBodySensor
->
scene_id
=
scene_id
;
if
(
noActive_time
){
pBodySensor
->
alarm_time
=
time
(
NULL
);
pBodySensor
->
report_time
=
pBodySensor
->
alarm_time
+
(
pBodySensor
->
noActive_time
*
60
);
}
}
else
{
ptr
=
pBodySensor
;
while
(
ptr
){
...
...
@@ -661,12 +681,36 @@ int bodySensor_insert(const char *deviceCode,int ep,int noActive_time,int scene_
ptr
->
ep
=
ep
;
ptr
->
noActive_time
=
noActive_time
;
ptr
->
scene_id
=
scene_id
;
if
(
noActive_time
){
ptr
->
alarm_time
=
time
(
NULL
);
ptr
->
report_time
=
ptr
->
alarm_time
+
(
ptr
->
noActive_time
*
60
);
}
pre
->
next
=
ptr
;
}
return
1
;
}
int
bodySensor_find
(
const
char
*
deviceCode
,
int
ep
)
{
BodySensorNoActive
*
ptr
=
NULL
;
if
(
deviceCode
==
NULL
){
return
0
;
}
ptr
=
pBodySensor
;
while
(
ptr
){
if
(
ptr
->
ep
==
ep
&&
strcmp
(
deviceCode
,
ptr
->
deviceCode
)
==
0
){
return
ptr
->
noActive_time
;
}
ptr
=
ptr
->
next
;
}
return
0
;
}
int
bodySensor_load
(
void
)
{
int
res
=
FAIL_RETURN
;
...
...
@@ -696,7 +740,6 @@ int bodySensor_load(void)
}
int
kk_scene_query_body_sensor_trigger_info
(
const
char
*
deviceCode
,
int
scene_id
)
{
int
res
=
FAIL_RETURN
;
...
...
@@ -741,18 +784,67 @@ int kk_scene_query_body_sensor_trigger_info(const char *deviceCode,int scene_id)
}
void
BodySensorNoActive_report
(
char
*
deviceCode
,
int
noAct
)
{
char
buf
[
256
]
=
{
0
};
char
val
[
12
]
=
{
0
};
char
msgId
[
32
]
=
{
0
};
dm_mgr_dev_node_t
*
node
=
NULL
;
int
res
=
dm_mgr_get_device_by_devicecode
(
deviceCode
,
&
node
);
if
(
res
!=
SUCCESS_RETURN
){
return
;
}
cJSON
*
payload
=
cJSON_CreateObject
();
cJSON
*
params
=
cJSON_CreateObject
();
cJSON_AddStringToObject
(
payload
,
"method"
,
"thing.event.property.post"
);
iotx_report_id
(
msgId
);
cJSON_AddStringToObject
(
payload
,
"msgId"
,
msgId
);
snprintf
(
val
,
sizeof
(
val
),
"%d"
,
noAct
);
cJSON_AddStringToObject
(
params
,
"BodySensorNoActive"
,
val
);
cJSON_AddNumberToObject
(
params
,
"MotionAlarmState"
,
0
);
//cJSON_AddNumberToObject(params,"Battery", 0);
//cJSON_AddNumberToObject(params,"DismantleState", 0);
cJSON_AddItemToObject
(
payload
,
"params"
,
params
);
cJSON_AddNumberToObject
(
payload
,
"time"
,
HAL_GetTime_ms
());
cJSON_AddStringToObject
(
payload
,
"version"
,
"1.0"
);
cJSON
*
info
=
cJSON_CreateObject
();
cJSON_AddStringToObject
(
info
,
MSG_TYPE_STR
,
"/thing/event/property/post"
);
cJSON_AddStringToObject
(
info
,
MSG_DEVICE_CODE_STR
,
node
->
deviceCode
);
cJSON_AddStringToObject
(
info
,
MSG_PRODUCT_CODE_STR
,
node
->
productCode
);
char
*
infff
=
cJSON_Print
(
info
);
char
*
payload11
=
cJSON_Print
(
payload
);
kk_sendData2app
(
infff
,
payload11
,
0
);
free
(
payload11
);
free
(
infff
);
cJSON_Delete
(
payload
);
cJSON_Delete
(
info
);
}
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
"
);
DEBUG_PRINT
(
"
\n\n
-------
BodySensorNoActive report----------->
\n\n
"
);
kk_scene_query_body_sensor_trigger_info
(
ptr
->
deviceCode
,
ptr
->
scene_id
);
//上报
BodySensorNoActive_report
(
ptr
->
deviceCode
,
ptr
->
noActive_time
);
}
ptr
=
ptr
->
next
;
}
...
...
@@ -772,12 +864,17 @@ int BodySensorTrigger_report(const char *deviceCode,int ep,cJSON *param)
while
(
ptr
){
if
(
!
strcmp
(
ptr
->
deviceCode
,
deviceCode
)){
if
(
ptr
->
noActive_time
){
if
(
ptr
->
report_time
){
INFO_PRINT
(
"
\n\n
------------------>BodySensorNoActive time update
\n
"
);
}
else
{
INFO_PRINT
(
"
\n\n
------------------>BodySensorNoActive time calc
\n
"
);
}
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
);
INFO_PRINT
(
"
\n\n
ptr->alarm_time=%d,ptr->report_time=%d
\n\n
"
,
ptr
->
alarm_time
,
ptr
->
report_time
);
}
else
{
printf
(
"
\n\n
------------------>000
\n\n
"
);
INFO_PRINT
(
"
\n\n
------------------>BodySensorNoActive time 0
\n\n
"
);
//...
}
flag
=
1
;
...
...
midware/midware/scene/kk_scene_handle.h
View file @
5880d2e5
...
...
@@ -85,5 +85,8 @@ int kk_scene_parse_scene_action(const cJSON* str,const char *sceneId,int isUpdat
int
kk_scene_execute_quickpanel
(
const
char
*
buttonId
,
char
*
deviceCode
);
int
kk_scene_action_add
(
const
char
*
gwdeviceCode
,
const
char
*
sceneId
,
kk_scene_action_detail_t
detail
);
int
BodySensorTrigger_check
(
void
);
int
bodySensor_find
(
const
char
*
deviceCode
,
int
ep
);
int
is_BodySensor_dev
(
const
char
*
productCode
);
#endif
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