Sensor Sampling Revived
authorBernhard Tittelbach <xro@realraum.at>
Sat, 20 Mar 2010 09:28:57 +0000 (09:28 +0000)
committerBernhard Tittelbach <xro@realraum.at>
Sat, 20 Mar 2010 09:28:57 +0000 (09:28 +0000)
sensor_graph/sample_sensor.lua
sensor_graph/sample_sensor3.lua [deleted file]
sensor_graph/sample_sensors.sh
sensor_graph/switch.cgi [new file with mode: 0755]

index 8f5f193..31cdfc3 100755 (executable)
@@ -1,55 +1,28 @@
 #!/usr/bin/lua
 require('os')
 require('string')
-require('socket')
-
-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
-
+require('io')
 
 function parse_value(str)
   last_temp = 0.0
   last_light = 0
-  if string.find(str,"Sensor T: Temp C:") then
-    last_temp = tonumber(string.sub(str,18))
-    os.execute(string.format("rrdtool update /home/sensordata.rrd -t temp N:%f", last_temp))
-    print(string.format("t: %f Grad Celsius",last_temp))
-  end
-  if string.find(str,"Sensor P: Photo:") then
-    last_light = tonumber(string.sub(str,17))
-    os.execute(string.format("rrdtool update /home/sensordata.rrd -t light N:%d", last_light))
-    print(string.format("p: %d",last_light))
+  if string.find(str,"temp0: Temp C:") then
+    last_temp = tonumber(string.sub(str,15))
+    os.execute(string.format("rrdtool update /home/sensortemp.rrd -t temp N:%f", last_temp))
+    --print(string.format("t: %f Grad Celsius",last_temp))
   end
-  if string.find(str,"movement") then
-    --last_movement=1
-    os.execute(string.format("rrdtool update /home/sensordata.rrd -t movement N:%d", 1))
+  if string.find(str,"photo0: Photo:") then
+    last_light = tonumber(string.sub(str,15))
+    os.execute(string.format("rrdtool update /home/sensorlight.rrd -t light N:%d", last_light))
+    --print(string.format("p: %d",last_light))
   end
 end
 
-
-local socket_factory = require("socket.unix");
-local socket = socket_factory()
-
-
 while 1 do
-  local client = socket.connect("/var/run/powersensordaemon/cmd.sock")
-  if client then
-    client:send("listen sensor\n")
-    --client:settimeout(30)
-    while 1 do
-      local line, err = client:receive()
-      if not err then 
-        parse_value(line) 
-      elseif err ~= "timeout" then
-        break
-      end
+   local line = io.read("*line")
+    if line then 
+      parse_value(line) 
+    else
+      break
     end
-    client:shutdown("both")
-  end
-  --wait 10 seconds
-  socket.select(nil, nil, 10)
 end
diff --git a/sensor_graph/sample_sensor3.lua b/sensor_graph/sample_sensor3.lua
deleted file mode 100755 (executable)
index f2e469a..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/usr/bin/lua
-require('os')
-require('string')
-require('io')
---require('socket')
-
-function parse_value(str)
-  last_temp = 0.0
-  last_light = 0
-  if string.find(str,"temp0: Temp C:") then
-    last_temp = tonumber(string.sub(str,15))
-    os.execute(string.format("rrdtool update /home/sensortemp.rrd -t temp N:%f", last_temp))
-    --print(string.format("t: %f Grad Celsius",last_temp))
-  end
-  if string.find(str,"photo0: Photo:") then
-    last_light = tonumber(string.sub(str,15))
-    os.execute(string.format("rrdtool update /home/sensorlight.rrd -t light N:%d", last_light))
-    --print(string.format("p: %d",last_light))
-  end
-  if string.find(str,"movement") then
-    --last_movement=1
-    os.execute(string.format("rrdtool update /home/sensormovement.rrd -t movement N:%d", 1))
-  end
-end
-
-
-
-while 1 do
-   local line = io.read("*line")
-    if line then 
-      parse_value(line) 
-    else
-      break
-    end
-end
index 9ed260c..bc666fb 100755 (executable)
@@ -1,2 +1,8 @@
 #!/bin/sh
-echo -e "listen sensor\nlisten movement\n" | usocket /var/run/powersensordaemon/cmd.sock -n | ./sample_sensor3.lua &>/dev/null &
+echo -e "listen sensor\n" | usocket /var/run/powersensordaemon/cmd.sock -n | ./sample_sensor.lua &>/dev/null &
+echo -e "listen movement\n" | usocket /var/run/powersensordaemon/cmd.sock -n > /tmp/movement.tmp &
+while sleep 30; do
+  L=$(wc -l /tmp/movement.tmp | cut -d' ' -f1)
+  echo -n > /tmp/movement.tmp
+  rrdtool update /home/sensormovement.rrd -t movement N:$L
+done
diff --git a/sensor_graph/switch.cgi b/sensor_graph/switch.cgi
new file mode 100755 (executable)
index 0000000..1e70cf0
--- /dev/null
@@ -0,0 +1,53 @@
+#!/bin/sh
+
+for QUERY in `echo $QUERY_STRING | tr '&' ' '`; do
+  for VALUE in `echo $QUERY | tr '=' ' '`; do
+    if [ "$VALUE" == "id" ]; then
+      ID='?'
+    elif [ "$ID" == "?" ]; then
+      ID=$VALUE
+    elif [ "$VALUE" == "power" ]; then
+      POWER='?'
+    elif [ "$POWER" == "?" ]; then
+      POWER=$VALUE
+    fi
+    i=$i+1
+  done
+done
+
+UNIXSOCK=/var/run/powersensordaemon/cmd.sock
+VALIDIDS="werkzeug stereo labor schreibtisch logo idee"
+
+if [ "$POWER" == "on" -o "$POWER" == "off" ]; then
+  for CHECKID in $VALIDIDS; do
+    if [ "$CHECKID" == "$ID" ]; then
+      echo "power $POWER $ID" | usocket $UNIXSOCK
+    fi
+   done
+fi
+
+DESC_werkzeug="Beleuchtung Werkzeug"
+DESC_stereo="Stereo Anlage"
+DESC_labor="Labor Licht"
+DESC_schreibtisch="Schreibtisch Licht"
+DESC_logo="Logo"
+DESC_idee="Idee"
+
+echo "Content-type: text/html"
+echo ""
+echo "<html>"
+echo "<head>"
+echo "<title>Realraum rf433ctl</title>"
+echo "</head>"
+echo "<body>"
+echo "<h1>Realraum rf433ctl</h1>"
+echo "<table>"
+echo " <tr><th>Device</th><th>ON</th><th>OFF</th></tr>"
+for DISPID in $VALIDIDS; do
+  NAME="$(eval echo \$DESC_$DISPID)"
+  [ -z "$NAME" ] && NAME=$DISPID
+  echo " <tr><td>$NAME</td><td><a href=\"switch.cgi?id=$DISPID&power=on\">ON</a></td><td><a href=\"switch.cgi?id=$DISPID&power=off\">OFF</a></td></tr>"
+done
+echo "</table>"
+echo "</body>"
+echo "</html>"