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
391a1271
Commit
391a1271
authored
Aug 18, 2021
by
chen.weican
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
【修改内容】增加空调网关支持
【提交人】陈伟灿
parent
52797464
Changes
21
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
21 changed files
with
869 additions
and
214 deletions
+869
-214
application/klansdk/kk_data_handle.c
application/klansdk/kk_data_handle.c
+264
-30
application/klansdk/kk_data_mng.h
application/klansdk/kk_data_mng.h
+1
-0
application/klansdk/kk_lan_node_db.h
application/klansdk/kk_lan_node_db.h
+1
-1
application/klansdk/kk_login_handle.c
application/klansdk/kk_login_handle.c
+57
-89
application/klansdk/kk_login_handle.h
application/klansdk/kk_login_handle.h
+1
-1
application/klansdk/kk_newccu_msg.c
application/klansdk/kk_newccu_msg.c
+7
-4
application/klansdk/kk_oldccu_msg.c
application/klansdk/kk_oldccu_msg.c
+10
-26
application/klansdk/kk_opcode.h
application/klansdk/kk_opcode.h
+5
-3
midware/midware/dm/kk_dm_mng.c
midware/midware/dm/kk_dm_mng.c
+32
-7
midware/midware/dm/kk_dm_mng.h
midware/midware/dm/kk_dm_mng.h
+1
-1
midware/midware/dm/kk_dm_msg.h
midware/midware/dm/kk_dm_msg.h
+6
-0
midware/midware/dm/kk_linkkit.c
midware/midware/dm/kk_linkkit.c
+140
-0
midware/midware/dm/kk_property_db.c
midware/midware/dm/kk_property_db.c
+139
-1
midware/midware/dm/kk_property_db.h
midware/midware/dm/kk_property_db.h
+10
-1
midware/midware/history/kk_history_db.c
midware/midware/history/kk_history_db.c
+33
-1
midware/midware/history/kk_history_db.h
midware/midware/history/kk_history_db.h
+2
-2
midware/midware/midware.c
midware/midware/midware.c
+128
-28
nx5_soc_gw/smarthome_z3gw_nx5
nx5_soc_gw/smarthome_z3gw_nx5
+0
-0
onboot.sh
onboot.sh
+7
-1
process_check.sh
process_check.sh
+23
-18
tools/build-rules/_rules-top.mk
tools/build-rules/_rules-top.mk
+2
-0
No files found.
application/klansdk/kk_data_handle.c
View file @
391a1271
This diff is collapsed.
Click to expand it.
application/klansdk/kk_data_mng.h
View file @
391a1271
...
@@ -36,4 +36,5 @@ int mac_switchto_deviceCode(char *mac,char * deviceCode);
...
@@ -36,4 +36,5 @@ int mac_switchto_deviceCode(char *mac,char * deviceCode);
kk_map_dev_ctx
*
_kk_map_dev_ctx
(
void
);
kk_map_dev_ctx
*
_kk_map_dev_ctx
(
void
);
int
kk_map_dev_init
(
void
);
int
kk_map_dev_init
(
void
);
int
kk_creater_nodeid
(
char
*
deviceCode
,
int
channel
,
char
*
nodeId
);
#endif
#endif
\ No newline at end of file
application/klansdk/kk_lan_node_db.h
View file @
391a1271
...
@@ -3,7 +3,7 @@
...
@@ -3,7 +3,7 @@
#include "sqlite3.h"
#include "sqlite3.h"
#define KK_LAN_NODE_DB_FILE "
.
/kk_lan_node.db"
#define KK_LAN_NODE_DB_FILE "
/data/kk
/kk_lan_node.db"
typedef
struct
{
typedef
struct
{
void
*
mutex
;
void
*
mutex
;
...
...
application/klansdk/kk_login_handle.c
View file @
391a1271
...
@@ -64,12 +64,9 @@ static int _kk_handle_data(char *buf,int sockfd){
...
@@ -64,12 +64,9 @@ static int _kk_handle_data(char *buf,int sockfd){
if
(
!
json
)
{
if
(
!
json
)
{
WARNING_PRINT
(
"Error before: [%s]
\n
"
,
"cJSON_Parse"
);
WARNING_PRINT
(
"Error before: [%s]
\n
"
,
"cJSON_Parse"
);
}
else
{
}
else
{
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
kk_data_handle
(
json
,
sockfd
);
kk_data_handle
(
json
,
sockfd
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
cJSON_Delete
(
json
);
cJSON_Delete
(
json
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
}
}
}
}
...
@@ -78,54 +75,6 @@ static void PrintMesg(int i , char buf[])
...
@@ -78,54 +75,6 @@ static void PrintMesg(int i , char buf[])
printf
(
"fd : %d, msg: %s
\n
"
,
i
,
buf
);
printf
(
"fd : %d, msg: %s
\n
"
,
i
,
buf
);
}
}
void
*
TCP_Analyzer
(
void
*
pPara
)
{
char
Buf
[
BUF_SIZE
]
=
{
0
};
ssize_t
Size
=
0
;
int
index
=
0
;
unsigned
char
*
pReceiveData
=
NULL
;
int
ReceiveLen
=
0
;
if
(
NULL
==
pPara
)
{
ERROR_PRINT
(
"TCP_Analyzer: TCP_Analyzer Failed!
\n
"
);
return
NULL
;
}
index
=
*
(
int
*
)
pPara
;
printf
(
"index:%d
\n
"
,
*
(
int
*
)
pPara
);
if
(
index
<
0
||
index
>=
LISTEN_MAX
)
{
ERROR_PRINT
(
"TCP_Analyzer:Get pConnfd Failed
\n
"
);
return
NULL
;
}
while
(
1
)
{
memset
(
Buf
,
'\0'
,
sizeof
(
Buf
));
Size
=
read
(
s_ConnInfo
[
index
].
socketfd
,
Buf
,
sizeof
(
Buf
)
);
if
(
Size
<=
0
)
//没有接收到数据,关闭描述符,释放在TCPServer申请的空间
{
printf
(
"Size=%d,errno=%d"
,
Size
,
errno
);
ERROR_PRINT
(
"TCP_Analyzer:remote client close:%d
\n
"
,
s_ConnInfo
[
index
].
socketfd
);
pthread_mutex_lock
(
&
data_mutex
);
close
(
s_ConnInfo
[
index
].
socketfd
);
s_ConnInfo
[
index
].
socketfd
=
-
1
;
memset
(
s_ConnInfo
[
index
].
ip
,
0x0
,
sizeof
(
s_ConnInfo
[
index
].
ip
));
pthread_mutex_unlock
(
&
data_mutex
);
return
NULL
;
}
else
{
DEBUG_PRINT
(
"TCP_Analyzer:%s,%d
\n
"
,
Buf
,(
int
)
Size
);
_kk_handle_data
(
Buf
,
s_ConnInfo
[
index
].
socketfd
);
printf
(
"[%s][%d] TCP_Analyzer end.
\n
"
,
__FUNCTION__
,
__LINE__
);
}
}
return
NULL
;
}
static
int
kk_check_is_connect
(
char
*
ip
){
static
int
kk_check_is_connect
(
char
*
ip
){
int
i
=
0
;
int
i
=
0
;
if
(
ip
==
NULL
){
if
(
ip
==
NULL
){
...
@@ -133,6 +82,9 @@ static int kk_check_is_connect(char *ip){
...
@@ -133,6 +82,9 @@ static int kk_check_is_connect(char *ip){
}
}
for
(
i
=
0
;
i
<
LISTEN_MAX
;
i
++
){
for
(
i
=
0
;
i
<
LISTEN_MAX
;
i
++
){
if
(
s_ConnInfo
[
i
].
socketfd
!=
-
1
&&
strcmp
(
s_ConnInfo
[
i
].
ip
,
ip
)
==
0
){
if
(
s_ConnInfo
[
i
].
socketfd
!=
-
1
&&
strcmp
(
s_ConnInfo
[
i
].
ip
,
ip
)
==
0
){
close
(
s_ConnInfo
[
i
].
socketfd
);
s_ConnInfo
[
i
].
socketfd
=
-
1
;
memset
(
s_ConnInfo
[
i
].
ip
,
0x0
,
sizeof
(
s_ConnInfo
[
i
].
ip
));
return
1
;
return
1
;
}
}
}
}
...
@@ -140,29 +92,26 @@ static int kk_check_is_connect(char *ip){
...
@@ -140,29 +92,26 @@ static int kk_check_is_connect(char *ip){
}
}
void
*
TCPServer
()
void
*
TCPServer
()
{
{
pthread_t
threadID
=
0
;
struct
sockaddr_in
Server
;
struct
sockaddr_in
Server
;
struct
sockaddr_in
Client
;
struct
sockaddr_in
Client
;
int
Listenfd
=
0
;
int
Listenfd
=
-
1
;
int
client_fd
=
-
1
;
int
i
=
0
;
int
i
=
0
;
int
j
=
0
;
int
j
=
0
;
int
yes
=
1
;
int
yes
=
1
;
int
index
=
0
;
int
index
=
0
;
int
Connfd
=
0
;
int
ret
=
0
;
int
ret
=
0
;
char
clientIp
[
18
]
=
{
0
};
char
clientIp
[
18
]
=
{
0
};
int
max_fd
=
0
;
socklen_t
len
=
0
;
socklen_t
len
=
0
;
fd_set
server_fd_set
;
//char logMessage[128] = {0};
struct
timeval
time_out
;
pthread_attr_t
attr
;
char
Buf
[
BUF_SIZE
]
=
{
0
};
pthread_attr_init
(
&
attr
);
pthread_attr_setdetachstate
(
&
attr
,
PTHREAD_CREATE_DETACHED
);
Listenfd
=
socket
(
AF_INET
,
SOCK_STREAM
,
0
);
Listenfd
=
socket
(
AF_INET
,
SOCK_STREAM
,
0
);
if
(
Listenfd
<
0
)
if
(
Listenfd
<
0
)
{
{
perror
(
"socket"
);
perror
(
"socket"
);
pthread_attr_destroy
(
&
attr
);
//线程属性销毁
return
NULL
;
return
NULL
;
}
}
DEBUG_PRINT
(
"TCPServer:create socket success
\n
"
);
DEBUG_PRINT
(
"TCPServer:create socket success
\n
"
);
...
@@ -176,7 +125,6 @@ void *TCPServer()
...
@@ -176,7 +125,6 @@ void *TCPServer()
{
{
perror
(
"bind"
);
perror
(
"bind"
);
close
(
Listenfd
);
close
(
Listenfd
);
pthread_attr_destroy
(
&
attr
);
//线程属性销毁
return
NULL
;
return
NULL
;
}
}
DEBUG_PRINT
(
"TCPServer:bind socket success
\n
"
);
DEBUG_PRINT
(
"TCPServer:bind socket success
\n
"
);
...
@@ -185,39 +133,44 @@ void *TCPServer()
...
@@ -185,39 +133,44 @@ void *TCPServer()
{
{
perror
(
"listen"
);
perror
(
"listen"
);
close
(
Listenfd
);
close
(
Listenfd
);
pthread_attr_destroy
(
&
attr
);
//线程属性销毁
return
NULL
;
return
NULL
;
}
}
DEBUG_PRINT
(
"TCPServer:listen socket success
\n
"
);
DEBUG_PRINT
(
"TCPServer:listen socket success
\n
"
);
while
(
1
)
while
(
1
)
{
{
//index = -1;
//index = -1;
FD_ZERO
(
&
fds
);
//描述符集合初始化
max_fd
=
client_fd
>
Listenfd
?
client_fd
:
Listenfd
;
time_out
.
tv_sec
=
1
;
//select会更改timeout的值,所以需要重新初始化超时时间
FD_SET
(
Listenfd
,
&
fds
);
time_out
.
tv_usec
=
0
;
struct
timeval
timeout
=
{
1
,
0
};
FD_ZERO
(
&
server_fd_set
);
ret
=
select
(
Listenfd
+
1
,
&
fds
,
NULL
,
NULL
,
&
timeout
);
FD_SET
(
Listenfd
,
&
server_fd_set
);
for
(
i
=
0
;
i
<
LISTEN_MAX
;
i
++
)
{
if
(
s_ConnInfo
[
i
].
socketfd
>
0
)
{
FD_SET
(
s_ConnInfo
[
i
].
socketfd
,
&
server_fd_set
);
}
}
ret
=
select
(
max_fd
+
1
,
&
server_fd_set
,
NULL
,
NULL
,
&
time_out
);
if
(
ret
<=
0
){
if
(
ret
<=
0
){
DEBUG_PRINT
(
"TCPServer:TCP receiving nothing......
\n
"
);
//
DEBUG_PRINT("TCPServer:TCP receiving nothing......\n");
//break;
//break;
}
else
{
}
else
{
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
if
(
FD_ISSET
(
Listenfd
,
&
server_fd_set
))
if
(
FD_ISSET
(
Listenfd
,
&
fds
))
{
{
len
=
sizeof
(
Client
);
len
=
sizeof
(
Client
);
bzero
(
&
Client
,
len
);
bzero
(
&
Client
,
len
);
Conn
fd
=
accept
(
Listenfd
,
(
struct
sockaddr
*
)
&
Client
,
&
len
);
client_
fd
=
accept
(
Listenfd
,
(
struct
sockaddr
*
)
&
Client
,
&
len
);
printf
(
"addr:%s
\n
"
,
inet_ntoa
(
Client
.
sin_addr
));
printf
(
"addr:%s
\n
"
,
inet_ntoa
(
Client
.
sin_addr
));
printf
(
"[%s][%d]Connfd:%d
\n
"
,
__FUNCTION__
,
__LINE__
,
Conn
fd
);
printf
(
"[%s][%d]Connfd:%d
\n
"
,
__FUNCTION__
,
__LINE__
,
client_
fd
);
//若有新的连接
//若有新的连接
if
(
Conn
fd
!=
-
1
)
if
(
client_
fd
!=
-
1
)
{
{
memset
(
clientIp
,
0x0
,
sizeof
(
clientIp
));
memset
(
clientIp
,
0x0
,
sizeof
(
clientIp
));
strcpy
(
clientIp
,
inet_ntoa
(
Client
.
sin_addr
));
strcpy
(
clientIp
,
inet_ntoa
(
Client
.
sin_addr
));
if
(
kk_check_is_connect
(
clientIp
)
==
1
){
if
(
kk_check_is_connect
(
clientIp
)
==
1
){
DEBUG_PRINT
(
"already connect!!!
\n
"
);
DEBUG_PRINT
(
"already connect!!!
\n
"
);
continue
;
//
continue;
}
}
for
(
i
=
0
;
i
<
LISTEN_MAX
;
i
++
){
for
(
i
=
0
;
i
<
LISTEN_MAX
;
i
++
){
if
(
s_ConnInfo
[
i
].
socketfd
!=
-
1
){
if
(
s_ConnInfo
[
i
].
socketfd
!=
-
1
){
...
@@ -227,7 +180,7 @@ void *TCPServer()
...
@@ -227,7 +180,7 @@ void *TCPServer()
continue
;
continue
;
}
else
{
}
else
{
pthread_mutex_lock
(
&
data_mutex
);
pthread_mutex_lock
(
&
data_mutex
);
s_ConnInfo
[
i
].
socketfd
=
Conn
fd
;
s_ConnInfo
[
i
].
socketfd
=
client_
fd
;
memcpy
(
s_ConnInfo
[
i
].
ip
,
clientIp
,
strlen
(
clientIp
));
memcpy
(
s_ConnInfo
[
i
].
ip
,
clientIp
,
strlen
(
clientIp
));
index
=
i
;
index
=
i
;
printf
(
"index:%d
\n
"
,
index
);
printf
(
"index:%d
\n
"
,
index
);
...
@@ -235,24 +188,35 @@ void *TCPServer()
...
@@ -235,24 +188,35 @@ void *TCPServer()
break
;
break
;
}
}
}
}
ret
=
pthread_create
(
&
threadID
,
&
attr
,
TCP_Analyzer
,
&
index
);
if
(
0
!=
ret
)
{
DEBUG_PRINT
(
"TCPServer: TCP_Analyzer build Fail!
\n
"
);
FD_CLR
(
Listenfd
,
&
fds
);
// 清除 fds中相应的文件描述符
close
(
Listenfd
);
pthread_attr_destroy
(
&
attr
);
//线程属性销毁
return
NULL
;
}
}
}
}
else
{
for
(
i
=
0
;
i
<
LISTEN_MAX
;
i
++
)
{
if
(
FD_ISSET
(
s_ConnInfo
[
i
].
socketfd
,
&
server_fd_set
))
{
memset
(
Buf
,
0
,
sizeof
(
Buf
));
ret
=
recv
(
s_ConnInfo
[
index
].
socketfd
,
Buf
,
sizeof
(
Buf
),
0
);
//最后一个参数为0,表示默认阻塞接收,前面select解除了阻塞说明有数据可读
if
(
ret
>
0
)
{
_kk_handle_data
(
Buf
,
s_ConnInfo
[
index
].
socketfd
);
}
else
{
printf
(
"client disconnected
\r\n
"
);
pthread_mutex_lock
(
&
data_mutex
);
close
(
s_ConnInfo
[
index
].
socketfd
);
s_ConnInfo
[
index
].
socketfd
=
-
1
;
memset
(
s_ConnInfo
[
index
].
ip
,
0x0
,
sizeof
(
s_ConnInfo
[
index
].
ip
));
pthread_mutex_unlock
(
&
data_mutex
);
}
}
}
}
}
}
}
}
}
FD_CLR
(
Listenfd
,
&
fds
);
// 清除 fds中相应的文件描述符
FD_CLR
(
Listenfd
,
&
fds
);
// 清除 fds中相应的文件描述符
close
(
Listenfd
);
close
(
Listenfd
);
pthread_attr_destroy
(
&
attr
);
//线程属性销毁
return
NULL
;
return
NULL
;
}
}
...
@@ -271,11 +235,15 @@ int kk_login_init()
...
@@ -271,11 +235,15 @@ int kk_login_init()
ERROR_PRINT
(
"pthread_mutex_init kk_login_init err
\n
"
);
ERROR_PRINT
(
"pthread_mutex_init kk_login_init err
\n
"
);
return
-
1
;
return
-
1
;
}
}
ret
=
pthread_create
(
&
threadID
,
NULL
,
TCPServer
,
NULL
);
pthread_attr_t
attr
;
pthread_attr_init
(
&
attr
);
pthread_attr_setdetachstate
(
&
attr
,
PTHREAD_CREATE_DETACHED
);
ret
=
pthread_create
(
&
threadID
,
&
attr
,
TCPServer
,
NULL
);
if
(
0
!=
ret
)
if
(
0
!=
ret
)
{
{
ERROR_PRINT
(
"TCPServer: TCPServer build Fail!
\n
"
);
ERROR_PRINT
(
"TCPServer: TCPServer build Fail!
\n
"
);
return
-
1
;
return
-
1
;
}
}
pthread_attr_destroy
(
&
attr
);
//线程属性销毁
return
0
;
return
0
;
}
}
application/klansdk/kk_login_handle.h
View file @
391a1271
...
@@ -6,5 +6,5 @@
...
@@ -6,5 +6,5 @@
#define SERVER_LISTEN_PORT 5000
#define SERVER_LISTEN_PORT 5000
int
kk_login_init
();
int
kk_login_init
();
int
kk_send_data_to_sdk
(
char
*
buf
);
#endif
#endif
\ No newline at end of file
application/klansdk/kk_newccu_msg.c
View file @
391a1271
...
@@ -66,10 +66,12 @@ cJSON * property_report(const char *productCode,const char *deviceCode,const cha
...
@@ -66,10 +66,12 @@ cJSON * property_report(const char *productCode,const char *deviceCode,const cha
cJSON
*
scene_payload_build
(
const
char
*
method
,
const
char
*
msgId
,
cJSON
*
params
)
cJSON
*
scene_payload_build
(
const
char
*
method
,
const
char
*
msgId
,
cJSON
*
params
)
{
{
char
ccuid
[
33
]
=
{
0
};
cJSON
*
payload
=
cJSON_CreateObject
();
cJSON
*
payload
=
cJSON_CreateObject
();
kk_lan_get_ccuid
(
ccuid
);
cJSON_AddStringToObject
(
payload
,
"productCode"
,
KK_CCU_PRODUCTID
);
cJSON_AddStringToObject
(
payload
,
"productCode"
,
KK_CCU_PRODUCTID
);
cJSON_AddStringToObject
(
payload
,
"deviceCode"
,
KK_CCU_ID
);
cJSON_AddStringToObject
(
payload
,
"deviceCode"
,
ccuid
);
cJSON_AddStringToObject
(
payload
,
"identity"
,
"executeScene"
);
cJSON_AddStringToObject
(
payload
,
"identity"
,
"executeScene"
);
cJSON_AddStringToObject
(
payload
,
"msgId"
,
msgId
);
cJSON_AddStringToObject
(
payload
,
"msgId"
,
msgId
);
...
@@ -86,16 +88,17 @@ cJSON *scene_payload_build(const char*method,const char *msgId,cJSON *params)
...
@@ -86,16 +88,17 @@ cJSON *scene_payload_build(const char*method,const char *msgId,cJSON *params)
cJSON
*
scene_execute
(
const
char
*
sceneId
)
cJSON
*
scene_execute
(
const
char
*
sceneId
)
{
{
char
msgId
[
32
]
=
{
0
};
char
msgId
[
32
]
=
{
0
};
char
ccuid
[
33
]
=
{
0
};
cJSON
*
root
=
cJSON_CreateObject
();
cJSON
*
root
=
cJSON_CreateObject
();
cJSON
*
params
=
cJSON_CreateObject
();
cJSON
*
params
=
cJSON_CreateObject
();
cJSON
*
info
,
*
payload
;
cJSON
*
info
,
*
payload
;
kk_lan_get_ccuid
(
ccuid
);
printf
(
"[execute scene]sceneId=%s
\n
"
,
sceneId
);
printf
(
"[execute scene]sceneId=%s
\n
"
,
sceneId
);
kk_lan_get_msg_id_str
(
msgId
,
sizeof
(
msgId
));
kk_lan_get_msg_id_str
(
msgId
,
sizeof
(
msgId
));
cJSON_AddStringToObject
(
params
,
"sceneId"
,
sceneId
);
cJSON_AddStringToObject
(
params
,
"sceneId"
,
sceneId
);
info
=
property_info_build
(
"/thing/service/executeScene"
,
KK_CCU_PRODUCTID
,
KK_CCU_ID
);
info
=
property_info_build
(
"/thing/service/executeScene"
,
KK_CCU_PRODUCTID
,
ccuid
);
payload
=
scene_payload_build
(
"thing.service.executeScene"
,
msgId
,
params
);
payload
=
scene_payload_build
(
"thing.service.executeScene"
,
msgId
,
params
);
cJSON_AddItemToObject
(
root
,
INFO_STRING
,
info
);
cJSON_AddItemToObject
(
root
,
INFO_STRING
,
info
);
...
...
application/klansdk/kk_oldccu_msg.c
View file @
391a1271
...
@@ -2,6 +2,7 @@
...
@@ -2,6 +2,7 @@
#include <stdlib.h>
#include <stdlib.h>
#include <string.h>
#include <string.h>
#include "kk_data_mng.h"
#include "kk_data_mng.h"
#include "kk_login_handle.h"
#include "kk_lan_node_db.h"
#include "kk_lan_node_db.h"
#include "kk_log.h"
#include "kk_log.h"
...
@@ -21,7 +22,7 @@ cJSON *old_ccu_msg_build_json_node_int(int nodeid,const char* opcode,const char
...
@@ -21,7 +22,7 @@ cJSON *old_ccu_msg_build_json_node_int(int nodeid,const char* opcode,const char
{
{
cJSON
*
root
;
cJSON
*
root
;
if
(
nodeid
==
NULL
||
opcode
==
NULL
||
arg
==
NULL
)
{
if
(
opcode
==
NULL
||
arg
==
NULL
)
{
return
NULL
;
return
NULL
;
}
}
...
@@ -278,17 +279,11 @@ cJSON * attr_report_conver(const char *deviceCode,kk_map_dev_node_t *devNode,cJS
...
@@ -278,17 +279,11 @@ cJSON * attr_report_conver(const char *deviceCode,kk_map_dev_node_t *devNode,cJS
newccu
=
devNode
->
newccu
;
newccu
=
devNode
->
newccu
;
item_size
=
cJSON_GetArraySize
(
oldccu
);
item_size
=
cJSON_GetArraySize
(
oldccu
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
for
(
i
=
0
;
i
<
item_size
;
i
++
){
for
(
i
=
0
;
i
<
item_size
;
i
++
){
o_item
=
cJSON_GetArrayItem
(
oldccu
,
i
);
o_item
=
cJSON_GetArrayItem
(
oldccu
,
i
);
n_item
=
cJSON_GetArrayItem
(
newccu
,
i
);
n_item
=
cJSON_GetArrayItem
(
newccu
,
i
);
o_id_map
=
cJSON_GetObjectItem
(
o_item
,
"identifiermap"
);
o_id_map
=
cJSON_GetObjectItem
(
o_item
,
"identifiermap"
);
n_id
=
cJSON_GetObjectItem
(
params
,
o_id_map
->
valuestring
);
n_id
=
cJSON_GetObjectItem
(
params
,
o_id_map
->
valuestring
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
if
(
n_id
!=
NULL
){
if
(
n_id
!=
NULL
){
n_dataType
=
cJSON_GetObjectItem
(
n_item
,
"dataType"
);
n_dataType
=
cJSON_GetObjectItem
(
n_item
,
"dataType"
);
...
@@ -301,20 +296,16 @@ cJSON * attr_report_conver(const char *deviceCode,kk_map_dev_node_t *devNode,cJS
...
@@ -301,20 +296,16 @@ cJSON * attr_report_conver(const char *deviceCode,kk_map_dev_node_t *devNode,cJS
channel
=
cJSON_GetObjectItem
(
o_item
,
"channel"
);
channel
=
cJSON_GetObjectItem
(
o_item
,
"channel"
);
epNum
=
cJSON_GetObjectItem
(
params
,
"epNum"
);
epNum
=
cJSON_GetObjectItem
(
params
,
"epNum"
);
if
(
channel
==
NULL
||
epNum
==
NULL
){
if
(
channel
==
NULL
||
epNum
==
NULL
){
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
continue
;
continue
;
}
}
if
(
strlen
(
channel
->
valuestring
)
!=
strlen
(
epNum
->
valuestring
)
||
if
(
strlen
(
channel
->
valuestring
)
!=
strlen
(
epNum
->
valuestring
)
||
strcmp
(
channel
->
valuestring
,
epNum
->
valuestring
)
!=
0
){
strcmp
(
channel
->
valuestring
,
epNum
->
valuestring
)
!=
0
){
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
continue
;
continue
;
}
}
ch
=
atoi
(
channel
->
valuestring
);
ch
=
atoi
(
channel
->
valuestring
);
nodeId
=
kk_lan_db_node_get
(
deviceCode
,
ch
);
nodeId
=
kk_lan_db_node_get
(
deviceCode
,
ch
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
opcode
=
cJSON_GetObjectItem
(
o_item
,
"opcode"
);
opcode
=
cJSON_GetObjectItem
(
o_item
,
"opcode"
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
printf
(
"[%s][%d]n_dataType->valuestring=%s,opcode->valuestring=%s
\n
"
,
__FUNCTION__
,
__LINE__
,
n_dataType
->
valuestring
,
opcode
->
valuestring
);
printf
(
"[%s][%d]n_dataType->valuestring=%s,opcode->valuestring=%s
\n
"
,
__FUNCTION__
,
__LINE__
,
n_dataType
->
valuestring
,
opcode
->
valuestring
);
...
@@ -377,15 +368,15 @@ int del_device(const char *deviceCode,const char *nodeid)
...
@@ -377,15 +368,15 @@ int del_device(const char *deviceCode,const char *nodeid)
{
{
cJSON
*
msg
;
cJSON
*
msg
;
cJSON
*
arg
;
cJSON
*
arg
;
char
mac
[
32
]
=
{
0
};
kk_map_dev_node_t
*
dev
;
kk_map_dev_node_t
*
dev
;
if
(
deviceCode
==
NULL
||
nodeid
==
NULL
){
if
(
deviceCode
==
NULL
||
nodeid
==
NULL
){
return
-
1
;
return
-
1
;
}
}
arg
=
cJSON_CreateObject
();
arg
=
cJSON_CreateObject
();
cJSON_AddStringToObject
(
arg
,
"mac"
,
deviceCode
);
_deviceCode_switchto_mac
(
deviceCode
,
mac
);
cJSON_AddStringToObject
(
arg
,
"mac"
,
mac
);
msg
=
old_ccu_msg_build_json
(
nodeid
,
"DEL_DEVICE"
,
NULL
,
arg
);
msg
=
old_ccu_msg_build_json
(
nodeid
,
"DEL_DEVICE"
,
NULL
,
arg
);
send_msg_to_module
(
msg
);
send_msg_to_module
(
msg
);
cJSON_Delete
(
msg
);
cJSON_Delete
(
msg
);
...
@@ -399,32 +390,28 @@ int del_device_all_node(const char *deviceCode)
...
@@ -399,32 +390,28 @@ int del_device_all_node(const char *deviceCode)
int
list
[
MAX_CHANNEL_NUM
]
=
{
0
};
int
list
[
MAX_CHANNEL_NUM
]
=
{
0
};
int
i
,
num
=
0
;
int
i
,
num
=
0
;
char
*
nodeid
;
char
*
nodeid
;
//删除数据库
kk_lan_db_node_delete
(
deviceCode
);
num
=
kk_lan_db_node_get_all
(
deviceCode
,
list
);
num
=
kk_lan_db_node_get_all
(
deviceCode
,
list
);
for
(
i
=
0
;
i
<
num
;
i
++
){
for
(
i
=
0
;
i
<
num
;
i
++
){
nodeid
=
node_string
(
list
[
i
]);
nodeid
=
node_string
(
list
[
i
]);
del_device
(
deviceCode
,
nodeid
);
del_device
(
deviceCode
,
nodeid
);
free
(
nodeid
);
free
(
nodeid
);
}
}
//删除数据库
kk_lan_db_node_delete
(
deviceCode
);
if
(
num
){
if
(
num
){
kk_handle_sync_info
();
kk_handle_sync_info
();
}
}
return
0
;
}
}
void
device_delete_sync
(
cJSON
*
payload
)
void
device_delete_sync
(
cJSON
*
payload
)
{
{
cJSON
*
params
;
cJSON
*
params
;
cJSON
*
deviceCode
;
cJSON
*
deviceCode
;
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
params
=
cJSON_GetObjectItem
(
payload
,
"params"
);
params
=
cJSON_GetObjectItem
(
payload
,
"params"
);
deviceCode
=
cJSON_GetObjectItem
(
params
,
"deviceCode"
);
deviceCode
=
cJSON_GetObjectItem
(
params
,
"deviceCode"
);
del_device_all_node
(
deviceCode
->
valuestring
);
del_device_all_node
(
deviceCode
->
valuestring
);
...
@@ -460,8 +447,6 @@ void property_post_deal(const char *deviceCode,cJSON *payload)
...
@@ -460,8 +447,6 @@ void property_post_deal(const char *deviceCode,cJSON *payload)
cJSON
*
params
;
cJSON
*
params
;
kk_map_dev_node_t
*
dev
;
kk_map_dev_node_t
*
dev
;
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
if
(
kk_map_dev_search_by_deviceCode
(
deviceCode
,
&
dev
)
==
0
){
if
(
kk_map_dev_search_by_deviceCode
(
deviceCode
,
&
dev
)
==
0
){
params
=
cJSON_GetObjectItem
(
payload
,
"params"
);
params
=
cJSON_GetObjectItem
(
payload
,
"params"
);
...
@@ -476,7 +461,6 @@ void property_syn_deal(const char *deviceCode,cJSON *properties)
...
@@ -476,7 +461,6 @@ void property_syn_deal(const char *deviceCode,cJSON *properties)
kk_map_dev_node_t
*
dev
;
kk_map_dev_node_t
*
dev
;
if
(
kk_map_dev_search_by_deviceCode
(
deviceCode
,
&
dev
)
==
0
){
if
(
kk_map_dev_search_by_deviceCode
(
deviceCode
,
&
dev
)
==
0
){
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
attr_report_conver
(
deviceCode
,
dev
,
properties
);
attr_report_conver
(
deviceCode
,
dev
,
properties
);
}
}
}
}
...
...
application/klansdk/kk_opcode.h
View file @
391a1271
...
@@ -22,10 +22,12 @@
...
@@ -22,10 +22,12 @@
#define HEARTBEAT_OPCODE "CCU_HB"
#define HEARTBEAT_OPCODE "CCU_HB"
#define SYNC_OPCODE "SYNC_INFO"
#define SYNC_OPCODE "SYNC_INFO"
#define GET_ZB_DEVS_HW_INFO_OPCODE "GET_ZIGBEE_DEVS_HW_INFO"
#define GET_ZB_DEVS_HW_INFO_OPCODE "GET_ZIGBEE_DEVS_HW_INFO"
#define ZIGBEE_DEV_HW_INFO_PUSH "ZIGBEE_DEV_HW_INFO_PUSH"
#define GET_HISTORY_ALARM_LOG "GET_HISTORY_ALARM_LOG"
#define DEL_HISTORY_ALARM_LOG "DEL_HISTORY_ALARM_LOG"
#define SWITCH_OPCODE "SWITCH"
#define SWITCH_OPCODE "SWITCH"
#define GET_HISTORY_MSG_TYPE "/thing/service/historyAlarm"
#define DEL_HISTORY_MSG_TYPE "/thing/service/delAlarm"
...
...
midware/midware/dm/kk_dm_mng.c
View file @
391a1271
...
@@ -406,7 +406,25 @@ int dm_mgr_get_deviceNum_by_productType(_IN_ char *productType)
...
@@ -406,7 +406,25 @@ int dm_mgr_get_deviceNum_by_productType(_IN_ char *productType)
}
}
return
num
;
return
num
;
}
}
static
int
dm_mgr_update_gw_timestamp_by_devicecode
(
_IN_
char
deviceCode
[
DEVICE_CODE_MAXLEN
],
time_t
timestamp
)
{
dm_mgr_ctx
*
ctx
=
_dm_mgr_get_ctx
();
dm_mgr_dev_node_t
*
search_node
=
NULL
;
//_dm_mgr_mutex_lock();
list_for_each_entry
(
search_node
,
&
ctx
->
dev_list
,
linked_list
,
dm_mgr_dev_node_t
)
{
if
((
strlen
(
search_node
->
deviceCode
)
==
strlen
(
deviceCode
))
&&
(
memcmp
(
search_node
->
deviceCode
,
deviceCode
,
strlen
(
deviceCode
))
==
0
))
{
/* dm_log_debug("Device Found, Product Key: %s, Device Name: %s", product_key, device_name); */
search_node
->
timestamp
=
timestamp
;
//_dm_mgr_mutex_unlock();
return
SUCCESS_RETURN
;
}
}
//_dm_mgr_mutex_unlock();
ERROR_PRINT
(
"Device Not Found, deviceCode: %s
\n
"
,
deviceCode
);
return
FAIL_RETURN
;
}
int
dm_mgr_update_timestamp_by_devicecode
(
_IN_
char
deviceCode
[
DEVICE_CODE_MAXLEN
],
time_t
timestamp
)
int
dm_mgr_update_timestamp_by_devicecode
(
_IN_
char
deviceCode
[
DEVICE_CODE_MAXLEN
],
time_t
timestamp
)
{
{
dm_mgr_ctx
*
ctx
=
_dm_mgr_get_ctx
();
dm_mgr_ctx
*
ctx
=
_dm_mgr_get_ctx
();
...
@@ -418,6 +436,9 @@ int dm_mgr_update_timestamp_by_devicecode(_IN_ char deviceCode[DEVICE_CODE_MAXLE
...
@@ -418,6 +436,9 @@ int dm_mgr_update_timestamp_by_devicecode(_IN_ char deviceCode[DEVICE_CODE_MAXLE
(
memcmp
(
search_node
->
deviceCode
,
deviceCode
,
strlen
(
deviceCode
))
==
0
))
{
(
memcmp
(
search_node
->
deviceCode
,
deviceCode
,
strlen
(
deviceCode
))
==
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); */
search_node
->
timestamp
=
timestamp
;
search_node
->
timestamp
=
timestamp
;
if
(
search_node
->
dev_type
==
KK_DM_DEVICE_SUBDEV
){
dm_mgr_update_gw_timestamp_by_devicecode
(
search_node
->
fatherDeviceCode
,
timestamp
);
}
_dm_mgr_mutex_unlock
();
_dm_mgr_mutex_unlock
();
return
SUCCESS_RETURN
;
return
SUCCESS_RETURN
;
}
}
...
@@ -472,11 +493,13 @@ int dm_mgr_check_heartbeat_timeout(time_t timestamp)
...
@@ -472,11 +493,13 @@ int dm_mgr_check_heartbeat_timeout(time_t timestamp)
if
(
search_node
->
devid
==
KK_DM_DEVICE_CCU_DEVICEID
){
if
(
search_node
->
devid
==
KK_DM_DEVICE_CCU_DEVICEID
){
continue
;
continue
;
}
}
//printf("[%s][%d]search_node->productCode:%s\n",__FUNCTION__,__LINE__,search_node->productCode);
#if 0
//printf("[%s][%d]search_node->hb_timeout:%d\n",__FUNCTION__,__LINE__,search_node->hb_timeout);
printf("[%s][%d]search_node->productCode:%s\n",__FUNCTION__,__LINE__,search_node->productCode);
//printf("[%s][%d]search_node->isOffline:%d\n",__FUNCTION__,__LINE__,search_node->isOffline);
printf("[%s][%d]search_node->hb_timeout:%d\n",__FUNCTION__,__LINE__,search_node->hb_timeout);
//printf("[%s][%d]search_node->timestamp:%d\n",__FUNCTION__,__LINE__,search_node->timestamp);
printf("[%s][%d]search_node->isOffline:%d\n",__FUNCTION__,__LINE__,search_node->isOffline);
//printf("[%s][%d]timestamp:%d\n",__FUNCTION__,__LINE__,timestamp);
printf("[%s][%d]search_node->timestamp:%d\n",__FUNCTION__,__LINE__,search_node->timestamp);
printf("[%s][%d]timestamp:%d\n",__FUNCTION__,__LINE__,timestamp);
#endif
if
((
timestamp
-
search_node
->
timestamp
)
>=
search_node
->
hb_timeout
){
if
((
timestamp
-
search_node
->
timestamp
)
>=
search_node
->
hb_timeout
){
if
(
search_node
->
isOffline
!=
KK_DEV_OFFLINE
){
if
(
search_node
->
isOffline
!=
KK_DEV_OFFLINE
){
dm_mgr_set_dev_onoffline
(
search_node
,
1
);
dm_mgr_set_dev_onoffline
(
search_node
,
1
);
...
@@ -685,7 +708,7 @@ int iotx_report_id(char *msgId)
...
@@ -685,7 +708,7 @@ int iotx_report_id(char *msgId)
}
}
//char timerStr[16] = {0};
//char timerStr[16] = {0};
//HAL_GetTime_ms();
//HAL_GetTime_ms();
sprintf
(
msgId
,
"6c0645c4-f6d6-
46b2-
b11e-%lld"
,
HAL_GetTime_ms
());
sprintf
(
msgId
,
"6c0645c4-f6d6-b11e-%lld"
,
HAL_GetTime_ms
());
return
SUCCESS_RETURN
;
return
SUCCESS_RETURN
;
}
}
...
@@ -1611,7 +1634,9 @@ int dm_mgr_subdev_delete(_IN_ char deviceCode[DEVICE_CODE_MAXLEN])
...
@@ -1611,7 +1634,9 @@ int dm_mgr_subdev_delete(_IN_ char deviceCode[DEVICE_CODE_MAXLEN])
ERROR_PRINT
(
"ERROR [%s][%d] res:%d
\n
"
,
__FUNCTION__
,
__LINE__
,
res
);
ERROR_PRINT
(
"ERROR [%s][%d] res:%d
\n
"
,
__FUNCTION__
,
__LINE__
,
res
);
return
FAIL_RETURN
;
return
FAIL_RETURN
;
}
}
if
(
strcmp
(
node
->
productType
,
KK_DM_AIR_GATEWAY_TYPE
)
==
0
){
kk_indoorAir_delete_by_dcode
(
deviceCode
);
}
if
(
node
->
dev_type
==
KK_DM_DEVICE_CCU
){
if
(
node
->
dev_type
==
KK_DM_DEVICE_CCU
){
ERROR_PRINT
(
"ERROR [%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
ERROR_PRINT
(
"ERROR [%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
return
FAIL_RETURN
;
return
FAIL_RETURN
;
...
...
midware/midware/dm/kk_dm_mng.h
View file @
391a1271
...
@@ -15,7 +15,7 @@
...
@@ -15,7 +15,7 @@
#define KK_DM_CCU_DEVICE_PRODUCT_CODE KK_CCU_PRODUCTID
#define KK_DM_CCU_DEVICE_PRODUCT_CODE KK_CCU_PRODUCTID
#define KK_DM_GW_DEVICE_PRODUCT_TYPE "gw"
#define KK_DM_GW_DEVICE_PRODUCT_TYPE "gw"
#define KK_DM_GW_DEVICE_PRODUCT_CODE "2"
#define KK_DM_GW_DEVICE_PRODUCT_CODE "2"
#define KK_DM_AIR_GATEWAY_TYPE "air conditioning gateway"
#define KK_DM_DEVICE_CCU_DEVICEID (0x00)
#define KK_DM_DEVICE_CCU_DEVICEID (0x00)
#define MSG_MAX_LEN (64)
#define MSG_MAX_LEN (64)
...
...
midware/midware/dm/kk_dm_msg.h
View file @
391a1271
...
@@ -45,6 +45,7 @@ const char DM_MSG_INFO[] DM_READ_ONLY;
...
@@ -45,6 +45,7 @@ const char DM_MSG_INFO[] DM_READ_ONLY;
#define KK_REGISTER_TOPIC_REPLY "/thing/sub/register_reply"
#define KK_REGISTER_TOPIC_REPLY "/thing/sub/register_reply"
#define KK_ADD_TOPIC_REPLY "/thing/topo/add_reply"
#define KK_ADD_TOPIC_REPLY "/thing/topo/add_reply"
#define KK_LOGIN_TOPIC_REPLY "/thing/combine/login_reply"
#define KK_LOGIN_TOPIC_REPLY "/thing/combine/login_reply"
#define KK_THING_STATUS_ONLINE "/thing/status/online"
#define KK_ONLINE_TOPIC_REPLY "/thing/status/online_reply"
#define KK_ONLINE_TOPIC_REPLY "/thing/status/online_reply"
#define KK_THING_SERVICE_PROPERTY_SET "/thing/service/property/set"
#define KK_THING_SERVICE_PROPERTY_SET "/thing/service/property/set"
#define KK_THING_SERVICE_PROPERTY_GET "/thing/service/property/get"
#define KK_THING_SERVICE_PROPERTY_GET "/thing/service/property/get"
...
@@ -60,6 +61,7 @@ const char DM_MSG_INFO[] DM_READ_ONLY;
...
@@ -60,6 +61,7 @@ const char DM_MSG_INFO[] DM_READ_ONLY;
#define KK_THING_SERVICE_ADDROOM "/thing/service/addRoom"
#define KK_THING_SERVICE_ADDROOM "/thing/service/addRoom"
#define KK_THING_SERVICE_DELETEROOM "/thing/service/deleteRoom"
#define KK_THING_SERVICE_DELETEROOM "/thing/service/deleteRoom"
#define KK_THING_SERVICE_ADDDEVICETOROOM "/thing/service/addDeviceToRoom"
#define KK_THING_SERVICE_ADDDEVICETOROOM "/thing/service/addDeviceToRoom"
#define KK_THING_SERVICE_ADDDEVICETOROOM_REPLY "/thing/service/addDeviceToRoom_reply"
#define KK_THING_SERVICE_REMOVEDEVICEFROMROOM "/thing/service/removeDeviceFromRoom"
#define KK_THING_SERVICE_REMOVEDEVICEFROMROOM "/thing/service/removeDeviceFromRoom"
#define KK_THING_SERVICE_EXECUTEROOM "/thing/service/executeRoom"
#define KK_THING_SERVICE_EXECUTEROOM "/thing/service/executeRoom"
#define KK_THING_SERVICE_SETLOCALTIMER "/thing/service/setLocalTimer"
#define KK_THING_SERVICE_SETLOCALTIMER "/thing/service/setLocalTimer"
...
@@ -95,6 +97,10 @@ const char DM_MSG_INFO[] DM_READ_ONLY;
...
@@ -95,6 +97,10 @@ const char DM_MSG_INFO[] DM_READ_ONLY;
#define KK_THING_SERVICE_UNBINDSBUTTTON "/thing/service/unbindButton"
#define KK_THING_SERVICE_UNBINDSBUTTTON "/thing/service/unbindButton"
#define KK_THING_SERVICE_ACTIVEBUTTON "/thing/service/activeButton"
#define KK_THING_SERVICE_ACTIVEBUTTON "/thing/service/activeButton"
#define KK_THING_SERVICE_GETCCUVERSION "/thing/service/getCCUVersion"
#define KK_THING_SERVICE_GETCCUVERSION "/thing/service/getCCUVersion"
#define KK_THING_SERVICE_HISTORYALARM "/thing/service/historyAlarm"
#define KK_THING_SERVICE_HISTORYALARM_REPLY "/thing/service/historyAlarm_reply"
#define KK_THING_SERVICE_DEL_HISTORYALARM "/thing/service/delAlarm"
#define KK_THING_SERVICE_DEL_HISTORYALARM_REPLY "/thing/service/delAlarm_reply"
void
kk_sendData2app
(
void
*
info
,
void
*
payload
,
int
isAsync
);
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
],
int
dm_msg_thing_sub_register
(
_IN_
char
productCode
[
DEVICE_CODE_MAXLEN
],
_IN_
char
deviceCode
[
DEVICE_CODE_MAXLEN
],
...
...
midware/midware/dm/kk_linkkit.c
View file @
391a1271
...
@@ -394,6 +394,48 @@ static int kk_service_deleteRoom_handle(cJSON *params)
...
@@ -394,6 +394,48 @@ static int kk_service_deleteRoom_handle(cJSON *params)
return
SUCCESS_RETURN
;
return
SUCCESS_RETURN
;
}
}
static
int
kk_service_addDeviceToRoom_reply
(
cJSON
*
param
,
cJSON
*
msgId
)
{
int
res
=
0
;
int
i
=
0
,
num
=
0
;
if
(
param
==
NULL
||
msgId
==
NULL
){
return
INVALID_PARAMETER
;
}
INFO_PRINT
(
" adddevicetoroom reply
\n
"
);
cJSON
*
deviceCode
=
cJSON_GetObjectItem
(
param
,
MSG_DEVICE_CODE_STR
);
if
(
deviceCode
==
NULL
){
return
FAIL_RETURN
;
}
cJSON
*
productCode
=
cJSON_GetObjectItem
(
param
,
MSG_PRODUCT_CODE_STR
);
if
(
productCode
==
NULL
){
return
FAIL_RETURN
;
}
INFO_PRINT
(
" adddevicetoroom reply
\n
"
);
cJSON
*
info
=
cJSON_CreateObject
();
cJSON_AddStringToObject
(
info
,
MSG_TYPE_STR
,
KK_THING_SERVICE_ADDDEVICETOROOM_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
);
INFO_PRINT
(
" adddevicetoroom reply
\n
"
);
cJSON
*
Item
=
cJSON_CreateObject
();
cJSON_AddItemToObject
(
payload
,
"params"
,
Item
);
char
*
payload11
=
cJSON_Print
(
payload
);
INFO_PRINT
(
" adddevicetoroom reply
\n
"
);
kk_sendData2app
(
infff
,
payload11
,
0
);
INFO_PRINT
(
" adddevicetoroom reply
\n
"
);
free
(
payload11
);
free
(
infff
);
cJSON_Delete
(
payload
);
cJSON_Delete
(
info
);
return
res
;
}
/************************************************************
/************************************************************
*功能描述:添加设备到房间处理函数
*功能描述:添加设备到房间处理函数
*输入参数:params:云端传下来JSON数据,主要包含房间ID和设备deviceCode
*输入参数:params:云端传下来JSON数据,主要包含房间ID和设备deviceCode
...
@@ -1024,6 +1066,91 @@ static int kk_service_upgrade_reply(cJSON *param,cJSON *msgId)
...
@@ -1024,6 +1066,91 @@ static int kk_service_upgrade_reply(cJSON *param,cJSON *msgId)
return
res
;
return
res
;
}
}
/************************************************************
/************************************************************
*功能描述:告警信息查询返回
*输入参数:params:云端下发数据,包含场景Id等
msgId:消息Id
*输出参数:无
*返 回 值: 0:成功;其他:失败
*其他说明:
*************************************************************/
static
int
kk_service_historyalarm_reply
(
cJSON
*
param
)
{
int
res
=
0
;
int
i
=
0
,
num
=
0
;
if
(
param
==
NULL
){
return
INVALID_PARAMETER
;
}
cJSON
*
deviceCode
=
cJSON_GetObjectItem
(
param
,
MSG_DEVICE_CODE_STR
);
if
(
deviceCode
==
NULL
){
return
FAIL_RETURN
;
}
cJSON
*
productCode
=
cJSON_GetObjectItem
(
param
,
MSG_PRODUCT_CODE_STR
);
if
(
productCode
==
NULL
){
return
FAIL_RETURN
;
}
cJSON
*
info
=
cJSON_CreateObject
();
cJSON_AddStringToObject
(
info
,
MSG_TYPE_STR
,
KK_THING_SERVICE_HISTORYALARM_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
*
alarminfo
=
kk_history_get_sensor_info
();
cJSON_AddItemToObject
(
payload
,
"params"
,
alarminfo
);
char
*
payload11
=
cJSON_Print
(
payload
);
kk_sendData2app
(
infff
,
payload11
,
0
);
free
(
payload11
);
free
(
infff
);
cJSON_Delete
(
payload
);
cJSON_Delete
(
info
);
return
res
;
}
/************************************************************
*功能描述:删除告警信息返回
*输入参数:params:云端下发数据,包含场景Id等
msgId:消息Id
*输出参数:无
*返 回 值: 0:成功;其他:失败
*其他说明:
*************************************************************/
static
int
kk_service_del_historyalarm_reply
(
cJSON
*
param
,
char
*
key
)
{
int
res
=
0
;
int
i
=
0
,
num
=
0
;
if
(
param
==
NULL
){
return
INVALID_PARAMETER
;
}
cJSON
*
deviceCode
=
cJSON_GetObjectItem
(
param
,
MSG_DEVICE_CODE_STR
);
if
(
deviceCode
==
NULL
){
return
FAIL_RETURN
;
}
cJSON
*
productCode
=
cJSON_GetObjectItem
(
param
,
MSG_PRODUCT_CODE_STR
);
if
(
productCode
==
NULL
){
return
FAIL_RETURN
;
}
cJSON
*
info
=
cJSON_CreateObject
();
cJSON_AddStringToObject
(
info
,
MSG_TYPE_STR
,
KK_THING_SERVICE_DEL_HISTORYALARM_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
,
"params"
,
key
);
char
*
payload11
=
cJSON_Print
(
payload
);
kk_sendData2app
(
infff
,
payload11
,
0
);
free
(
payload11
);
free
(
infff
);
cJSON_Delete
(
payload
);
cJSON_Delete
(
info
);
return
res
;
}
/************************************************************
*功能描述:情景面板绑定处理
*功能描述:情景面板绑定处理
*输入参数:params:云端下发数据
*输入参数:params:云端下发数据
msgId:消息Id
msgId:消息Id
...
@@ -1273,7 +1400,9 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data)
...
@@ -1273,7 +1400,9 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data)
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
);
kk_service_addDeviceToRoom_handle
(
paramStr
);
kk_service_addDeviceToRoom_handle
(
paramStr
);
kk_service_addDeviceToRoom_reply
(
info_root
,
msgId
);
}
}
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
"
);
...
@@ -1385,6 +1514,17 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data)
...
@@ -1385,6 +1514,17 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data)
cJSON
*
msgId
=
cJSON_GetObjectItem
(
payload
,
MSG_COMMON_MSGID
);
cJSON
*
msgId
=
cJSON_GetObjectItem
(
payload
,
MSG_COMMON_MSGID
);
kk_service_getCCUVersion_handle
(
info_root
,
msgId
);
kk_service_getCCUVersion_handle
(
info_root
,
msgId
);
}
}
else
if
(
strcmp
(
typeJson
->
valuestring
,
KK_THING_SERVICE_HISTORYALARM
)
==
0
){
kk_service_historyalarm_reply
(
info_root
);
}
else
if
(
strcmp
(
typeJson
->
valuestring
,
KK_THING_SERVICE_DEL_HISTORYALARM
)
==
0
){
cJSON
*
key
=
cJSON_GetObjectItem
(
payload
,
MSG_PARAMS_STR
);
if
(
key
!=
NULL
){
kk_history_delete_by_recordtime
(
"SensorHistoryInfo"
,
atoi
(
key
->
valuestring
));
kk_service_del_historyalarm_reply
(
info_root
,
key
->
valuestring
);
}
}
else
{
else
{
INFO_PRINT
(
"Error msgtype!!!
\n
"
);
INFO_PRINT
(
"Error msgtype!!!
\n
"
);
}
}
...
...
midware/midware/dm/kk_property_db.c
View file @
391a1271
...
@@ -99,7 +99,22 @@ static int _kk_property_db_Init(void)
...
@@ -99,7 +99,22 @@ static int _kk_property_db_Init(void)
_kk_property_db_unlock
();
_kk_property_db_unlock
();
return
FAIL_RETURN
;
return
FAIL_RETURN
;
}
}
const
char
*
pIndoorAirtable
=
"CREATE TABLE IF NOT EXISTS indoorAirProperties( \
idx INTEGER PRIMARY KEY, \
deviceCode varchar(33), \
identifier varchar(33), \
value varchar(33), \
valueType INTEGER, \
epNum INTEGER)"
;
if
(
sqlite3_exec
(
ctx
->
pDb
,
pIndoorAirtable
,
NULL
,
NULL
,
&
pcErr
)
!=
SQLITE_OK
)
{
ERROR_PRINT
(
"Error creating table (%s)
\n
"
,
pcErr
);
sqlite3_free
(
pcErr
);
//eUtils_LockUnlock(&sLock);
_kk_property_db_unlock
();
return
FAIL_RETURN
;
}
//eUtils_LockUnlock(&sLock);
//eUtils_LockUnlock(&sLock);
_kk_property_db_unlock
();
_kk_property_db_unlock
();
return
SUCCESS_RETURN
;
return
SUCCESS_RETURN
;
...
@@ -240,7 +255,130 @@ int kk_property_db_update_value(const char *deviceCode,const char *identifier,co
...
@@ -240,7 +255,130 @@ int kk_property_db_update_value(const char *deviceCode,const char *identifier,co
_kk_property_db_unlock
();
_kk_property_db_unlock
();
return
SUCCESS_RETURN
;
return
SUCCESS_RETURN
;
}
}
static
int
_kk_check_indoorAir_exist
(
const
char
*
deviceCode
,
const
char
*
identifier
,
int
epNum
)
{
int
isExist
=
0
;
sqlite3_stmt
*
stmt
;
char
*
pDeviceCode
=
NULL
;
char
*
pIdentifier
=
NULL
;
int
epNumDb
=
0
;
kk_property_db_ctx_t
*
ctx
=
_kk_property_db_get_ctx
();
const
char
*
searchCmd
=
"select * from indoorAirProperties;"
;
_kk_property_db_lock
();
sqlite3_prepare_v2
(
ctx
->
pDb
,
searchCmd
,
strlen
(
searchCmd
),
&
stmt
,
NULL
);
//INFO_PRINT("total_column = %d\n", sqlite3_column_count(stmt));
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
pDeviceCode
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_INDOORAIR_DEVICECODE
);
pIdentifier
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_INDOORAIR_IDENTIFITER
);
epNumDb
=
sqlite3_column_int
(
stmt
,
DB_INDOORAIR_EPNUM
);
if
((
strcmp
(
deviceCode
,
pDeviceCode
)
==
0
)
&&
(
strcmp
(
identifier
,
pIdentifier
)
==
0
)
&&
(
epNumDb
==
epNum
))
{
isExist
=
1
;
break
;
}
}
//INFO_PRINT("\n");
sqlite3_finalize
(
stmt
);
_kk_property_db_unlock
();
return
isExist
;
}
/************************************************************
*功能描述: 插入空调内机属性到数据库
*输入参数: deviceCode:设备deviceCode
epNum:内机端点
*输出参数: 无
*返 回 值: 0:成功;其他:失败
*其他说明:属性的值插入的时候先置空,后续再update
*************************************************************/
int
kk_indoorAir_db_insert
(
const
char
*
deviceCode
,
const
char
*
identifier
,
kk_tsl_data_type_e
valuetype
,
int
epNum
)
{
const
char
*
insertCmd
=
"insert into indoorAirProperties (deviceCode,identifier,value,valueType,epNum) \
values ('%s','%s','%s','%d','%d');"
;
char
*
sqlCmd
=
NULL
;
int
rc
=
0
;
char
*
zErrMsg
=
0
;
kk_property_db_ctx_t
*
ctx
=
_kk_property_db_get_ctx
();
if
(
_kk_check_indoorAir_exist
(
deviceCode
,
identifier
,
epNum
)
==
1
){
return
SUCCESS_RETURN
;
}
_kk_property_db_lock
();
sqlCmd
=
sqlite3_mprintf
(
insertCmd
,
deviceCode
,
identifier
,
""
,
valuetype
,
epNum
);
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_property_db_unlock
();
return
SUCCESS_RETURN
;
}
/************************************************************
*功能描述:通过deviceCode删除空调内机
*输入参数: deviceCode:设备deviceCode
*输出参数: 无
*返 回 值: 0:成功;其他:失败
*其他说明:
*************************************************************/
int
kk_indoorAir_delete_by_dcode
(
char
deviceCode
[
DEVICE_CODE_MAXLEN
])
{
const
char
*
deleteCmd
=
"delete from indoorAirProperties where deviceCode = '%s';"
;
char
*
sqlCmd
=
NULL
;
int
rc
=
0
;
char
*
zErrMsg
=
0
;
kk_property_db_ctx_t
*
ctx
=
_kk_property_db_get_ctx
();
_kk_property_db_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_property_db_unlock
();
return
SUCCESS_RETURN
;
}
/************************************************************
*功能描述: 更新属性值
*输入参数: deviceCode:设备deviceCode
identifier:属性名称
value:属性值
*输出参数: 无
*返 回 值: 0:成功;其他:失败
*其他说明:
*************************************************************/
int
kk_indoorAir_db_update_value
(
const
char
*
deviceCode
,
const
char
*
identifier
,
const
char
*
value
,
int
epNum
)
{
char
*
sqlCmd
=
NULL
;
int
rc
=
0
;
char
*
zErrMsg
=
0
;
kk_property_db_ctx_t
*
ctx
=
_kk_property_db_get_ctx
();
_kk_property_db_lock
();
//if()
sqlCmd
=
sqlite3_mprintf
(
"UPDATE indoorAirProperties SET value='%s' WHERE (deviceCode= '%s' and epNum = '%d') and (identifier = '%s') "
,
value
,
deviceCode
,
epNum
,
identifier
);
//DEBUG_PRINT("kk_property_db_update_value 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
{
//DEBUG_PRINT("kk_property_db_update_value successfully\n");
}
sqlite3_free
(
sqlCmd
);
_kk_property_db_unlock
();
return
SUCCESS_RETURN
;
}
/************************************************************
/************************************************************
*功能描述: 获取属性值
*功能描述: 获取属性值
*输入参数: deviceCode:设备deviceCode
*输入参数: deviceCode:设备deviceCode
...
...
midware/midware/dm/kk_property_db.h
View file @
391a1271
...
@@ -32,7 +32,14 @@ enum{
...
@@ -32,7 +32,14 @@ enum{
DB_VALUETYPE
,
DB_VALUETYPE
,
DB_DEVTYPE
DB_DEVTYPE
};
};
enum
{
DB_INDOORAIR_IDX
=
0
,
DB_INDOORAIR_DEVICECODE
,
DB_INDOORAIR_IDENTIFITER
,
DB_INDOORAIR_VALUE
,
DB_INDOORAIR_VALUETYPE
,
DB_INDOORAIR_EPNUM
};
int
kk_property_db_init
(
void
);
int
kk_property_db_init
(
void
);
int
kk_property_db_get_rawdata
(
const
char
*
identifier
,
const
int
dev_type
,
kk_prop_raw_struct_t
*
raw
,
int
count
);
int
kk_property_db_get_rawdata
(
const
char
*
identifier
,
const
int
dev_type
,
kk_prop_raw_struct_t
*
raw
,
int
count
);
int
kk_property_db_update_value
(
const
char
*
deviceCode
,
const
char
*
identifier
,
const
char
*
value
);
int
kk_property_db_update_value
(
const
char
*
deviceCode
,
const
char
*
identifier
,
const
char
*
value
);
...
@@ -46,5 +53,7 @@ int kk_property_delete_by_dcode(char deviceCode[DEVICE_CODE_MAXLEN]);
...
@@ -46,5 +53,7 @@ int kk_property_delete_by_dcode(char deviceCode[DEVICE_CODE_MAXLEN]);
int
kk_property_update_lockkeys
(
char
deviceCode
[
DEVICE_CODE_MAXLEN
],
char
*
keyId
,
int
KeyType
,
int
KeyRole
,
\
int
kk_property_update_lockkeys
(
char
deviceCode
[
DEVICE_CODE_MAXLEN
],
char
*
keyId
,
int
KeyType
,
int
KeyRole
,
\
int
IsValid
,
char
*
KeyName
,
int
KeyEffectiveTime
,
int
KeyExpiryTime
);
int
IsValid
,
char
*
KeyName
,
int
KeyEffectiveTime
,
int
KeyExpiryTime
);
int
kk_property_delete_lockkeys
(
char
deviceCode
[
DEVICE_CODE_MAXLEN
],
char
*
keyId
);
int
kk_property_delete_lockkeys
(
char
deviceCode
[
DEVICE_CODE_MAXLEN
],
char
*
keyId
);
int
kk_indoorAir_db_insert
(
const
char
*
deviceCode
,
const
char
*
identifier
,
kk_tsl_data_type_e
valuetype
,
int
epNum
);
int
kk_indoorAir_db_update_value
(
const
char
*
deviceCode
,
const
char
*
identifier
,
const
char
*
value
,
int
epNum
);
#endif
#endif
midware/midware/history/kk_history_db.c
View file @
391a1271
...
@@ -17,7 +17,7 @@
...
@@ -17,7 +17,7 @@
#include "kk_log.h"
#include "kk_log.h"
#include "kk_hal.h"
#include "kk_hal.h"
#include "kk_history_db.h"
#include "kk_history_db.h"
#include "kk_dm_mng.h"
/*************************************************************
/*************************************************************
全局变量定义
全局变量定义
...
@@ -168,6 +168,38 @@ err1:
...
@@ -168,6 +168,38 @@ err1:
return
-
1
;
return
-
1
;
}
}
cJSON
*
kk_history_get_sensor_info
(
void
)
{
char
*
pDeviceCode
=
NULL
;
char
*
pident
=
NULL
;
char
*
pValue
=
NULL
;
int
res
=
0
;
time_t
rtime
=
0
;
kk_history_ctx_t
*
ctx
=
_kk_history_get_ctx
();
char
*
selectCmd
=
"select * from SensorHistoryInfo"
;
sqlite3_stmt
*
stmt
=
NULL
;
sqlite3_prepare_v2
(
ctx
->
pDb
,
selectCmd
,
strlen
(
selectCmd
),
&
stmt
,
NULL
);
cJSON
*
arrayObj
=
cJSON_CreateArray
();
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
cJSON
*
infoItem
=
cJSON_CreateObject
();
pDeviceCode
=
(
const
char
*
)
sqlite3_column_text
(
stmt
,
DB_SENSOR_DEVICECODE
);
dm_mgr_dev_node_t
*
search_node
=
NULL
;
res
=
dm_mgr_get_device_by_devicecode
(
pDeviceCode
,
&
search_node
);
if
(
res
<
0
)
{
continue
;
}
cJSON_AddStringToObject
(
infoItem
,
"productCode"
,
search_node
->
productCode
);
pident
=
(
const
char
*
)
sqlite3_column_text
(
stmt
,
DB_SENSOR_IDENTIFIER
);
cJSON_AddStringToObject
(
infoItem
,
"identifier"
,
pident
);
pValue
=
(
const
char
*
)
sqlite3_column_text
(
stmt
,
DB_SENSOR_VALUE
);
cJSON_AddStringToObject
(
infoItem
,
"value"
,
pValue
);
rtime
=
sqlite3_column_int
(
stmt
,
DB_SENSOR_RECORDTIME
);
cJSON_AddNumberToObject
(
infoItem
,
"alarm_time"
,
rtime
);
cJSON_AddItemToArray
(
arrayObj
,
infoItem
);
}
sqlite3_finalize
(
stmt
);
return
arrayObj
;
}
/************************************************************
/************************************************************
*功能描述: 插入传感器警告类信息到数据库
*功能描述: 插入传感器警告类信息到数据库
...
...
midware/midware/history/kk_history_db.h
View file @
391a1271
#ifndef __KK_HISTORY_DB_H__
#ifndef __KK_HISTORY_DB_H__
#define __KK_HISTORY_DB_H__
#define __KK_HISTORY_DB_H__
#include "cJSON.h"
enum
{
enum
{
DB_SENSOR_DEVICECODE
=
0
,
DB_SENSOR_DEVICECODE
=
0
,
DB_SENSOR_IDENTIFIER
,
DB_SENSOR_IDENTIFIER
,
...
@@ -18,5 +18,5 @@ int kk_history_db_init(void);
...
@@ -18,5 +18,5 @@ int kk_history_db_init(void);
int
kk_history_delete_by_recordtime
(
const
char
*
table
,
time_t
itime
);
int
kk_history_delete_by_recordtime
(
const
char
*
table
,
time_t
itime
);
int
kk_history_insert_sensor_info
(
const
char
*
deviceCode
,
const
char
*
identifier
,
const
char
*
valueStr
,
time_t
itime
);
int
kk_history_insert_sensor_info
(
const
char
*
deviceCode
,
const
char
*
identifier
,
const
char
*
valueStr
,
time_t
itime
);
int
kk_history_insert_Outlet_info
(
const
char
*
deviceCode
,
const
char
*
power
,
const
char
*
metering
,
time_t
itime
);
int
kk_history_insert_Outlet_info
(
const
char
*
deviceCode
,
const
char
*
power
,
const
char
*
metering
,
time_t
itime
);
cJSON
*
kk_history_get_sensor_info
(
void
);
#endif
#endif
midware/midware/midware.c
View file @
391a1271
...
@@ -46,16 +46,7 @@ char * g_filerToPlatTable[] =
...
@@ -46,16 +46,7 @@ char * g_filerToPlatTable[] =
(
char
*
){
KK_ADD_TOPIC_REPLY
},
(
char
*
){
KK_ADD_TOPIC_REPLY
},
(
char
*
){
KK_LOGIN_TOPIC_REPLY
},
(
char
*
){
KK_LOGIN_TOPIC_REPLY
},
(
char
*
){
KK_THING_SERVICE_PROPERTY_GET
},
(
char
*
){
KK_THING_SERVICE_PROPERTY_GET
},
(
char
*
){
KK_THING_CLOUDSTATE_MSG
},
(
char
*
){
KK_THING_CLOUDSTATE_MSG
},
#if 0
{KK_THING_SERVICE_SETLOCALTIMER},
{KK_THING_SERVICE_GETLOCALTIMER},
{KK_THING_SERVICE_SETCOUNTDOWN},
{KK_THING_SERVICE_GETCOUNTDOWN},
{KK_THING_SERVICE_ADDKEY},
{KK_THING_SERVICE_DELETEKEY},
{KK_THING_SERVICE_MODIFYKEY},
#endif
(
char
*
){
KK_THING_SERVICE_ADDSCENC
},
(
char
*
){
KK_THING_SERVICE_ADDSCENC
},
(
char
*
){
KK_THING_SERVICE_UPDATESCENC
},
(
char
*
){
KK_THING_SERVICE_UPDATESCENC
},
(
char
*
){
KK_THING_SERVICE_DELETESCENC
},
(
char
*
){
KK_THING_SERVICE_DELETESCENC
},
...
@@ -63,7 +54,9 @@ char * g_filerToPlatTable[] =
...
@@ -63,7 +54,9 @@ char * g_filerToPlatTable[] =
(
char
*
){
KK_THING_SERVICE_SYNCINFO
},
(
char
*
){
KK_THING_SERVICE_SYNCINFO
},
(
char
*
){
KK_THING_SERVICE_BINDSCENE
},
(
char
*
){
KK_THING_SERVICE_BINDSCENE
},
(
char
*
){
KK_THING_SERVICE_UNBINDSBUTTTON
},
(
char
*
){
KK_THING_SERVICE_UNBINDSBUTTTON
},
(
char
*
){
KK_THING_SERVICE_ACTIVEBUTTON
},
(
char
*
){
KK_THING_SERVICE_ACTIVEBUTTON
},
(
char
*
){
KK_THING_SERVICE_HISTORYALARM
},
(
char
*
){
KK_THING_SERVICE_DEL_HISTORYALARM
},
};
};
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
};
...
@@ -544,7 +537,7 @@ void gw2mid_cb(void* data, int len, char* chalMark){
...
@@ -544,7 +537,7 @@ void gw2mid_cb(void* data, int len, char* chalMark){
*返 回 值: 无
*返 回 值: 无
*其他说明:
*其他说明:
*************************************************************/
*************************************************************/
static
int
kk_alarm_notify_handle
(
dm_mgr_dev_node_t
*
node
,
char
*
identifier
)
static
int
kk_alarm_notify_handle
(
dm_mgr_dev_node_t
*
node
,
char
*
identifier
,
char
*
valueBuf
)
{
{
int
currentValue
=
0
;
int
currentValue
=
0
;
char
armingstate
[
16
]
=
{
0
};
char
armingstate
[
16
]
=
{
0
};
...
@@ -565,10 +558,12 @@ static int kk_alarm_notify_handle(dm_mgr_dev_node_t *node,char *identifier)
...
@@ -565,10 +558,12 @@ static int kk_alarm_notify_handle(dm_mgr_dev_node_t *node,char *identifier)
cJSON_AddStringToObject
(
payload
,
"method"
,
"thing.event.alarmNotify"
);
cJSON_AddStringToObject
(
payload
,
"method"
,
"thing.event.alarmNotify"
);
cJSON_AddStringToObject
(
payload
,
"version"
,
"1.0"
);
cJSON_AddStringToObject
(
payload
,
"version"
,
"1.0"
);
cJSON_AddStringToObject
(
payload
,
"identifier"
,
"alarmNotify"
);
cJSON_AddStringToObject
(
payload
,
"identifier"
,
"alarmNotify"
);
cJSON_AddStringToObject
(
payload
,
"msgId"
,
"1"
);
char
msgId
[
64
]
=
{
0
};
iotx_report_id
(
msgId
);
cJSON_AddStringToObject
(
payload
,
"msgId"
,
msgId
);
//char timerStr[16] = {0};
//char timerStr[16] = {0};
//HAL_GetTime_s(timerStr);
//HAL_GetTime_s(timerStr);
cJSON_AddNumberToObject
(
payload
,
"time"
,
time
(
NULL
));
cJSON_AddNumberToObject
(
payload
,
"time"
,
HAL_GetTime_ms
(
));
cJSON
*
param
=
cJSON_CreateObject
();
cJSON
*
param
=
cJSON_CreateObject
();
if
(
strcmp
(
identifier
,
"BatteryAlarm"
)
==
0
){
if
(
strcmp
(
identifier
,
"BatteryAlarm"
)
==
0
){
...
@@ -582,14 +577,17 @@ static int kk_alarm_notify_handle(dm_mgr_dev_node_t *node,char *identifier)
...
@@ -582,14 +577,17 @@ static int kk_alarm_notify_handle(dm_mgr_dev_node_t *node,char *identifier)
if
(
currentValue
==
2
)
//24小时警戒
if
(
currentValue
==
2
)
//24小时警戒
{
{
kk_sendData2app
(
infff
,
payload11
,
0
);
kk_sendData2app
(
infff
,
payload11
,
0
);
kk_history_insert_sensor_info
(
node
->
deviceCode
,
identifier
,
valueBuf
,
HAL_GetTime
());
}
}
else
if
(
currentValue
==
1
&&
atoi
(
armingstate
)
==
0
)
//离家布防
else
if
(
currentValue
==
1
&&
atoi
(
armingstate
)
==
0
)
//离家布防
{
{
kk_sendData2app
(
infff
,
payload11
,
0
);
kk_sendData2app
(
infff
,
payload11
,
0
);
kk_history_insert_sensor_info
(
node
->
deviceCode
,
identifier
,
valueBuf
,
HAL_GetTime
());
}
}
else
if
(
currentValue
==
0
&&
atoi
(
armingstate
)
==
2
)
//在家布防
else
if
(
currentValue
==
0
&&
atoi
(
armingstate
)
==
2
)
//在家布防
{
{
kk_sendData2app
(
infff
,
payload11
,
0
);
kk_sendData2app
(
infff
,
payload11
,
0
);
kk_history_insert_sensor_info
(
node
->
deviceCode
,
identifier
,
valueBuf
,
HAL_GetTime
());
}
}
else
if
(
atoi
(
armingstate
)
==
3
&&
currentValue
==
0
)
else
if
(
atoi
(
armingstate
)
==
3
&&
currentValue
==
0
)
{
{
...
@@ -601,6 +599,7 @@ static int kk_alarm_notify_handle(dm_mgr_dev_node_t *node,char *identifier)
...
@@ -601,6 +599,7 @@ static int kk_alarm_notify_handle(dm_mgr_dev_node_t *node,char *identifier)
INFO_PRINT
(
"state: [%d]
\n
"
,
state
);
INFO_PRINT
(
"state: [%d]
\n
"
,
state
);
if
(
state
){
if
(
state
){
kk_sendData2app
(
infff
,
payload11
,
0
);
kk_sendData2app
(
infff
,
payload11
,
0
);
kk_history_insert_sensor_info
(
node
->
deviceCode
,
identifier
,
valueBuf
,
HAL_GetTime
());
}
}
}
}
}
}
...
@@ -610,7 +609,89 @@ static int kk_alarm_notify_handle(dm_mgr_dev_node_t *node,char *identifier)
...
@@ -610,7 +609,89 @@ static int kk_alarm_notify_handle(dm_mgr_dev_node_t *node,char *identifier)
cJSON_Delete
(
info
);
cJSON_Delete
(
info
);
return
0
;
return
0
;
}
}
static
int
kk_indoorAir_property_save
(
cJSON
*
payload
,
char
*
deviceCode
)
{
dm_mgr_dev_node_t
*
node
=
NULL
;
kk_tsl_data_t
*
property
=
NULL
;
cJSON
*
propertyItem
=
NULL
;
int
res
=
0
;
int
idx
=
0
;
int
epNumInt
=
0
;
cJSON
*
params
=
cJSON_GetObjectItem
(
payload
,
MSG_PARAMS_STR
);
if
(
params
==
NULL
)
return
FAIL_RETURN
;
cJSON
*
eps
=
cJSON_GetObjectItem
(
params
,
"eps"
);
if
(
eps
==
NULL
||
eps
->
type
!=
cJSON_Array
){
return
FAIL_RETURN
;
}
res
=
dm_mgr_get_device_by_devicecode
(
deviceCode
,
&
node
);
if
(
res
<
SUCCESS_RETURN
)
{
return
FAIL_RETURN
;
}
cJSON
*
client_list
=
eps
->
child
;
while
(
client_list
!=
NULL
){
cJSON
*
epNum
=
cJSON_GetObjectItem
(
client_list
,
"epNum"
);
if
(
epNum
==
NULL
){
continue
;
}
if
(
epNum
->
type
==
cJSON_Number
){
epNumInt
=
epNum
->
valueint
;
}
else
if
(
epNum
->
type
==
cJSON_String
){
epNumInt
=
epNum
->
valuestring
;
}
for
(
idx
=
0
;
idx
<
node
->
dev_shadow
->
property_number
;
idx
++
){
property
=
(
kk_tsl_data_t
*
)(
node
->
dev_shadow
->
properties
+
idx
);
if
(
property
==
NULL
){
continue
;
}
propertyItem
=
cJSON_GetObjectItem
(
client_list
,
property
->
identifier
);
if
(
propertyItem
!=
NULL
){
if
(
property
->
data_value
.
type
==
KK_TSL_DATA_TYPE_INT
||
property
->
data_value
.
type
==
KK_TSL_DATA_TYPE_ENUM
||
property
->
data_value
.
type
==
KK_TSL_DATA_TYPE_BOOL
){
char
valBuf
[
16
]
=
{
0
};
int
value
=
propertyItem
->
valueint
;
sprintf
(
valBuf
,
"%d"
,
value
);
kk_indoorAir_db_update_value
(
deviceCode
,
property
->
identifier
,
valBuf
,
epNumInt
);
}
else
if
(
property
->
data_value
.
type
==
KK_TSL_DATA_TYPE_FLOAT
||
property
->
data_value
.
type
==
KK_TSL_DATA_TYPE_DOUBLE
){
char
valBuf
[
16
]
=
{
0
};
sprintf
(
valBuf
,
"%f"
,
propertyItem
->
valuedouble
);
kk_indoorAir_db_update_value
(
deviceCode
,
property
->
identifier
,
valBuf
,
epNumInt
);
}
else
if
(
property
->
data_value
.
type
==
KK_TSL_DATA_TYPE_TEXT
){
kk_indoorAir_db_update_value
(
deviceCode
,
property
->
identifier
,
propertyItem
->
valuestring
,
epNumInt
);
}
}
}
client_list
=
client_list
->
next
;
}
return
0
;
}
static
int
kk_indoorAir_property_handle
(
cJSON
*
info
,
cJSON
*
payload
,
char
*
deviceCode
)
{
kk_indoorAir_property_save
(
payload
,
deviceCode
);
cJSON_AddStringToObject
(
payload
,
MSG_DEVICE_CODE_STR
,
deviceCode
);
char
*
payload11
=
cJSON_Print
(
payload
);
char
*
infff
=
cJSON_Print
(
info
);
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
;
kk_tsl_data_t
*
property
=
NULL
;
if
(
node
==
NULL
){
return
-
1
;
}
for
(
idx
=
0
;
idx
<
node
->
dev_shadow
->
property_number
;
idx
++
){
property
=
(
kk_tsl_data_t
*
)(
node
->
dev_shadow
->
properties
+
idx
);
if
(
property
==
NULL
){
continue
;
}
kk_indoorAir_db_insert
(
deviceCode
,
property
->
identifier
,
property
->
data_value
.
type
,
epNum
);
}
return
0
;
}
void
kk_platMsg_handle
(
void
*
data
,
char
*
chalMark
){
void
kk_platMsg_handle
(
void
*
data
,
char
*
chalMark
){
int
res
=
0
;
int
res
=
0
;
cJSON
*
json
;
cJSON
*
json
;
...
@@ -673,6 +754,21 @@ void kk_platMsg_handle(void* data, char* chalMark){
...
@@ -673,6 +754,21 @@ void kk_platMsg_handle(void* data, char* chalMark){
}
}
dm_mgr_update_timestamp_by_devicecode
(
devCode
->
valuestring
,
HAL_Uptimes
());
dm_mgr_update_timestamp_by_devicecode
(
devCode
->
valuestring
,
HAL_Uptimes
());
}
}
else
if
(
strstr
(
msgType
->
valuestring
,
KK_THING_STATUS_ONLINE
)
!=
NULL
){
//空调内机上报处理
jsonPay
=
cJSON_GetObjectItem
(
payload
,
MSG_PARAMS_STR
);
if
(
jsonPay
==
NULL
)
goto
error
;
devCode
=
cJSON_GetObjectItem
(
jsonPay
,
MSG_DEVICE_CODE_STR
);
dm_mgr_dev_node_t
*
search_node
=
NULL
;
res
=
dm_mgr_get_device_by_devicecode
(
devCode
->
valuestring
,
&
search_node
);
if
(
res
<
SUCCESS_RETURN
)
{
goto
error
;
}
if
(
strcmp
(
search_node
->
productType
,
KK_DM_AIR_GATEWAY_TYPE
)
==
0
){
cJSON
*
epNumJson
=
cJSON_GetObjectItem
(
jsonPay
,
"epNum"
);
if
(
epNumJson
==
NULL
)
goto
error
;
kk_indoorAir_online_handle
(
search_node
,
devCode
->
valuestring
,
epNumJson
->
valueint
);
}
}
else
if
(
strstr
(
msgType
->
valuestring
,
KK_THING_TOPO_BATCH_ADD_MSG
)
!=
NULL
){
else
if
(
strstr
(
msgType
->
valuestring
,
KK_THING_TOPO_BATCH_ADD_MSG
)
!=
NULL
){
kk_ipc_send
(
IPC_MID2APP
,
data
,
strlen
(
data
));
kk_ipc_send
(
IPC_MID2APP
,
data
,
strlen
(
data
));
jsonPay
=
cJSON_GetObjectItem
(
payload
,
MSG_PARAMS_STR
);
jsonPay
=
cJSON_GetObjectItem
(
payload
,
MSG_PARAMS_STR
);
...
@@ -702,19 +798,24 @@ void kk_platMsg_handle(void* data, char* chalMark){
...
@@ -702,19 +798,24 @@ void kk_platMsg_handle(void* data, char* chalMark){
/*如果是离线状态,上报在线给云端*/
/*如果是离线状态,上报在线给云端*/
dm_mgr_set_dev_onoffline
(
search_node
,
0
);
dm_mgr_set_dev_onoffline
(
search_node
,
0
);
}
}
/*插座类设备保存功率历史记录*/
if
(
strcmp
(
search_node
->
productType
,
KK_DM_AIR_GATEWAY_TYPE
)
==
0
){
if
(
strcmp
(
search_node
->
productType
,
"outlet"
)
==
0
){
kk_indoorAir_property_handle
(
info
,
payload
,
info_dcode
->
valuestring
);
cJSON
*
power
=
cJSON_GetObjectItem
(
jsonPay
,
"Power"
);
}
if
(
power
!=
NULL
){
else
{
char
buf
[
16
]
=
{
0
};
/*插座类设备保存功率历史记录*/
sprintf
(
buf
,
"%f"
,
power
->
valuedouble
);
if
(
strcmp
(
search_node
->
productType
,
"outlet"
)
==
0
){
kk_history_insert_Outlet_info
(
info_dcode
->
valuestring
,
buf
,
""
,
HAL_GetTime
());
cJSON
*
power
=
cJSON_GetObjectItem
(
jsonPay
,
"Power"
);
if
(
power
!=
NULL
){
char
buf
[
16
]
=
{
0
};
sprintf
(
buf
,
"%f"
,
power
->
valuedouble
);
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
);
kk_scene_iftt_check
(
info_dcode
->
valuestring
,
jsonPay
);
free
(
outstr
);
}
}
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
);
kk_scene_iftt_check
(
info_dcode
->
valuestring
,
jsonPay
);
free
(
outstr
);
}
else
if
(
strstr
(
msgType
->
valuestring
,
KK_THING_TOPO_DELETE_MSG
)
!=
NULL
){
}
else
if
(
strstr
(
msgType
->
valuestring
,
KK_THING_TOPO_DELETE_MSG
)
!=
NULL
){
INFO_PRINT
(
"kk_platMsg_handle data: handle delete
\n
"
);
INFO_PRINT
(
"kk_platMsg_handle data: handle delete
\n
"
);
jsonPay
=
cJSON_GetObjectItem
(
payload
,
MSG_PARAMS_STR
);
jsonPay
=
cJSON_GetObjectItem
(
payload
,
MSG_PARAMS_STR
);
...
@@ -789,8 +890,7 @@ void kk_platMsg_handle(void* data, char* chalMark){
...
@@ -789,8 +890,7 @@ void kk_platMsg_handle(void* data, char* chalMark){
kk_tsl_set_value
(
kk_tsl_set_event_output_value
,
node
->
dev_shadow
,
tmpStr
,
NULL
,
itemDataIdentifier
->
valuestring
);
kk_tsl_set_value
(
kk_tsl_set_event_output_value
,
node
->
dev_shadow
,
tmpStr
,
NULL
,
itemDataIdentifier
->
valuestring
);
}
}
if
(
sensorDev
){
if
(
sensorDev
){
kk_history_insert_sensor_info
(
info_dcode
->
valuestring
,
eventItem
->
identifier
,
valueBuf
,
HAL_GetTime
());
kk_alarm_notify_handle
(
node
,
eventItem
->
identifier
,
valueBuf
);
//告警信息处理
kk_alarm_notify_handle
(
node
,
eventItem
->
identifier
);
//告警信息处理
}
}
INFO_PRINT
(
"kk_platMsg_handle data: event post
\n
"
);
INFO_PRINT
(
"kk_platMsg_handle data: event post
\n
"
);
dm_msg_thing_event_post
(
info_dcode
->
valuestring
,
eventItem
->
identifier
,
NULL
);
dm_msg_thing_event_post
(
info_dcode
->
valuestring
,
eventItem
->
identifier
,
NULL
);
...
...
nx5_soc_gw/smarthome_z3gw_nx5
View file @
391a1271
No preview for this file type
onboot.sh
View file @
391a1271
...
@@ -5,6 +5,7 @@ sqlite_File="/app/ccuApps/lib/libsqlite3.so.0"
...
@@ -5,6 +5,7 @@ sqlite_File="/app/ccuApps/lib/libsqlite3.so.0"
run_Dir
=
"/data/kk"
run_Dir
=
"/data/kk"
tsl_Dir
=
"
${
run_Dir
}
/tsl"
tsl_Dir
=
"
${
run_Dir
}
/tsl"
map_Dir
=
"
${
run_Dir
}
/map"
#dev_cfg_Dir="${run_Dir}/dev_config_table"
#dev_cfg_Dir="${run_Dir}/dev_config_table"
#cd /sbin/
#cd /sbin/
...
@@ -16,10 +17,12 @@ if [ ! -d "$run_Dir" ]; then
...
@@ -16,10 +17,12 @@ if [ ! -d "$run_Dir" ]; then
mkdir
${
run_Dir
}
mkdir
${
run_Dir
}
fi
fi
if
[
!
-d
"
$tsl_Dir
"
]
;
then
if
[
!
-d
"
$tsl_Dir
"
]
;
then
cp
-rf
/app/ccuApps/tsl
${
run_Dir
}
/
cp
-rf
/app/ccuApps/tsl
${
run_Dir
}
/
fi
fi
if
[
!
-d
"
$map_Dir
"
]
;
then
cp
-rf
/app/ccuApps/map
${
run_Dir
}
/
fi
cd
/app/ccuApps/lib
cd
/app/ccuApps/lib
if
[
!
-f
"
$nanomsg_File
"
]
;
then
if
[
!
-f
"
$nanomsg_File
"
]
;
then
...
@@ -42,6 +45,9 @@ sleep 3
...
@@ -42,6 +45,9 @@ sleep 3
sleep
1
sleep
1
#/home/kk/process_check.sh >/dev/null 2>&1 &
#/home/kk/process_check.sh >/dev/null 2>&1 &
/app/ccuApps/bin/smarthome_z3gw_nx5
-r1
-l3
--device-def
=
/app/ccuApps/kk_device_def.json
--db
=
/data/kk/kk_z3gw.db
--uart
=
/dev/ttyS1&
/app/ccuApps/bin/smarthome_z3gw_nx5
-r1
-l3
--device-def
=
/app/ccuApps/kk_device_def.json
--db
=
/data/kk/kk_z3gw.db
--uart
=
/dev/ttyS1&
sleep
2
/app/ccuApps/bin/kk_lan &
sleep
1
sleep
1
echo
"*/1 * * * * /app/ccuApps/process_check.sh"
>
/etc/cron.d/ccu
||
{
echo
"ERROR:add ccu crontab rule failed."
;
exit
1
;
}
ntpd
-n
-q
-d
-p
stdtime.gov.hk &
ntpd
-n
-q
-d
-p
stdtime.gov.hk &
exit
0
exit
0
\ No newline at end of file
process_check.sh
View file @
391a1271
#!/bin/sh
#!/bin/sh
#判断进程是否存在,如果不存在就启动它
#判断进程是否存在,如果不存在就启动它
while
true
do
sleep
30
PIDS
=
`
ps|grep kk_midware |grep
-v
grep
|
awk
'{print $1}'
`
PIDS
=
`
ps|grep kk_midware |grep
-v
grep
|
awk
'{print $1}'
`
if
[
"
$PIDS
"
!=
""
]
;
then
if
[
"
$PIDS
"
!=
""
]
;
then
echo
"kk_midware is runing!"
echo
"kk_midware is runing!"
else
else
/home/kk/kk_midware
>
/dev/null 2>&1 &
export
LD_LIBRARY_PATH
=
/app/ccuApps/lib
/app/ccuApps/bin/kk_midware &
#运行进程
#运行进程
fi
fi
sleep
3
0
sleep
3
PIDS
=
`
ps|grep kcloud |grep
-v
grep
|
awk
'{print $1}'
`
PIDS
=
`
ps|grep k
k_
cloud |grep
-v
grep
|
awk
'{print $1}'
`
if
[
"
$PIDS
"
!=
""
]
;
then
if
[
"
$PIDS
"
!=
""
]
;
then
echo
"kcloud is runing!"
echo
"k
k_
cloud is runing!"
else
else
echo
"kcloud is not running ,now restart kk_midware and kcloud"
echo
"kk_cloud is not running ,now restart kk_midware and kk_cloud"
pgrep kk_midware | xargs
kill
-s
9
export
LD_LIBRARY_PATH
=
/app/ccuApps/lib
/home/kk/kk_midware
>
/dev/null 2>&1 &
/app/ccuApps/bin/kk_cloud &
/home/kk/kcloud
>
/dev/null 2>&1 &
fi
fi
sleep
30
sleep
1
PIDS
=
`
ps|grep
Z3GatewayHost
|grep
-v
grep
|
awk
'{print $1}'
`
PIDS
=
`
ps|grep
smarthome_z3gw_nx5
|grep
-v
grep
|
awk
'{print $1}'
`
if
[
"
$PIDS
"
!=
""
]
;
then
if
[
"
$PIDS
"
!=
""
]
;
then
echo
"
Z3GatewayHost
is runing!"
echo
"
smarthome_z3gw_nx5
is runing!"
else
else
echo
"Z3GatewayHost is not running ,now restart Z3GatewayHost"
echo
"smarthome_z3gw_nx5 is not running ,now restart smarthome_z3gw_nx5"
pgrep Z3GatewayHost | xargs
kill
-s
9
export
LD_LIBRARY_PATH
=
/app/ccuApps/lib
/home/kk/Z3GatewayHost
-f
x
-p
/dev/ttyS0
>
/dev/null 2>&1 &
/app/ccuApps/bin/smarthome_z3gw_nx5
-r1
-l3
--device-def
=
/app/ccuApps/kk_device_def.json
--db
=
/data/kk/kk_z3gw.db
--uart
=
/dev/ttyS1&
fi
sleep
1
PIDS
=
`
ps|grep kk_lan |grep
-v
grep
|
awk
'{print $1}'
`
if
[
"
$PIDS
"
!=
""
]
;
then
echo
"kk_lan is runing!"
else
echo
"kk_lan is not running ,now restart kk_lan"
export
LD_LIBRARY_PATH
=
/app/ccuApps/lib
/app/ccuApps/bin/kk_lan &
fi
fi
done
tools/build-rules/_rules-top.mk
View file @
391a1271
...
@@ -203,6 +203,7 @@ package:
...
@@ -203,6 +203,7 @@ package:
mkdir
$(releaseDir)
mkdir
$(releaseDir)
mkdir
$(releaseDir)
/lib
mkdir
$(releaseDir)
/lib
mkdir
$(releaseDir)
/bin
mkdir
$(releaseDir)
/bin
mkdir
$(releaseDir)
/map
cp
-rf
$(TOP_DIR)
/tsl
$(TOP_DIR)
/
$(releaseDir)
cp
-rf
$(TOP_DIR)
/tsl
$(TOP_DIR)
/
$(releaseDir)
cp
-rf
$(TOP_DIR)
/output/release/lib/
*
.so
$(TOP_DIR)
/
$(releaseDir)
/lib
cp
-rf
$(TOP_DIR)
/output/release/lib/
*
.so
$(TOP_DIR)
/
$(releaseDir)
/lib
cp
-rf
$(TOP_DIR)
/output/release/bin/
*
$(TOP_DIR)
/
$(releaseDir)
/bin
cp
-rf
$(TOP_DIR)
/output/release/bin/
*
$(TOP_DIR)
/
$(releaseDir)
/bin
...
@@ -210,6 +211,7 @@ package:
...
@@ -210,6 +211,7 @@ package:
cp
-rf
$(TOP_DIR)/process_check.sh
$(TOP_DIR)/$(releaseDir)/
cp
-rf
$(TOP_DIR)/process_check.sh
$(TOP_DIR)/$(releaseDir)/
cp
-rf
$(TOP_DIR)/onboot.sh
$(TOP_DIR)/$(releaseDir)/
cp
-rf
$(TOP_DIR)/onboot.sh
$(TOP_DIR)/$(releaseDir)/
cp
-rf
$(TOP_DIR)/VERSION
$(TOP_DIR)/$(releaseDir)/
cp
-rf
$(TOP_DIR)/VERSION
$(TOP_DIR)/$(releaseDir)/
cp
-rf
$(TOP_DIR)/opcodeMapCfg/*
$(TOP_DIR)/$(releaseDir)/map
#cp -rf $(TOP_DIR)/platform/zigbee/app/builder/Z3GatewayHost/ZB/dev_config_table $(TOP_DIR)/$(releaseDir)/
#cp -rf $(TOP_DIR)/platform/zigbee/app/builder/Z3GatewayHost/ZB/dev_config_table $(TOP_DIR)/$(releaseDir)/
#cp -rf $(TOP_DIR)/platform/zigbee/app/builder/Z3GatewayHost/ZB/dev_map_table.json $(TOP_DIR)/$(releaseDir)/dev_config_table/
#cp -rf $(TOP_DIR)/platform/zigbee/app/builder/Z3GatewayHost/ZB/dev_map_table.json $(TOP_DIR)/$(releaseDir)/dev_config_table/
ifeq
($(CONFIG_MODEL),ubuntu)
ifeq
($(CONFIG_MODEL),ubuntu)
...
...
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