sadge but more worky

This commit is contained in:
TraYali 2024-04-06 00:32:49 +02:00
parent 32d9dfff98
commit 34313ef4bc
16 changed files with 169 additions and 65 deletions

View file

@ -16,11 +16,11 @@ class Dtu {
void populateMicroinverters();
std::pair<Microinverter *, bool> getMicroinverterBySerialNumber(long long serialNumber);
public:
Dtu(const char *ip_address, int port);
std::pair<Microinverter *, bool> getMicroinverterBySerialNumber(long long serialNumber);
bool isConnected();
bool modbusError();

View file

@ -17,6 +17,8 @@ class Microinverter {
int startAddress;
int statusStartAddress;
public:
Microinverter(std::shared_ptr<class modbus> modbus, int startAddress, long long serialNumber);
@ -30,11 +32,15 @@ class Microinverter {
void updateParameters(std::vector<std::string> &parametersToGet, bool allParameters);
void updateStatusParameters();
void printPorts(std::vector<std::string> &parametersToGet, bool allParameters, bool shortNames);
long long getTodayProduction();
long long getTotalProduction();
void setStatus(std::vector<std::pair<int, uint16_t>> portsToSet, std::string statusName);
};
#endif

View file

@ -6,6 +6,7 @@
#include <vector>
#include "portParametersGeneric.h"
#include "portParameters.h"
#include "modbus.h"
class Port {
@ -22,15 +23,27 @@ class Port {
int portStartAddress;
int statusPortStartAddress;
std::vector<std::shared_ptr<PortParameter>> parameters;
std::vector<std::shared_ptr<PortParameter>> statusParameters;
std::pair<std::shared_ptr<PortParameter>, bool> getParameterByName(std::string name);
std::pair<std::shared_ptr<PortParameter>, bool> getStatusByName(std::string name);
// void updateParameters(std::vector<std::string> &parametersToGet, bool allParameters);
void setParametersFromMicroinverterArray(uint16_t *registers, int addressOffset);
void setStatusesFromMicroinverterArray(uint16_t *registers, int addressOffset);
void printParameters(std::vector<std::string> &parametersToGet, bool allParameters, bool shortNames);
void turnOff(class modbus &modbus);
bool isOff(class modbus &modbus);
};
#endif

View file

@ -5,7 +5,7 @@
class PortParameterMicroinverterSerialNumber : public PortParameterInt {
private:
void setValueFromRegisters(uint16_t *registers, int addressOffset);
void getValueFromRegisters(uint16_t *registers, int addressOffset);
public:
PortParameterMicroinverterSerialNumber();
@ -81,4 +81,14 @@ class PortParameterLinkStatus : public PortParameterInt {
PortParameterLinkStatus();
};
class PortParameterOnOff : public PortParameterInt {
public:
PortParameterOnOff();
};
class PortParameterLimitActivePower : public PortParameterInt {
public:
PortParameterLimitActivePower();
};
#endif

View file

@ -42,9 +42,11 @@ class PortParameter {
std::pair<PortParameterValue, PortParameterValueType> getValue();
PortParameter& writeValue(uint16_t value, class modbus& modbus, int portStartAddress);
virtual std::string getOutputValue();
virtual void setValueFromRegisters(uint16_t *registers, int addressOffset);
virtual void getValueFromRegisters(uint16_t *registers, int addressOffset);
// void updateValue(std::shared_ptr<class modbus> modubs, uint16_t portStartAddress);
};
@ -58,7 +60,7 @@ class PortParameterFloat : public PortParameter {
std::string getOutputValue();
virtual void setValueFromRegisters(uint16_t *registers, int addressOffset);
virtual void getValueFromRegisters(uint16_t *registers, int addressOffset);
};
class PortParameterInt : public PortParameter {
@ -69,7 +71,7 @@ class PortParameterInt : public PortParameter {
std::string getOutputValue();
virtual void setValueFromRegisters(uint16_t *registers, int addressOffset);
virtual void getValueFromRegisters(uint16_t *registers, int addressOffset);
};
#endif

View file

@ -9,7 +9,7 @@ class SunspecParameterManufacturer : public SunspecParameterString32 {
public:
SunspecParameterManufacturer();
void setValueFromRegisters(uint16_t *registers, int addressOffset);
void getValueFromRegisters(uint16_t *registers, int addressOffset);
};
#endif

View file

@ -33,7 +33,7 @@ class SunspecParameter {
public:
virtual void setValueFromRegisters(uint16_t *registers, int addressOffset);
virtual void getValueFromRegisters(uint16_t *registers, int addressOffset);
std::pair<SunspecValue, SunspecValueType> getValue();
};
@ -44,7 +44,7 @@ class SunspecParameter {
// public:
// SunspecParameterUint32(std::string name, int registerAddressOffset, int registerSize);
// virtual void setValueFromRegisters(uint16_t *registers, int addressOffset);
// virtual void getValueFromRegisters(uint16_t *registers, int addressOffset);
// };
// class SunspecParameterUint16 : public SunspecParameter {
@ -53,7 +53,7 @@ class SunspecParameter {
// public:
// SunspecParameterUint16(std::string name, int registerAddressOffset, int registerSize);
// virtual void setValueFromRegisters(uint16_t *registers, int addressOffset);
// virtual void getValueFromRegisters(uint16_t *registers, int addressOffset);
// };
class SunspecParameterString32 : public SunspecParameter {
@ -63,7 +63,7 @@ class SunspecParameterString32 : public SunspecParameter {
public:
SunspecParameterString32(std::string name, int registerAddressOffset, int registerSize);
virtual void setValueFromRegisters(uint16_t *registers, int addressOffset);
virtual void getValueFromRegisters(uint16_t *registers, int addressOffset);
};
// class SunspecParameterString16 : public SunspecParameter {
@ -73,7 +73,7 @@ class SunspecParameterString32 : public SunspecParameter {
// public:
// SunspecParameterString16(std::string name, int registerAddressOffset, int registerSize);
// virtual void setValueFromRegisters(uint16_t *registers, int addressOffset);
// virtual void getValueFromRegisters(uint16_t *registers, int addressOffset);
// };
// class SunspecParameterSunssf : public SunspecParameter {
@ -82,7 +82,7 @@ class SunspecParameterString32 : public SunspecParameter {
// public:
// SunspecParameterSunssf(std::string name, int registerAddressOffset, int registerSize);
// virtual void setValueFromRegisters(uint16_t *registers, int addressOffset);
// virtual void getValueFromRegisters(uint16_t *registers, int addressOffset);
// };
// class SunspecParameterInt16 : public SunspecParameter {
@ -91,7 +91,7 @@ class SunspecParameterString32 : public SunspecParameter {
// public:
// SunspecParameterInt16(std::string name, int registerAddressOffset, int registerSize);
// virtual void setValueFromRegisters(uint16_t *registers, int addressOffset);
// virtual void getValueFromRegisters(uint16_t *registers, int addressOffset);
// };
// class SunspecParameterAcc32 : public SunspecParameter {
@ -100,7 +100,7 @@ class SunspecParameterString32 : public SunspecParameter {
// public:
// SunspecParameterAcc32(std::string name, int registerAddressOffset, int registerSize);
// virtual void setValueFromRegisters(uint16_t *registers, int addressOffset);
// virtual void getValueFromRegisters(uint16_t *registers, int addressOffset);
// };
// class SunspecParameterFloat32 : public SunspecParameter {
@ -109,7 +109,7 @@ class SunspecParameterString32 : public SunspecParameter {
// public:
// SunspecParameterFloat32(std::string name, int registerAddressOffset, int registerSize);
// virtual void setValueFromRegisters(uint16_t *registers, int addressOffset);
// virtual void getValueFromRegisters(uint16_t *registers, int addressOffset);
// };
// class SunspecParameterEnum16 : public SunspecParameter {
@ -118,7 +118,7 @@ class SunspecParameterString32 : public SunspecParameter {
// public:
// SunspecParameterEnum16(std::string name, int registerAddressOffset, int registerSize);
// virtual void setValueFromRegisters(uint16_t *registers, int addressOffset);
// virtual void getValueFromRegisters(uint16_t *registers, int addressOffset);
// };
#endif