]> mj.ucw.cz Git - arexx.git/commitdiff
correct_point() can now rename sensors
authorMartin Mares <mj@ucw.cz>
Sat, 14 Jan 2012 09:55:51 +0000 (10:55 +0100)
committerMartin Mares <mj@ucw.cz>
Sat, 14 Jan 2012 09:55:51 +0000 (10:55 +0100)
arexxd.c

index 8030c0377cbc6c2aed623ad6fc8d7d8832030101..2a50c6e6face4d0b280b8ec8f1df1c07b38fd9f4 100644 (file)
--- 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)