mirror of
https://gitee.com/js-yhsec/energy_storage.git
synced 2026-05-27 18:59:26 +08:00
修改HTTP接口测试问题
This commit is contained in:
@@ -29,7 +29,7 @@ void MqttClient::loadDataStruct(std::string filename)
|
||||
{
|
||||
std::string name = jsonitem.key();
|
||||
auto jsonnodeItem = jsonitem.value();
|
||||
int count = jsonnodeItem["count"];
|
||||
//int count = jsonnodeItem["count"];
|
||||
auto jsonaddrs = jsonnodeItem["addr"];
|
||||
|
||||
auto& mapItem = g_mapRegInfo[name];
|
||||
@@ -59,23 +59,22 @@ int MqttClient::init(string addr, string clientId, string username, string passw
|
||||
this->addr = addr;
|
||||
this->clientId = clientId;
|
||||
|
||||
this->mapTopicInfo["EMS_YX"] = 101;
|
||||
this->mapTopicInfo["EMS_YX"] = 101;
|
||||
this->mapTopicInfo["EMS_YC"] = 101;
|
||||
this->mapTopicInfo["EMS_YT"] = 101;
|
||||
this->mapTopicInfo["PCS_YX"] = 102;
|
||||
this->mapTopicInfo["PCS_YC"] = 102;
|
||||
this->mapTopicInfo["PCU_YX"] = 103;
|
||||
this->mapTopicInfo["PCU_YC"] = 103;
|
||||
this->mapTopicInfo["BMS_YX"] = 104;
|
||||
this->mapTopicInfo["BMS_YC"] = 104;
|
||||
this->mapTopicInfo["BCU_YX"] = 105;
|
||||
this->mapTopicInfo["BCU_YC"] = 105;
|
||||
this->mapTopicInfo["MEM_YC"] = 3;
|
||||
this->mapTopicInfo["Cooling_YC"] = 110;
|
||||
this->mapTopicInfo["TH_YC"] = 111;
|
||||
this->mapTopicInfo["Gateway_YX"] = 112;
|
||||
this->mapTopicInfo["Charger_YC"] = 113;
|
||||
//this->mapTopicInfo["EMS_YX"] = TopicInfo("EMS_YX", 101);
|
||||
//this->mapTopicInfo["EMS_YC"] = TopicInfo("EMS_YC", 101);
|
||||
//this->mapTopicInfo["EMS_YT"] = TopicInfo("EMS_YT", 101);
|
||||
//this->mapTopicInfo["PCS_YX"] = TopicInfo("PCS_YX", 102, 1);
|
||||
this->mapTopicInfo["PCS_YC"] = TopicInfo("PCS_YC", 102, 1);
|
||||
//this->mapTopicInfo["PCU_YX"] = TopicInfo("PCU_YX", 103);
|
||||
//this->mapTopicInfo["PCU_YC"] = TopicInfo("PCU_YC", 103);
|
||||
//this->mapTopicInfo["BMS_YX"] = TopicInfo("BMS_YX", 104);
|
||||
//this->mapTopicInfo["BMS_YC"] = TopicInfo("BMS_YC", 104);
|
||||
//this->mapTopicInfo["BCU_YX"] = TopicInfo("BCU_YX", 105, 1);
|
||||
//this->mapTopicInfo["BCU_YC"] = TopicInfo("BCU_YC", 105, 1);
|
||||
//this->mapTopicInfo["MEM_YC"] = TopicInfo("MEM_YC", 3);
|
||||
//this->mapTopicInfo["Cooling_YC"] = TopicInfo("Cooling_YC", 110);
|
||||
//this->mapTopicInfo["TH_YC"] = TopicInfo("TH_YC", 111);
|
||||
//this->mapTopicInfo["Gateway_YX"] = TopicInfo("Gateway_YX", 112);
|
||||
//this->mapTopicInfo["Charger_YC"] = TopicInfo("Charger_YC", 113);
|
||||
|
||||
MQTTAsync_connectOptions option = MQTTAsync_connectOptions_initializer;
|
||||
MQTTAsync_message pubmsg = MQTTAsync_message_initializer;
|
||||
@@ -168,25 +167,6 @@ void MqttClient::subscribe()
|
||||
MQTTAsync_responseOptions options = MQTTAsync_responseOptions_initializer;
|
||||
options.onSuccess = funcSuccess;
|
||||
options.onFailure = funcFailure;
|
||||
|
||||
std::vector<std::string> vecTopic = {
|
||||
//"up/json/" + clientId + "/EMS_YX",
|
||||
"up/json/" + clientId + "/EMS_YC",
|
||||
//"up/json/" + clientId + "/EMS_YT",
|
||||
//"up/json/" + clientId + "/PCU_YX",
|
||||
//"up/json/" + clientId + "/PCU_YC",
|
||||
//"up/json/" + clientId + "/PCS_YX",
|
||||
"up/json/" + clientId + "/PCS_YC",
|
||||
//"up/json/" + clientId + "/BCU_YX",
|
||||
//"up/json/" + clientId + "/BCU_YC",
|
||||
//"up/json/" + clientId + "/BMS_YX",
|
||||
//"up/json/" + clientId + "/BMS_YC",
|
||||
//"up/json/" + clientId + "/MEM_YC",
|
||||
//"up/json/" + clientId + "/Cooling_YC",
|
||||
//"up/json/" + clientId + "/TH_YC",
|
||||
//"up/json/" + clientId + "/Gateway_YX",
|
||||
//"up/json/" + clientId + "/Charger_YC",
|
||||
};
|
||||
for (auto& item: mapTopicInfo)
|
||||
{
|
||||
std::string topic = "up/json/" + clientId + "/" + item.first;
|
||||
@@ -199,38 +179,11 @@ void MqttClient::subscribe()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int MqttClient::polling()
|
||||
int MqttClient::publish(std::string topic, std::string text)
|
||||
{
|
||||
// 召测 发布
|
||||
std::vector<std::string> vecTopic = {
|
||||
"down/json/" + clientId + "/EMS_YX",
|
||||
"down/json/" + clientId + "/EMS_YC",
|
||||
//"down/json/" + clientId + "/EMS_YT",
|
||||
//"down/json/" + clientId + "/PCU_YX",
|
||||
//"down/json/" + clientId + "/PCU_YC",
|
||||
//"down/json/" + clientId + "/PCS_YX",
|
||||
"down/json/" + clientId + "/PCS_YC",
|
||||
//"down/json/" + clientId + "/BCU_YX",
|
||||
//"down/json/" + clientId + "/BCU_YC",
|
||||
//"down/json/" + clientId + "/BMS_YX",
|
||||
//"down/json/" + clientId + "/BMS_YC",
|
||||
//"down/json/" + clientId + "/MEM_YC",
|
||||
//"down/json/" + clientId + "/Cooling_YC",
|
||||
//"down/json/" + clientId + "/TH_YC",
|
||||
//"down/json/" + clientId + "/Gateway_YX",
|
||||
//"down/json/" + clientId + "/Charger_YC",
|
||||
};
|
||||
|
||||
|
||||
njson json;
|
||||
json["ts"] = Utils::time();
|
||||
json["no"] = 1;
|
||||
std::string text = json.dump();
|
||||
|
||||
MQTTAsync_responseOptions options = MQTTAsync_responseOptions_initializer;
|
||||
//options.onSuccess = onSend;
|
||||
//options.onFailure = onSendFailure;
|
||||
options.onSuccess = [](void* context, MQTTAsync_successData* response) {};
|
||||
options.onFailure = [](void* context, MQTTAsync_failureData* response) {};
|
||||
options.context = this;
|
||||
|
||||
MQTTAsync_message msg = MQTTAsync_message_initializer;
|
||||
@@ -239,16 +192,48 @@ int MqttClient::polling()
|
||||
msg.payloadlen = text.size();
|
||||
msg.retained = 0;
|
||||
|
||||
for (auto& topic: vecTopic)
|
||||
std::string topicName = "down/json/" + clientId + "/" + topic;
|
||||
int rc = MQTTAsync_sendMessage(client, topicName.c_str(), &msg, &options);
|
||||
if (rc == MQTTASYNC_SUCCESS)
|
||||
{
|
||||
int rc = MQTTAsync_sendMessage(client, topic.c_str(), &msg, &options);
|
||||
if (rc == MQTTASYNC_SUCCESS)
|
||||
spdlog::info("[mqtt] publish MQTTAsync_sendMessage success, topic={}, text={}", topicName, text);
|
||||
}
|
||||
else
|
||||
{
|
||||
spdlog::error("[mqtt] publish MQTTAsync_sendMessage error, topic={}, text={}", topicName, text);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int MqttClient::polling()
|
||||
{
|
||||
if (!isConnected)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
njson json;
|
||||
json["ts"] = Utils::time();
|
||||
json["no"] = 0; // 设备编号
|
||||
|
||||
auto& appdata = Application::data();
|
||||
auto station = appdata.getStationByCode(clientId);
|
||||
|
||||
for (auto& item: mapTopicInfo)
|
||||
{
|
||||
auto& topicInfo = item.second;
|
||||
if (topicInfo.polling)
|
||||
{
|
||||
spdlog::info("MQTT send message success, topic={}, text={}", topic, msg.payload);
|
||||
}
|
||||
else
|
||||
{
|
||||
spdlog::error("MQTT send message error, topic={}, text={}", topic, msg.payload);
|
||||
if (station)
|
||||
{
|
||||
std::vector<std::shared_ptr<Device>> vecDevice;
|
||||
station->getDeviceByType(topicInfo.deviceType, vecDevice);
|
||||
for (auto device: vecDevice)
|
||||
{
|
||||
json["no"] = Utils::toInt(device->code);
|
||||
this->publish(topicInfo.name, json.dump());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
@@ -292,8 +277,7 @@ int MqttClient::onMessageArrived(char* topic, int topicLen, MQTTAsync_message* m
|
||||
std::string command = GetSubStr("/", topicStr);
|
||||
std::string deviceCode = GetSubStr("/", topicStr);
|
||||
|
||||
spdlog::info("[mqtt] message arrived: topic=[{},{}], len={}, payload={}", topic, msg->qos, len, payload);
|
||||
spdlog::info("[mqtt] parse topic: {}, stationNo={}, command={}", topic, stationNo, command);
|
||||
spdlog::info("[mqtt] <<<<<<<<<< message arrived: topic=[{},{}], len={}, payload={}", topic, msg->qos, len, payload);
|
||||
|
||||
njson json;
|
||||
bool ret = JSON::parse(payload, json);
|
||||
@@ -317,16 +301,23 @@ int MqttClient::onMessageArrived(char* topic, int topicLen, MQTTAsync_message* m
|
||||
}
|
||||
std::map<std::string, REGInfo>& mapRegInfo = iter->second;
|
||||
|
||||
|
||||
auto iterTopic = mapTopicInfo.find(command);
|
||||
if (iterTopic == mapTopicInfo.end())
|
||||
{
|
||||
spdlog::error("[mqtt] get topic info error, clientId={}, stationId={}, command={}", clientId, stationNo, command);
|
||||
return 1;
|
||||
}
|
||||
TopicInfo& topicInfo = iterTopic->second;
|
||||
|
||||
int deviceNo = -1;
|
||||
JSON::read(json, "no", deviceNo);
|
||||
auto device = station->getDeviceByType(mapTopicInfo[command], Utils::toStr(deviceNo));
|
||||
auto device = station->getDeviceByType(topicInfo.deviceType, Utils::toStr(deviceNo));
|
||||
if (!device)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
spdlog::info("[mqtt] deviceNo={}", deviceNo);
|
||||
|
||||
for (auto& item: json.items())
|
||||
{
|
||||
std::string key = item.key();
|
||||
@@ -371,36 +362,13 @@ void MqttClient::onDeliveryComplete(MQTTAsync_token token)
|
||||
//spdlog::info("MQTT delivery complete, token={}", token);
|
||||
}
|
||||
|
||||
|
||||
void MqttClient::onConnectSuccess( MQTTAsync_successData* resp)
|
||||
{
|
||||
spdlog::info("[mqtt] connect to {} success, clientId={}.", addr, clientId);
|
||||
this->isConnected = true;
|
||||
this->subscribe();
|
||||
//MQTTAsync_responseOptions options = MQTTAsync_responseOptions_initializer;
|
||||
//options.context = this;
|
||||
//options.onSuccess = [](void* context, MQTTAsync_successData* response)
|
||||
// {
|
||||
// spdlog::info("[mqtt] subscribe success.");
|
||||
// };
|
||||
//options.onFailure = [](void* context, MQTTAsync_failureData* response)
|
||||
// {
|
||||
// spdlog::info("[mqtt] subscribe failed.");
|
||||
// };
|
||||
//
|
||||
//for (auto& topic: vecTopic)
|
||||
//{
|
||||
// int rc = MQTTAsync_subscribe(client, topic.c_str(), qos, &options);
|
||||
// if (rc != MQTTASYNC_SUCCESS)
|
||||
// {
|
||||
// spdlog::error("[mqtt] subscribe [{},{}] failed, err={}", topic, qos, rc);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// spdlog::info("[mqtt] subscribe [{},{}] success", topic, qos);
|
||||
// }
|
||||
//}
|
||||
}
|
||||
|
||||
void MqttClient::onConnectFaiure(MQTTAsync_failureData* resp)
|
||||
{
|
||||
spdlog::error("[mqtt] connect to {} error, clientId={}.", addr, clientId);
|
||||
|
||||
Reference in New Issue
Block a user