Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
K
KonkeKangjia
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
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
杨熙
KonkeKangjia
Commits
c0a496d3
Commit
c0a496d3
authored
May 13, 2021
by
杨熙
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
調整設備在線離線推送
parent
83f59c20
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
94 additions
and
102 deletions
+94
-102
src/MQ_CCU_Adapter.cpp
src/MQ_CCU_Adapter.cpp
+93
-101
src/kk_handleDeviceInfo.cpp
src/kk_handleDeviceInfo.cpp
+1
-1
No files found.
src/MQ_CCU_Adapter.cpp
View file @
c0a496d3
...
...
@@ -148,11 +148,11 @@ int MQ_CCU_Adapter::open() {
client
->
init
(
""
,
""
,
this
,
false
);
//开启TCP 与UDP
kk_connect
::
GetInstance
()
->
init
(
KK_HwDevManager
::
GetInstance
()
->
getCcuId
(),
""
,
false
);
//
kk_connect::GetInstance()->init( KK_HwDevManager::GetInstance()->getCcuId(), "",false);
//连接Roma平台,绑定就进行启动
oninitmqttsdk
();
Http_equest
();
//
Http_equest();
return
0
;
}
...
...
@@ -299,11 +299,10 @@ void MQ_CCU_Adapter::onCloudMsgRecv(string payload,string topicName){
this
->
discoveryEnable
=
false
;
onDeviceRequestJoin
(
false
);
}
}
else
if
(
jsonObject
[
"data"
][
"svcs"
][
0u
][
"cmds"
][
0u
][
"key"
].
asString
()
==
"_RemoveChild"
)
{
}
else
if
(
jsonObject
[
"data"
][
"svcs"
][
0u
][
"cmds"
][
0u
][
"key"
].
asString
()
==
"_RemoveChild"
)
{
string
sn
=
jsonObject
[
"data"
][
"svcs"
][
0u
][
"cmds"
][
0u
][
"val"
].
asString
();
onDeviceRequestDelete
(
sn
);
}
}
}
else
{
//控制设备状态
string
sn
=
jsonObject
[
"data"
][
"devID"
].
asString
();
string
svcid
=
jsonObject
[
"data"
][
"svcs"
][
0u
][
"sid"
].
asString
();
...
...
@@ -337,7 +336,7 @@ int MQ_CCU_Adapter::send_Control_Info(string wholeMsg){
int
MQ_CCU_Adapter
::
addCCuroom
(){
EH
::
Json
::
Value
roomarg
;
roomarg
[
"name"
]
=
"
Roma
特定房间不可删"
;
roomarg
[
"name"
]
=
"
康佳
特定房间不可删"
;
roomarg
[
"room_icon"
]
=
"a_0"
;
roomarg
[
"floor_id"
]
=
"3"
;
roomarg
[
"room_pos"
]
=
"10"
;
...
...
@@ -351,7 +350,7 @@ int MQ_CCU_Adapter::saveCCuroom(EH::Json::Value arg){
if
(
SaveRoomEnable
){
KK_HwDevManager
::
KKRoomId
roominfo
;
roominfo
.
roonid
=
ccuroomid
;
roominfo
.
name
=
"
Roma
特定房间不可删"
;
roominfo
.
name
=
"
康佳
特定房间不可删"
;
onlyroomid
[
ccuroomid
]
=
roominfo
;
LOGD
(
"prepare add room
\n
"
);
KK_HwDevManager
::
GetInstance
()
->
saveroomid
(
onlyroomid
);
...
...
@@ -373,7 +372,7 @@ void MQ_CCU_Adapter::Specific_rooms(EH::Json::Value rooms) {
string
roomid
=
KK_HwDevManager
::
GetInstance
()
->
GetRoomId
();
//特定的房间
map
<
string
,
string
>::
iterator
it
=
roomMap
.
find
(
roomid
);
if
(
it
==
roomMap
.
end
()){
LOGW
(
"
Roma
特定的房间被删除,开始重新创建,小K重新进入才会显示.
\n
"
);
LOGW
(
"
康佳
特定的房间被删除,开始重新创建,小K重新进入才会显示.
\n
"
);
onlyroomid
.
erase
(
roomid
);
SaveRoomEnable
=
true
;
addCCuroom
();
...
...
@@ -411,32 +410,62 @@ void MQ_CCU_Adapter::handleGetDevsHardwareInfo(EH::Json::Value arg){
void
MQ_CCU_Adapter
::
handleDevOnlinePush
(
EH
::
Json
::
Value
arg
){
try
{
string
respTopic_1
=
pushTopic
+
"/deviceonline"
;
//子设备在线
string
respTopic_2
=
pushTopic
+
"/deviceoffline"
;
//子设备离线
string
sn
=
Replace
(
arg
[
"mac"
].
asString
(),
":"
,
""
);
map
<
string
,
kk_handleDeviceInfo
::
HwSubDev
*>::
iterator
subDevIt
=
hwSubDevs
.
find
(
sn
);
if
(
subDevIt
!=
hwSubDevs
.
end
()){
int
onlinestatus
=
arg
[
"online_status"
].
asInt
();
int
product_id
=
arg
[
"product_id"
].
asInt
();
if
(
onlinestatus
==
2
){
EH
::
Json
::
Value
payload
;
payload
[
"dev_id"
]
=
sn
;
//请求发起者
payload
[
"dev_type"
]
=
subDevIt
->
second
->
dev_type
;
payload
[
"gw_id"
]
=
gw_id
;
sendtoRoma
(
payload
,
respTopic_2
);
//推送新设备到Roma //在线状态的推送 ,待更改 2020.10.15.9
subDevIt
->
second
->
online
=
false
;
string
respTopic_1
=
pushTopic
+
"/online"
;
//子设备在线
string
respTopic_2
=
pushTopic
+
"/offline"
;
//子设备离线
string
sn
=
Replace
(
arg
[
"mac"
].
asString
(),
":"
,
""
);
map
<
string
,
kk_handleDeviceInfo
::
HwSubDev
*>::
iterator
subDevIt
=
hwSubDevs
.
find
(
sn
);
if
(
subDevIt
!=
hwSubDevs
.
end
()){
int
onlinestatus
=
arg
[
"online_status"
].
asInt
();
int
product_id
=
arg
[
"product_id"
].
asInt
();
if
(
onlinestatus
==
2
){
EH
::
Json
::
Value
payload
;
if
(
subDevIt
->
second
->
dev_type
==
ZeroFire2ChanChopinSwitch_PID
){
//肖邦-二路灯控
payload
[
"devID"
]
=
sn
+
"01"
;
payload
[
"prodID"
]
=
subDevIt
->
second
->
dev_type
;
sendtoRoma
(
payload
,
respTopic_2
);
payload
[
"devID"
]
=
sn
+
"02"
;
sendtoRoma
(
payload
,
respTopic_2
);
}
else
if
(
subDevIt
->
second
->
dev_type
==
ZeroFire3ChanChopinSwitch_PID
){
//肖邦-三路灯控
payload
[
"devID"
]
=
sn
+
"01"
;
payload
[
"prodID"
]
=
subDevIt
->
second
->
dev_type
;
sendtoRoma
(
payload
,
respTopic_2
);
payload
[
"devID"
]
=
sn
+
"02"
;
sendtoRoma
(
payload
,
respTopic_2
);
payload
[
"devID"
]
=
sn
+
"03"
;
sendtoRoma
(
payload
,
respTopic_2
);
}
else
{
payload
[
"devID"
]
=
sn
;
payload
[
"prodID"
]
=
subDevIt
->
second
->
dev_type
;
sendtoRoma
(
payload
,
respTopic_2
);
}
subDevIt
->
second
->
online
=
false
;
}
else
{
EH
::
Json
::
Value
payload
;
if
(
subDevIt
->
second
->
dev_type
==
ZeroFire2ChanChopinSwitch_PID
){
//肖邦-二路灯控
payload
[
"devID"
]
=
sn
+
"01"
;
payload
[
"prodID"
]
=
subDevIt
->
second
->
dev_type
;
sendtoRoma
(
payload
,
respTopic_1
);
payload
[
"devID"
]
=
sn
+
"02"
;
sendtoRoma
(
payload
,
respTopic_1
);
}
else
if
(
subDevIt
->
second
->
dev_type
==
ZeroFire3ChanChopinSwitch_PID
){
//肖邦-三路灯控
payload
[
"devID"
]
=
sn
+
"01"
;
payload
[
"prodID"
]
=
subDevIt
->
second
->
dev_type
;
sendtoRoma
(
payload
,
respTopic_1
);
payload
[
"devID"
]
=
sn
+
"02"
;
sendtoRoma
(
payload
,
respTopic_1
);
payload
[
"devID"
]
=
sn
+
"03"
;
sendtoRoma
(
payload
,
respTopic_1
);
}
else
{
payload
[
"devID"
]
=
sn
;
payload
[
"prodID"
]
=
subDevIt
->
second
->
dev_type
;
sendtoRoma
(
payload
,
respTopic_1
);
}
subDevIt
->
second
->
online
=
true
;
}
LOGI
(
"hw subdev:%s product_id:%d update online_status:%d.
\n
"
,
sn
.
c_str
(),
product_id
,
onlinestatus
);
}
else
{
EH
::
Json
::
Value
payload
;
payload
[
"dev_id"
]
=
sn
;
//请求发起者
payload
[
"dev_type"
]
=
subDevIt
->
second
->
dev_type
;
payload
[
"gw_id"
]
=
gw_id
;
sendtoRoma
(
payload
,
respTopic_1
);
//推送新设备到Roma
subDevIt
->
second
->
online
=
true
;
LOGW
(
"not found hw subdev:%s for update online_status.
\n
"
,
sn
.
c_str
());
}
LOGI
(
"hw subdev:%s product_id:%d update online_status:%d.
\n
"
,
sn
.
c_str
(),
product_id
,
onlinestatus
);
}
else
{
LOGW
(
"not found hw subdev:%s for update online_status.
\n
"
,
sn
.
c_str
());
}
}
catch
(
exception
&
e
)
{
LOGW
(
"%s.
\n
"
,
e
.
what
());
}
...
...
@@ -955,37 +984,38 @@ void MQ_CCU_Adapter::SendSETUPToCcu(string name,string DeviceIcon,string DevDode
void
MQ_CCU_Adapter
::
oninitmqttsdk
()
{
try
{
//goto跳转,谨慎使用。
loop:
EH
::
Json
::
Value
connectStateInfo
=
KK_HwDevManager
::
GetInstance
()
->
loadConnectState
();
//获取绑定信息
if
(
connectStateInfo
[
"result"
]
==
"1"
){
string
heartbeat_Topic
,
deviceID
;
deviceID
=
string
(
"KONKE-CCU:9:"
)
+
MQ_CCU_Config
::
GetInstance
()
->
getCcuId
();
clientId
=
connectStateInfo
[
"client_id"
].
asString
();
// username = connectStateInfo["device_name"].asString();
//订阅的 Topic
pushTopic
=
string
(
"v3/dev/konkeGateway/"
)
+
deviceID
;
subTopic
=
string
(
"v3/dev/konkeGateway/"
)
+
deviceID
;
//****************临时信息
willTopic
=
string
(
"v3/dev/konkeGateway/"
)
+
deviceID
+
"/offline"
;
//遗嘱信息
heartbeat_Topic
=
string
(
"v3/dev/konkeGateway/"
)
+
deviceID
+
"/heartbeat"
;
LOGD
(
"pushTopic is: %s subTopic is: %s willTopic is: %s
\n
"
,
pushTopic
.
c_str
(),
subTopic
.
c_str
(),
willTopic
.
c_str
());
int
ret
=
mqttSdk
->
init
(
MQ_CCU_Config
::
GetInstance
()
->
getBrokerAddr
(),
//正式环境
clientId
,
"2CEDC38940644E439649389C08329B09"
,
"}A12a#RM^r)iXy/?|sHW:z3!"
,
willTopic
,
heartbeat_Topic
,
gw_id
);
mqttOnline
=
false
;
if
(
ret
==
0
){
mqttSdk
->
con
(
1
,
3
);
}
else
{
LOGE
(
"init mqtt sdk failed.
\n
"
);
return
;
}
}
else
{
LOGI
(
"与APP未绑定 Not bound to app
\n
"
);
sleep
(
1
);
goto
loop
;
}
//goto跳转,谨慎使用。
// loop:
// EH::Json::Value connectStateInfo = KK_HwDevManager::GetInstance()->loadConnectState();//获取绑定信息
// if(connectStateInfo["result"] == "1"){
string
heartbeat_Topic
,
deviceID
,
password
;
deviceID
=
string
(
"KONKE-CCU:9:"
)
+
MQ_CCU_Config
::
GetInstance
()
->
getCcuId
();
clientId
=
"111"
;
username
=
"Dev&konkeGateway&"
+
deviceID
;
password
=
"18c740fb046a3e1991817bb175426505"
;
//订阅的 Topic
pushTopic
=
string
(
"v3/dev/konkeGateway/"
)
+
deviceID
;
subTopic
=
string
(
"v3/dev/konkeGateway/"
)
+
deviceID
;
//****************临时信息
willTopic
=
string
(
"v3/dev/konkeGateway/"
)
+
deviceID
+
"/offline"
;
//遗嘱信息
heartbeat_Topic
=
string
(
"v3/dev/konkeGateway/"
)
+
deviceID
+
"/heartbeat"
;
LOGD
(
"pushTopic is: %s subTopic is: %s willTopic is: %s
\n
"
,
pushTopic
.
c_str
(),
subTopic
.
c_str
(),
willTopic
.
c_str
());
int
ret
=
mqttSdk
->
init
(
MQ_CCU_Config
::
GetInstance
()
->
getBrokerAddr
(),
//正式环境
clientId
,
username
,,
willTopic
,
heartbeat_Topic
,
gw_id
);
mqttOnline
=
false
;
if
(
ret
==
0
){
mqttSdk
->
con
(
1
,
3
);
}
else
{
LOGE
(
"init mqtt sdk failed.
\n
"
);
return
;
}
// }else{
// LOGI("与APP未绑定 Not bound to app\n");
// sleep(1);
// goto loop;
// }
}
catch
(
exception
&
e
)
{
LOGW
(
"%s.
\n
"
,
e
.
what
());
}
...
...
@@ -1229,44 +1259,6 @@ int MQ_CCU_Adapter::push_to_kangjia(string devID,string prodID,string sid,string
sendtoRoma
(
payload
,
respTopic
);
}
// //推送子设备解绑或移除
// int send_Deletemsg_to_kangjia(string devSn,string devProdId,int load){
// //推送子设备解绑或移除
// string respTopic;
// string Sn;
// if(load == 1){ //小K删除
// Sn = devSn;
// }else if(load == 0){ //云端APP删除
// Sn = devSn.substr(0,15); //读取前16位: mac
// }
// respTopic = pushTopic+"/offline"; //设备离线
// EH::Json::Value payload;
// payload["typ"] = 0;
// payload["tms"] = EH_ToolKit::GetInstance()->GetTimestamp();
// if(devProdId == ZeroFire2ChanChopinSwitch_PID){ //肖邦-二路灯控
// payload["devID"] = Sn+"01";
// payload["prodID"] = devProdId;
// sendtoRoma(payload,respTopic);
// payload["devID"] = Sn+"02";
// sendtoRoma(payload,respTopic);
// }else if(devProdId == ZeroFire3ChanChopinSwitch_PID){ //肖邦-三路灯控
// payload["devID"] = Sn+"01";
// payload["prodID"] = devProdId;
// sendtoRoma(payload,respTopic);
// payload["devID"] = Sn+"02";
// sendtoRoma(payload,respTopic);
// payload["devID"] = Sn+"03";
// sendtoRoma(payload,respTopic);
// }else if(devProdId == DAIKINCentralACgw_PID){ //中央空调网关
// }else{
// payload["devID"] = devSn;
// payload["prodID"] = devProdId;
// sendtoRoma(payload,respTopic);
// }
// }
//小K 删除
int
MQ_CCU_Adapter
::
loadDelete
(
EH
::
Json
::
Value
arg
){
try
{
...
...
src/kk_handleDeviceInfo.cpp
View file @
c0a496d3
...
...
@@ -1170,7 +1170,7 @@ int kk_handleDeviceInfo::onSetDevService(map<string,kk_handleDeviceInfo::HwSubDe
// device->alarm = false;
// string msg = "{\"on\":"+IntToString(device->alarm)+"}";EH::Json::Value event;
// }
}
//
}
}
catch
(
exception
&
e
)
{
LOGW
(
"%s.
\n
"
,
e
.
what
());
}
...
...
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