mirror of
https://github.com/arendst/Tasmota.git
synced 2025-07-23 18:56:38 +00:00
Add NRG modbus features
- User JSON name needs to be different from embedded register names - If no user GUI name is given it will only show in JSON
This commit is contained in:
parent
35b4bfcb3f
commit
31a53148c6
@ -103,9 +103,9 @@
|
||||
* 3 - multiply by 1000
|
||||
* 4 - multiply by 10000
|
||||
* M - [LEGACY - replaced by "F"] Divide register by 1 to 10000 - optional. default = 0 (no action)
|
||||
* J - JSON register name (preferrably without spaces like "PhaseAngle")
|
||||
* G - GUI register name
|
||||
* U - GUI unit name
|
||||
* J - JSON register name (preferrably without spaces like "PhaseAngle") - mandatory. It needs to be different from the Tasmota default embedded register names
|
||||
* G - GUI register name - optional. If not defined the register will not be shown in the GUI
|
||||
* U - GUI unit name - optional. default is none
|
||||
* D - Number of decimals for floating point presentation (0 to 20) or a code correspondig to Tasmota resolution command settings:
|
||||
* 21 - VoltRes (V)
|
||||
* 22 - AmpRes (A)
|
||||
@ -539,20 +539,17 @@ bool EnergyModbusReadUserRegisters(JsonParserObject user_add_value, uint32_t add
|
||||
val = user_add_value[PSTR("J")]; // JSON value name
|
||||
if (val) {
|
||||
NrgMbsUser[add_index].json_name = SetStr(val.getStr());
|
||||
char json_name[32];
|
||||
if (GetCommandCode(json_name, sizeof(json_name), NrgMbsUser[add_index].json_name, kEnergyModbusValues) > -1) {
|
||||
return false; // Duplicate JSON name
|
||||
}
|
||||
} else {
|
||||
return false;
|
||||
return false; // No mandatory JSON name
|
||||
}
|
||||
val = user_add_value[PSTR("G")]; // GUI value name
|
||||
if (val) {
|
||||
NrgMbsUser[add_index].gui_name = SetStr(val.getStr());
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
NrgMbsUser[add_index].gui_unit = EmptyStr;
|
||||
NrgMbsUser[add_index].gui_name = (val) ? SetStr(val.getStr()) : EmptyStr;
|
||||
val = user_add_value[PSTR("U")]; // GUI value Unit
|
||||
if (val) {
|
||||
NrgMbsUser[add_index].gui_unit = SetStr(val.getStr());
|
||||
}
|
||||
NrgMbsUser[add_index].gui_unit = (val) ? SetStr(val.getStr()) : EmptyStr;
|
||||
NrgMbsUser[add_index].resolution = ENERGY_MODBUS_DECIMALS;
|
||||
val = user_add_value[PSTR("D")]; // Decimal resolution
|
||||
if (val) {
|
||||
@ -916,10 +913,12 @@ void EnergyModbusShow(bool json) {
|
||||
ResponseAppend_P(PSTR(",\"%s\":%s"), NrgMbsUser[i].json_name, EnergyFormat(value_chr, values, resolution, single));
|
||||
#ifdef USE_WEBSERVER
|
||||
} else {
|
||||
if (strlen(NrgMbsUser[i].gui_name)) { // Skip empty GUI names
|
||||
WSContentSend_PD(PSTR("{s}%s{m}%s %s{e}"),
|
||||
NrgMbsUser[i].gui_name,
|
||||
WebEnergyFormat(value_chr, values, resolution, single),
|
||||
NrgMbsUser[i].gui_unit);
|
||||
}
|
||||
#endif // USE_WEBSERVER
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user