Code: Select all
#!/usr/bin/env python
# Clock monitor program
import RPi.GPIO as GPIO
import time
import os
PULSE_SENSE_PIN = 17
BUTTON_PIN = 18
TEMPERATURE_DEVICE = "/sys/bus/w1/devices/28-0000073ddbf8/w1_slave"
def Initialise_GPIO():
GPIO.setmode(GPIO.BCM)
GPIO.setup(BUTTON_PIN, GPIO.IN)
GPIO.setup(PULSE_SENSE_PIN, GPIO.IN)
os.system("modprobe w1-gpio")
os.system("modprobe w1-therm")
def Write_log(now_time, temp):
# Append to the file
log_file = open ("clock.log", "a")
str_time = time.strftime("%Y-%m-%d,%H:%M:%S", time.localtime(now_time))
miliseconds = (now_time % 1) * 1000
log_string = "%s.%03i %.1f\n" % (str_time, miliseconds, temp)
log_file.write(log_string)
log_file.close()
print log_string
def Raw_temp():
t = open(TEMPERATURE_DEVICE)
lines = t.readlines()
t.close()
return lines
def Temperature():
data = Raw_temp()
while data[0].strip()[-3:] != "YES":
time.sleep(0.1)
text = Raw_temp()
tt = data[1].split(" ")[9]
return float(tt[2:]) / 1000.0
# Interrupt mode when pulse is received
def Pulse_callback(pin):
global interval_count
now_time = time.time() # in seconds since the epoch (float)
print "time=", time.asctime( time.localtime(now_time)), ".", (now_time % 1) * 1000
interval_count -= 1
if interval_count > 0:
return
Write_log(now_time, Temperature())
interval_count = 10
# The main program
Initialise_GPIO()
interval_count = 10
# We are detecting the training edge of the pulse here
GPIO.add_event_detect(PULSE_SENSE_PIN, GPIO.RISING, callback=Pulse_callback, bouncetime=100)
while True: # Now service interrupts until the button is pressed.
GPIO.wait_for_edge(BUTTON_PIN, GPIO.FALLING)
GPIO.cleanup()
break
Code: Select all
time= Sat Nov 12 08:09:33 2016 . 856.426954269
time= Sat Nov 12 08:10:03 2016 . 37.535905838
time= Sat Nov 12 08:10:33 2016 . 37.9140377045
time= Sat Nov 12 08:11:03 2016 . 37.9920005798
time= Sat Nov 12 08:11:33 2016 . 35.7570648193
time= Sat Nov 12 08:12:03 2016 . 34.8780155182
time= Sat Nov 12 08:12:33 2016 . 34.2879295349
time= Sat Nov 12 08:13:03 2016 . 36.712884903
time= Sat Nov 12 08:13:33 2016 . 38.7270450592
time= Sat Nov 12 08:14:03 2016 . 37.2750759125
2016-11-12,08:14:03.037 18.8
time= Sat Nov 12 08:14:03 2016 . 856.573104858
time= Sat Nov 12 08:14:33 2016 . 36.8630886078
time= Sat Nov 12 08:15:03 2016 . 37.3780727386
time= Sat Nov 12 08:15:33 2016 . 35.5999469757
time= Sat Nov 12 08:16:03 2016 . 36.7639064789
time= Sat Nov 12 08:16:33 2016 . 38.4850502014
time= Sat Nov 12 08:17:03 2016 . 38.407087326
time= Sat Nov 12 08:17:33 2016 . 38.4240150452
time= Sat Nov 12 08:18:03 2016 . 39.5829677582
time= Sat Nov 12 08:18:33 2016 . 38.2490158081
2016-11-12,08:18:33.038 18.8
time= Sat Nov 12 08:18:33 2016 . 866.270065308
time= Sat Nov 12 08:19:03 2016 . 37.691116333
time= Sat Nov 12 08:19:33 2016 . 38.8429164886
time= Sat Nov 12 08:20:03 2016 . 39.5340919495
time= Sat Nov 12 08:20:33 2016 . 40.5609607697
time= Sat Nov 12 08:21:03 2016 . 40.4450893402
time= Sat Nov 12 08:21:33 2016 . 40.7791137695
time= Sat Nov 12 08:22:03 2016 . 39.2189025879
time= Sat Nov 12 08:22:33 2016 . 37.6479625702
time= Sat Nov 12 08:23:03 2016 . 37.7190113068
2016-11-12,08:23:03.037 18.9
time= Sat Nov 12 08:23:03 2016 . 856.252908707
time= Sat Nov 12 08:23:33 2016 . 37.8129482269
time= Sat Nov 12 08:24:03 2016 . 41.0211086273
time= Sat Nov 12 08:24:33 2016 . 41.3289070129