diff -r c09b67fd8323 -r 8ab0e87d579e bmsd/co2meters.c --- 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); }