#!/usr/bin/env ruby
require 'pi_piper'
require 'eventmachine'

include PiPiper


mypath = File.expand_path(File.dirname(__FILE__))
trigger_step = 1
trigger_watch = 0
counter = 0.0
timestamp =  Time.now.to_i


def last_rrd_count(concretepath)
  val = 0.0
  handle = IO.popen("rrdtool lastupdate #{concretepath}")
  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 => 18, :trigger => :falling do
  puts('triggered watch to 1')
  trigger_watch = 1
end


rrdpath = mypath + "/water.rrd"
#counter = last_rrd_count(rrdpath)
puts('Counter restored to: ' + counter.to_s)

EventMachine.run do
  EM.add_periodic_timer(1) do
    if trigger_watch == 1 then
      counter = counter + trigger_step
      system("rrdtool update #{rrdpath} N:#{counter}:#{trigger_step}")
      puts('Counter updated to: ' + counter.to_s)
      timestamp =  Time.now.to_i
      trigger_watch = 0
    elsif Time.now.to_i - timestamp > 3600
      system("rrdtool update #{rrdpath} N:#{counter}:0")
      timestamp = Time.now.to_i
    end
  end
end

