// SPDX-License-Identifier: GPL-2.0-or-later #pragma once #include "Configuration.h" #include #include #include #include class PowerLimiterClass { public: void init(); void loop(); void onMqttMessage(const espMqttClientTypes::MessageProperties& properties, const char* topic, const uint8_t* payload, size_t len, size_t index, size_t total); private: uint32_t _lastCommandSent; uint32_t _lastLoop; uint32_t _lastPowerMeterUpdate; uint16_t _lastRequestedPowerLimit; bool _consumeSolarPowerOnly; float _powerMeter1Power; float _powerMeter2Power; float _powerMeter3Power; bool canUseDirectSolarPower(); uint32_t getDirectSolarPower(); float getLoadCorrectedVoltage(std::shared_ptr inverter); bool isStartThresholdReached(std::shared_ptr inverter); bool isStopThresholdReached(std::shared_ptr inverter); }; extern PowerLimiterClass PowerLimiter;