From: Jean-Philippe Orsini Date: Fri, 22 Jul 2011 21:45:47 +0000 (+0000) Subject: added graph of sensors (web server) X-Git-Tag: v0.8.0.5~692 X-Git-Url: https://git.wpitchoune.net/gitweb/?p=psensor.git;a=commitdiff_plain;h=e99f993d7ab18a6ea62d876da38c678ece82a599 added graph of sensors (web server) --- diff --git a/NEWS b/NEWS index e44d38c..a6863c0 100644 --- a/NEWS +++ b/NEWS @@ -4,6 +4,8 @@ ** psensor-server: added monitor.html using jquery and retrieving monitoring data from the JSON web interface. ** added support for ATI/AMD gpus and fans. +** psensor: added support of CPU usage monitoring. +** psensor-server: display graph of sensors (web server). * v0.6.2.9 diff --git a/src/libpsensor_json/Makefile.am b/src/libpsensor_json/Makefile.am index a85c829..e2bff28 100644 --- a/src/libpsensor_json/Makefile.am +++ b/src/libpsensor_json/Makefile.am @@ -1,6 +1,6 @@ noinst_LIBRARIES = libpsensor_json.a -libpsensor_json_a_CFLAGS = -pedantic -Werror +libpsensor_json_a_CFLAGS = -pedantic -Wall -Werror libpsensor_json_a_SOURCES = \ psensor_json.h psensor_json.c diff --git a/src/libpsensor_json/Makefile.in b/src/libpsensor_json/Makefile.in index 122945a..7558443 100644 --- a/src/libpsensor_json/Makefile.in +++ b/src/libpsensor_json/Makefile.in @@ -212,7 +212,7 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ noinst_LIBRARIES = libpsensor_json.a -libpsensor_json_a_CFLAGS = -pedantic -Werror +libpsensor_json_a_CFLAGS = -pedantic -Wall -Werror libpsensor_json_a_SOURCES = \ psensor_json.h psensor_json.c diff --git a/src/libpsensor_json/psensor_json.c b/src/libpsensor_json/psensor_json.c index b31dc35..5d5889d 100644 --- a/src/libpsensor_json/psensor_json.c +++ b/src/libpsensor_json/psensor_json.c @@ -27,15 +27,47 @@ #define ATT_SENSOR_MIN "min" #define ATT_SENSOR_MAX "max" #define ATT_SENSOR_LAST_MEASURE "last_measure" +#define ATT_SENSOR_MEASURES "measures" #define ATT_MEASURE_VALUE "value" #define ATT_MEASURE_TIME "time" +static json_object * +measure_to_json_object(struct measure *m) +{ + json_object *o = json_object_new_object(); + + json_object_object_add(o, + ATT_MEASURE_VALUE, + json_object_new_double(m->value.d_num)); + json_object_object_add(o, ATT_MEASURE_TIME, + json_object_new_int((m->time).tv_sec)); + return o; +} + +static json_object * +measures_to_json_object(struct psensor *s) +{ + json_object *o; + int i; + + o = json_object_new_array(); + + for (i = 0; i < s->values_max_length; i++) + if (s->measures[i].time.tv_sec) + json_object_array_add + (o, measure_to_json_object(&s->measures[i])); + + + return o; +} + json_object *sensor_to_json_object(struct psensor *s) { - json_object *mo; - json_object *obj = json_object_new_object(); + json_object *mo, *obj; struct measure *m; + obj = json_object_new_object(); + json_object_object_add(obj, ATT_SENSOR_ID, json_object_new_string(s->id)); @@ -48,6 +80,9 @@ json_object *sensor_to_json_object(struct psensor *s) ATT_SENSOR_MIN, json_object_new_double(s->min)); json_object_object_add(obj, ATT_SENSOR_MAX, json_object_new_double(s->max)); + json_object_object_add(obj, + ATT_SENSOR_MEASURES, + measures_to_json_object(s)); m = psensor_get_current_measure(s); mo = json_object_new_object(); @@ -77,7 +112,6 @@ char *sensors_to_json_string(struct psensor **sensors) { struct psensor **sensors_cur; char *str; - json_object *obj = json_object_new_array(); sensors_cur = sensors; diff --git a/src/server/Makefile.am b/src/server/Makefile.am index 3b42c56..0aab252 100644 --- a/src/server/Makefile.am +++ b/src/server/Makefile.am @@ -1,7 +1,7 @@ bin_PROGRAMS = psensor-server psensor_server_SOURCES = server.c server.h -AM_CPPFLAGS = -pedantic -Werror -DDEFAULT_WWW_DIR=\""$(pkgdatadir)/www"\"\ +AM_CPPFLAGS = -pedantic -Wall -Werror -DDEFAULT_WWW_DIR=\""$(pkgdatadir)/www"\"\ -I$(top_srcdir)/src \ -I$(top_srcdir)/src/lib \ -I$(top_srcdir)/src/libpsensor_json \ diff --git a/src/server/Makefile.in b/src/server/Makefile.in index 1cd7671..68022ad 100644 --- a/src/server/Makefile.in +++ b/src/server/Makefile.in @@ -241,7 +241,7 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ psensor_server_SOURCES = server.c server.h $(am__append_3) -AM_CPPFLAGS = -pedantic -Werror \ +AM_CPPFLAGS = -pedantic -Wall -Werror \ -DDEFAULT_WWW_DIR=\""$(pkgdatadir)/www"\" -I$(top_srcdir)/src \ -I$(top_srcdir)/src/lib -I$(top_srcdir)/src/libpsensor_json \ $(SENSORS_CFLAGS) $(JSON_CFLAGS) $(LIBMICROHTTPD_CFLAGS) \ diff --git a/src/server/server.c b/src/server/server.c index a95c0d1..8395609 100644 --- a/src/server/server.c +++ b/src/server/server.c @@ -349,7 +349,7 @@ int main(int argc, char *argv[]) psensor_init(); - server_data.sensors = get_all_sensors(1); + server_data.sensors = get_all_sensors(600); if (!*server_data.sensors) fprintf(stderr, _("ERROR: no sensors detected\n")); diff --git a/www/details.html b/www/details.html new file mode 100644 index 0000000..fbc841a --- /dev/null +++ b/www/details.html @@ -0,0 +1,61 @@ + + + + Sensor details + + + + + + + + + + +
+ + +
+
+
+
+ + + + + diff --git a/www/monitor.html b/www/monitor.html index b7417af..ce33104 100644 --- a/www/monitor.html +++ b/www/monitor.html @@ -21,7 +21,11 @@ unit = type_to_unit(stype); stype_str = type_to_str(stype); - $("#sensors").append(""+sname+""+svalue+unit+""+smin+unit+""+smax+unit+""+stype_str+""); + $("#sensors").append("" + +"" + +""+sname+"" + +""+svalue+unit+""+smin+unit+""+smax+unit+""+stype_str+""); }); }); diff --git a/www/psensor.js b/www/psensor.js index 2092509..30b7001 100644 --- a/www/psensor.js +++ b/www/psensor.js @@ -53,3 +53,17 @@ function type_to_unit(stype) { return unit; } + +function get_url_params() +{ + var vars = [], hash; + var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&'); + for(var i = 0; i < hashes.length; i++) + { + hash = hashes[i].split('='); + vars.push(hash[0]); + vars[hash[0]] = hash[1]; + } + return vars; +} +