diff --git a/SprinklerStudio/db/development.db b/SprinklerStudio/db/development.db index 8ad8cd2..011f0e8 100644 Binary files a/SprinklerStudio/db/development.db and b/SprinklerStudio/db/development.db differ diff --git a/SprinklerStudio/templates/index.html b/SprinklerStudio/templates/index.html index 55d74f4..fcbd9e1 100755 --- a/SprinklerStudio/templates/index.html +++ b/SprinklerStudio/templates/index.html @@ -13,7 +13,13 @@ {% if sprinkler.enabled %}

{{ sprinkler.name }}

-

Currently the sprinkler status is: {{sprinkler.status}}

+

+ Currently the sprinkler status is: {{sprinkler.status}}
+ {% if not sprinkler.status %}| Turn on | Turn on for 10 mins | + {% else %}| Turn Off | + {% endif %} +

+
{% endif %} {% endfor %} diff --git a/setup/templates/setup/index.html b/setup/templates/setup/index.html index 01a7091..76a68c5 100644 --- a/setup/templates/setup/index.html +++ b/setup/templates/setup/index.html @@ -4,10 +4,10 @@ diff --git a/sprinklers/SprinklerUtils.py b/sprinklers/SprinklerUtils.py new file mode 100644 index 0000000..01cedd7 --- /dev/null +++ b/sprinklers/SprinklerUtils.py @@ -0,0 +1,76 @@ +from django.core.cache import cache +import RPi.GPIO as GPIO +from sprinklers.model import Sprinkler +from sprinklers.model import LogEntry + +# NUMBER OF STATIONS +num_stations = 16 + +# GPIO PIN DEFINES + +pin_sr_clk = 4 +pin_sr_noe = 17 +pin_sr_dat = 21 # NOTE: if you have a RPi rev.2, need to change this to 27 +pin_sr_lat = 22 + +def get_sprinkler(sprinkler_id): + sprinkler_id = int(sprinkler_id) + try: + sprinkler = Sprinkler.objects.get(id=sprinkler_id) + except Sprinkler.DoesNotExist: + return None + return sprinkler + +def enableShiftRegisterOutput(): + GPIO.output(pin_sr_noe, False) + +def disableShiftRegisterOutput(): + GPIO.output(pin_sr_noe, True) + +def setShiftRegister(values): + GPIO.output(pin_sr_clk, False) + GPIO.output(pin_sr_lat, False) + for s in range(0,num_stations): + GPIO.output(pin_sr_clk, False) + GPIO.output(pin_sr_dat, values[num_stations-1-s]) + GPIO.output(pin_sr_clk, True) + GPIO.output(pin_sr_lat, True) + +def setup(): + values = [0]*num_stations + + GPIO.cleanup() + # setup GPIO pins to interface with shift register + GPIO.setmode(GPIO.BCM) + GPIO.setup(pin_sr_clk, GPIO.OUT) + GPIO.setup(pin_sr_noe, GPIO.OUT) + disableShiftRegisterOutput() + GPIO.setup(pin_sr_dat, GPIO.OUT) + GPIO.setup(pin_sr_lat, GPIO.OUT) + + setShiftRegister(values) + enableShiftRegisterOutput() + +def turn_on(sprinkler_id): + values = [0]*num_stations + sprinkler = get_sprinkler(sprinkler_id) + + #Check if sprinkler is already on + if sprinkler.status == True: return "Sprinkler already on" + sprinkler.status = True + + #loop through all sprinklers and set them appropriately + for tmpSprinkler in Sprinkler.objects.all(): + #Check for masters + if tmpSprinkler.IsMaster: + values[tmpSprinkler.id] = 1 + else: + values[tmpSprinkler.id] tmpSprinkler.status + #Perform update on the HW + setShiftRegister(values): + + #Insert the log entry + new_log = LogEntry(sprinkler_id=sprinkler.id) + new_log.save() + sprinkler.currentLog = new_log + sprinkler.save() \ No newline at end of file diff --git a/sprinklers/SprinklerUtils.pyc b/sprinklers/SprinklerUtils.pyc new file mode 100644 index 0000000..fe77e96 Binary files /dev/null and b/sprinklers/SprinklerUtils.pyc differ diff --git a/sprinklers/views.py b/sprinklers/views.py index d8ca4ce..9e7186f 100644 --- a/sprinklers/views.py +++ b/sprinklers/views.py @@ -5,19 +5,13 @@ from django.template import Context, loader from sprinklers.models import Sprinkler from sprinklers.models import LogEntry -def get_sprinkler(sprinkler_id): - sprinkler_id = int(sprinkler_id) - try: - sprinkler = Sprinkler.objects.get(id=sprinkler_id) - except Sprinkler.DoesNotExist: - return None - return sprinkler +#from sprinklers import SprinklerUtils def index(request): return HttpResponse("Hello, world. You're at the sprinkler index.") def detail(request, sprinkler_id): - tmp_sprinkler = get_sprinkler(sprinkler_id) + tmp_sprinkler = SprinklerUtils.get_sprinkler(sprinkler_id) log_entries = [] #Retrieve all the log entries for this sprinkler @@ -34,16 +28,7 @@ def detail(request, sprinkler_id): return HttpResponse(template.render(context)) def on(request, sprinkler_id): - sprinkler = get_sprinkler(sprinkler_id) - #Check if sprinkler is already on - if sprinkler.status == True: return HttpResponse("Sprinkler already on") - sprinkler.status = True - - #Insert the log entry - new_log = LogEntry(sprinkler_id=sprinkler.id) - new_log.save() - sprinkler.currentLog = new_log - sprinkler.save() + SprinklerUtils.turn_on(sprinkler_id) return HttpResponse("Turning sprinkler on") diff --git a/sprinklers/views.pyc b/sprinklers/views.pyc index cb18f4d..5c84ed1 100644 Binary files a/sprinklers/views.pyc and b/sprinklers/views.pyc differ