Added reactive power output and display

This commit is contained in:
Thomas Basler 2022-08-10 20:40:26 +02:00
parent e040328d61
commit 991838ae2c
7 changed files with 21 additions and 12 deletions

View File

@ -15,9 +15,10 @@ enum {
DEVICE_CLS_VOLTAGE, DEVICE_CLS_VOLTAGE,
DEVICE_CLS_FREQ, DEVICE_CLS_FREQ,
DEVICE_CLS_TEMP, DEVICE_CLS_TEMP,
DEVICE_CLS_POWER_FACTOR DEVICE_CLS_POWER_FACTOR,
DEVICE_CLS_REACTIVE_POWER
}; };
const char* const deviceClasses[] = { 0, "current", "energy", "power", "voltage", "frequency", "temperature", "power_factor" }; const char* const deviceClasses[] = { 0, "current", "energy", "power", "voltage", "frequency", "temperature", "power_factor", "reactive_power" };
enum { enum {
STATE_CLS_NONE = 0, STATE_CLS_NONE = 0,
STATE_CLS_MEASUREMENT, STATE_CLS_MEASUREMENT,
@ -44,7 +45,8 @@ const byteAssign_fieldDeviceClass_t deviceFieldAssignment[] = {
{ FLD_T, DEVICE_CLS_TEMP, STATE_CLS_MEASUREMENT }, { FLD_T, DEVICE_CLS_TEMP, STATE_CLS_MEASUREMENT },
{ FLD_PCT, DEVICE_CLS_POWER_FACTOR, STATE_CLS_MEASUREMENT }, { FLD_PCT, DEVICE_CLS_POWER_FACTOR, STATE_CLS_MEASUREMENT },
{ FLD_EFF, DEVICE_CLS_NONE, STATE_CLS_NONE }, { FLD_EFF, DEVICE_CLS_NONE, STATE_CLS_NONE },
{ FLD_IRR, DEVICE_CLS_NONE, STATE_CLS_NONE } { FLD_IRR, DEVICE_CLS_NONE, STATE_CLS_NONE },
{ FLD_PRA, DEVICE_CLS_REACTIVE_POWER, STATE_CLS_MEASUREMENT }
}; };
#define DEVICE_CLS_ASSIGN_LIST_LEN (sizeof(deviceFieldAssignment) / sizeof(byteAssign_fieldDeviceClass_t)) #define DEVICE_CLS_ASSIGN_LIST_LEN (sizeof(deviceFieldAssignment) / sizeof(byteAssign_fieldDeviceClass_t))

View File

@ -19,7 +19,7 @@ private:
uint32_t _lastPublishStats[INV_MAX_COUNT]; uint32_t _lastPublishStats[INV_MAX_COUNT];
uint32_t _lastPublish; uint32_t _lastPublish;
uint8_t _publishFields[13] = { uint8_t _publishFields[14] = {
FLD_UDC, FLD_UDC,
FLD_IDC, FLD_IDC,
FLD_PDC, FLD_PDC,
@ -32,7 +32,8 @@ private:
FLD_T, FLD_T,
FLD_PCT, FLD_PCT,
FLD_EFF, FLD_EFF,
FLD_IRR FLD_IRR,
FLD_PRA
}; };
}; };

View File

@ -11,7 +11,7 @@ public:
const uint8_t getAssignmentCount(); const uint8_t getAssignmentCount();
private: private:
const byteAssign_t byteAssignment[16] = { const byteAssign_t byteAssignment[17] = {
{ FLD_UDC, UNIT_V, CH1, 2, 2, 10 }, { FLD_UDC, UNIT_V, CH1, 2, 2, 10 },
{ FLD_IDC, UNIT_A, CH1, 4, 2, 100 }, { FLD_IDC, UNIT_A, CH1, 4, 2, 100 },
{ FLD_PDC, UNIT_W, CH1, 6, 2, 10 }, { FLD_PDC, UNIT_W, CH1, 6, 2, 10 },
@ -22,6 +22,7 @@ private:
{ FLD_UAC, UNIT_V, CH0, 14, 2, 10 }, { FLD_UAC, UNIT_V, CH0, 14, 2, 10 },
{ FLD_IAC, UNIT_A, CH0, 22, 2, 100 }, { FLD_IAC, UNIT_A, CH0, 22, 2, 100 },
{ FLD_PAC, UNIT_W, CH0, 18, 2, 10 }, { FLD_PAC, UNIT_W, CH0, 18, 2, 10 },
{ FLD_PRA, UNIT_VA, CH0, 20, 2, 10 },
{ FLD_F, UNIT_HZ, CH0, 16, 2, 100 }, { FLD_F, UNIT_HZ, CH0, 16, 2, 100 },
{ FLD_T, UNIT_C, CH0, 26, 2, 10 }, { FLD_T, UNIT_C, CH0, 26, 2, 10 },
{ FLD_EVT_LOG, UNIT_CNT, CH0, 24, 2, 1 }, { FLD_EVT_LOG, UNIT_CNT, CH0, 24, 2, 1 },

View File

@ -11,7 +11,7 @@ public:
const uint8_t getAssignmentCount(); const uint8_t getAssignmentCount();
private: private:
const byteAssign_t byteAssignment[22] = { const byteAssign_t byteAssignment[23] = {
{ FLD_UDC, UNIT_V, CH1, 2, 2, 10 }, { FLD_UDC, UNIT_V, CH1, 2, 2, 10 },
{ FLD_IDC, UNIT_A, CH1, 4, 2, 100 }, { FLD_IDC, UNIT_A, CH1, 4, 2, 100 },
{ FLD_PDC, UNIT_W, CH1, 6, 2, 10 }, { FLD_PDC, UNIT_W, CH1, 6, 2, 10 },
@ -29,6 +29,7 @@ private:
{ FLD_UAC, UNIT_V, CH0, 26, 2, 10 }, { FLD_UAC, UNIT_V, CH0, 26, 2, 10 },
{ FLD_IAC, UNIT_A, CH0, 34, 2, 100 }, { FLD_IAC, UNIT_A, CH0, 34, 2, 100 },
{ FLD_PAC, UNIT_W, CH0, 30, 2, 10 }, { FLD_PAC, UNIT_W, CH0, 30, 2, 10 },
{ FLD_PRA, UNIT_VA, CH0, 32, 2, 10 },
{ FLD_F, UNIT_HZ, CH0, 28, 2, 100 }, { FLD_F, UNIT_HZ, CH0, 28, 2, 100 },
{ FLD_T, UNIT_C, CH0, 38, 2, 10 }, { FLD_T, UNIT_C, CH0, 38, 2, 10 },
{ FLD_EVT_LOG, UNIT_CNT, CH0, 40, 2, 1 }, { FLD_EVT_LOG, UNIT_CNT, CH0, 40, 2, 1 },

View File

@ -11,7 +11,7 @@ public:
const uint8_t getAssignmentCount(); const uint8_t getAssignmentCount();
private: private:
const byteAssign_t byteAssignment[35] = { const byteAssign_t byteAssignment[36] = {
{ FLD_UDC, UNIT_V, CH1, 2, 2, 10 }, { FLD_UDC, UNIT_V, CH1, 2, 2, 10 },
{ FLD_IDC, UNIT_A, CH1, 4, 2, 100 }, { FLD_IDC, UNIT_A, CH1, 4, 2, 100 },
{ FLD_PDC, UNIT_W, CH1, 8, 2, 10 }, { FLD_PDC, UNIT_W, CH1, 8, 2, 10 },
@ -43,6 +43,7 @@ private:
{ FLD_UAC, UNIT_V, CH0, 46, 2, 10 }, { FLD_UAC, UNIT_V, CH0, 46, 2, 10 },
{ FLD_IAC, UNIT_A, CH0, 54, 2, 100 }, { FLD_IAC, UNIT_A, CH0, 54, 2, 100 },
{ FLD_PAC, UNIT_W, CH0, 50, 2, 10 }, { FLD_PAC, UNIT_W, CH0, 50, 2, 10 },
{ FLD_PRA, UNIT_VA, CH0, 52, 2, 10 },
{ FLD_F, UNIT_HZ, CH0, 48, 2, 100 }, { FLD_F, UNIT_HZ, CH0, 48, 2, 100 },
{ FLD_PCT, UNIT_PCT, CH0, 56, 2, 10 }, { FLD_PCT, UNIT_PCT, CH0, 56, 2, 10 },
{ FLD_T, UNIT_C, CH0, 58, 2, 10 }, { FLD_T, UNIT_C, CH0, 58, 2, 10 },

View File

@ -15,9 +15,10 @@ enum {
UNIT_HZ, UNIT_HZ,
UNIT_C, UNIT_C,
UNIT_PCT, UNIT_PCT,
UNIT_VA,
UNIT_CNT UNIT_CNT
}; };
const char* const units[] = { "V", "A", "W", "Wh", "kWh", "Hz", "°C", "%", "" }; const char* const units[] = { "V", "A", "W", "Wh", "kWh", "Hz", "°C", "%", "var", "" };
// field types // field types
enum { enum {
@ -34,10 +35,11 @@ enum {
FLD_PCT, FLD_PCT,
FLD_EFF, FLD_EFF,
FLD_IRR, FLD_IRR,
FLD_PRA,
FLD_EVT_LOG FLD_EVT_LOG
}; };
const char* const fields[] = { "Voltage", "Current", "Power", "YieldDay", "YieldTotal", const char* const fields[] = { "Voltage", "Current", "Power", "YieldDay", "YieldTotal",
"Voltage", "Current", "Power", "Frequency", "Temperature", "PowerFactor", "Efficiency", "Irradiation", "EventLogCount" }; "Voltage", "Current", "Power", "Frequency", "Temperature", "PowerFactor", "Efficiency", "Irradiation", "ReactivePower", "EventLogCount" };
// indices to calculation functions, defined in hmInverter.h // indices to calculation functions, defined in hmInverter.h
enum { enum {

View File

@ -100,6 +100,7 @@ void WebApiWsLiveClass::generateJsonResponse(JsonVariant& root)
addField(root, i, inv, c, FLD_F); addField(root, i, inv, c, FLD_F);
addField(root, i, inv, c, FLD_T); addField(root, i, inv, c, FLD_T);
addField(root, i, inv, c, FLD_PCT); addField(root, i, inv, c, FLD_PCT);
addField(root, i, inv, c, FLD_PRA);
addField(root, i, inv, c, FLD_EFF); addField(root, i, inv, c, FLD_EFF);
addField(root, i, inv, c, FLD_IRR); addField(root, i, inv, c, FLD_IRR);
} }