Commit c0a496d3 authored by 杨熙's avatar 杨熙

調整設備在線離線推送

parent 83f59c20
...@@ -148,11 +148,11 @@ int MQ_CCU_Adapter::open() { ...@@ -148,11 +148,11 @@ int MQ_CCU_Adapter::open() {
client->init("", "", this, false); client->init("", "", this, false);
//开启TCP 与UDP //开启TCP 与UDP
kk_connect::GetInstance()->init( KK_HwDevManager::GetInstance()->getCcuId(), "",false); // kk_connect::GetInstance()->init( KK_HwDevManager::GetInstance()->getCcuId(), "",false);
//连接Roma平台,绑定就进行启动 //连接Roma平台,绑定就进行启动
oninitmqttsdk(); oninitmqttsdk();
Http_equest(); // Http_equest();
return 0; return 0;
} }
...@@ -299,11 +299,10 @@ void MQ_CCU_Adapter::onCloudMsgRecv(string payload,string topicName){ ...@@ -299,11 +299,10 @@ void MQ_CCU_Adapter::onCloudMsgRecv(string payload,string topicName){
this->discoveryEnable = false; this->discoveryEnable = false;
onDeviceRequestJoin(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(); string sn = jsonObject["data"]["svcs"][0u]["cmds"][0u]["val"].asString();
onDeviceRequestDelete(sn); onDeviceRequestDelete(sn);
} }
}else{ //控制设备状态 }else{ //控制设备状态
string sn = jsonObject["data"]["devID"].asString(); string sn = jsonObject["data"]["devID"].asString();
string svcid = jsonObject["data"]["svcs"][0u]["sid"].asString(); string svcid = jsonObject["data"]["svcs"][0u]["sid"].asString();
...@@ -337,7 +336,7 @@ int MQ_CCU_Adapter::send_Control_Info(string wholeMsg){ ...@@ -337,7 +336,7 @@ int MQ_CCU_Adapter::send_Control_Info(string wholeMsg){
int MQ_CCU_Adapter::addCCuroom(){ int MQ_CCU_Adapter::addCCuroom(){
EH::Json::Value roomarg; EH::Json::Value roomarg;
roomarg["name"] = "Roma特定房间不可删"; roomarg["name"] = "康佳特定房间不可删";
roomarg["room_icon"] = "a_0"; roomarg["room_icon"] = "a_0";
roomarg["floor_id"] = "3"; roomarg["floor_id"] = "3";
roomarg["room_pos"] = "10"; roomarg["room_pos"] = "10";
...@@ -351,7 +350,7 @@ int MQ_CCU_Adapter::saveCCuroom(EH::Json::Value arg){ ...@@ -351,7 +350,7 @@ int MQ_CCU_Adapter::saveCCuroom(EH::Json::Value arg){
if(SaveRoomEnable){ if(SaveRoomEnable){
KK_HwDevManager::KKRoomId roominfo; KK_HwDevManager::KKRoomId roominfo;
roominfo.roonid = ccuroomid; roominfo.roonid = ccuroomid;
roominfo.name = "Roma特定房间不可删"; roominfo.name = "康佳特定房间不可删";
onlyroomid[ccuroomid] = roominfo; onlyroomid[ccuroomid] = roominfo;
LOGD("prepare add room \n"); LOGD("prepare add room \n");
KK_HwDevManager::GetInstance()->saveroomid(onlyroomid); KK_HwDevManager::GetInstance()->saveroomid(onlyroomid);
...@@ -373,7 +372,7 @@ void MQ_CCU_Adapter::Specific_rooms(EH::Json::Value rooms) { ...@@ -373,7 +372,7 @@ void MQ_CCU_Adapter::Specific_rooms(EH::Json::Value rooms) {
string roomid = KK_HwDevManager::GetInstance()->GetRoomId();//特定的房间 string roomid = KK_HwDevManager::GetInstance()->GetRoomId();//特定的房间
map<string,string>::iterator it = roomMap.find(roomid); map<string,string>::iterator it = roomMap.find(roomid);
if(it == roomMap.end()){ if(it == roomMap.end()){
LOGW("Roma特定的房间被删除,开始重新创建,小K重新进入才会显示.\n"); LOGW("康佳特定的房间被删除,开始重新创建,小K重新进入才会显示.\n");
onlyroomid.erase(roomid); onlyroomid.erase(roomid);
SaveRoomEnable = true; SaveRoomEnable = true;
addCCuroom(); addCCuroom();
...@@ -411,32 +410,62 @@ void MQ_CCU_Adapter::handleGetDevsHardwareInfo(EH::Json::Value arg){ ...@@ -411,32 +410,62 @@ void MQ_CCU_Adapter::handleGetDevsHardwareInfo(EH::Json::Value arg){
void MQ_CCU_Adapter::handleDevOnlinePush(EH::Json::Value arg){ void MQ_CCU_Adapter::handleDevOnlinePush(EH::Json::Value arg){
try { try {
string respTopic_1 = pushTopic +"/deviceonline";//子设备在线 string respTopic_1 = pushTopic +"/online";//子设备在线
string respTopic_2 = pushTopic +"/deviceoffline";//子设备离线 string respTopic_2 = pushTopic +"/offline";//子设备离线
string sn = Replace(arg["mac"].asString(),":",""); string sn = Replace(arg["mac"].asString(),":","");
map<string, kk_handleDeviceInfo::HwSubDev*>::iterator subDevIt = hwSubDevs.find(sn); map<string, kk_handleDeviceInfo::HwSubDev*>::iterator subDevIt = hwSubDevs.find(sn);
if(subDevIt != hwSubDevs.end()){ if(subDevIt != hwSubDevs.end()){
int onlinestatus = arg["online_status"].asInt(); int onlinestatus = arg["online_status"].asInt();
int product_id = arg["product_id"].asInt(); int product_id = arg["product_id"].asInt();
if(onlinestatus == 2){ if(onlinestatus == 2){
EH::Json::Value payload; EH::Json::Value payload;
payload["dev_id"] = sn; //请求发起者 if(subDevIt->second->dev_type == ZeroFire2ChanChopinSwitch_PID){ //肖邦-二路灯控
payload["dev_type"] = subDevIt->second->dev_type; payload["devID"] = sn+"01";
payload["gw_id"] = gw_id; payload["prodID"] = subDevIt->second->dev_type;
sendtoRoma(payload,respTopic_2); //推送新设备到Roma //在线状态的推送 ,待更改 2020.10.15.9 sendtoRoma(payload,respTopic_2);
subDevIt->second->online = false; 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{ }else{
EH::Json::Value payload; LOGW("not found hw subdev:%s for update online_status.\n",sn.c_str());
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;
} }
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) { }catch (exception &e) {
LOGW("%s.\n", e.what()); LOGW("%s.\n", e.what());
} }
...@@ -955,37 +984,38 @@ void MQ_CCU_Adapter::SendSETUPToCcu(string name,string DeviceIcon,string DevDode ...@@ -955,37 +984,38 @@ void MQ_CCU_Adapter::SendSETUPToCcu(string name,string DeviceIcon,string DevDode
void MQ_CCU_Adapter::oninitmqttsdk() { void MQ_CCU_Adapter::oninitmqttsdk() {
try { try {
//goto跳转,谨慎使用。 //goto跳转,谨慎使用。
loop: // loop:
EH::Json::Value connectStateInfo = KK_HwDevManager::GetInstance()->loadConnectState();//获取绑定信息 // EH::Json::Value connectStateInfo = KK_HwDevManager::GetInstance()->loadConnectState();//获取绑定信息
if(connectStateInfo["result"] == "1"){ // if(connectStateInfo["result"] == "1"){
string heartbeat_Topic , deviceID; string heartbeat_Topic , deviceID,password;
deviceID = string("KONKE-CCU:9:") + MQ_CCU_Config::GetInstance()->getCcuId(); deviceID = string("KONKE-CCU:9:") + MQ_CCU_Config::GetInstance()->getCcuId();
clientId = connectStateInfo["client_id"].asString(); clientId = "111";
// username = connectStateInfo["device_name"].asString(); username = "Dev&konkeGateway&"+deviceID;
password = "18c740fb046a3e1991817bb175426505";
//订阅的 Topic
pushTopic = string("v3/dev/konkeGateway/")+deviceID; //订阅的 Topic
subTopic = string("v3/dev/konkeGateway/")+deviceID; //****************临时信息 pushTopic = string("v3/dev/konkeGateway/")+deviceID;
willTopic = string("v3/dev/konkeGateway/")+deviceID+"/offline"; //遗嘱信息 subTopic = string("v3/dev/konkeGateway/")+deviceID; //****************临时信息
heartbeat_Topic = string("v3/dev/konkeGateway/")+deviceID+"/heartbeat"; willTopic = string("v3/dev/konkeGateway/")+deviceID+"/offline"; //遗嘱信息
LOGD("pushTopic is: %s subTopic is: %s willTopic is: %s\n",pushTopic.c_str(),subTopic.c_str(),willTopic.c_str()); 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); int ret = mqttSdk->init(MQ_CCU_Config::GetInstance()->getBrokerAddr(), //正式环境
mqttOnline = false; clientId,username,,willTopic,heartbeat_Topic,gw_id);
if(ret == 0){ mqttOnline = false;
mqttSdk->con(1,3); if(ret == 0){
}else{ mqttSdk->con(1,3);
LOGE("init mqtt sdk failed.\n"); }else{
return; LOGE("init mqtt sdk failed.\n");
} return;
}else{ }
LOGI("与APP未绑定 Not bound to app\n"); // }else{
sleep(1); // LOGI("与APP未绑定 Not bound to app\n");
goto loop; // sleep(1);
// goto loop;
}
// }
}catch (exception &e) { }catch (exception &e) {
LOGW("%s.\n", e.what()); LOGW("%s.\n", e.what());
} }
...@@ -1229,44 +1259,6 @@ int MQ_CCU_Adapter::push_to_kangjia(string devID,string prodID,string sid,string ...@@ -1229,44 +1259,6 @@ int MQ_CCU_Adapter::push_to_kangjia(string devID,string prodID,string sid,string
sendtoRoma(payload,respTopic); 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 删除 //小K 删除
int MQ_CCU_Adapter::loadDelete(EH::Json::Value arg){ int MQ_CCU_Adapter::loadDelete(EH::Json::Value arg){
try { try {
......
...@@ -1170,7 +1170,7 @@ int kk_handleDeviceInfo::onSetDevService(map<string,kk_handleDeviceInfo::HwSubDe ...@@ -1170,7 +1170,7 @@ int kk_handleDeviceInfo::onSetDevService(map<string,kk_handleDeviceInfo::HwSubDe
// device->alarm = false; // device->alarm = false;
// string msg = "{\"on\":"+IntToString(device->alarm)+"}";EH::Json::Value event; // string msg = "{\"on\":"+IntToString(device->alarm)+"}";EH::Json::Value event;
// } // }
} // }
} catch (exception &e) { } catch (exception &e) {
LOGW("%s.\n", e.what()); 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