Normalize power/energy output formatting
This commit is contained in:
@@ -87,6 +87,17 @@ static void format_float_2(char *buf, size_t buf_len, float value) {
|
||||
snprintf(buf, buf_len, "%.2f", round2(value));
|
||||
}
|
||||
|
||||
static void set_int_or_null(JsonDocument &doc, const char *key, float value) {
|
||||
if (!key || key[0] == '\0') {
|
||||
return;
|
||||
}
|
||||
if (isnan(value)) {
|
||||
doc[key] = nullptr;
|
||||
return;
|
||||
}
|
||||
doc[key] = round_to_i32(value);
|
||||
}
|
||||
|
||||
bool meterDataToJson(const MeterData &data, String &out_json) {
|
||||
StaticJsonDocument<256> doc;
|
||||
doc["id"] = short_id_from_device_id(data.device_id);
|
||||
@@ -94,14 +105,10 @@ bool meterDataToJson(const MeterData &data, String &out_json) {
|
||||
char buf[16];
|
||||
format_float_2(buf, sizeof(buf), data.energy_total_kwh);
|
||||
doc["e_kwh"] = serialized(buf);
|
||||
format_float_2(buf, sizeof(buf), data.total_power_w);
|
||||
doc["p_w"] = serialized(buf);
|
||||
format_float_2(buf, sizeof(buf), data.phase_power_w[0]);
|
||||
doc["p1_w"] = serialized(buf);
|
||||
format_float_2(buf, sizeof(buf), data.phase_power_w[1]);
|
||||
doc["p2_w"] = serialized(buf);
|
||||
format_float_2(buf, sizeof(buf), data.phase_power_w[2]);
|
||||
doc["p3_w"] = serialized(buf);
|
||||
set_int_or_null(doc, "p_w", data.total_power_w);
|
||||
set_int_or_null(doc, "p1_w", data.phase_power_w[0]);
|
||||
set_int_or_null(doc, "p2_w", data.phase_power_w[1]);
|
||||
set_int_or_null(doc, "p3_w", data.phase_power_w[2]);
|
||||
format_float_2(buf, sizeof(buf), data.battery_voltage_v);
|
||||
doc["bat_v"] = serialized(buf);
|
||||
doc["bat_pct"] = data.battery_percent;
|
||||
|
||||
Reference in New Issue
Block a user