map/das-dn/bfftpfile2issmqtt/bfftpfile2issmqtt.h
2024-07-08 10:27:17 +08:00

195 lines
4.9 KiB
C++

#ifndef _BFFTPFILE_ISSMQTT_PROCESS_H_
#define _BFFTPFILE_ISSMQTT_PROCESS_H_
#include "process.h"
#include "mqtt/mosquitto.h"
#include "json/json.h"
#pragma pack(1)
typedef struct {
short iTurbineOperationMode;
short iBPLevel;
short iYPLevel;
BYTE bDQ_NacelleStartYawCCW;
BYTE bDQ_NacelleStartYawCW;
float rGenPowerForProcess;
float rGenPowerForProcess_1sec;
float rGenPowerForProcess_30sec;
float rGenSpeedPDM;
float rGenSpeedPDM_1sec;
float rGenSpeedPDM_30sec;
float rPitchAngle;
float rPitchAngle_1sec;
float rPitchAngle_30sec;
float rWindSpeed;
float rWindSpeed_1sec;
float rWindSpeed_30sec;
float rCosPhi_KL3403;
float rReactivePower_KL3403;
float rFrequency_690V_KL3403;
float rUL1_690V_KL3403;
float rUL2_690V_KL3403;
float rUL3_690V_KL3403;
float rIL1_690V_KL3403;
float rIL2_690V_KL3403;
float rIL3_690V_KL3403;
float rActivePowerSetPointValue;
float rSetValueGenSpeed;
float rSetValuePitchAngle;
float rNacellePositionLtd;
float rCableTwistTotal;
float rNacellePositionTotal;
float rVaneDirection_1sec;
float rAvailabillityToday;
float rAvailabillityTotal;
float rCosPhiSetValue;
LONG iPAR_iKWhOverall;
LONG iPAR_iKWhThisDay;
DWORD wOperationHoursOverall;
DWORD wOperationHoursDay;
WORD SCW001;
WORD SCW002;
WORD SCW003;
WORD SCW004;
WORD SCW005;
WORD SCW006;
WORD SCW007;
WORD SCW008;
WORD SCW009;
WORD SCW010;
WORD SCW011;
WORD SCW012;
WORD SCW013;
WORD SCW014;
WORD SCW015;
WORD SCW016;
WORD SCW017;
WORD SCW018;
WORD SCW019;
WORD SCW020;
WORD SCW021;
WORD SCW022;
WORD SCW023;
WORD SCW024;
WORD SCW025;
WORD SCW026;
WORD SCW027;
WORD SCW028;
WORD SCW029;
WORD SCW030;
WORD SCW031;
WORD SCW032;
WORD SCW033;
WORD SCW034;
WORD SCW035;
WORD SCW036;
WORD SCW037;
WORD SCW038;
WORD SCW039;
WORD SCW040;
WORD SCW041;
DWORD wWecRunContion;
DWORD wFaultInformation;
DWORD wTriggerSCAdress;
float rWindSpeed_IEC;
float rWindSpeed_IEC_30sec;
float rWindSpeed_IEC_10min;
float rRotorSpeedPDM;
float rCurrentVibrationY_PCH;
float rCurrentVibrationZ_PCH;
float rFilteredVibrationY_PCH;
float rFilteredVibrationZ_PCH;
float rStandardDensity;
float rAirDensity;
float rWindSpeed_Local;
float rDynamicpowerCalcValue;
float rPowerSetpoint_flag;
float rPitchAngleBlade1;
float rPitchAngleBlade2;
float rPitchAngleBlade3;
float iPMMAxis1_Health;
float iPMMAxis2_Health;
float iPMMAxis3_Health;
float rPMMAxis1InternalR;
float rPMMAxis2InternalR;
float rPMMAxis3InternalR;
float rPMMAxis1ActualBatteryVoltage;
float rPMMAxis2ActualBatteryVoltage;
float rPMMAxis3ActualBatteryVoltage;
} struFileData;
#pragma pack()
class CBFFTPFile2ISSMQTTProcessItem : public CProcessItem
{
public:
CBFFTPFile2ISSMQTTProcessItem();
virtual ~CBFFTPFile2ISSMQTTProcessItem();
virtual void Attach(int uid, int sock, BYTE* peer_addr, WORD peer_port);
virtual void Release(void);
public:
BOOLEAN m_bAdded; //设备已经添加
char nodeId[MAX_ID_LENGTH];
char deviceId[MAX_ID_LENGTH];
char manufacturerId[MAX_ID_LENGTH];
char model[MAX_ID_LENGTH];
};
class CBFFTPFile2ISSMQTTProcess : public CProcess
{
private:
time_t last_sec;
int m_mid;
LONG connect_begin;
DWORD m_nCount;
DWORD m_last_sec;
char m_file_dir[MAX_PATH];
int countFilesInDirectory(const char*);
int countFilesByTypeInDirectory(const char*, const char*);
public:
struct mosquitto* m_mosq;
struISSMQTTOption issmqttOption;
std::string m_deviceID;
char subscribe_topic[256];
char publish_topic[256];
private:
BOOLEAN connected;
Json::Int64 m_terminalIrn;
Json::Int64 *m_irns;
short m_dataCount;
float *m_dataValues;
public:
CBFFTPFile2ISSMQTTProcess();
virtual ~CBFFTPFile2ISSMQTTProcess();
BOOLEAN OnPreCreate(int id);
void Destroy(void);
BOOLEAN Run(void);
BOOLEAN OnTimer(void);
virtual CProcessItem *CreateItem(int ord);
virtual void DestroyItem(int ord, BOOLEAN bDeleted = FALSE);
BOOLEAN OnReceiveSubscribeTopic(Json::Value);
BOOLEAN OnReceivedDeviceCommand(Json::Value);
BOOLEAN OnReceivedSystemAction(Json::Value);
BOOLEAN publishFrame(const char*, Json::Value);
BOOLEAN publishRealData(Json::Int64);
BOOLEAN publishMonHeartBeat(void);
void on_connect(int);
void on_disconnect(int);
void on_publish(int);
void on_subscribe(int, int, const int*);
void on_message(const struct mosquitto_message*);
void on_log(int, const char*);
};
#endif //_BFFTPFILE_ISSMQTT_PROCESS_H_