mirror of
https://github.com/arendst/Tasmota.git
synced 2025-08-02 07:27:42 +00:00
Add restore power state when limiit restored
Add restore power state when limiit restored (#6340)
This commit is contained in:
parent
8e4dd169f3
commit
1478f1624a
@ -598,6 +598,14 @@ void SetAllPower(uint8_t state, int source)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void RestoreAllPower(power_t power_set, int source)
|
||||||
|
{
|
||||||
|
if (power != power_set) {
|
||||||
|
SetDevicePower(power, source);
|
||||||
|
MqttPublishAllPowerState();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void MqttShowPWMState(void)
|
void MqttShowPWMState(void)
|
||||||
{
|
{
|
||||||
ResponseAppend_P(PSTR("\"" D_CMND_PWM "\":{"));
|
ResponseAppend_P(PSTR("\"" D_CMND_PWM "\":{"));
|
||||||
|
@ -110,6 +110,8 @@ struct ENERGY {
|
|||||||
bool max_current_flag = false;
|
bool max_current_flag = false;
|
||||||
|
|
||||||
#ifdef USE_ENERGY_POWER_LIMIT
|
#ifdef USE_ENERGY_POWER_LIMIT
|
||||||
|
power_t mp_last_power = 0;
|
||||||
|
power_t me_last_power = 0;
|
||||||
uint16_t mplh_counter = 0;
|
uint16_t mplh_counter = 0;
|
||||||
uint16_t mplw_counter = 0;
|
uint16_t mplw_counter = 0;
|
||||||
uint8_t mplr_counter = 0;
|
uint8_t mplr_counter = 0;
|
||||||
@ -317,6 +319,7 @@ void EnergyMarginCheck(void)
|
|||||||
Response_P(PSTR("{\"" D_JSON_MAXPOWERREACHED "\":\"%d%s\"}"), energy_power_u, (Settings.flag.value_units) ? " " D_UNIT_WATT : "");
|
Response_P(PSTR("{\"" D_JSON_MAXPOWERREACHED "\":\"%d%s\"}"), energy_power_u, (Settings.flag.value_units) ? " " D_UNIT_WATT : "");
|
||||||
MqttPublishPrefixTopic_P(STAT, S_RSLT_WARNING);
|
MqttPublishPrefixTopic_P(STAT, S_RSLT_WARNING);
|
||||||
EnergyMqttShow();
|
EnergyMqttShow();
|
||||||
|
Energy.mp_last_power = power;
|
||||||
SetAllPower(POWER_ALL_OFF, SRC_MAXPOWER);
|
SetAllPower(POWER_ALL_OFF, SRC_MAXPOWER);
|
||||||
if (!Energy.mplr_counter) {
|
if (!Energy.mplr_counter) {
|
||||||
Energy.mplr_counter = Settings.param[P_MAX_POWER_RETRY] +1;
|
Energy.mplr_counter = Settings.param[P_MAX_POWER_RETRY] +1;
|
||||||
@ -339,7 +342,7 @@ void EnergyMarginCheck(void)
|
|||||||
if (Energy.mplr_counter) {
|
if (Energy.mplr_counter) {
|
||||||
Response_P(PSTR("{\"" D_JSON_POWERMONITOR "\":\"%s\"}"), GetStateText(1));
|
Response_P(PSTR("{\"" D_JSON_POWERMONITOR "\":\"%s\"}"), GetStateText(1));
|
||||||
MqttPublishPrefixTopic_P(RESULT_OR_STAT, PSTR(D_JSON_POWERMONITOR));
|
MqttPublishPrefixTopic_P(RESULT_OR_STAT, PSTR(D_JSON_POWERMONITOR));
|
||||||
SetAllPower(POWER_ALL_ON, SRC_MAXPOWER);
|
RestoreAllPower(Energy.mp_last_power, SRC_MAXPOWER);
|
||||||
} else {
|
} else {
|
||||||
Response_P(PSTR("{\"" D_JSON_MAXPOWERREACHEDRETRY "\":\"%s\"}"), GetStateText(0));
|
Response_P(PSTR("{\"" D_JSON_MAXPOWERREACHEDRETRY "\":\"%s\"}"), GetStateText(0));
|
||||||
MqttPublishPrefixTopic_P(STAT, S_RSLT_WARNING);
|
MqttPublishPrefixTopic_P(STAT, S_RSLT_WARNING);
|
||||||
@ -357,7 +360,7 @@ void EnergyMarginCheck(void)
|
|||||||
Energy.max_energy_state = 1;
|
Energy.max_energy_state = 1;
|
||||||
Response_P(PSTR("{\"" D_JSON_ENERGYMONITOR "\":\"%s\"}"), GetStateText(1));
|
Response_P(PSTR("{\"" D_JSON_ENERGYMONITOR "\":\"%s\"}"), GetStateText(1));
|
||||||
MqttPublishPrefixTopic_P(RESULT_OR_STAT, PSTR(D_JSON_ENERGYMONITOR));
|
MqttPublishPrefixTopic_P(RESULT_OR_STAT, PSTR(D_JSON_ENERGYMONITOR));
|
||||||
SetAllPower(POWER_ALL_ON, SRC_MAXENERGY);
|
RestoreAllPower(Energy.me_last_power, SRC_MAXENERGY);
|
||||||
}
|
}
|
||||||
else if ((1 == Energy.max_energy_state ) && (energy_daily_u >= Settings.energy_max_energy)) {
|
else if ((1 == Energy.max_energy_state ) && (energy_daily_u >= Settings.energy_max_energy)) {
|
||||||
Energy.max_energy_state = 2;
|
Energy.max_energy_state = 2;
|
||||||
@ -365,6 +368,7 @@ void EnergyMarginCheck(void)
|
|||||||
Response_P(PSTR("{\"" D_JSON_MAXENERGYREACHED "\":\"%s%s\"}"), mqtt_data, (Settings.flag.value_units) ? " " D_UNIT_KILOWATTHOUR : "");
|
Response_P(PSTR("{\"" D_JSON_MAXENERGYREACHED "\":\"%s%s\"}"), mqtt_data, (Settings.flag.value_units) ? " " D_UNIT_KILOWATTHOUR : "");
|
||||||
MqttPublishPrefixTopic_P(STAT, S_RSLT_WARNING);
|
MqttPublishPrefixTopic_P(STAT, S_RSLT_WARNING);
|
||||||
EnergyMqttShow();
|
EnergyMqttShow();
|
||||||
|
Energy.me_last_power = power;
|
||||||
SetAllPower(POWER_ALL_OFF, SRC_MAXENERGY);
|
SetAllPower(POWER_ALL_OFF, SRC_MAXENERGY);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user