diff --git a/cronjob/chart/Makefile b/cronjob/chart/Makefile index 9756bd9..0647951 100644 --- a/cronjob/chart/Makefile +++ b/cronjob/chart/Makefile @@ -72,7 +72,7 @@ $(OBJS): # Programm mit debug-ausgabe bauen debug: @ echo "baue Version mit Debugoutput ..." - @ $(MAKE) all DEBUG=-DDEBUG + @ $(MAKE) all DEBUG="-DDEBUG -g" # Installieren install: diff --git a/cronjob/chart/image_file/image_common.h b/cronjob/chart/image_file/image_common.h index c3aa080..e34ddb1 100644 --- a/cronjob/chart/image_file/image_common.h +++ b/cronjob/chart/image_file/image_common.h @@ -2,6 +2,8 @@ typedef struct image_cfg_t { char *file_name; char *headline; char *table_field; + int manual_table; + char *table_name; long gen_interval; long show_interval; long label_interval; diff --git a/cronjob/chart/image_file/image_config.c b/cronjob/chart/image_file/image_config.c index 96c33c0..12d743e 100644 --- a/cronjob/chart/image_file/image_config.c +++ b/cronjob/chart/image_file/image_config.c @@ -39,6 +39,8 @@ static const config_keyword keywords[] = { {"filename", read_str, &(img_cfg.file_name), ""}, {"headline", read_str, &(img_cfg.headline), ""}, {"table_field", read_str, &(img_cfg.table_field), ""}, + {"manual_table", read_yn, &(img_cfg.manual_table), "no"}, + {"manual_table_name", read_str, &(img_cfg.table_name), ""}, {"gen_interval", read_time, &(img_cfg.gen_interval), ""}, {"show_interval", read_time, &(img_cfg.show_interval), ""}, {"label_interval", read_time, &(img_cfg.label_interval), ""}, diff --git a/cronjob/chart/image_file/image_data.c b/cronjob/chart/image_file/image_data.c index 6008fd8..2306ab4 100644 --- a/cronjob/chart/image_file/image_data.c +++ b/cronjob/chart/image_file/image_data.c @@ -25,14 +25,20 @@ static char *get_type_table_by_id(PGconn *, int ); +pix_list_ptr get_max(){ + return min; +} +pix_list_ptr get_min(){ + return max; +} /* Holt eine Liste mit den Werten und den jeweiligen x-koordinaten */ pix_list_ptr get_pix_list(int c_width){ double seconds_per_pix = ((double)c_width)/((double)img_cfg.show_interval); /* Pixel pro Sekunde */ char *conn_string = get_conn_string(); /* Verbindungs-String */ PGconn *conn = pg_check_connect(conn_string); /* Datenbank - Verbindung */ - char *table = get_type_table_by_id(conn, img_cfg.sens_id); /* Tabellen - Name */ + char *table = NULL; /* Tabellen - Name */ char *query = malloc(sizeof(char)*BUFFSIZE); /* Query */ PGresult *res = NULL; /* Darenbank - Result */ int time_field; /* Id ses Timestamp-Feldes */ @@ -47,6 +53,12 @@ pix_list_ptr get_pix_list(int c_width){ DEBUGOUT1("\nHole Daten...\n"); DEBUGOUT2(" Ein Pixel entspricht %f sekunden\n", seconds_per_pix); + if (img_cfg.manual_table) { + table = strdup(img_cfg.table_name); + } else { + table = get_type_table_by_id(conn, img_cfg.sens_id); + } + snprintf(query, BUFFSIZE, "SELECT round(date_part('epoch', current_timestamp)) AS now, round(date_part('epoch', timestamp)) AS times, %s AS val FROM %s WHERE timestamp > (current_timestamp - INTERVAL '%d seconds') ORDER BY times ASC", img_cfg.table_field, table, img_cfg.show_interval ); res = pg_check_exec(conn, query); @@ -79,7 +91,8 @@ pix_list_ptr get_pix_list(int c_width){ max = temp_ptr; } } - + + DEBUGOUT2(" %d Werte geholt \n", i); DEBUGOUT3(" Min: x-pos.: %d, Wert: %d\n", min->x_pix_coord, (min->value_sum / min->value_count) ); DEBUGOUT3(" Max: x-pos.: %d, Wert: %d\n", max->x_pix_coord, (max->value_sum / max->value_count) ); PQclear(res); diff --git a/cronjob/chart/image_file/image_data.h b/cronjob/chart/image_file/image_data.h index 8a0aa13..b6c5ede 100644 --- a/cronjob/chart/image_file/image_data.h +++ b/cronjob/chart/image_file/image_data.h @@ -15,3 +15,7 @@ typedef struct pix_list { * 1. Argument: die effektive Breite des Bereiches in dem gezeichnet werden soll */ pix_list_ptr get_pix_list(int ); + +pix_list_ptr get_min(); + +pix_list_ptr get_max(); diff --git a/cronjob/chart/image_file/image_file.c b/cronjob/chart/image_file/image_file.c index e8f5c80..eae198a 100644 --- a/cronjob/chart/image_file/image_file.c +++ b/cronjob/chart/image_file/image_file.c @@ -57,6 +57,8 @@ void process_image_cfg(char *image_cfg_file){ DEBUGOUT2("Height = %d\n", img_cfg.height); DEBUGOUT2("SensorId = %d\n", img_cfg.sens_id); DEBUGOUT2("TabellenFeld = %s\n", img_cfg.table_field); + DEBUGOUT2("ManualTabelle = %d\n", img_cfg.manual_table); + DEBUGOUT2("TabellenName = %s\n", img_cfg.table_name); DEBUGOUT1("\n"); } else { return; @@ -65,7 +67,7 @@ void process_image_cfg(char *image_cfg_file){ regenerate_image(); } - sleep(3); +// sleep(3); } diff --git a/cronjob/chart/image_file/testimage.conf b/cronjob/chart/image_file/testimage.conf index 40ad75f..c17b44d 100644 --- a/cronjob/chart/image_file/testimage.conf +++ b/cronjob/chart/image_file/testimage.conf @@ -1,8 +1,10 @@ filename /home/jan/Testbild.png headline Testbild +manual_table no +manual_table_name auss2_data table_field temp gen_interval 15m -show_interval 10h +show_interval 1y label_interval 10m label_sum no width 400