#!/usr/bin/python
# created: Alexander Kabza, Jan 6, 2016
# last mod: Alexander Kabza, June 8, 2016
# purpose: Read impulse from gas rotary meter

import time
import RPi.GPIO as GPIO

def writexml(t, a):
    file = open('/var/www/html/gas.xml', 'w')
    file.write('<MyHomeGasHeat><GasMeter><data name=\"timestamp\" value=\"' + t + '\"  valueunit=\"YYYY-MM-DD hh:mm:ss\" /><data name=\"gas\" value=\"' + str(a) + '\" valueunit=\"m^3\" /></GasMeter></MyHomeGasHeat>') 
    file.close()

def read_actual():
    file = open('/home/pi/MyHomeGasHeat/GasMeter.dat', 'r') 
    line = file.read()
    file.close()
    a = float(line)
    return a

def write_actual(a):
    file = open('/home/pi/MyHomeGasHeat/GasMeter.dat', 'w')
    s = '{0:0.2f}'.format(a)    
    file.write(s)
    file.close()

    
myGPIO = 23

GPIO.setmode(GPIO.BCM)
GPIO.setup(myGPIO, GPIO.IN)

timestamp = (time.strftime("%Y-%m-%d ") + time.strftime("%H:%M:%S"))

impulse = False

# aktuelle Werte aus GasMeter.dat auslesen
actual = read_actual()
print 'actual = ', actual

writexml(timestamp, actual)
write_actual(actual)

while True:    
    timestamp = (time.strftime("%Y-%m-%d ") + time.strftime("%H:%M:%S"))
        
    if GPIO.input(myGPIO):
        if not impulse:
            actual = read_actual()
            actual = actual + 0.01
            write_actual(actual)
            writexml(timestamp, actual)
            
        impulse = True
    else:
        impulse = False
    time.sleep(0.5)