mirror of https://github.com/noisymime/OSPi.git
First commit after moving to Git
This commit is contained in:
parent
bf85e14eb6
commit
d4a99da4f9
|
@ -0,0 +1,3 @@
|
||||||
|
web/
|
||||||
|
/data
|
||||||
|
*.pyc
|
120
ospi.py
120
ospi.py
|
@ -1,9 +1,9 @@
|
||||||
#!/usr/bin/python
|
###!/usr/bin/python
|
||||||
"""Updated 19/September/2013."""
|
"""Updated 19/September/2013."""
|
||||||
import re, os, json, time, base64, thread # standard Python modules
|
import re, os, json, time, base64, thread # standard Python modules
|
||||||
import web # the Web.py module. See webpy.org (Enables the OpenSprinkler web interface)
|
import web # the Web.py module. See webpy.org (Enables the OpenSprinkler web interface)
|
||||||
import gv # 'global vars' An empty module, used for storing vars (as attributes), that need to be 'global' across threads and between functions and classes.
|
import gv # 'global vars' An empty module, used for storing vars (as attributes), that need to be 'global' across threads and between functions and classes.
|
||||||
import RPi.GPIO as GPIO # Required for accessing General Purpose Input Output pins on Raspberry Pi
|
##import RPi.GPIO as GPIO # Required for accessing General Purpose Input Output pins on Raspberry Pi
|
||||||
#### Revision information ####
|
#### Revision information ####
|
||||||
gv.ver = 183
|
gv.ver = 183
|
||||||
gv.rev = 135
|
gv.rev = 135
|
||||||
|
@ -47,19 +47,19 @@ def baseurl():
|
||||||
baseurl = web.ctx['home']
|
baseurl = web.ctx['home']
|
||||||
return baseurl
|
return baseurl
|
||||||
|
|
||||||
def board_rev():
|
##def board_rev():
|
||||||
"""Auto-detect the Raspberry Pi board rev."""
|
## """Auto-detect the Raspberry Pi board rev."""
|
||||||
revision = "unknown"
|
## revision = "unknown"
|
||||||
with open('/proc/cmdline', 'r') as f:
|
## with open('/proc/cmdline', 'r') as f:
|
||||||
line = f.readline()
|
## line = f.readline()
|
||||||
m = re.search('bcm2708.boardrev=(0x[0123456789abcdef]*) ', line)
|
## m = re.search('bcm2708.boardrev=(0x[0123456789abcdef]*) ', line)
|
||||||
revision = m.group(1)
|
## revision = m.group(1)
|
||||||
revcode = int(revision, 16)
|
## revcode = int(revision, 16)
|
||||||
if revcode <= 3:
|
## if revcode <= 3:
|
||||||
rev = 1
|
## rev = 1
|
||||||
else:
|
## else:
|
||||||
rev = 2
|
## rev = 2
|
||||||
return rev
|
## return rev
|
||||||
|
|
||||||
def clear_mm():
|
def clear_mm():
|
||||||
"""Clear manual mode settings."""
|
"""Clear manual mode settings."""
|
||||||
|
@ -72,13 +72,13 @@ def clear_mm():
|
||||||
for i in range(gv.sd['nst']):
|
for i in range(gv.sd['nst']):
|
||||||
gv.rs.append([0,0,0,0])
|
gv.rs.append([0,0,0,0])
|
||||||
gv.srvals = [0]*(gv.sd['nst'])
|
gv.srvals = [0]*(gv.sd['nst'])
|
||||||
set_output()
|
## set_output()
|
||||||
return
|
return
|
||||||
|
|
||||||
def CPU_temperature():
|
##def CPU_temperature():
|
||||||
"""Returns the temperature of the Raspberry Pi's CPU."""
|
## """Returns the temperature of the Raspberry Pi's CPU."""
|
||||||
res = os.popen('vcgencmd measure_temp').readline()
|
## res = os.popen('vcgencmd measure_temp').readline()
|
||||||
return(res.replace("temp=","").replace("'C\n",""))
|
## return(res.replace("temp=","").replace("'C\n",""))
|
||||||
|
|
||||||
def log_run():
|
def log_run():
|
||||||
"""add run data to csv file - most recent first."""
|
"""add run data to csv file - most recent first."""
|
||||||
|
@ -171,7 +171,7 @@ def stop_onrain():
|
||||||
continue
|
continue
|
||||||
elif not all(v == 0 for v in gv.rs[sid]):
|
elif not all(v == 0 for v in gv.rs[sid]):
|
||||||
gv.srvals[sid] = [0]
|
gv.srvals[sid] = [0]
|
||||||
set_output()
|
## set_output()
|
||||||
gv.ps[sid] = [0,0]
|
gv.ps[sid] = [0,0]
|
||||||
#gv.sbits = [0] * (gv.sd['nbrd'] +1)
|
#gv.sbits = [0] * (gv.sd['nbrd'] +1)
|
||||||
gv.rs[sid] = [0,0,0,0]
|
gv.rs[sid] = [0,0,0,0]
|
||||||
|
@ -179,7 +179,7 @@ def stop_onrain():
|
||||||
|
|
||||||
def stop_stations():
|
def stop_stations():
|
||||||
gv.srvals = [0]*(gv.sd['nst'])
|
gv.srvals = [0]*(gv.sd['nst'])
|
||||||
set_output()
|
## set_output()
|
||||||
gv.ps = []
|
gv.ps = []
|
||||||
for i in range(gv.sd['nst']):
|
for i in range(gv.sd['nst']):
|
||||||
gv.ps.append([0,0])
|
gv.ps.append([0,0])
|
||||||
|
@ -233,7 +233,7 @@ def main_loop(): # Runs in a seperate thread
|
||||||
if gv.srvals[sid]: # if this station is on
|
if gv.srvals[sid]: # if this station is on
|
||||||
if gv.now >= gv.rs[sid][1]: # check if time is up
|
if gv.now >= gv.rs[sid][1]: # check if time is up
|
||||||
gv.srvals[sid] = 0
|
gv.srvals[sid] = 0
|
||||||
set_output()
|
## set_output()
|
||||||
gv.sbits[b] = gv.sbits[b]&~2**s
|
gv.sbits[b] = gv.sbits[b]&~2**s
|
||||||
if gv.sd['mas']-1 != sid: # if not master, fill out log
|
if gv.sd['mas']-1 != sid: # if not master, fill out log
|
||||||
gv.ps[sid] = [0,0]
|
gv.ps[sid] = [0,0]
|
||||||
|
@ -248,7 +248,7 @@ def main_loop(): # Runs in a seperate thread
|
||||||
if gv.now >= gv.rs[sid][0] and gv.now < gv.rs[sid][1]:
|
if gv.now >= gv.rs[sid][0] and gv.now < gv.rs[sid][1]:
|
||||||
if gv.sd['mas']-1 != sid: # if not master
|
if gv.sd['mas']-1 != sid: # if not master
|
||||||
gv.srvals[sid] = 1 # station is turned on
|
gv.srvals[sid] = 1 # station is turned on
|
||||||
set_output()
|
## set_output()
|
||||||
gv.sbits[b] = gv.sbits[b]|1<<s # Set display to on
|
gv.sbits[b] = gv.sbits[b]|1<<s # Set display to on
|
||||||
gv.ps[sid][0] = gv.rs[sid][3]
|
gv.ps[sid][0] = gv.rs[sid][3]
|
||||||
gv.ps[sid][1] = gv.rs[sid][2]+1 ### testing display
|
gv.ps[sid][1] = gv.rs[sid][2]+1 ### testing display
|
||||||
|
@ -260,7 +260,7 @@ def main_loop(): # Runs in a seperate thread
|
||||||
elif gv.sd['mas'] == sid+1:
|
elif gv.sd['mas'] == sid+1:
|
||||||
gv.sbits[b] = gv.sbits[b]|1<<sid #(gv.sd['mas'] - 1)
|
gv.sbits[b] = gv.sbits[b]|1<<sid #(gv.sd['mas'] - 1)
|
||||||
gv.srvals[masid] = 1
|
gv.srvals[masid] = 1
|
||||||
set_output()
|
## set_output()
|
||||||
|
|
||||||
for s in range(gv.sd['nst']):
|
for s in range(gv.sd['nst']):
|
||||||
if gv.rs[s][1]: # if any station is scheduled
|
if gv.rs[s][1]: # if any station is scheduled
|
||||||
|
@ -282,7 +282,7 @@ def main_loop(): # Runs in a seperate thread
|
||||||
|
|
||||||
if not program_running:
|
if not program_running:
|
||||||
gv.srvals = [0]*(gv.sd['nst'])
|
gv.srvals = [0]*(gv.sd['nst'])
|
||||||
set_output()
|
## set_output()
|
||||||
gv.sbits = [0] * (gv.sd['nbrd'] +1)
|
gv.sbits = [0] * (gv.sd['nbrd'] +1)
|
||||||
gv.ps = []
|
gv.ps = []
|
||||||
for i in range(gv.sd['nst']):
|
for i in range(gv.sd['nst']):
|
||||||
|
@ -454,44 +454,44 @@ gv.scount = 0 # Station count, used in set station to track on stations with mas
|
||||||
|
|
||||||
#### GPIO #####
|
#### GPIO #####
|
||||||
|
|
||||||
GPIO.setwarnings(False)
|
##GPIO.setwarnings(False)
|
||||||
|
|
||||||
#### pin defines ####
|
#### pin defines ####
|
||||||
|
|
||||||
if board_rev() == 1:
|
##if board_rev() == 1:
|
||||||
pin_sr_dat = 21
|
## pin_sr_dat = 21
|
||||||
else:
|
##else:
|
||||||
pin_sr_dat = 27
|
## pin_sr_dat = 27
|
||||||
pin_sr_clk = 4
|
##pin_sr_clk = 4
|
||||||
pin_sr_noe = 17
|
##pin_sr_noe = 17
|
||||||
pin_sr_lat = 22
|
##pin_sr_lat = 22
|
||||||
|
|
||||||
#### NUMBER OF STATIONS
|
#### NUMBER OF STATIONS
|
||||||
num_stations = gv.sd['nst']
|
##num_stations = gv.sd['nst']
|
||||||
|
|
||||||
def enableShiftRegisterOutput():
|
##def enableShiftRegisterOutput():
|
||||||
GPIO.output(pin_sr_noe, False)
|
## GPIO.output(pin_sr_noe, False)
|
||||||
|
|
||||||
def disableShiftRegisterOutput():
|
##def disableShiftRegisterOutput():
|
||||||
GPIO.output(pin_sr_noe, True)
|
## GPIO.output(pin_sr_noe, True)
|
||||||
|
|
||||||
GPIO.cleanup()
|
##GPIO.cleanup()
|
||||||
#### setup GPIO pins to interface with shift register ####
|
#### setup GPIO pins to interface with shift register ####
|
||||||
GPIO.setmode(GPIO.BCM)
|
##GPIO.setmode(GPIO.BCM)
|
||||||
GPIO.setup(pin_sr_clk, GPIO.OUT)
|
##GPIO.setup(pin_sr_clk, GPIO.OUT)
|
||||||
GPIO.setup(pin_sr_noe, GPIO.OUT)
|
##GPIO.setup(pin_sr_noe, GPIO.OUT)
|
||||||
disableShiftRegisterOutput()
|
##disableShiftRegisterOutput()
|
||||||
GPIO.setup(pin_sr_dat, GPIO.OUT)
|
##GPIO.setup(pin_sr_dat, GPIO.OUT)
|
||||||
GPIO.setup(pin_sr_lat, GPIO.OUT)
|
##GPIO.setup(pin_sr_lat, GPIO.OUT)
|
||||||
|
|
||||||
def setShiftRegister(srvals):
|
##def setShiftRegister(srvals):
|
||||||
GPIO.output(pin_sr_clk, False)
|
## GPIO.output(pin_sr_clk, False)
|
||||||
GPIO.output(pin_sr_lat, False)
|
## GPIO.output(pin_sr_lat, False)
|
||||||
for s in range(num_stations):
|
## for s in range(num_stations):
|
||||||
GPIO.output(pin_sr_clk, False)
|
## GPIO.output(pin_sr_clk, False)
|
||||||
GPIO.output(pin_sr_dat, srvals[num_stations-1-s])
|
## GPIO.output(pin_sr_dat, srvals[num_stations-1-s])
|
||||||
GPIO.output(pin_sr_clk, True)
|
## GPIO.output(pin_sr_clk, True)
|
||||||
GPIO.output(pin_sr_lat, True)
|
## GPIO.output(pin_sr_lat, True)
|
||||||
|
|
||||||
##################
|
##################
|
||||||
|
|
||||||
|
@ -510,10 +510,10 @@ class home:
|
||||||
homepg += '<script>var lrun='+str(gv.lrun).replace(' ', '')+';</script>\n'
|
homepg += '<script>var lrun='+str(gv.lrun).replace(' ', '')+';</script>\n'
|
||||||
homepg += '<script>var snames='+data('snames')+';</script>\n'
|
homepg += '<script>var snames='+data('snames')+';</script>\n'
|
||||||
homepg += '<script>var tempunit="'+str(gv.sd['tu'])+'";</script>\n'
|
homepg += '<script>var tempunit="'+str(gv.sd['tu'])+'";</script>\n'
|
||||||
if gv.sd['tu'] == "F":
|
## if gv.sd['tu'] == "F":
|
||||||
homepg += '<script>var cputemp='+str(9.0/5.0*int(float(CPU_temperature()))+32)+'; var tempunit="F";</script>\n'
|
## homepg += '<script>var cputemp='+str(9.0/5.0*int(float(CPU_temperature()))+32)+'; var tempunit="F";</script>\n'
|
||||||
else:
|
## else:
|
||||||
homepg += '<script>var cputemp='+str(float(CPU_temperature()))+'; var tempunit="C";</script>\n'
|
## homepg += '<script>var cputemp='+str(float(CPU_temperature()))+'; var tempunit="C";</script>\n'
|
||||||
homepg += '<script src=\"'+baseurl()+'/static/scripts/java/svc1.8.3/home.js\"></script>'
|
homepg += '<script src=\"'+baseurl()+'/static/scripts/java/svc1.8.3/home.js\"></script>'
|
||||||
return homepg
|
return homepg
|
||||||
|
|
||||||
|
@ -535,7 +535,7 @@ class change_values:
|
||||||
qdict['en'] = '1' #default
|
qdict['en'] = '1' #default
|
||||||
elif qdict.has_key('en') and qdict['en'] == '0':
|
elif qdict.has_key('en') and qdict['en'] == '0':
|
||||||
gv.srvals = [0]*(gv.sd['nst']) # turn off all stations
|
gv.srvals = [0]*(gv.sd['nst']) # turn off all stations
|
||||||
set_output()
|
## set_output()
|
||||||
if qdict.has_key('mm') and qdict['mm'] == '0': clear_mm() #self.clear_mm()
|
if qdict.has_key('mm') and qdict['mm'] == '0': clear_mm() #self.clear_mm()
|
||||||
if qdict.has_key('rd') and qdict['rd'] != '0':
|
if qdict.has_key('rd') and qdict['rd'] != '0':
|
||||||
gv.sd['rdst'] = (gv.now+(int(qdict['rd'])*3600))
|
gv.sd['rdst'] = (gv.now+(int(qdict['rd'])*3600))
|
||||||
|
@ -544,7 +544,7 @@ class change_values:
|
||||||
if qdict.has_key('rbt') and qdict['rbt'] == '1':
|
if qdict.has_key('rbt') and qdict['rbt'] == '1':
|
||||||
jsave(gv.sd, 'sd')
|
jsave(gv.sd, 'sd')
|
||||||
gv.srvals = [0]*(gv.sd['nst'])
|
gv.srvals = [0]*(gv.sd['nst'])
|
||||||
set_output()
|
## set_output()
|
||||||
os.system('reboot')
|
os.system('reboot')
|
||||||
raise web.seeother('/')
|
raise web.seeother('/')
|
||||||
for key in qdict.keys():
|
for key in qdict.keys():
|
||||||
|
|
Loading…
Reference in New Issue