Skip to content

Commit

Permalink
增加 prometheus
Browse files Browse the repository at this point in the history
  • Loading branch information
fffonion committed Apr 2, 2022
1 parent e6694ba commit 55d6df3
Show file tree
Hide file tree
Showing 2 changed files with 76 additions and 0 deletions.
1 change: 1 addition & 0 deletions include/DC1.h
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ class DC1 : public Module
void httpDo(ESP8266WebServer *server);
void httpSetting(ESP8266WebServer *server);
void httpHa(ESP8266WebServer *server);
void httpMetrics(ESP8266WebServer *server);

void logoLed();

Expand Down
75 changes: 75 additions & 0 deletions src/DC1.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -255,6 +255,7 @@ void DC1::httpAdd(ESP8266WebServer *server)
server->on(F("/dc1_do"), std::bind(&DC1::httpDo, this, server));
server->on(F("/dc1_setting"), std::bind(&DC1::httpSetting, this, server));
server->on(F("/ha"), std::bind(&DC1::httpHa, this, server));
server->on(F("/metrics"), std::bind(&DC1::httpMetrics, this, server));
#ifdef USE_HOMEKIT
server->on(F("/homekit"), std::bind(&homekit_http, server));
#endif
Expand Down Expand Up @@ -486,6 +487,80 @@ void DC1::httpHa(ESP8266WebServer *server)
server->sendContent_P(tmpData);
}
}

void DC1::httpMetrics(ESP8266WebServer *server)
{
server->setContentLength(CONTENT_LENGTH_UNKNOWN);
server->send_P(200, PSTR("text/plain"), "");

float power_factor = cse7766->Energy.power_factor;
float apparent_power = cse7766->Energy.apparent_power;
if (isnan(power_factor))
{
power_factor = (cse7766->Energy.active_power && apparent_power) ? cse7766->Energy.active_power / apparent_power : 0;
if (power_factor > 1)
{
power_factor = 1;
}
}
char power_factor_chr[16];
Util::dtostrfd(power_factor, 2, power_factor_chr);

char voltage_chr[16];
char current_chr[16];
char active_power_chr[16];
Util::dtostrfd(cse7766->Energy.voltage, 0, voltage_chr);
Util::dtostrfd(cse7766->Energy.current, 3, current_chr);
Util::dtostrfd(cse7766->Energy.active_power, 0, active_power_chr);

char energy_total_chr[16];
Util::dtostrfd(cse7766->Energy.total, 3, energy_total_chr);

snprintf_P(tmpData, sizeof(tmpData),
PSTR("# HELP dc1_voltage DC1 Voltage\n"
"# TYPE dc1_voltage gauge\n"
"dc1_voltage %s\n"
"# HELP dc1_current DC1 Current\n"
"# TYPE dc1_current gauge\n"
"dc1_current %s\n"
"# HELP dc1_power DC1 Power\n"
"# TYPE dc1_power gauge\n"
"dc1_power %s\n"
"# HELP dc1_power_factor DC1 Power factor\n"
"# TYPE dc1_power_factor gauge\n"
"dc1_power_factor %s\n"
"# HELP dc1_energe DC1 Energe total\n"
"# TYPE dc1_energe counter\n"
"dc1_energe %s\n"
"# HELP dc1_uptime DC1 Uptime in ms\n"
"# TYPE dc1_uptime gauge\n"
"dc1_uptime %d\n"),
voltage_chr, current_chr,
active_power_chr, power_factor_chr,
energy_total_chr, millis());
server->sendContent_P(tmpData);

snprintf_P(tmpData, sizeof(tmpData),
PSTR("# HELP dc1_free_mem DC1 Free memory in KB\n"
"# TYPE dc1_free_mem gauge\n"
"dc1_free_mem %d\n"
"# HELP rssi DC1 RSSI\n"
"# TYPE rssi gauge\n"
"rssi %d\n"
"# HELP dc1_relay_state DC1 Relay state\n"
"# TYPE dc1_relay_state gauge\n"
),
ESP.getFreeHeap() / 1024, WiFi.RSSI() * 100);
server->sendContent_P(tmpData);

for (size_t ch = 0; ch < channels; ch++)
{
snprintf_P(tmpData, sizeof(tmpData),
PSTR("dc1_relay_state{relay=\"%d\"} %d\n"),
ch+1, bitRead(lastState, ch) ? 1 : 0);
server->sendContent_P(tmpData);
}
}
#pragma endregion

void DC1::logoLed()
Expand Down

0 comments on commit 55d6df3

Please sign in to comment.