bmsd/co2meters.c

changeset 506
8ab0e87d579e
parent 505
c09b67fd8323
child 547
4d9c96545246
--- a/bmsd/co2meters.c	Fri Oct 11 13:38:31 2019 +0200
+++ b/bmsd/co2meters.c	Fri Oct 11 21:04:48 2019 +0200
@@ -33,6 +33,9 @@
 
 extern int		debug;
 extern sys_config       Config;
+extern MYSQL		*con;
+extern MYSQL_RES	*res_set;
+extern MYSQL_ROW	row;
 
 
 
@@ -211,7 +214,7 @@
 
 void co2meter_log(char *topic, char *payload)
 {
-    char                *edge_node, *alias, *line, buf[65], *logfile;
+    char                *edge_node, *alias, *line, buf[128], *logfile;
     struct json_object  *jobj, *val, *metric;
     co2pressure_log	*log;
     struct tm		*mytime;
@@ -227,8 +230,8 @@
     log = (co2pressure_log *)malloc(sizeof(co2pressure_log));
     memset(log, 0, sizeof(co2pressure_log));
 
-    log->co2meter_node = xstrcpy(edge_node);
-    log->co2meter_alias = xstrcpy(alias);
+    log->node = xstrcpy(edge_node);
+    log->alias = xstrcpy(alias);
     jobj = json_tokener_parse(payload);
 
     timestamp = time(NULL);
@@ -238,23 +241,9 @@
 	mytime->tm_year + 1900, mytime->tm_mon + 1, mytime->tm_mday, mytime->tm_hour, mytime->tm_min, mytime->tm_sec);
 
     if (json_object_object_get_ex(jobj, "metric", &metric)) {
-
-/*	    if (json_object_object_get_ex(metric2, "uuid", &val)) {
-		if (strcmp((char *)"(null)", json_object_get_string(val)))
-		    log->product_uuid = xstrcpy((char *)json_object_get_string(val));
-	    }
-	    if (json_object_object_get_ex(metric2, "code", &val)) {
-		if (strcmp((char *)"(null)", json_object_get_string(val)))
-		    log->product_code = xstrcpy((char *)json_object_get_string(val));
-	    }
-	    if (json_object_object_get_ex(metric2, "name", &val)) {
-		if (strcmp((char *)"(null)", json_object_get_string(val)))
-		    log->product_name = xstrcpy((char *)json_object_get_string(val));
-	    }
-*/
-	if (json_object_object_get_ex(metric, "co2meter_uuid", &val)) {
+	if (json_object_object_get_ex(metric, "uuid", &val)) {
 	    if (strcmp((char *)"(null)", json_object_get_string(val)))
-	    	log->co2meter_uuid = xstrcpy((char *)json_object_get_string(val));
+	    	log->uuid = xstrcpy((char *)json_object_get_string(val));
 	}
 	if (json_object_object_get_ex(metric, "temperature", &val)) {
 	    log->temperature = json_object_get_double(val);
@@ -269,9 +258,21 @@
      * Because co2meters are not so smart and don't hold product information
      * search the missing pieces in the database.
      */
-    // log->co2meter_uuid is the search, fill:
-    // log->product_uuid log->product_name log->product_code
-    // log->co2meter_node log->co2meter_alias
+    snprintf(buf, 127, "SELECT beercode,beername,beeruuid FROM mon_co2meters WHERE uuid='%s'", log->uuid);
+    if (mysql_query(con, buf)) {
+        syslog(LOG_NOTICE, "MySQL: %s error %u (%s))", buf, mysql_errno(con), mysql_error(con));
+    } else {
+        res_set = mysql_store_result(con);
+        if (res_set == NULL) {
+            syslog(LOG_NOTICE, "MySQL: mysq_store_result error %u (%s))", mysql_errno(con), mysql_error(con));
+        } else {
+            if ((row = mysql_fetch_row(res_set)) != NULL) {
+		log->product_code = xstrcpy(row[0]);
+		log->product_name = xstrcpy(row[1]);
+		log->product_uuid = xstrcpy(row[2]);
+	    }
+	}
+    }
 
     /*
      * Build csv log line
@@ -284,7 +285,7 @@
     snprintf(buf, 64, "%.3f", log->pressure);
     line = xstrcat(line, buf);
     line = xstrcat(line, (char *)",");
-    line = xstrcat(line, log->co2meter_uuid);
+    line = xstrcat(line, log->uuid);
 
     /*
      * Build logfile name
@@ -320,12 +321,12 @@
 	free(log->product_code );
     if (log->product_name )
 	free(log->product_name );
-    if (log->co2meter_uuid)
-	free(log->co2meter_uuid);
-    if (log->co2meter_node)
-	free(log->co2meter_node);
-    if (log->co2meter_alias)
-	free(log->co2meter_alias);
+    if (log->uuid)
+	free(log->uuid);
+    if (log->node)
+	free(log->node);
+    if (log->alias)
+	free(log->alias);
     free(log);
 }
 

mercurial