Normalize power/energy output formatting
This commit is contained in:
@@ -9,6 +9,8 @@
|
||||
#include <WiFi.h>
|
||||
#include <time.h>
|
||||
#include <new>
|
||||
#include <limits.h>
|
||||
#include <math.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
static WebServer server(80);
|
||||
@@ -55,6 +57,20 @@ static HistoryJob g_history = {};
|
||||
static constexpr size_t SD_LIST_MAX_FILES = 200;
|
||||
static constexpr size_t SD_DOWNLOAD_MAX_PATH = 160;
|
||||
|
||||
static int32_t round_power_w(float value) {
|
||||
if (isnan(value)) {
|
||||
return 0;
|
||||
}
|
||||
long rounded = lroundf(value);
|
||||
if (rounded > INT32_MAX) {
|
||||
return INT32_MAX;
|
||||
}
|
||||
if (rounded < INT32_MIN) {
|
||||
return INT32_MIN;
|
||||
}
|
||||
return static_cast<int32_t>(rounded);
|
||||
}
|
||||
|
||||
static bool auth_required() {
|
||||
return g_is_ap ? WEB_AUTH_REQUIRE_AP : WEB_AUTH_REQUIRE_STA;
|
||||
}
|
||||
@@ -360,10 +376,11 @@ static String render_sender_block(const SenderStatus &status) {
|
||||
if (!status.has_data) {
|
||||
s += "No data";
|
||||
} else {
|
||||
s += "Energy: " + String(status.last_data.energy_total_kwh, 3) + " kWh<br>";
|
||||
s += "Power: " + String(status.last_data.total_power_w, 1) + " W<br>";
|
||||
s += "P1/P2/P3: " + String(status.last_data.phase_power_w[0], 1) + " / " + String(status.last_data.phase_power_w[1], 1) +
|
||||
" / " + String(status.last_data.phase_power_w[2], 1) + " W<br>";
|
||||
s += "Energy: " + String(status.last_data.energy_total_kwh, 2) + " kWh<br>";
|
||||
s += "Power: " + String(round_power_w(status.last_data.total_power_w)) + " W<br>";
|
||||
s += "P1/P2/P3: " + String(round_power_w(status.last_data.phase_power_w[0])) + " / " +
|
||||
String(round_power_w(status.last_data.phase_power_w[1])) + " / " +
|
||||
String(round_power_w(status.last_data.phase_power_w[2])) + " W<br>";
|
||||
s += "Battery: " + String(status.last_data.battery_percent) + "% (" + String(status.last_data.battery_voltage_v, 2) + " V)";
|
||||
}
|
||||
s += "</div>";
|
||||
@@ -597,11 +614,11 @@ static void handle_sender() {
|
||||
html += "<tr>";
|
||||
html += "<td>" + String(r) + "</td>";
|
||||
html += "<td>" + String(d.ts_utc) + "</td>";
|
||||
html += "<td>" + String(d.energy_total_kwh, 3) + "</td>";
|
||||
html += "<td>" + String(d.total_power_w, 1) + "</td>";
|
||||
html += "<td>" + String(d.phase_power_w[0], 1) + "</td>";
|
||||
html += "<td>" + String(d.phase_power_w[1], 1) + "</td>";
|
||||
html += "<td>" + String(d.phase_power_w[2], 1) + "</td>";
|
||||
html += "<td>" + String(d.energy_total_kwh, 2) + "</td>";
|
||||
html += "<td>" + String(round_power_w(d.total_power_w)) + "</td>";
|
||||
html += "<td>" + String(round_power_w(d.phase_power_w[0])) + "</td>";
|
||||
html += "<td>" + String(round_power_w(d.phase_power_w[1])) + "</td>";
|
||||
html += "<td>" + String(round_power_w(d.phase_power_w[2])) + "</td>";
|
||||
html += "<td>" + String(d.battery_voltage_v, 2) + "</td>";
|
||||
html += "<td>" + String(d.battery_percent) + "</td>";
|
||||
html += "<td>" + String(d.link_rssi_dbm) + "</td>";
|
||||
@@ -754,7 +771,8 @@ static void handle_history_data() {
|
||||
if (bin.count == 0) {
|
||||
server.sendContent(String("[") + bin.ts + ",null]");
|
||||
} else {
|
||||
server.sendContent(String("[") + bin.ts + "," + String(value, 2) + "]");
|
||||
int32_t rounded = round_power_w(value);
|
||||
server.sendContent(String("[") + bin.ts + "," + String(rounded) + "]");
|
||||
}
|
||||
}
|
||||
server.sendContent("]}");
|
||||
|
||||
Reference in New Issue
Block a user