[Energy] Decoupled `FREQUENCY` and `Energy->type_dc` (#20549)

This commit is contained in:
SteWers 2024-01-21 11:37:04 +01:00 committed by GitHub
parent 9608b7513a
commit 76a7ab5131
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 17 additions and 21 deletions

View File

@ -673,7 +673,7 @@ void EnergyEverySecond(void) {
Energy->active_power[i] = 0;
if (!isnan(Energy->apparent_power[i])) { Energy->apparent_power[i] = 0; }
if (!isnan(Energy->reactive_power[i])) { Energy->reactive_power[i] = 0; }
if (!isnan(Energy->frequency[i])) { Energy->frequency[i] = 0; }
if (!isnan(Energy->frequency[i]) && !Energy->type_dc) { Energy->frequency[i] = 0; }
if (!isnan(Energy->power_factor[i])) { Energy->power_factor[i] = 0; }
if (!isnan(Energy->export_active[i])) { Energy->export_active[i] = 0; }
@ -1345,10 +1345,10 @@ void EnergyShow(bool json) {
ResponseAppend_P(PSTR(",\"" D_JSON_POWERFACTOR "\":%s"),
EnergyFmt(power_factor, 2));
}
if (!isnan(Energy->frequency[0])) {
ResponseAppend_P(PSTR(",\"" D_JSON_FREQUENCY "\":%s"),
EnergyFmt(Energy->frequency, Settings->flag2.frequency_resolution, frequency_common));
}
}
if (!isnan(Energy->frequency[0])) {
ResponseAppend_P(PSTR(",\"" D_JSON_FREQUENCY "\":%s"),
EnergyFmt(Energy->frequency, Settings->flag2.frequency_resolution, frequency_common));
}
if (Energy->voltage_available) {
ResponseAppend_P(PSTR(",\"" D_JSON_VOLTAGE "\":%s"),
@ -1420,11 +1420,9 @@ void EnergyShow(bool json) {
if (Energy->voltage_available) {
WSContentSend_PD(HTTP_SNS_VOLTAGE, WebEnergyFmt(Energy->voltage, Settings->flag2.voltage_resolution, voltage_common));
}
if (!Energy->type_dc) {
if (!isnan(Energy->frequency[0])) {
WSContentSend_PD(PSTR("{s}" D_FREQUENCY "{m}%s " D_UNIT_HERTZ "{e}"),
WebEnergyFmt(Energy->frequency, Settings->flag2.frequency_resolution, frequency_common));
}
if (!isnan(Energy->frequency[0])) {
WSContentSend_PD(PSTR("{s}" D_FREQUENCY "{m}%s " D_UNIT_HERTZ "{e}"),
WebEnergyFmt(Energy->frequency, Settings->flag2.frequency_resolution, frequency_common));
}
if (Energy->current_available) {
WSContentSend_PD(HTTP_SNS_CURRENT, WebEnergyFmt(Energy->current, Settings->flag2.current_resolution));

View File

@ -893,7 +893,7 @@ void EnergyEverySecond(void) {
Energy->active_power[i] = 0;
if (!isnan(Energy->apparent_power[i])) { Energy->apparent_power[i] = 0; }
if (!isnan(Energy->reactive_power[i])) { Energy->reactive_power[i] = 0; }
if (!isnan(Energy->frequency[i])) { Energy->frequency[i] = 0; }
if (!isnan(Energy->frequency[i]) && !Energy->type_dc) { Energy->frequency[i] = 0; }
if (!isnan(Energy->power_factor[i])) { Energy->power_factor[i] = 0; }
if (!isnan(Energy->export_active[i])) { Energy->export_active[i] = 0; }
@ -1580,10 +1580,10 @@ void EnergyShow(bool json) {
ResponseAppend_P(PSTR(",\"" D_JSON_POWERFACTOR "\":%s"),
EnergyFmt(power_factor, 2));
}
if (!isnan(Energy->frequency[0])) {
ResponseAppend_P(PSTR(",\"" D_JSON_FREQUENCY "\":%s"),
EnergyFmt(Energy->frequency, Settings->flag2.frequency_resolution, frequency_common));
}
}
if (!isnan(Energy->frequency[0])) {
ResponseAppend_P(PSTR(",\"" D_JSON_FREQUENCY "\":%s"),
EnergyFmt(Energy->frequency, Settings->flag2.frequency_resolution, frequency_common));
}
if (Energy->voltage_available) {
ResponseAppend_P(PSTR(",\"" D_JSON_VOLTAGE "\":%s"),
@ -1702,11 +1702,9 @@ void EnergyShow(bool json) {
if (Energy->voltage_available) {
WSContentSend_PD(HTTP_SNS_VOLTAGE, WebEnergyFmt(Energy->voltage, Settings->flag2.voltage_resolution, voltage_common));
}
if (!Energy->type_dc) {
if (!isnan(Energy->frequency[0])) {
WSContentSend_PD(PSTR("{s}" D_FREQUENCY "{m}%s " D_UNIT_HERTZ "{e}"),
WebEnergyFmt(Energy->frequency, Settings->flag2.frequency_resolution, frequency_common));
}
if (!isnan(Energy->frequency[0])) {
WSContentSend_PD(PSTR("{s}" D_FREQUENCY "{m}%s " D_UNIT_HERTZ "{e}"),
WebEnergyFmt(Energy->frequency, Settings->flag2.frequency_resolution, frequency_common));
}
if (Energy->current_available) {
WSContentSend_PD(HTTP_SNS_CURRENT, WebEnergyFmt(Energy->current, Settings->flag2.current_resolution));

View File

@ -286,7 +286,6 @@ void solaxX1_250MSecond(void) { // Every 250 milliseconds
Energy->voltage[0] = ((DataRead[23] << 8) | DataRead[24]) * 0.1f; // AC Voltage
Energy->frequency[0] = ((DataRead[25] << 8) | DataRead[26]) * 0.01f; // AC Frequency
Energy->active_power[0] = ((DataRead[27] << 8) | DataRead[28]); // AC Power
Energy->apparent_power[0] = Energy->active_power[0]; // U*I from inverter is not valid for apparent power; U*I could be lower than active power
//temporal = (float)((DataRead[29] << 8) | DataRead[30]) * 0.1f; // Not Used
Energy->import_active[0] = ((DataRead[31] << 24) | (DataRead[32] << 16) | (DataRead[33] << 8) | DataRead[34]) * 0.1f; // Energy Total
uint32_t runtime_total = (DataRead[35] << 24) | (DataRead[36] << 16) | (DataRead[37] << 8) | DataRead[38]; // Work Time Total
@ -473,6 +472,7 @@ void solaxX1_SnsInit(void) {
void solaxX1_DrvInit(void) {
if (PinUsed(GPIO_SOLAXX1_RX) && PinUsed(GPIO_SOLAXX1_TX)) {
TasmotaGlobal.energy_driver = XNRG_12;
Energy->type_dc = true; // Handle like DC, because U*I from inverter is not valid for apparent power; U*I could be lower than active power
}
}