From 3d88c827f9b7a870298061e950de2321d246ed96 Mon Sep 17 00:00:00 2001 From: Martin Mares Date: Sat, 14 Jan 2012 10:55:51 +0100 Subject: [PATCH] correct_point() can now rename sensors --- arexxd.c | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/arexxd.c b/arexxd.c index 8030c03..2a50c6e 100644 --- a/arexxd.c +++ b/arexxd.c @@ -112,10 +112,10 @@ static void arg_push(const char *fmt, ...) arg_pos += len; } -static void rrd_point(time_t t, int id, double val, char *unit) +static void rrd_point(time_t t, const char *name, double val, char *unit) { char rr_name[256]; - snprintf(rr_name, sizeof(rr_name), "sensor-%d.rrd", id); + snprintf(rr_name, sizeof(rr_name), "sensor-%s.rrd", name); struct stat st; if (stat(rr_name, &st) < 0 || !st.st_size) { @@ -156,20 +156,23 @@ static void rrd_point(time_t t, int id, double val, char *unit) #define TIME_OFFSET 946681200 // Timestamp of 2000-01-01 00:00:00 -static int data_point_counter; +static int data_point_counter; // Since last log message -static double correct_point(int id, double val) +static double correct_point(int id, double val, const char **name) { /* - * Manually calculated corrections for my sensors. + * Manually calculated corrections and renames for my sensors. * Replace with your formulae. */ switch (id) { case 10415: + *name = "ursarium"; return val - 0.93; case 19246: + *name = "catarium"; return val + 0.49; case 12133: + *name = "balcony"; return val + 0.44; default: return val; @@ -178,18 +181,22 @@ static double correct_point(int id, double val) static void cooked_point(time_t t, int id, double val, char *unit, int q) { - double val2 = correct_point(id, val); + char namebuf[16]; + snprintf(namebuf, sizeof(namebuf), "%d", id); + const char *name = namebuf; + + double val2 = correct_point(id, val, &name); if (debug_raw_data) { struct tm tm; localtime_r(&t, &tm); char tbuf[64]; strftime(tbuf, sizeof(tbuf), "%Y-%m-%d %H:%M:%S", &tm); - printf("== %s id=%d val=%.3f val2=%.3f unit=%s q=%d\n", tbuf, id, val, val2, unit, q); + printf("== %s id=%d name=%s val=%.3f val2=%.3f unit=%s q=%d\n", tbuf, id, name, val, val2, unit, q); } data_point_counter++; - rrd_point(t, id, val2, unit); + rrd_point(t, name, val2, unit); } static void raw_point(int t, int id, int raw, int q) -- 2.39.2