From 514a0e3aa78b091b9a5ed6e8f1ca68d5cdad144a Mon Sep 17 00:00:00 2001 From: Bernhard Tittelbach Date: Sun, 7 Mar 2010 02:36:21 +0000 Subject: [PATCH] Sensor Graphs on slug.realraum.at/cgi-bin/sensors.cgi --- sensor_graph/rrdtool.sh | 5 ++++ sensor_graph/sample_sensor.lua | 59 ++++++++++++++++++++++++++++++++++++++++ sensor_graph/sensors.cgi | 28 +++++++++++++++++++ 3 files changed, 92 insertions(+) create mode 100644 sensor_graph/rrdtool.sh create mode 100644 sensor_graph/sample_sensor.lua create mode 100755 sensor_graph/sensors.cgi diff --git a/sensor_graph/rrdtool.sh b/sensor_graph/rrdtool.sh new file mode 100644 index 0000000..f18ae9f --- /dev/null +++ b/sensor_graph/rrdtool.sh @@ -0,0 +1,5 @@ +rrdtool create sensordata.rrd --step 30 DS:temp:GAUGE:1800:-20:60 DS:light:GAUGE:300:0:1023 DS:movement:GAUGE:300:0:1 RRA:LAST:0.5:2:2048 +rrdtool update sensordata.rrd -t temp N:26.0 +rrdtool update sensordata.rrd -t light N:200 +rrdtool update sensordata.rrd -t movement N:0 + diff --git a/sensor_graph/sample_sensor.lua b/sensor_graph/sample_sensor.lua new file mode 100644 index 0000000..ad3550d --- /dev/null +++ b/sensor_graph/sample_sensor.lua @@ -0,0 +1,59 @@ +require('os') +require('string') + +last_temp = 0.0 +last_light = 0 +last_movement = 0 + +function save_values() + os.execute(string.format("rrdtool update /home/sensordata.rrd -t temp:light:movement N:%f:%d:%d", last_temp, last_light, last_movement)) + last_movement=0 +end + + +function parse_value(str) + if string.find(str,"Temp C:") then + last_temp = tonumber(string.sub(str,8)) + --print(string.format("t: %f Grad Celsius",last_temp)) + end + if string.find(str,"Photo:") then + last_light = tonumber(string.sub(str,7)) + --print(string.format("p: %d",last_light)) + end + if string.find(str,"movement") then + last_movement=1 + --print "something moved" + end + +end + + + + +local socket = require("socket") +local client = assert(socket.connect("127.0.0.1",2010)) +--socket.unix = require("socket.unix") +--local socket = assert(socket.unix()) +--local client = assert(socket:connect("/var/run/power_sensor.socket")) +client:settimeout(10) + + + + +while 1 do + local line, err = client:receive() + if not err then + parse_value(line) + end + client:send("T") + line, err = client:receive() + if not err then + parse_value(line) + end + client:send("P") + line, err = client:receive() + if not err then + parse_value(line) + end + save_values() +end diff --git a/sensor_graph/sensors.cgi b/sensor_graph/sensors.cgi new file mode 100755 index 0000000..be5ef8d --- /dev/null +++ b/sensor_graph/sensors.cgi @@ -0,0 +1,28 @@ +#!/usr/bin/rrdcgi + +RealRaum Sensor Data + +

RealRaum Sensor Data

+ +

+' + --lazy --title="Room Illumination" + DEF:cel=/home/sensordata.rrd:light:LAST + LINE2:cel#00a000:"0 dark to 1024 bright"> +

+

+' + --lazy --title="Temperatures" + DEF:cel=/home/sensordata.rrd:temp:LAST + LINE2:cel#00a000:"D. Celsius"> +

+' + --lazy --title="Graph of Movement Sensor" + DEF:cel=/home/sensordata.rrd:movement:LAST + LINE2:cel#00a000:"1 Movement, 0 No Movement"> +

+ + -- 1.7.10.4