#ifndef HOYMILES_H #define HOYMILES_H #include #include struct _modbus; typedef _modbus modbus_t; class Microinverter{ private: modbus_t *modbus_context; uint16_t address; void updatePortNumber(); void updatePlantVoltage(); void updatePlantCurrent(); void updateGridVoltage(); void updateGridFrequency(); void updatePlantPower(); void updateTodayProduction(); void updateTotalProduction(); void updateTemperature(); void updateOperatingStatus(); void updateAlarmCode(); void updateAlarmCount(); void updateLinkStatus(); public: int serialNumber; std::pair portNumber; std::pair plantVoltage; std::pair plantCurrent; std::pair gridVoltage; std::pair gridFrequency; std::pair plantPower; std::pair todayProduction; std::pair totalProduction; std::pair temperature; std::pair operatingStatus; std::pair alarmCode; std::pair alarmCount; std::pair linkStatus; Microinverter(modbus_t *modbus_t, uint16_t address); void updateValues(); }; class Dtu{ private: modbus_t *modbus_context; std::vector microinverters; void populateMicroinverters(); public: Dtu(const char *ip_address, int port); void updateMicroinverters(); ~Dtu(); }; #endif