diff --git a/lib/Hoymiles/src/inverters/HM_Abstract.cpp b/lib/Hoymiles/src/inverters/HM_Abstract.cpp index c14efc4..ac1191e 100644 --- a/lib/Hoymiles/src/inverters/HM_Abstract.cpp +++ b/lib/Hoymiles/src/inverters/HM_Abstract.cpp @@ -1,5 +1,6 @@ #include "HM_Abstract.h" #include "HoymilesRadio.h" +#include "commands/ActivePowerControlCommand.h" #include "commands/AlarmDataCommand.h" #include "commands/DevInfoAllCommand.h" #include "commands/DevInfoSampleCommand.h" @@ -86,5 +87,17 @@ bool HM_Abstract::sendSystemConfigParaRequest(HoymilesRadio* radio) cmd->setTime(now); cmd->setTargetAddress(serial()); + return true; +} + +bool HM_Abstract::sendActivePowerControlRequest(HoymilesRadio* radio, float limit, PowerLimitControlType type) +{ + ActivePowerControlCommand* cmd = radio->enqueCommand(); + cmd->setActivePowerLimit(limit, type); + cmd->setTargetAddress(serial()); + + // request updated limits + sendSystemConfigParaRequest(radio); + return true; } \ No newline at end of file diff --git a/lib/Hoymiles/src/inverters/HM_Abstract.h b/lib/Hoymiles/src/inverters/HM_Abstract.h index 36cf462..a42691f 100644 --- a/lib/Hoymiles/src/inverters/HM_Abstract.h +++ b/lib/Hoymiles/src/inverters/HM_Abstract.h @@ -9,6 +9,7 @@ public: bool sendAlarmLogRequest(HoymilesRadio* radio); bool sendDevInfoRequest(HoymilesRadio* radio); bool sendSystemConfigParaRequest(HoymilesRadio* radio); + bool sendActivePowerControlRequest(HoymilesRadio* radio, float limit, PowerLimitControlType type); private: uint8_t _lastAlarmLogCnt = 0; diff --git a/lib/Hoymiles/src/inverters/InverterAbstract.h b/lib/Hoymiles/src/inverters/InverterAbstract.h index 62f0d68..bd2d0b8 100644 --- a/lib/Hoymiles/src/inverters/InverterAbstract.h +++ b/lib/Hoymiles/src/inverters/InverterAbstract.h @@ -1,5 +1,6 @@ #pragma once +#include "../commands/ActivePowerControlCommand.h" #include "../parser/AlarmLogParser.h" #include "../parser/DevInfoParser.h" #include "../parser/StatisticsParser.h" @@ -42,6 +43,7 @@ public: virtual bool sendAlarmLogRequest(HoymilesRadio* radio) = 0; virtual bool sendDevInfoRequest(HoymilesRadio* radio) = 0; virtual bool sendSystemConfigParaRequest(HoymilesRadio* radio) = 0; + virtual bool sendActivePowerControlRequest(HoymilesRadio* radio, float limit, PowerLimitControlType type) = 0; AlarmLogParser* EventLog(); DevInfoParser* DevInfo();