diff --git a/include/WebApi_prometheus.h b/include/WebApi_prometheus.h index 3323ea1..d10cb66 100644 --- a/include/WebApi_prometheus.h +++ b/include/WebApi_prometheus.h @@ -1,7 +1,7 @@ #pragma once -#include #include "Hoymiles.h" +#include class WebApiPrometheusClass { public: @@ -11,7 +11,7 @@ public: private: void onPrometheusMetrics(AsyncWebServerRequest* request); - void addField(AsyncResponseStream *stream, const char* serial, uint8_t idx, std::shared_ptr inv, uint8_t channel, uint8_t fieldId, const char* channelName = NULL); + void addField(AsyncResponseStream* stream, const char* serial, uint8_t idx, std::shared_ptr inv, uint8_t channel, uint8_t fieldId, const char* channelName = NULL); AsyncWebServer* _server; }; \ No newline at end of file diff --git a/src/WebApi_prometheus.cpp b/src/WebApi_prometheus.cpp index f99c984..a335d6e 100644 --- a/src/WebApi_prometheus.cpp +++ b/src/WebApi_prometheus.cpp @@ -1,8 +1,8 @@ #include "WebApi_prometheus.h" #include "Configuration.h" -#include "NetworkSettings.h" #include "Hoymiles.h" +#include "NetworkSettings.h" void WebApiPrometheusClass::init(AsyncWebServer* server) { @@ -23,28 +23,28 @@ void WebApiPrometheusClass::onPrometheusMetrics(AsyncWebServerRequest* request) stream->print(F("# HELP opendtu_build Build info\n")); stream->print(F("# TYPE opendtu_build gauge\n")); - stream->printf("opendtu_build{name=\"%s\",id=\"%s\",version=\"%d.%d.%d\"} 1\n", - NetworkSettings.getHostname().c_str(), AUTO_GIT_HASH, CONFIG_VERSION >> 24 & 0xff, CONFIG_VERSION >> 16 & 0xff, CONFIG_VERSION >> 8 & 0xff); + stream->printf("opendtu_build{name=\"%s\",id=\"%s\",version=\"%d.%d.%d\"} 1\n", + NetworkSettings.getHostname().c_str(), AUTO_GIT_HASH, CONFIG_VERSION >> 24 & 0xff, CONFIG_VERSION >> 16 & 0xff, CONFIG_VERSION >> 8 & 0xff); stream->print(F("# HELP opendtu_platform Platform info\n")); stream->print(F("# TYPE opendtu_platform gauge\n")); - stream->printf("opendtu_platform{arch=\"%s\",mac=\"%s\"} 1\n", ESP.getChipModel(), WiFi.macAddress().c_str()); + stream->printf("opendtu_platform{arch=\"%s\",mac=\"%s\"} 1\n", ESP.getChipModel(), WiFi.macAddress().c_str()); stream->print(F("# HELP opendtu_uptime Uptime in seconds\n")); stream->print(F("# TYPE opendtu_uptime counter\n")); - stream->printf("opendtu_uptime %lld\n", esp_timer_get_time() / 1000000); + stream->printf("opendtu_uptime %lld\n", esp_timer_get_time() / 1000000); stream->print(F("# HELP opendtu_heap_size System memory size\n")); stream->print(F("# TYPE opendtu_heap_size gauge\n")); - stream->printf("opendtu_heap_size %zu\n", ESP.getHeapSize()); + stream->printf("opendtu_heap_size %zu\n", ESP.getHeapSize()); stream->print(F("# HELP opendtu_free_heap_size System free memory\n")); stream->print(F("# TYPE opendtu_free_heap_size gauge\n")); - stream->printf("opendtu_free_heap_size %zu\n", ESP.getFreeHeap()); + stream->printf("opendtu_free_heap_size %zu\n", ESP.getFreeHeap()); stream->print(F("# HELP wifi_rssi WiFi RSSI\n")); stream->print(F("# TYPE wifi_rssi gauge\n")); - stream->printf("wifi_rssi %d\n", WiFi.RSSI()); + stream->printf("wifi_rssi %d\n", WiFi.RSSI()); for (uint8_t i = 0; i < Hoymiles.getNumInverters(); i++) { auto inv = Hoymiles.getInverterByPos(i); @@ -54,12 +54,12 @@ void WebApiPrometheusClass::onPrometheusMetrics(AsyncWebServerRequest* request) ((uint32_t)((inv->serial() >> 32) & 0xFFFFFFFF)), ((uint32_t)(inv->serial() & 0xFFFFFFFF))); const char* name = inv->name(); - if(i==0) { - stream->print(F("# HELP opendtu_last_update last update from inverter in s\n")); - stream->print(F("# TYPE opendtu_last_update gauge\n")); + if (i == 0) { + stream->print(F("# HELP opendtu_last_update last update from inverter in s\n")); + stream->print(F("# TYPE opendtu_last_update gauge\n")); } stream->printf("opendtu_last_update{serial=\"%s\",unit=\"%d\",name=\"%s\"} %d\n", - serial, i, name, inv->Statistics()->getLastUpdate() / 1000); + serial, i, name, inv->Statistics()->getLastUpdate() / 1000); // Loop all channels for (uint8_t c = 0; c <= inv->Statistics()->getChannelCount(); c++) { @@ -88,13 +88,13 @@ void WebApiPrometheusClass::onPrometheusMetrics(AsyncWebServerRequest* request) request->send(stream); } -void WebApiPrometheusClass::addField(AsyncResponseStream *stream, const char* serial, uint8_t idx, std::shared_ptr inv, uint8_t channel, uint8_t fieldId, const char* channelName) +void WebApiPrometheusClass::addField(AsyncResponseStream* stream, const char* serial, uint8_t idx, std::shared_ptr inv, uint8_t channel, uint8_t fieldId, const char* channelName) { if (inv->Statistics()->hasChannelFieldValue(channel, fieldId)) { - const char* chanName = (channelName == NULL) ? inv->Statistics()->getChannelFieldName(channel, fieldId) : channelName; - if(idx==0 && channel==0) { - stream->printf("# HELP opendtu_%s in %s\n", chanName, inv->Statistics()->getChannelFieldUnit(channel, fieldId)); - stream->printf("# TYPE opendtu_%s gauge\n", chanName); + const char* chanName = (channelName == NULL) ? inv->Statistics()->getChannelFieldName(channel, fieldId) : channelName; + if (idx == 0 && channel == 0) { + stream->printf("# HELP opendtu_%s in %s\n", chanName, inv->Statistics()->getChannelFieldUnit(channel, fieldId)); + stream->printf("# TYPE opendtu_%s gauge\n", chanName); } stream->printf("opendtu_%s{serial=\"%s\",unit=\"%d\",name=\"%s\",channel=\"%d\"} %f\n", chanName, serial, idx, inv->name(), channel, inv->Statistics()->getChannelFieldValue(channel, fieldId)); }