57 lines
1.2 KiB
Ruby
57 lines
1.2 KiB
Ruby
![]() |
#!/usr/bin/env ruby
|
||
|
#
|
||
|
# Author: Norbert Wigbels - foobla.wigbels.de/uber-foobla
|
||
|
#
|
||
|
# HotHotPiper continously reads the status of a
|
||
|
# reed contact attached to the Raspberry Pi GPIO
|
||
|
#
|
||
|
# The reed measures gas usage.
|
||
|
#
|
||
|
# A magig URL is formed and called; the url
|
||
|
# stores the sensor-data to wigbels.net
|
||
|
#
|
||
|
# todo: status-led
|
||
|
#
|
||
|
|
||
|
#------------------------------------------
|
||
|
# Tainted mode 0-4
|
||
|
$SAFE=0
|
||
|
|
||
|
#------------------------------------------
|
||
|
require 'pi_piper'
|
||
|
include PiPiper
|
||
|
|
||
|
$mypath = File.expand_path(File.dirname(__FILE__))
|
||
|
|
||
|
|
||
|
def last_rrd_count
|
||
|
val = 0.0
|
||
|
handle = IO.popen("rrdtool lastupdate #{$mypath}/power.rrd")
|
||
|
handle.each_line do |line|
|
||
|
m = line.match("^[0-9]*: ([0-9.]*) [0-9.]*")
|
||
|
if m
|
||
|
val = m[1].to_f
|
||
|
break
|
||
|
end
|
||
|
end
|
||
|
return val
|
||
|
end
|
||
|
|
||
|
|
||
|
watch :pin => 4, :trigger => :falling do
|
||
|
puts('added 10 liter of gas to sensor-database')
|
||
|
system("rrdtool update #{$mypath}/gas.rrd N:10")
|
||
|
end
|
||
|
|
||
|
watch :pin => 11, :trigger => :falling do
|
||
|
puts('updated power consumption')
|
||
|
$counter = $counter + $trigger_step
|
||
|
trigger_update = $trigger_step * 3600000.0
|
||
|
system("rrdtool update #{$mypath}/power.rrd N:#{$counter}:#{trigger_update}")
|
||
|
end
|
||
|
|
||
|
$trigger_step = 1.0 / 96
|
||
|
$counter = last_rrd_count
|
||
|
|
||
|
PiPiper.wait
|