annotate service/environment/environment.py @ 0:6fd208b97616

start Ignore-this: e06ac598970a0d4750f588ab89f56996
author Drew Perttula <drewp@bigasterisk.com>
date Mon, 01 Aug 2011 03:30:30 -0700
parents
children 5c9927555df6
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1 #!/usr/bin/python
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
2 """
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
3 return some rdf about the environment, e.g. the current time,
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
4 daytime/night, overall modes like 'maintenance mode', etc
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
5
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
6 """
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
7 import sys, datetime, cyclone.web
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
8 from twisted.internet import reactor
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
9 from dateutil.tz import tzlocal
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
10 from rdflib import Namespace, Literal
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
11 sys.path.append("/my/site/magma")
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
12 from stategraph import StateGraph
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
13 sys.path.append("/my/proj/homeauto/lib")
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
14 from cycloneerr import PrettyErrorHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
15
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
16 ROOM = Namespace("http://projects.bigasterisk.com/room/")
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
17 DEV = Namespace("http://projects.bigasterisk.com/device/")
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
18
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
19 class Index(PrettyErrorHandler, cyclone.web.RequestHandler):
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
20 def get(self):
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
21 self.write('this is envgraph: <a href="graph">rdf</a>')
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
22
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
23 class GraphHandler(PrettyErrorHandler, cyclone.web.RequestHandler):
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
24 def get(self):
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
25 g = StateGraph(ROOM.environment)
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
26 now = datetime.datetime.now(tzlocal())
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
27
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
28 g.add((DEV.environment, ROOM.localHour, Literal(now.hour)))
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
29
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
30 self.set_header('Content-type', 'application/x-trig')
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
31 self.write(g.asTrig())
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
32
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
33 class Application(cyclone.web.Application):
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
34 def __init__(self):
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
35 handlers = [
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
36 (r"/", Index),
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
37 (r'/graph', GraphHandler),
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
38 ]
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
39 cyclone.web.Application.__init__(self, handlers)
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
40
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
41 if __name__ == '__main__':
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
42 reactor.listenTCP(9075, Application())
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
43 reactor.run()