hoymilesClient/inc/hoymiles.h

80 lines
1.5 KiB
C
Raw Normal View History

#ifndef HOYMILES_H
#define HOYMILES_H
#include <stdint.h>
#include <vector>
struct _modbus;
typedef _modbus modbus_t;
2024-03-13 19:51:10 +01:00
class Microinverter{
private:
2024-03-13 19:51:10 +01:00
modbus_t *modbus_context;
uint16_t address;
2024-03-13 19:51:10 +01:00
void updatePortNumber();
2024-03-13 19:51:10 +01:00
void updatePlantVoltage();
void updatePlantCurrent();
2024-03-13 19:51:10 +01:00
void updateGridVoltage();
void updateGridFrequency();
2024-03-13 19:51:10 +01:00
void updatePlantPower();
2024-03-13 19:51:10 +01:00
void updateTodayProduction();
void updateTotalProduction();
void updateTemperature();
void updateOperatingStatus();
void updateAlarmCode();
void updateAlarmCount();
void updateLinkStatus();
public:
2024-03-13 19:51:10 +01:00
int serialNumber;
std::pair<int, int> portNumber;
std::pair<float, int> plantVoltage;
std::pair<float, int> plantCurrent;
std::pair<float, int> gridVoltage;
std::pair<float, int> gridFrequency;
std::pair<float, int> plantPower;
std::pair<long, int> todayProduction;
std::pair<long, int> totalProduction;
std::pair<int, int> temperature;
std::pair<int, int> operatingStatus;
std::pair<int, int> alarmCode;
std::pair<int, int> alarmCount;
std::pair<int, int> linkStatus;
2024-03-13 19:51:10 +01:00
Microinverter(modbus_t *modbus_t, uint16_t address);
void updateValues();
};
2024-03-13 19:51:10 +01:00
class Dtu{
private:
modbus_t *modbus_context;
std::vector<Microinverter> microinverters;
void populateMicroinverters();
public:
Dtu(const char *ip_address, int port);
void updateMicroinverters();
~Dtu();
};
#endif