From 072302d82141642d9197842de3f95067479bb54e Mon Sep 17 00:00:00 2001 From: twollweber Date: Wed, 28 Apr 2021 18:58:19 +0200 Subject: [PATCH 1/2] Fix for issue #11930 --- tasmota/xsns_75_prometheus.ino | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/tasmota/xsns_75_prometheus.ino b/tasmota/xsns_75_prometheus.ino index 0b0251229..47f1d4f8d 100644 --- a/tasmota/xsns_75_prometheus.ino +++ b/tasmota/xsns_75_prometheus.ino @@ -50,6 +50,9 @@ const char *UnitfromType(const char *type) // find unit for measurment type if (strcmp(type, "humidity") == 0) { return "percentage"; } + if (strcmp(type, "id") == 0) { + return "untyped"; + } return ""; } @@ -148,8 +151,13 @@ void HandleMetrics(void) { String type = FormatMetricName(key2.getStr()); const char *unit = UnitfromType(type.c_str()); if (strcmp(type.c_str(), "totalstarttime") != 0) { // this metric causes prometheus of fail - WSContentSend_P(PSTR("# TYPE tasmota_sensors_%s_%s gauge\ntasmota_sensors_%s_%s{sensor=\"%s\"} %s\n"), - type.c_str(), unit, type.c_str(), unit, sensor.c_str(), value); + if (strcmp(type.c_str(), "id") == 0) { // this metric is NaN, so convert it to a label, see Wi-Fi metrics above + WSContentSend_P(PSTR("# TYPE tasmota_sensors_%s_%s gauge\ntasmota_sensors_%s_%s{sensor=\"%s\",id=\"%s\"} 1\n"), + type.c_str(), unit, type.c_str(), unit, sensor.c_str(), value); + } else { + WSContentSend_P(PSTR("# TYPE tasmota_sensors_%s_%s gauge\ntasmota_sensors_%s_%s{sensor=\"%s\"} %s\n"), + type.c_str(), unit, type.c_str(), unit, sensor.c_str(), value); + } } } } From 0558430f89ea9de5214eace982b48cd6b3b4174b Mon Sep 17 00:00:00 2001 From: twollweber Date: Wed, 28 Apr 2021 22:39:00 +0200 Subject: [PATCH 2/2] Fix #11933 Fix Align tasmotaglobal metrics for Prometheus to other metrics' syntax --- tasmota/xsns_75_prometheus.ino | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tasmota/xsns_75_prometheus.ino b/tasmota/xsns_75_prometheus.ino index 47f1d4f8d..edfd59484 100644 --- a/tasmota/xsns_75_prometheus.ino +++ b/tasmota/xsns_75_prometheus.ino @@ -89,15 +89,15 @@ void HandleMetrics(void) { if (!isnan(TasmotaGlobal.temperature_celsius)) { dtostrfd(TasmotaGlobal.temperature_celsius, Settings.flag2.temperature_resolution, parameter); - WSContentSend_P(PSTR("# TYPE tasmotaglobal_temperature_celsius gauge\ntasmotaglobal_temperature_celsius %s\n"), parameter); + WSContentSend_P(PSTR("# TYPE tasmota_global_temperature_celsius gauge\ntasmota_global_temperature_celsius %s\n"), parameter); } if (TasmotaGlobal.humidity != 0) { dtostrfd(TasmotaGlobal.humidity, Settings.flag2.humidity_resolution, parameter); - WSContentSend_P(PSTR("# TYPE tasmotaglobal_humidity gauge\ntasmotaglobal_humidity %s\n"), parameter); + WSContentSend_P(PSTR("# TYPE tasmota_global_humidity gauge\ntasmota_global_humidity_percentage %s\n"), parameter); } if (TasmotaGlobal.pressure_hpa != 0) { dtostrfd(TasmotaGlobal.pressure_hpa, Settings.flag2.pressure_resolution, parameter); - WSContentSend_P(PSTR("# TYPE tasmotaglobal_pressure_hpa gauge\ntasmotaglobal_pressure_hpa %s\n"), parameter); + WSContentSend_P(PSTR("# TYPE tasmota_global_pressure_hpa gauge\ntasmota_global_pressure_hpa %s\n"), parameter); } #ifdef USE_ENERGY_SENSOR