Mercurial > code > home > repos > homeauto
diff service/garageArduino/garageArduino.py @ 5:4c44c80a6a72
move garage door opener from parport to arduino
Ignore-this: c7d21f40841af0e64b26dd4991e441ae
author | drewp@bigasterisk.com |
---|---|
date | Sun, 14 Aug 2011 21:46:57 -0700 |
parents | be855a111619 |
children | 33e6678d76ab |
line wrap: on
line diff
--- a/service/garageArduino/garageArduino.py Mon Aug 08 00:31:31 2011 -0700 +++ b/service/garageArduino/garageArduino.py Sun Aug 14 21:46:57 2011 -0700 @@ -5,19 +5,20 @@ from __future__ import division -import cyclone.web, json, traceback, os, sys, time -from twisted.python import log -from twisted.internet import reactor, task +import cyclone.web, json, traceback, os, sys, time, logging +from twisted.internet import reactor, task, defer from twisted.web.client import getPage sys.path.append("/my/proj/house/frontdoor") from loggingserial import LoggingSerial +sys.path.append("/my/proj/homeauto/lib") +from cycloneerr import PrettyErrorHandler +from logsetup import log sys.path.append("../../../room") from carbondata import CarbonClient sys.path.append("/my/site/magma") from stategraph import StateGraph from rdflib import Namespace, RDF, Literal -sys.path.append("/my/proj/homeauto/lib") -from cycloneerr import PrettyErrorHandler + ROOM = Namespace("http://projects.bigasterisk.com/room/") DEV = Namespace("http://projects.bigasterisk.com/device/") @@ -46,6 +47,11 @@ self.ser.write("\x60\x03"+chr(max(1 << 2, t) >> 2)) return self.ser.readJson()['threshold'] + def setGarage(self, level): + """set garage door opener pin""" + self.ser.write("\x60\x04"+chr(int(bool(level)))) + return self.ser.readJson()['garage'] + class Index(PrettyErrorHandler, cyclone.web.RequestHandler): def get(self): @@ -112,6 +118,19 @@ def put(self): pass +class GarageDoorOpen(PrettyErrorHandler, cyclone.web.RequestHandler): + def post(self): + self.set_header("Content-Type", "text/plain") + self.settings.arduino.setGarage(True) + self.write("pin high, waiting..\n") + self.flush() + d = defer.Deferred() + def finish(): + self.settings.arduino.setGarage(False) + self.write("pin low. Done") + d.callback(None) + reactor.callLater(1.5, finish) # this time depends on the LP circuit + return d class Application(cyclone.web.Application): def __init__(self, ard, poller): @@ -122,6 +141,7 @@ (r'/housePower', HousePower), (r'/housePower/raw', HousePowerRaw), (r'/housePower/threshold', HousePowerThreshold), + (r'/garageDoorOpen', GarageDoorOpen), ] settings = {"arduino" : ard, "poller" : poller} cyclone.web.Application.__init__(self, handlers, **settings) @@ -220,7 +240,10 @@ 'boardName' : 'garage', # gets sent with updates } - #log.startLogging(sys.stdout) + #from twisted.python import log as twlog + #twlog.startLogging(sys.stdout) + + log.setLevel(logging.DEBUG) ard = ArduinoGarage()