Skip to content

Commit ccbaf55

Browse files
authored
Feature: Set/obtain DPL target power consumption via MQTT
1 parent 95e560b commit ccbaf55

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

include/MqttHandlePowerLimiter.h

+2-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@ class MqttHandlePowerLimiterClass {
2424
VoltageStopThreshold,
2525
FullSolarPassThroughStartVoltage,
2626
FullSolarPassThroughStopVoltage,
27-
UpperPowerLimit
27+
UpperPowerLimit,
28+
TargetPowerConsumption
2829
};
2930

3031
void onMqttCmd(MqttPowerLimiterCommand command, const espMqttClientTypes::MessageProperties& properties, const char* topic, const uint8_t* payload, size_t len, size_t index, size_t total);

src/MqttHandlePowerLimiter.cpp

+8
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ void MqttHandlePowerLimiterClass::init(Scheduler& scheduler)
4545
subscribe("threshold/voltage/full_solar_passthrough_stop", MqttPowerLimiterCommand::FullSolarPassThroughStopVoltage);
4646
subscribe("mode", MqttPowerLimiterCommand::Mode);
4747
subscribe("upper_power_limit", MqttPowerLimiterCommand::UpperPowerLimit);
48+
subscribe("target_power_consumption", MqttPowerLimiterCommand::TargetPowerConsumption);
4849

4950
_lastPublish = millis();
5051
}
@@ -79,6 +80,8 @@ void MqttHandlePowerLimiterClass::loop()
7980

8081
MqttSettings.publish("powerlimiter/status/upper_power_limit", String(config.PowerLimiter.UpperPowerLimit));
8182

83+
MqttSettings.publish("powerlimiter/status/target_power_consumption", String(config.PowerLimiter.TargetPowerConsumption));
84+
8285
MqttSettings.publish("powerlimiter/status/inverter_update_timeouts", String(PowerLimiter.getInverterUpdateTimeouts()));
8386

8487
// no thresholds are relevant for setups without a battery
@@ -182,6 +185,11 @@ void MqttHandlePowerLimiterClass::onMqttCmd(MqttPowerLimiterCommand command, con
182185
MessageOutput.printf("Setting upper power limit to: %d W\r\n", intValue);
183186
config.PowerLimiter.UpperPowerLimit = intValue;
184187
break;
188+
case MqttPowerLimiterCommand::TargetPowerConsumption:
189+
if (config.PowerLimiter.TargetPowerConsumption == intValue) { return; }
190+
MessageOutput.printf("Setting target power consumption to: %d W\r\n", intValue);
191+
config.PowerLimiter.TargetPowerConsumption = intValue;
192+
break;
185193
}
186194

187195
// not reached if the value did not change

0 commit comments

Comments
 (0)