调试修改MQTT通讯解析

This commit is contained in:
lixiaoyuan
2025-09-16 19:38:46 +08:00
parent 9377e7f8e6
commit 393f68aec9
25 changed files with 943 additions and 1428 deletions

View File

@@ -10,9 +10,9 @@ class MqttClient;
struct TempHumUnit
{
int temp {0};
int hum {0};
TempHumUnit(int temp, int hum) : temp(temp), hum(hum) {};
float temp {0};
float hum {0};
TempHumUnit(float temp, float hum) : temp(temp), hum(hum) {};
TempHumUnit() {}
};
@@ -20,7 +20,7 @@ struct Fire40Unit
{
//主控数量 R uint16 1 0x0002
//主控ID R uint16 1 0x0003
//主控状态 R uint16 0正常 1预警 2火警 0x0004
int statusMain {0}; //主控状态 R uint16 0正常 1预警 2火警 0x0004
//主控硬件版本 R uint16[2] 主控硬件版本 0x0005~0x0006
//主控软件版本 R uint16[2] 主控软件版本 0x0007~0x0008
//主电状态 R uint16 0使用市电 1使用备电 0x0009
@@ -28,12 +28,12 @@ struct Fire40Unit
//备电电压 R uint32 0.1V 0x000C
//可用容量 R uint32 0.01Ah 0x000E
//可充放容量 R uint32 0.01Ah 0x0010
//警铃是否使用 R uint16 0x0012
//警铃状态 R uint16 0无效 1掉线 2正常 3启动 0x0013
//瓶头阀是否使用 R uint16 0x0014
//瓶头阀状态 R uint16 0无效 1掉线 2正常 3启动 0x0015
//手报是否使用 R uint16 0x0016
//手报状态 R uint16 0无效 1掉线 2正常 3启动 0x0017
int usedAlarm {0}; //警铃是否使用 R uint16 0x0012
int statusAlarm {0}; //警铃状态 R uint16 0无效 1掉线 2正常 3启动 0x0013
int usedValve {0}; //瓶头阀是否使用 R uint16 0x0014
int statusValve {0}; //瓶头阀状态 R uint16 0无效 1掉线 2正常 3启动 0x0015
int usedMCP {0}; //手报是否使用 R uint16 0x0016
int statusMCP {0}; //手报状态 R uint16 0无效 1掉线 2正常 3启动 0x0017 // Manual Call Point (MCP)
//簇控制器数量 R uint16 0x0018
//复合探测器总数量 R uint16 0x0019
//烟雾探测器总数量 R uint16 0x001A
@@ -98,21 +98,29 @@ public:
void addDevice(int deviceId, std::shared_ptr<Device> device);
void addDevice(Fields& fields);
std::shared_ptr<Device> getDevice(int deviceId);
void groupDevice();
std::shared_ptr<Device> getDeviceByType(int deviceType, std::string code);
void getDeviceByType(int typeId, std::vector<std::shared_ptr<Device>>& res);
int getDeviceCount(int category);
void getDeviceByGroup(int category, std::vector<std::shared_ptr<Device>>& res);
void getDeviceByCategory(int category, std::vector<std::shared_ptr<Device>>& res);
void setWorkMode(int modeId);
void setPolicy(int policyId);
void writeRuntimeData(std::string dt, int npos);
void writeStatistic(std::string dt);
void initMqtt();
void polling();
void setGarewayWorkMode();
void setRuntimeData(string addr, int val);
void setTHData(int deviceNo, string addr, int val);
void setFire40Data(int deviceNo, string addr, int val);
void setCoolingData(int deviceNo, string addr, int val);
public:
int stationId {};
std::string name;
@@ -127,6 +135,8 @@ public:
int workModeId {}; // 运行模式
int runPolicyId {}; // 运行策略
///////////////////////////////////////////////////////////////////////////////////////////////
/// === 系统统计 ===
// 累计发电量单位kWh
@@ -179,13 +189,13 @@ public:
///////////////////////////////////////////////////////////////////////////////////////////////
/// === 设备信息 ===
std::unordered_map<int, std::shared_ptr<Device>> mapDevice;
std::map<int, std::vector<std::shared_ptr<Device>>> mapDeviceGroup;
std::map<int, std::map<std::string, std::shared_ptr<Device>>> mapDeviceGroup;
// 温湿度信息
std::map<int, TempHumUnit> mapTempHumUnit;
// 消防4.0信息
std::map<int, int> mapFire40Unit;
std::map<int, Fire40Unit> mapFire40Unit;
// 冷机信息
std::map<int, CoolingUnit> mapCoolingUnit;
// 空调信息
@@ -195,5 +205,32 @@ public:
/// === MQTT client
std::shared_ptr<MqttClient> mqttCli {nullptr};
struct {
int64_t ts;
double totalElectIn; //总充电电量 R uint32 1kWh 6659(0x112D) 0x112C
double totalElectOut; //总放电电量 R uint32 1kWh 4925(0x112F) 0x112E
double totalIncomeIn; //总充电费用 R uint32 1RMB 6605(0x1131) 0x1130
double totalIncomeOut; //总放电费用 R uint32 1RMB 4949(0x1133) 0x1132
double totalIncome; //总收益 R int32 1RMB -1 0x1134
//储能充放电时段hh R uint16 时 336 0x01 0x121C
//储能充放电时段mm R uint16 分 0 0x01 0x121D
//储能充放电时段ss R uint16 秒 0 0x01 0x121E
double totalDurationIn;
double totalDurationOut;
double dayElectIn; // 日充电电量 R uint32 1kWh 0 0x110E
double dayElectOut; // 日放电电量 R uint32 1kWh 0 0x1110
double dayIncomeIn; // 日充电费用 R uint32 1RMB 0 0x1112
double dayIncomeOut; // 日放电费用 R uint32 1RMB 0 0x1114
double dayIncome; // 日收益 R int32 1RMB 0 0x1116
} statData;
///////////////////////////////////////////////////////////////////////////////////////////////
struct {
} runtimeData;
};