#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_