]> mj.ucw.cz Git - home-hw.git/blobdiff - prometheus/burrow-prometheus.c
test-blink: Switch back to DFU boot-loader
[home-hw.git] / prometheus / burrow-prometheus.c
index ced7e4c06b2e99f8741cc1c063471a08571a54d1..0e760e737728bdf714d14903461499cb0918a53d 100644 (file)
@@ -127,6 +127,18 @@ static const struct attr attr_table[] = {
                .type = "gauge",
                .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",
                .help = "Heat exchanger bypass (0-1)",
@@ -137,7 +149,67 @@ static const struct attr attr_table[] = {
                .metric = "air_fan_pwm",
                .help = "Heat exchanger fan PWM (0-255)",
                .type = "gauge",
-               .topic = "burrow/air/fan-pwm"
+               .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",
        },
 };
 
@@ -300,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));
@@ -311,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');
+               }
        }
 }
 
@@ -366,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"),