Feature: Allow setting of an inverter limit of 0% and 0W
Thanks to @madmartin in #1270
This commit is contained in:
parent
1d9c91c0fb
commit
b4ead9d6ec
@ -101,4 +101,6 @@
|
|||||||
|
|
||||||
#define REACHABLE_THRESHOLD 2U
|
#define REACHABLE_THRESHOLD 2U
|
||||||
|
|
||||||
#define LED_BRIGHTNESS 100U
|
#define LED_BRIGHTNESS 100U
|
||||||
|
|
||||||
|
#define MAX_INVERTER_LIMIT 2250
|
||||||
@ -6,6 +6,7 @@
|
|||||||
#include "MqttHandleInverter.h"
|
#include "MqttHandleInverter.h"
|
||||||
#include "MqttSettings.h"
|
#include "MqttSettings.h"
|
||||||
#include "NetworkSettings.h"
|
#include "NetworkSettings.h"
|
||||||
|
#include "defaults.h"
|
||||||
|
|
||||||
MqttHandleHassClass MqttHandleHass;
|
MqttHandleHassClass MqttHandleHass;
|
||||||
|
|
||||||
@ -59,11 +60,11 @@ void MqttHandleHassClass::publishConfig()
|
|||||||
publishInverterButton(inv, "Turn Inverter On", "mdi:power-plug", "config", "", "cmd/power", "1");
|
publishInverterButton(inv, "Turn Inverter On", "mdi:power-plug", "config", "", "cmd/power", "1");
|
||||||
publishInverterButton(inv, "Restart Inverter", "", "config", "restart", "cmd/restart", "1");
|
publishInverterButton(inv, "Restart Inverter", "", "config", "restart", "cmd/restart", "1");
|
||||||
|
|
||||||
publishInverterNumber(inv, "Limit NonPersistent Relative", "mdi:speedometer", "config", "cmd/limit_nonpersistent_relative", "status/limit_relative", "%");
|
publishInverterNumber(inv, "Limit NonPersistent Relative", "mdi:speedometer", "config", "cmd/limit_nonpersistent_relative", "status/limit_relative", "%", 0, 100);
|
||||||
publishInverterNumber(inv, "Limit Persistent Relative", "mdi:speedometer", "config", "cmd/limit_persistent_relative", "status/limit_relative", "%");
|
publishInverterNumber(inv, "Limit Persistent Relative", "mdi:speedometer", "config", "cmd/limit_persistent_relative", "status/limit_relative", "%", 0, 100);
|
||||||
|
|
||||||
publishInverterNumber(inv, "Limit NonPersistent Absolute", "mdi:speedometer", "config", "cmd/limit_nonpersistent_absolute", "status/limit_absolute", "W", 10, 2250);
|
publishInverterNumber(inv, "Limit NonPersistent Absolute", "mdi:speedometer", "config", "cmd/limit_nonpersistent_absolute", "status/limit_absolute", "W", 0, MAX_INVERTER_LIMIT);
|
||||||
publishInverterNumber(inv, "Limit Persistent Absolute", "mdi:speedometer", "config", "cmd/limit_persistent_absolute", "status/limit_absolute", "W", 10, 2250);
|
publishInverterNumber(inv, "Limit Persistent Absolute", "mdi:speedometer", "config", "cmd/limit_persistent_absolute", "status/limit_absolute", "W", 0, MAX_INVERTER_LIMIT);
|
||||||
|
|
||||||
publishInverterBinarySensor(inv, "Reachable", "status/reachable", "1", "0");
|
publishInverterBinarySensor(inv, "Reachable", "status/reachable", "1", "0");
|
||||||
publishInverterBinarySensor(inv, "Producing", "status/producing", "1", "0");
|
publishInverterBinarySensor(inv, "Producing", "status/producing", "1", "0");
|
||||||
|
|||||||
@ -5,6 +5,8 @@
|
|||||||
#include "WebApi_limit.h"
|
#include "WebApi_limit.h"
|
||||||
#include "WebApi.h"
|
#include "WebApi.h"
|
||||||
#include "WebApi_errors.h"
|
#include "WebApi_errors.h"
|
||||||
|
#include "defaults.h"
|
||||||
|
#include "helper.h"
|
||||||
#include <AsyncJson.h>
|
#include <AsyncJson.h>
|
||||||
#include <Hoymiles.h>
|
#include <Hoymiles.h>
|
||||||
|
|
||||||
@ -112,10 +114,10 @@ void WebApiLimitClass::onLimitPost(AsyncWebServerRequest* request)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (root["limit_value"].as<uint16_t>() == 0 || root["limit_value"].as<uint16_t>() > 2250) {
|
if (root["limit_value"].as<uint16_t>() > MAX_INVERTER_LIMIT) {
|
||||||
retMsg["message"] = "Limit must between 1 and 2250!";
|
retMsg["message"] = "Limit must between 0 and " STR(MAX_INVERTER_LIMIT) "!";
|
||||||
retMsg["code"] = WebApiError::LimitInvalidLimit;
|
retMsg["code"] = WebApiError::LimitInvalidLimit;
|
||||||
retMsg["param"]["max"] = 2250;
|
retMsg["param"]["max"] = MAX_INVERTER_LIMIT;
|
||||||
response->setLength();
|
response->setLength();
|
||||||
request->send(response);
|
request->send(response);
|
||||||
return;
|
return;
|
||||||
|
|||||||
@ -431,7 +431,7 @@ export default defineComponent({
|
|||||||
currentLimitList: {} as LimitStatus,
|
currentLimitList: {} as LimitStatus,
|
||||||
targetLimitList: {} as LimitConfig,
|
targetLimitList: {} as LimitConfig,
|
||||||
|
|
||||||
targetLimitMin: 2,
|
targetLimitMin: 0,
|
||||||
targetLimitMax: 100,
|
targetLimitMax: 100,
|
||||||
targetLimitTypeText: this.$t('home.Relative'),
|
targetLimitTypeText: this.$t('home.Relative'),
|
||||||
targetLimitType: 1,
|
targetLimitType: 1,
|
||||||
@ -679,11 +679,11 @@ export default defineComponent({
|
|||||||
onSelectType(type: number) {
|
onSelectType(type: number) {
|
||||||
if (type == 1) {
|
if (type == 1) {
|
||||||
this.targetLimitTypeText = this.$t('home.Relative');
|
this.targetLimitTypeText = this.$t('home.Relative');
|
||||||
this.targetLimitMin = 2;
|
this.targetLimitMin = 0;
|
||||||
this.targetLimitMax = 100;
|
this.targetLimitMax = 100;
|
||||||
} else {
|
} else {
|
||||||
this.targetLimitTypeText = this.$t('home.Absolute');
|
this.targetLimitTypeText = this.$t('home.Absolute');
|
||||||
this.targetLimitMin = 10;
|
this.targetLimitMin = 0;
|
||||||
this.targetLimitMax = (this.currentLimitList.max_power > 0 ? this.currentLimitList.max_power : 2250);
|
this.targetLimitMax = (this.currentLimitList.max_power > 0 ? this.currentLimitList.max_power : 2250);
|
||||||
}
|
}
|
||||||
this.targetLimitType = type;
|
this.targetLimitType = type;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user