Commit c0a496d3 authored by 杨熙's avatar 杨熙

調整設備在線離線推送

parent 83f59c20
......@@ -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,8 +410,8 @@ 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 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()){
......@@ -420,17 +419,47 @@ void MQ_CCU_Adapter::handleDevOnlinePush(EH::Json::Value arg){
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
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;
payload["dev_id"] = sn; //请求发起者
payload["dev_type"] = subDevIt->second->dev_type;
payload["gw_id"] = gw_id;
sendtoRoma(payload,respTopic_1); //推送新设备到Roma
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);
......@@ -956,13 +985,14 @@ 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;
// 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 = connectStateInfo["client_id"].asString();
// username = connectStateInfo["device_name"].asString();
clientId = "111";
username = "Dev&konkeGateway&"+deviceID;
password = "18c740fb046a3e1991817bb175426505";
//订阅的 Topic
pushTopic = string("v3/dev/konkeGateway/")+deviceID;
......@@ -972,7 +1002,7 @@ void MQ_CCU_Adapter::oninitmqttsdk() {
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);
clientId,username,,willTopic,heartbeat_Topic,gw_id);
mqttOnline = false;
if(ret == 0){
mqttSdk->con(1,3);
......@@ -980,12 +1010,12 @@ void MQ_CCU_Adapter::oninitmqttsdk() {
LOGE("init mqtt sdk failed.\n");
return;
}
}else{
LOGI("与APP未绑定 Not bound to app\n");
sleep(1);
goto loop;
// }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 {
......
......@@ -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());
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment