Feature: Set/obtain DPL upper power limit via MQTT
This commit is contained in:
parent
5a007e5352
commit
1f6fdb7fc0
@ -23,7 +23,8 @@ private:
|
|||||||
VoltageStartThreshold,
|
VoltageStartThreshold,
|
||||||
VoltageStopThreshold,
|
VoltageStopThreshold,
|
||||||
FullSolarPassThroughStartVoltage,
|
FullSolarPassThroughStartVoltage,
|
||||||
FullSolarPassThroughStopVoltage
|
FullSolarPassThroughStopVoltage,
|
||||||
|
UpperPowerLimit
|
||||||
};
|
};
|
||||||
|
|
||||||
void onMqttCmd(MqttPowerLimiterCommand command, const espMqttClientTypes::MessageProperties& properties, const char* topic, const uint8_t* payload, size_t len, size_t index, size_t total);
|
void onMqttCmd(MqttPowerLimiterCommand command, const espMqttClientTypes::MessageProperties& properties, const char* topic, const uint8_t* payload, size_t len, size_t index, size_t total);
|
||||||
|
|||||||
@ -44,6 +44,7 @@ void MqttHandlePowerLimiterClass::init(Scheduler& scheduler)
|
|||||||
subscribe("threshold/voltage/full_solar_passthrough_start", MqttPowerLimiterCommand::FullSolarPassThroughStartVoltage);
|
subscribe("threshold/voltage/full_solar_passthrough_start", MqttPowerLimiterCommand::FullSolarPassThroughStartVoltage);
|
||||||
subscribe("threshold/voltage/full_solar_passthrough_stop", MqttPowerLimiterCommand::FullSolarPassThroughStopVoltage);
|
subscribe("threshold/voltage/full_solar_passthrough_stop", MqttPowerLimiterCommand::FullSolarPassThroughStopVoltage);
|
||||||
subscribe("mode", MqttPowerLimiterCommand::Mode);
|
subscribe("mode", MqttPowerLimiterCommand::Mode);
|
||||||
|
subscribe("upper_power_limit", MqttPowerLimiterCommand::UpperPowerLimit);
|
||||||
|
|
||||||
_lastPublish = millis();
|
_lastPublish = millis();
|
||||||
}
|
}
|
||||||
@ -76,6 +77,8 @@ void MqttHandlePowerLimiterClass::loop()
|
|||||||
auto val = static_cast<unsigned>(PowerLimiter.getMode());
|
auto val = static_cast<unsigned>(PowerLimiter.getMode());
|
||||||
MqttSettings.publish("powerlimiter/status/mode", String(val));
|
MqttSettings.publish("powerlimiter/status/mode", String(val));
|
||||||
|
|
||||||
|
MqttSettings.publish("powerlimiter/status/upper_power_limit", String(config.PowerLimiter.UpperPowerLimit));
|
||||||
|
|
||||||
MqttSettings.publish("powerlimiter/status/inverter_update_timeouts", String(PowerLimiter.getInverterUpdateTimeouts()));
|
MqttSettings.publish("powerlimiter/status/inverter_update_timeouts", String(PowerLimiter.getInverterUpdateTimeouts()));
|
||||||
|
|
||||||
// no thresholds are relevant for setups without a battery
|
// no thresholds are relevant for setups without a battery
|
||||||
@ -174,6 +177,11 @@ void MqttHandlePowerLimiterClass::onMqttCmd(MqttPowerLimiterCommand command, con
|
|||||||
MessageOutput.printf("Setting full solar passthrough stop voltage to: %.2f V\r\n", payload_val);
|
MessageOutput.printf("Setting full solar passthrough stop voltage to: %.2f V\r\n", payload_val);
|
||||||
config.PowerLimiter.FullSolarPassThroughStopVoltage = payload_val;
|
config.PowerLimiter.FullSolarPassThroughStopVoltage = payload_val;
|
||||||
break;
|
break;
|
||||||
|
case MqttPowerLimiterCommand::UpperPowerLimit:
|
||||||
|
if (config.PowerLimiter.UpperPowerLimit == intValue) { return; }
|
||||||
|
MessageOutput.printf("Setting upper power limit to: %d W\r\n", intValue);
|
||||||
|
config.PowerLimiter.UpperPowerLimit = intValue;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// not reached if the value did not change
|
// not reached if the value did not change
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user