X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;f=prometheus%2Fburrow-prometheus.c;h=0e760e737728bdf714d14903461499cb0918a53d;hb=fef910220f1ee04d6a572996bcc11ce7715b04d5;hp=51de6ba7786691f3500e200a85081626e1604aef;hpb=108dc28424556d2be80c4331eccd289f6b70e4f2;p=home-hw.git diff --git a/prometheus/burrow-prometheus.c b/prometheus/burrow-prometheus.c index 51de6ba..0e760e7 100644 --- a/prometheus/burrow-prometheus.c +++ b/prometheus/burrow-prometheus.c @@ -1,7 +1,7 @@ /* * A gateway between MQTT and Prometheus * - * (c) 2018 Martin Mares + * (c) 2018--2019 Martin Mares */ #include @@ -122,10 +122,22 @@ static const struct attr attr_table[] = { .topic = "burrow/air/outside-exhaust", }, { - .metric = "air_chilled", - .help = "Temperature of chilled air [degC]", + .metric = "air_mixed", + .help = "Temperature of mixed air [degC]", .type = "gauge", - .topic = "burrow/air/chilled", + .topic = "burrow/air/mixed", + }, + { + .metric = "air_inside_intake_avg", + .help = "Average temperature of air intake from inside [degC]", + .type = "gauge", + .topic = "burrow/avg/air/inside-intake", + }, + { + .metric = "air_outside_intake_avg", + .help = "Average temperature of air intake from outside [degC]", + .type = "gauge", + .topic = "burrow/avg/air/outside-intake", }, { .metric = "air_bypass", @@ -133,6 +145,72 @@ static const struct attr attr_table[] = { .type = "gauge", .topic = "burrow/air/bypass" }, + { + .metric = "air_fan_pwm", + .help = "Heat exchanger fan PWM (0-255)", + .type = "gauge", + .topic = "burrow/air/exchanger-fan" + }, + { + // Common heading for all voltages + .metric = "pm_voltage", + .help = "Voltage between phases and neutral [V]", + .type = "gauge", + }, + { + .metric = "pm_voltage{phase=\"L1N\"}", + .topic = "burrow/power/voltage/l1n", + }, + { + .metric = "pm_voltage{phase=\"L2N\"}", + .topic = "burrow/power/voltage/l2n", + }, + { + .metric = "pm_voltage{phase=\"L3N\"}", + .topic = "burrow/power/voltage/l3n", + }, + { + // Common heading for all currents + .metric = "pm_current", + .help = "Current through phases [A]", + .type = "gauge", + }, + { + .metric = "pm_current{phase=\"L1\"}", + .topic = "burrow/power/current/l1", + }, + { + .metric = "pm_current{phase=\"L2\"}", + .topic = "burrow/power/current/l2", + }, + { + .metric = "pm_current{phase=\"L3\"}", + .topic = "burrow/power/current/l3", + }, + { + .metric = "pm_power", + .help = "Total power [W]", + .type = "gauge", + .topic = "burrow/power/power", + }, + { + .metric = "pm_energy", + .help = "Total energy [kWh]", + .type = "gauge", + .topic = "burrow/power/energy", + }, + { + .metric = "pm_reactive_power", + .help = "Total reactive power [VAr]", + .type = "gauge", + .topic = "burrow/power/reactive/power", + }, + { + .metric = "pm_reactive_energy", + .help = "Total reactive energy [kVArh]", + .type = "gauge", + .topic = "burrow/power/reactive/energy", + }, }; static char *attr_values[ARRAY_SIZE(attr_table)]; @@ -294,6 +372,11 @@ static void http_answer(struct fastbuf *fb) snprintf(val, sizeof(val), "%s", attr_values[i] ? : ""); pthread_mutex_unlock(&attr_mutex); + if (a->help) + bprintf(fb, "# HELP %s %s\n", a->metric, a->help); + if (a->type) + bprintf(fb, "# TYPE %s %s\n", a->metric, a->type); + if (!val[0]) continue; int fields = str_wordsplit(val, w, ARRAY_SIZE(w)); @@ -305,17 +388,15 @@ static void http_answer(struct fastbuf *fb) continue; } - if (a->help) - bprintf(fb, "# HELP %s %s\n", a->metric, a->help); - if (a->type) - bprintf(fb, "# TYPE %s %s\n", a->metric, a->type); - bprintf(fb, "%s %s", a->metric, val); + if (a->topic) { + bprintf(fb, "%s %s", a->metric, val); #if 0 - // Prometheus does not like our timestamps -- why? - if (fields >= 2) - bprintf(fb, " %s", w[1]); + // Prometheus does not like our timestamps -- why? + if (fields >= 2) + bprintf(fb, " %s", w[1]); #endif - bputc(fb, '\n'); + bputc(fb, '\n'); + } } } @@ -360,7 +441,7 @@ static int use_debug; static struct opt_section options = { OPT_ITEMS { - OPT_HELP("A daemon for controlling the solid state relay module via MQTT"), + OPT_HELP("A daemon for transferring MQTT data to Prometheus"), OPT_HELP(""), OPT_HELP("Options:"), OPT_BOOL('d', "debug", use_debug, 0, "\tLog debugging messages"),