Working on charts

git-svn-id: file:///home/jan/tmp/wetterstation/trunk@84 dd492736-c11a-0410-ad51-8c26713eaf7f
This commit is contained in:
losinshi 2006-09-13 08:22:06 +00:00
parent 0fcdac9720
commit dd76037565
7 changed files with 30 additions and 5 deletions

View File

@ -72,7 +72,7 @@ $(OBJS):
# Programm mit debug-ausgabe bauen # Programm mit debug-ausgabe bauen
debug: debug:
@ echo "baue Version mit Debugoutput ..." @ echo "baue Version mit Debugoutput ..."
@ $(MAKE) all DEBUG=-DDEBUG @ $(MAKE) all DEBUG="-DDEBUG -g"
# Installieren # Installieren
install: install:

View File

@ -2,6 +2,8 @@ typedef struct image_cfg_t {
char *file_name; char *file_name;
char *headline; char *headline;
char *table_field; char *table_field;
int manual_table;
char *table_name;
long gen_interval; long gen_interval;
long show_interval; long show_interval;
long label_interval; long label_interval;

View File

@ -39,6 +39,8 @@ static const config_keyword keywords[] = {
{"filename", read_str, &(img_cfg.file_name), ""}, {"filename", read_str, &(img_cfg.file_name), ""},
{"headline", read_str, &(img_cfg.headline), ""}, {"headline", read_str, &(img_cfg.headline), ""},
{"table_field", read_str, &(img_cfg.table_field), ""}, {"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), ""}, {"gen_interval", read_time, &(img_cfg.gen_interval), ""},
{"show_interval", read_time, &(img_cfg.show_interval), ""}, {"show_interval", read_time, &(img_cfg.show_interval), ""},
{"label_interval", read_time, &(img_cfg.label_interval), ""}, {"label_interval", read_time, &(img_cfg.label_interval), ""},

View File

@ -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 */ /* Holt eine Liste mit den Werten und den jeweiligen x-koordinaten */
pix_list_ptr get_pix_list(int c_width){ pix_list_ptr get_pix_list(int c_width){
double seconds_per_pix = ((double)c_width)/((double)img_cfg.show_interval); /* Pixel pro Sekunde */ double seconds_per_pix = ((double)c_width)/((double)img_cfg.show_interval); /* Pixel pro Sekunde */
char *conn_string = get_conn_string(); /* Verbindungs-String */ char *conn_string = get_conn_string(); /* Verbindungs-String */
PGconn *conn = pg_check_connect(conn_string); /* Datenbank - Verbindung */ 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 */ char *query = malloc(sizeof(char)*BUFFSIZE); /* Query */
PGresult *res = NULL; /* Darenbank - Result */ PGresult *res = NULL; /* Darenbank - Result */
int time_field; /* Id ses Timestamp-Feldes */ int time_field; /* Id ses Timestamp-Feldes */
@ -47,6 +53,12 @@ pix_list_ptr get_pix_list(int c_width){
DEBUGOUT1("\nHole Daten...\n"); DEBUGOUT1("\nHole Daten...\n");
DEBUGOUT2(" Ein Pixel entspricht %f sekunden\n", seconds_per_pix); 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 ); 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); res = pg_check_exec(conn, query);
@ -80,6 +92,7 @@ pix_list_ptr get_pix_list(int c_width){
} }
} }
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(" 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) ); DEBUGOUT3(" Max: x-pos.: %d, Wert: %d\n", max->x_pix_coord, (max->value_sum / max->value_count) );
PQclear(res); PQclear(res);

View File

@ -15,3 +15,7 @@ typedef struct pix_list {
* 1. Argument: die effektive Breite des Bereiches in dem gezeichnet werden soll * 1. Argument: die effektive Breite des Bereiches in dem gezeichnet werden soll
*/ */
pix_list_ptr get_pix_list(int ); pix_list_ptr get_pix_list(int );
pix_list_ptr get_min();
pix_list_ptr get_max();

View File

@ -57,6 +57,8 @@ void process_image_cfg(char *image_cfg_file){
DEBUGOUT2("Height = %d\n", img_cfg.height); DEBUGOUT2("Height = %d\n", img_cfg.height);
DEBUGOUT2("SensorId = %d\n", img_cfg.sens_id); DEBUGOUT2("SensorId = %d\n", img_cfg.sens_id);
DEBUGOUT2("TabellenFeld = %s\n", img_cfg.table_field); 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"); DEBUGOUT1("\n");
} else { } else {
return; return;
@ -65,7 +67,7 @@ void process_image_cfg(char *image_cfg_file){
regenerate_image(); regenerate_image();
} }
sleep(3); // sleep(3);
} }

View File

@ -1,8 +1,10 @@
filename /home/jan/Testbild.png filename /home/jan/Testbild.png
headline Testbild headline Testbild
manual_table no
manual_table_name auss2_data
table_field temp table_field temp
gen_interval 15m gen_interval 15m
show_interval 10h show_interval 1y
label_interval 10m label_interval 10m
label_sum no label_sum no
width 400 width 400