diff --git a/tasmota/xsns_75_prometheus.ino b/tasmota/xsns_75_prometheus.ino index 0b0251229..edfd59484 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 ""; } @@ -86,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 @@ -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); + } } } }