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
965f71af
Commit
965f71af
authored
Nov 24, 2020
by
chen.weican
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
【修改内容】1,增加场景对于LIGHT和CURTAIN设备类型的支持;2,增加CCU主机版本号定义;3,其他细节修改
【提交人】陈伟灿
parent
524d27d1
Changes
13
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
550 additions
and
564 deletions
+550
-564
application/kcloud/kcloud_main.c
application/kcloud/kcloud_main.c
+1
-0
application/kcloud/mqtt_api.c
application/kcloud/mqtt_api.c
+1
-0
common/api/ccu_ver.h
common/api/ccu_ver.h
+7
-0
common/api/com_api.h
common/api/com_api.h
+2
-1
common/api/tcp_channel.c
common/api/tcp_channel.c
+67
-66
common/hal/HAL_OS_linux.c
common/hal/HAL_OS_linux.c
+3
-4
midware/midware/dm/kk_dm_msg.c
midware/midware/dm/kk_dm_msg.c
+8
-2
midware/midware/dm/kk_linkkit.c
midware/midware/dm/kk_linkkit.c
+277
-384
midware/midware/dm/kk_sub_db.c
midware/midware/dm/kk_sub_db.c
+76
-61
midware/midware/history/kk_history_db.c
midware/midware/history/kk_history_db.c
+60
-24
midware/midware/midware.c
midware/midware/midware.c
+6
-4
midware/midware/scene/kk_scene_handle.c
midware/midware/scene/kk_scene_handle.c
+41
-9
platform/zigbee/app/builder/Z3GatewayHost/ZB/dev_config_table/device_1035.json
...uilder/Z3GatewayHost/ZB/dev_config_table/device_1035.json
+1
-9
No files found.
application/kcloud/kcloud_main.c
View file @
965f71af
...
...
@@ -50,6 +50,7 @@ static int mqtt_start(void)
//INFO_PRINT("i am send now\n");
//KK_MQTT_SendMsg(TOPIC,"hello my world",2);
}
//INFO_PRINT(" %s \n",testStr);
}
INFO_PRINT
(
"MQTTAsync_destroy
\n
"
);
...
...
application/kcloud/mqtt_api.c
View file @
965f71af
...
...
@@ -264,6 +264,7 @@ int KK_MQTT_SendMsg(char *topicName,const char *payload)
pubmsg
.
qos
=
QOS
;
pubmsg
.
retained
=
0
;
//cJSON_Minify(payload);
INFO_PRINT
(
"mqtt send payload :%s.
\n
"
,
payload
);
if
((
rc
=
MQTTAsync_sendMessage
(
s_Client
,
topicName
,
&
pubmsg
,
&
opts
))
!=
MQTTASYNC_SUCCESS
)
...
...
common/api/ccu_ver.h
0 → 100644
View file @
965f71af
#ifndef _KK_CCU_VER_H_
#define _KK_CCU_VER_H_
#define KK_CCU_VERSION "1.1.0"
#endif
common/api/com_api.h
View file @
965f71af
...
...
@@ -28,6 +28,7 @@ typedef enum {
IPC_UNDEF
}
ipc_type
;
#define MSG_COMMON_MSGID "msgId"
#define MSG_TYPE_STR "msgtype"
#define MSG_PRODUCT_TYPE_STR "productType"
#define MSG_PRODUCT_CODE_STR "productCode"
...
...
common/api/tcp_channel.c
View file @
965f71af
This diff is collapsed.
Click to expand it.
common/hal/HAL_OS_linux.c
View file @
965f71af
...
...
@@ -28,7 +28,7 @@
#include <time.h>
#include <signal.h>
#include "kk_product.h"
//#include "iot_import
.h"
#include "ccu_ver
.h"
char
g_product_type
[
PRODUCT_TYPE_LEN
]
=
{
0
};
char
g_product_code
[
PRODUCT_CODE_LEN
]
=
{
0
};
...
...
@@ -295,10 +295,9 @@ int HAL_GetDevice_Code(_OU_ char *device_code)
}
int
HAL_GetVersion
(
_OU_
char
*
version
)
{
char
*
ver
=
"test-1.0.0"
;
int
len
=
strlen
(
ver
);
int
len
=
strlen
(
KK_CCU_VERSION
);
memset
(
version
,
0x0
,
VERSION_MAXLEN
);
strncpy
(
version
,
ver
,
len
);
strncpy
(
version
,
KK_CCU_VERSION
,
len
);
version
[
len
]
=
'\0'
;
return
strlen
(
version
);
}
...
...
midware/midware/dm/kk_dm_msg.c
View file @
965f71af
...
...
@@ -738,7 +738,7 @@ int dm_msg_thing_property_set_reply(char deviceCode[DEVICE_CODE_MAXLEN],char *pa
dm_msg_response
(
&
request
,
&
response
,
"{}"
,
strlen
(
"{}"
),
NULL
);
return
SUCCESS_RETURN
;
}
int
dm_msg_thing_event_post
(
const
char
*
deviceCode
,
const
char
*
identifier
)
int
dm_msg_thing_event_post
(
const
char
*
deviceCode
,
const
char
*
identifier
,
const
char
*
msgId
)
{
int
res
=
0
;
int
nums
=
0
;
...
...
@@ -774,7 +774,13 @@ int dm_msg_thing_event_post(const char *deviceCode, const char *identifier)
ERROR_PRINT
(
"dm_msg_thing_event_post failed
\n
"
);
return
FAIL_RETURN
;
}
if
(
msgId
!=
NULL
){
dm_mgr_upstream_thing_event_post_ex
(
node
->
devid
,
identifier
,
strlen
(
identifier
),
method
,
payload
,
strlen
(
payload
),
msgId
);
}
else
{
dm_mgr_upstream_thing_event_post
(
node
->
devid
,
identifier
,
strlen
(
identifier
),
method
,
payload
,
strlen
(
payload
));
}
free
(
method
);
method
=
NULL
;
free
(
payload
);
...
...
midware/midware/dm/kk_linkkit.c
View file @
965f71af
This diff is collapsed.
Click to expand it.
midware/midware/dm/kk_sub_db.c
View file @
965f71af
...
...
@@ -573,13 +573,28 @@ int kk_subDev_set_action_by_productType(const char *productType,const char *scen
int
idx
=
0
;
int
gw_support_scene
=
0
;
kk_tsl_data_t
*
property
=
NULL
;
int
k
=
0
,
count
=
0
;
char
typeArray
[
10
][
32
]
=
{
0
};
if
(
productType
==
NULL
){
ERROR_PRINT
(
"ERROR [%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
return
INVALID_PARAMETER
;
}
sqlCmd
=
sqlite3_mprintf
(
searchCmd
,
productType
);
//switch jsut for test
INFO_PRINT
(
"kk_subDev_set_action_by_productType called!!!
\n
"
);
if
(
!
strcmp
(
productType
,
"CURTAIN"
)){
memcpy
(
typeArray
[
0
],
"curtain"
,
strlen
(
"curtain"
));
count
=
1
;
}
else
if
(
!
strcmp
(
productType
,
"LIGHT"
)){
memcpy
(
typeArray
[
0
],
"switch"
,
strlen
(
"switch"
));
memcpy
(
typeArray
[
1
],
"light"
,
strlen
(
"light"
));
count
=
2
;
}
else
{
INFO_PRINT
(
"kk_subDev_set_action_by_productType wrong type!!!
\n
"
);
}
for
(
k
=
0
;
k
<
count
;
k
++
){
sqlCmd
=
sqlite3_mprintf
(
searchCmd
,
typeArray
[
k
]);
//curtain type
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
){
...
...
@@ -594,8 +609,7 @@ int kk_subDev_set_action_by_productType(const char *productType,const char *scen
else
{
gw_support_scene
=
0
;
}
if
(
!
strcmp
(
productType
,
"switch"
)){
if
(
!
strcmp
(
typeArray
[
k
],
"switch"
)){
for
(
idx
=
0
;
idx
<
node
->
dev_shadow
->
property_number
;
idx
++
){
property
=
(
kk_tsl_data_t
*
)(
node
->
dev_shadow
->
properties
+
idx
);
if
(
property
==
NULL
){
...
...
@@ -643,6 +657,7 @@ int kk_subDev_set_action_by_productType(const char *productType,const char *scen
}
sqlite3_finalize
(
stmt
);
sqlite3_free
(
sqlCmd
);
}
return
SUCCESS_RETURN
;
}
...
...
midware/midware/history/kk_history_db.c
View file @
965f71af
...
...
@@ -22,7 +22,7 @@
全局变量定义
*************************************************************/
extern
sqlite3
*
g_kk_pDb
;
#define KK_HISTORY_MAX_COUNT
2
00
#define KK_HISTORY_MAX_COUNT
1
00
/*************************************************************
函数实现
*************************************************************/
...
...
@@ -138,6 +138,36 @@ int kk_history_delete_by_recordtime(const char *table,time_t time)
return
SUCCESS_RETURN
;
}
/*查找数据个数*/
int
sqlite_find_count
(
void
)
{
kk_history_ctx_t
*
ctx
=
_kk_history_get_ctx
();
char
*
sql
=
"select count(recordtime) from SensorHistoryInfo;"
;
sqlite3_stmt
*
stmt
=
NULL
;
/*将sql语句转换为sqlite3可识别的语句,返回指针到stmt*/
int
res
=
sqlite3_prepare_v2
(
ctx
->
pDb
,
sql
,
strlen
(
sql
),
&
stmt
,
NULL
);
if
(
SQLITE_OK
!=
res
||
NULL
==
stmt
)
{
goto
err1
;
}
/*执行准备好的sqlite3语句*/
res
=
sqlite3_step
(
stmt
);
if
(
res
!=
SQLITE_ROW
)
{
goto
err2
;
}
int
count
=
sqlite3_column_int
(
stmt
,
0
);
if
(
count
<
0
)
{
goto
err2
;
}
INFO_PRINT
(
"count = %d
\n
"
,
count
);
sqlite3_finalize
(
stmt
);
return
count
;
err2:
sqlite3_finalize
(
stmt
);
err1:
return
-
1
;
}
/************************************************************
*功能描述: 插入传感器警告类信息到数据库
*输入参数: deviceCode:设备deviceCode
...
...
@@ -156,6 +186,7 @@ int kk_history_insert_sensor_info(const char* deviceCode,const char* identifier,
char
*
zErrMsg
=
0
;
sqlite3_stmt
*
stmt
;
time_t
rtime
=
0
;
int
count
=
0
;
const
char
*
insertCmd
=
"insert into SensorHistoryInfo (deviceCode, identifier,value,recordtime) \
values ('%s','%s','%s','%d');"
;
...
...
@@ -172,18 +203,21 @@ int kk_history_insert_sensor_info(const char* deviceCode,const char* identifier,
return
FAIL_RETURN
;
}
sqlite3_free
(
sqlCmd
);
count
=
sqlite_find_count
();
if
(
count
>
KK_HISTORY_MAX_COUNT
)
{
/*按时间删除超过最大数量的记录*/
const
char
*
selectCmd
=
"select * from SensorHistoryInfo order by recordtime desc limit (select count(recordtime) from SensorHistoryInfo) offset %d"
;
sqlCmd
=
sqlite3_mprintf
(
selectCmd
,
KK_HISTORY_MAX_COUNT
);
sqlite3_prepare_v2
(
ctx
->
pDb
,
sqlCmd
,
strlen
(
sqlCmd
),
&
stmt
,
NULL
);
const
char
*
selectCmd
=
"select * from SensorHistoryInfo order by recordtime desc"
;
sqlite3_prepare_v2
(
ctx
->
pDb
,
selectCmd
,
strlen
(
selectCmd
),
&
stmt
,
NULL
);
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
rtime
=
sqlite3_column_int
(
stmt
,
DB_SENSOR_RECORDTIME
);
kk_history_delete_by_recordtime
(
"SensorHistoryInfo"
,
rtime
);
INFO_PRINT
(
"delete rtime:%d
\n
"
,
rtime
);
break
;
}
sqlite3_finalize
(
stmt
);
sqlite3_free
(
sqlCmd
);
}
_kk_history_unlock
();
return
SUCCESS_RETURN
;
}
...
...
@@ -208,6 +242,7 @@ int kk_history_insert_Outlet_info(const char* deviceCode,const char* power,const
char
*
zErrMsg
=
0
;
sqlite3_stmt
*
stmt
;
time_t
rtime
=
0
;
int
count
=
0
;
const
char
*
insertCmd
=
"insert into OutletHistoryInfo (deviceCode, power,metering,recordtime) \
values ('%s','%s','%s','%d');"
;
...
...
@@ -224,18 +259,19 @@ int kk_history_insert_Outlet_info(const char* deviceCode,const char* power,const
return
FAIL_RETURN
;
}
sqlite3_free
(
sqlCmd
);
count
=
sqlite_find_count
();
if
(
count
>
KK_HISTORY_MAX_COUNT
){
/*按时间删除超过最大数量的记录*/
const
char
*
selectCmd
=
"select * from OutletHistoryInfo order by recordtime desc limit (select count(recordtime) from OutletHistoryInfo) offset %d"
;
sqlCmd
=
sqlite3_mprintf
(
selectCmd
,
KK_HISTORY_MAX_COUNT
);
sqlite3_prepare_v2
(
ctx
->
pDb
,
sqlCmd
,
strlen
(
sql
Cmd
),
&
stmt
,
NULL
);
//
const char *selectCmd = "select * from OutletHistoryInfo order by recordtime desc limit (select count(recordtime) from OutletHistoryInfo) offset %d";
const
char
*
selectCmd
=
"select * from OutletHistoryInfo order by recordtime desc"
;
sqlite3_prepare_v2
(
ctx
->
pDb
,
selectCmd
,
strlen
(
select
Cmd
),
&
stmt
,
NULL
);
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
rtime
=
sqlite3_column_int
(
stmt
,
DB_OUTLET_RECORDTIME
);
kk_history_delete_by_recordtime
(
"OutletHistoryInfo"
,
rtime
);
break
;
}
sqlite3_finalize
(
stmt
);
sqlite3_free
(
sqlCmd
);
}
_kk_history_unlock
();
return
SUCCESS_RETURN
;
}
...
...
midware/midware/midware.c
View file @
965f71af
...
...
@@ -428,7 +428,6 @@ void kk_platMsg_handle(void* data, char* chalMark){
ERROR_PRINT
(
"info or payload params error
\n
"
);
goto
error
;
}
msgType
=
cJSON_GetObjectItem
(
info
,
MSG_TYPE_STR
);
info_dcode
=
cJSON_GetObjectItem
(
info
,
MSG_DEVICE_CODE_STR
);
if
(
msgType
==
NULL
||
info_dcode
==
NULL
){
...
...
@@ -489,7 +488,10 @@ void kk_platMsg_handle(void* data, char* chalMark){
if
(
jsonPay
==
NULL
)
goto
error
;
char
*
outstr
=
cJSON_Print
(
payload
);
dm_mgr_dev_node_t
*
search_node
=
NULL
;
dm_mgr_get_device_by_devicecode
(
info_dcode
->
valuestring
,
&
search_node
);
res
=
dm_mgr_get_device_by_devicecode
(
info_dcode
->
valuestring
,
&
search_node
);
if
(
res
<
SUCCESS_RETURN
)
{
goto
error
;
}
if
(
search_node
->
isOffline
){
/*如果是离线状态,上报在线给云端*/
dm_mgr_set_dev_onoffline
(
search_node
,
0
);
...
...
@@ -606,7 +608,7 @@ void kk_platMsg_handle(void* data, char* chalMark){
kk_history_insert_sensor_info
(
info_dcode
->
valuestring
,
eventItem
->
identifier
,
valueBuf
,
HAL_GetTime
());
}
INFO_PRINT
(
"kk_platMsg_handle data: event post
\n
"
);
dm_msg_thing_event_post
(
info_dcode
->
valuestring
,
eventItem
->
identifier
);
dm_msg_thing_event_post
(
info_dcode
->
valuestring
,
eventItem
->
identifier
,
NULL
);
kk_scene_iftt_check
(
info_dcode
->
valuestring
,
jsonPay
);
}
...
...
@@ -622,7 +624,7 @@ void kk_platMsg_handle(void* data, char* chalMark){
kk_history_insert_sensor_info
(
info_dcode
->
valuestring
,
eventItem
->
identifier
,
""
,
HAL_GetTime
());
}
//kk_tsl_set_value(kk_tsl_set_event_output_value,dev_shadow,eventItem->identifier,&itemStr->valueint,NULL);
dm_msg_thing_event_post
(
info_dcode
->
valuestring
,
eventItem
->
identifier
);
dm_msg_thing_event_post
(
info_dcode
->
valuestring
,
eventItem
->
identifier
,
NULL
);
}
}
...
...
midware/midware/scene/kk_scene_handle.c
View file @
965f71af
...
...
@@ -662,6 +662,7 @@ static int kk_scene_parse_repeatday(cJSON *repeatday)
if
(
repeatday
==
NULL
){
return
INVALID_PARAMETER
;
}
if
(
repeatday
->
type
==
cJSON_Array
){
int
array_size
=
cJSON_GetArraySize
(
repeatday
);
INFO_PRINT
(
"array_size:%d
\n
"
,
array_size
);
if
(
array_size
==
0
){
...
...
@@ -674,6 +675,37 @@ static int kk_scene_parse_repeatday(cJSON *repeatday)
}
}
}
}
else
if
(
repeatday
->
type
==
cJSON_String
){
if
(
strlen
(
repeatday
->
valuestring
)
==
0
){
weekflag
=
0
;
}
else
{
if
(
strstr
(
repeatday
->
valuestring
,
","
)
==
NULL
){
weekflag
=
1
<<
(
atoi
(
repeatday
->
valuestring
)
-
1
);
}
else
{
char
*
tmp
=
repeatday
->
valuestring
;
char
*
ptmp
=
NULL
;
char
weekStr
[
4
]
=
{
0
};
while
(
1
){
memset
(
weekStr
,
0x0
,
sizeof
(
weekStr
));
ptmp
=
strstr
(
tmp
,
","
);
if
(
ptmp
!=
NULL
){
strncpy
(
weekStr
,
tmp
,
ptmp
-
tmp
);
weekflag
=
weekflag
|
(
1
<<
(
atoi
(
weekStr
)
-
1
));
}
else
{
strncpy
(
weekStr
,
tmp
,
1
);
weekflag
=
weekflag
|
(
1
<<
(
atoi
(
weekStr
)
-
1
));
break
;
}
tmp
=
ptmp
+
1
;
}
}
}
}
INFO_PRINT
(
"kk_scene_parse_repeatday weekflag:%d!!!
\n
"
,
weekflag
);
return
weekflag
;
...
...
platform/zigbee/app/builder/Z3GatewayHost/ZB/dev_config_table/device_1035.json
View file @
965f71af
...
...
@@ -7,7 +7,7 @@
"cluster"
:
"0x0500"
,
"attribute"
:
"0x0002"
,
"iasStatusMask"
:
"0x0001"
,
"reportFunc"
:
"
kk_tsl_report_iasZoneStatus
"
,
"reportFunc"
:
""
,
"controlFunc"
:
""
},{
"identity"
:
"Battery"
,
...
...
@@ -17,14 +17,6 @@
"iasStatusMask"
:
"0x0008"
,
"reportFunc"
:
"kk_tsl_report_battery"
,
"controlFunc"
:
""
},{
"identity"
:
"motionAlarm"
,
"endpoint"
:
1
,
"cluster"
:
"0x0500"
,
"attribute"
:
"0x0002"
,
"iasStatusMask"
:
"0x0001"
,
"reportFunc"
:
""
,
"controlFunc"
:
""
},{
"identity"
:
"BatteryAlarm"
,
"endpoint"
:
1
,
...
...
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