Skip to content

Commit

Permalink
Bring back the sun indicator (#195)
Browse files Browse the repository at this point in the history
* Adding states to display in UI

* Adding states to display in UI
  • Loading branch information
MalteSchm committed Apr 27, 2023
1 parent 6b437b5 commit 7006055
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 3 deletions.
7 changes: 6 additions & 1 deletion include/PowerLimiter.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,11 @@
#include <Hoymiles.h>
#include <memory>

#define PL_UI_STATE_INACTIVE 0
#define PL_UI_STATE_CHARGING 1
#define PL_UI_STATE_USE_SOLAR_ONLY 2
#define PL_UI_STATE_USE_SOLAR_AND_BATTERY 3

typedef enum {
SHUTDOWN = 0,
ACTIVE
Expand All @@ -22,7 +27,7 @@ class PowerLimiterClass {
public:
void init();
void loop();
plStates getPowerLimiterState();
uint8_t getPowerLimiterState();
int32_t getLastRequestedPowewrLimit();
void setDisable(bool disable);
bool getDisable();
Expand Down
23 changes: 21 additions & 2 deletions src/PowerLimiter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -96,8 +96,27 @@ void PowerLimiterClass::loop()
setNewPowerLimit(inverter, newPowerLimit);
}

plStates PowerLimiterClass::getPowerLimiterState() {
return _plState;
uint8_t PowerLimiterClass::getPowerLimiterState() {
CONFIG_T& config = Configuration.get();

std::shared_ptr<InverterAbstract> inverter = Hoymiles.getInverterByPos(config.PowerLimiter_InverterId);
if (inverter == nullptr || !inverter->isReachable()) {
return PL_UI_STATE_INACTIVE;
}

if (inverter->isProducing() && _batteryDischargeEnabled) {
return PL_UI_STATE_USE_SOLAR_AND_BATTERY;
}

if (inverter->isProducing() && !_batteryDischargeEnabled) {
return PL_UI_STATE_USE_SOLAR_ONLY;
}

if(VeDirect.veFrame.PPV > 0) {
return PL_UI_STATE_CHARGING;
}

return PL_UI_STATE_INACTIVE;
}

int32_t PowerLimiterClass::getLastRequestedPowewrLimit() {
Expand Down

0 comments on commit 7006055

Please sign in to comment.