public/de.wigbels.ruby/hothotread/archiv/hothotpiper.rb
Norbert Wigbels 1e80fb3da1 Initial
2025-02-08 16:53:10 +01:00

56 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