From 6e1e758fd2de011a2b4fcc02446d28659f0faf17 Mon Sep 17 00:00:00 2001 From: stefan123t Date: Mon, 3 Oct 2022 22:45:00 +0200 Subject: [PATCH] update PRA->Q & PFC->PF Fields in hmDefines.h and webApi.cpp --- tools/esp8266/hmDefines.h | 24 +++++++++++++----------- tools/esp8266/webApi.cpp | 19 ++++++++++++++++--- 2 files changed, 29 insertions(+), 14 deletions(-) diff --git a/tools/esp8266/hmDefines.h b/tools/esp8266/hmDefines.h index eb6634c4..9f47d0d9 100644 --- a/tools/esp8266/hmDefines.h +++ b/tools/esp8266/hmDefines.h @@ -17,18 +17,18 @@ union serial_u { // units -enum {UNIT_V = 0, UNIT_A, UNIT_W, UNIT_WH, UNIT_KWH, UNIT_HZ, UNIT_C, UNIT_PCT, UNIT_VA, UNIT_NONE}; -const char* const units[] = {"V", "A", "W", "Wh", "kWh", "Hz", "°C", "%","VAr",""}; +enum {UNIT_V = 0, UNIT_A, UNIT_W, UNIT_WH, UNIT_KWH, UNIT_HZ, UNIT_C, UNIT_PCT, UNIT_VAR, UNIT_NONE}; +const char* const units[] = {"V", "A", "W", "Wh", "kWh", "Hz", "°C", "%", "var", ""}; // field types enum {FLD_UDC = 0, FLD_IDC, FLD_PDC, FLD_YD, FLD_YW, FLD_YT, - FLD_UAC, FLD_IAC, FLD_PAC, FLD_F, FLD_T, FLD_PFC, FLD_EFF, - FLD_IRR, FLD_PRA,FLD_ALARM_MES_ID,FLD_FW_VERSION,FLD_FW_BUILD_YEAR, + FLD_UAC, FLD_IAC, FLD_PAC, FLD_F, FLD_T, FLD_PF, FLD_EFF, + FLD_IRR, FLD_Q,FLD_ALARM_MES_ID,FLD_FW_VERSION,FLD_FW_BUILD_YEAR, FLD_FW_BUILD_MONTH_DAY,FLD_HW_ID,FLD_ACT_PWR_LIMIT,FLD_LAST_ALARM_CODE}; const char* const fields[] = {"U_DC", "I_DC", "P_DC", "YieldDay", "YieldWeek", "YieldTotal", - "U_AC", "I_AC", "P_AC", "Freq", "Temp", "PFC", "Efficiency", "Irradiation","P_ACr", + "U_AC", "I_AC", "P_AC", "F_AC", "Temp", "PF_AC", "Efficiency", "Irradiation","Q_AC", "ALARM_MES_ID","FWVersion","FWBuildYear","FWBuildMonthDay","HWPartId","PowerLimit","LastAlarmCode"}; const char* const notAvail = "n/a"; @@ -54,7 +54,7 @@ const byteAssign_fieldDeviceClass deviceFieldAssignment[] = { {FLD_PAC, DEVICE_CLS_PWR, STATE_CLS_MEASUREMENT}, {FLD_F, DEVICE_CLS_FREQ, STATE_CLS_NONE}, {FLD_T, DEVICE_CLS_TEMP, STATE_CLS_MEASUREMENT}, - {FLD_PFC, DEVICE_CLS_NONE, STATE_CLS_NONE}, + {FLD_PF, DEVICE_CLS_NONE, STATE_CLS_NONE}, {FLD_EFF, DEVICE_CLS_NONE, STATE_CLS_NONE}, {FLD_IRR, DEVICE_CLS_NONE, STATE_CLS_NONE} }; @@ -123,10 +123,11 @@ const byteAssign_t hm1chAssignment[] = { { FLD_UAC, UNIT_V, CH0, 14, 2, 10 }, { FLD_IAC, UNIT_A, CH0, 22, 2, 100 }, { FLD_PAC, UNIT_W, CH0, 18, 2, 10 }, - { FLD_PRA, UNIT_VA, CH0, 20, 2, 10 }, + { FLD_Q, UNIT_VAR, CH0, 20, 2, 10 }, { FLD_F, UNIT_HZ, CH0, 16, 2, 100 }, + { FLD_PF, UNIT_NONE,CH0, 24, 2, 1000 }, { FLD_T, UNIT_C, CH0, 26, 2, 10 }, - { FLD_ALARM_MES_ID, UNIT_NONE, CH0, 24, 2, 1 }, + { FLD_ALARM_MES_ID, UNIT_NONE, CH0, 28, 2, 1 }, { FLD_YD, UNIT_WH, CH0, CALC_YD_CH0, 0, CMD_CALC }, { FLD_YT, UNIT_KWH, CH0, CALC_YT_CH0, 0, CMD_CALC }, { FLD_PDC, UNIT_W, CH0, CALC_PDC_CH0, 0, CMD_CALC }, @@ -156,8 +157,9 @@ const byteAssign_t hm2chAssignment[] = { { FLD_UAC, UNIT_V, CH0, 26, 2, 10 }, { FLD_IAC, UNIT_A, CH0, 34, 2, 100 }, { FLD_PAC, UNIT_W, CH0, 30, 2, 10 }, - { FLD_PRA, UNIT_VA, CH0, 32, 2, 10 }, + { FLD_Q, UNIT_VAR, CH0, 32, 2, 10 }, { FLD_F, UNIT_HZ, CH0, 28, 2, 100 }, + { FLD_PF, UNIT_NONE,CH0, 36, 2, 1000 }, { FLD_T, UNIT_C, CH0, 38, 2, 10 }, { FLD_ALARM_MES_ID, UNIT_NONE, CH0, 40, 2, 1 }, { FLD_YD, UNIT_WH, CH0, CALC_YD_CH0, 0, CMD_CALC }, @@ -204,9 +206,9 @@ const byteAssign_t hm4chAssignment[] = { { FLD_UAC, UNIT_V, CH0, 46, 2, 10 }, { FLD_IAC, UNIT_A, CH0, 54, 2, 100 }, { FLD_PAC, UNIT_W, CH0, 50, 2, 10 }, - { FLD_PRA, UNIT_VA, CH0, 52, 2, 10 }, + { FLD_Q, UNIT_VAR, CH0, 52, 2, 10 }, { FLD_F, UNIT_HZ, CH0, 48, 2, 100 }, - { FLD_PFC, UNIT_PCT, CH0, 56, 2, 10 }, + { FLD_PF, UNIT_NONE,CH0, 56, 2, 1000 }, { FLD_T, UNIT_C, CH0, 58, 2, 10 }, { FLD_ALARM_MES_ID, UNIT_NONE, CH0, 60, 2, 1 }, { FLD_YD, UNIT_WH, CH0, CALC_YD_CH0, 0, CMD_CALC }, diff --git a/tools/esp8266/webApi.cpp b/tools/esp8266/webApi.cpp index 1a68aeb9..231f5a5a 100644 --- a/tools/esp8266/webApi.cpp +++ b/tools/esp8266/webApi.cpp @@ -261,7 +261,7 @@ void webApi::getLive(JsonObject obj) { JsonArray invArr = obj.createNestedArray(F("inverter")); obj["refresh_interval"] = SEND_INTERVAL; - uint8_t list[] = {FLD_UAC, FLD_IAC, FLD_PAC, FLD_F, FLD_PFC, FLD_T, FLD_YT, FLD_YD, FLD_PDC, FLD_EFF, FLD_PRA, FLD_ALARM_MES_ID}; + uint8_t list[] = {FLD_UAC, FLD_IAC, FLD_PAC, FLD_F, FLD_PF, FLD_T, FLD_YT, FLD_YD, FLD_PDC, FLD_EFF, FLD_Q, FLD_ALARM_MES_ID}; Inverter<> *iv; uint8_t pos; @@ -280,7 +280,7 @@ void webApi::getLive(JsonObject obj) { JsonArray ch = obj2.createNestedArray("ch"); JsonArray ch0 = ch.createNestedArray(); obj2[F("ch_names")][0] = "AC"; - for (uint8_t fld = 0; fld < 11; fld++) { + for (uint8_t fld = 0; fld < sizeof(list); fld++) { pos = (iv->getPosByChFld(CH0, list[fld], rec)); ch0[fld] = (0xff != pos) ? round3(iv->getValue(pos, rec)) : 0.0; obj[F("ch0_fld_units")][fld] = (0xff != pos) ? String(iv->getUnit(pos, rec)) : notAvail; @@ -336,8 +336,12 @@ void webApi::getRecord(JsonObject obj, record_t<> *rec) { //----------------------------------------------------------------------------- bool webApi::setCtrl(DynamicJsonDocument jsonIn, JsonObject jsonOut) { uint8_t cmd = jsonIn[F("cmd")]; + + // Todo: num is the inverter number 0-3. For better display in DPRINTLN + uint8_t num = jsonIn[F("inverter")]; + if(TX_REQ_DEVCONTROL == jsonIn[F("tx_request")]) { - DPRINTLN(DBG_INFO, F("devcontrol, cmd: 0x") + String(cmd, HEX)); + DPRINTLN(DBG_INFO, F("devcontrol [") + String(num) + F("], cmd: 0x") + String(cmd, HEX)); if(ActivePowerContr == cmd) { Inverter<> *iv = getInverter(jsonIn, jsonOut); if(NULL != iv) { @@ -364,6 +368,15 @@ bool webApi::setCtrl(DynamicJsonDocument jsonIn, JsonObject jsonOut) { else return false; } + else if(CleanState_LockAndAlarm == cmd) { + Inverter<> *iv = getInverter(jsonIn, jsonOut); + if(NULL != iv) { + iv->devControlCmd = CleanState_LockAndAlarm; + iv->devControlRequest = true; + } + else + return false; + } else { jsonOut["error"] = "unknown 'cmd' = " + String(cmd); return false;