annotate service/tradfri/tradfri.py @ 1427:6bd36e5e109f

whitespace Ignore-this: 8abcbd0552c4356db0073b464fc3816a darcs-hash:2917f14b52fb149530a2369486ca9876cb0d334a
author drewp <drewp@bigasterisk.com>
date Thu, 08 Aug 2019 16:48:40 -0700
parents d9c2b59e760d
children a93fbf0d0daa
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1163
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
1 from __future__ import division
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
2 import sys, logging, socket, json, time, os, traceback
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
3 import cyclone.web
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
4 from cyclone.httpclient import fetch
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
5 from rdflib import Namespace, URIRef, Literal, Graph, RDF, RDFS, ConjunctiveGraph
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
6 from rdflib.parser import StringInputSource
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
7 from twisted.internet import reactor, task
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
8 from docopt import docopt
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
9 import logging
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
10 logging.basicConfig(level=logging.DEBUG)
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
11 sys.path.append("/opt")
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
12 from patchablegraph import PatchableGraph, CycloneGraphHandler, CycloneGraphEventsHandler
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
13 from rdfdb.rdflibpatch import inContext
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
14 from rdfdb.patch import Patch
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
15 from dateutil.tz import tzlocal, tzutc
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
16 import private
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
17
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
18 sys.path.append('pytradfri')
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
19 from pytradfri import Gateway
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
20 from pytradfri.api.libcoap_api import APIFactory
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
21 from pytradfri.const import ATTR_LIGHT_STATE, ATTR_LIGHT_DIMMER
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
22
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
23 ROOM = Namespace('http://projects.bigasterisk.com/room/')
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
24 IKEADEV = Namespace('http://bigasterisk.com/ikeaDevice/')
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
25 log = logging.getLogger()
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
26
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
27 def devUri(dev):
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
28 name = dev.name if dev.name else dev.id
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
29 return IKEADEV['_'.join(w.lower() for w in name.split())]
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
30
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
31 class Hub(object):
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
32 def __init__(self, graph, ip, key):
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
33 self.graph = graph
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
34 self.ip, self.key = ip, key
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
35 self.api = APIFactory(ip, psk=key)
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
36 self.gateway = Gateway()
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
37
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
38 devices_command = self.gateway.get_devices()
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
39 self.devices_commands = self.api.request(devices_command)
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
40 self.devices = self.api.request(self.devices_commands)
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
41
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
42 self.ctx = ROOM['tradfriHub']
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
43 self.graph.patch(Patch(
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
44 addQuads=[(s,p,o,self.ctx) for s,p,o in self.deviceStatements()]))
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
45
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
46 self.curStmts = []
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
47
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
48 task.LoopingCall(self.updateCur).start(60)
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
49 for dev in self.devices:
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
50 self.startObserve(dev)
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
51
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
52 def startObserve(self, dev):
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
53 def onUpdate(dev):
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
54 reactor.callFromThread(self.updateCur, dev)
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
55 def onErr(err):
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
56 log.warn('%r; restart observe on %r', err, dev)
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
57 reactor.callLater(1, self.startObserve, dev)
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
58 reactor.callInThread(self.api.request, dev.observe(onUpdate, onErr))
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
59
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
60 def description(self):
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
61 return {
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
62 'uri': 'huburi',
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
63 'devices': [{
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
64 'uri': devUri(dev),
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
65 'className': self.__class__.__name__,
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
66 'pinNumber': None,
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
67 'outputPatterns': [(devUri(dev), ROOM['brightness'], None)],
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
68 'watchPrefixes': [],
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
69 'outputWidgets': [{
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
70 'element': 'output-slider',
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
71 'min': 0, 'max': 1, 'step': 1 / 255,
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
72 'subj': devUri(dev),
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
73 'pred': ROOM['brightness'],
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
74 }] * dev.has_light_control,
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
75 } for dev in self.devices],
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
76 'graph': 'http://sticker:9059/graph', #todo
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
77 }
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
78
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
79 def updateCur(self, dev=None):
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
80 cur = [(s,p,o,self.ctx) for s,p,o in
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
81 self.currentStateStatements([dev] if dev else self.devices)]
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
82 self.graph.patch(Patch(addQuads=cur, delQuads=self.curStmts))
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
83 self.curStmts = cur
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
84
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
85 def deviceStatements(self):
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
86 for dev in self.devices:
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
87 uri = devUri(dev)
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
88 yield (uri, RDF.type, ROOM['IkeaDevice'])
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
89 yield (uri, ROOM['ikeaId'], Literal(dev.id))
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
90 if dev.last_seen:
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
91 utcSeen = dev.last_seen
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
92 yield (uri, ROOM['lastSeen'],
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
93 Literal(utcSeen.replace(tzinfo=tzutc()).astimezone(tzlocal())))
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
94 yield (uri, ROOM['reachable'], ROOM['yes'] if dev.reachable else ROOM['no'])
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
95 yield (uri, RDFS.label, Literal(dev.name))
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
96 # no connection between remotes and lights?
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
97
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
98 def currentStateStatements(self, devs):
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
99 for dev in self.devices: # could scan just devs, but the Patch line needs a fix
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
100 uri = devUri(dev)
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
101 di = dev.device_info
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
102 if di.battery_level is not None:
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
103 yield (uri, ROOM['batteryLevel'], Literal(di.battery_level / 100))
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
104 if dev.has_light_control:
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
105 lc = dev.light_control
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
106 #import ipdb;ipdb.set_trace()
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
107
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
108 lightUri = devUri(dev)
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
109 print lc.raw
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
110 if not lc.raw[0][ATTR_LIGHT_STATE]:
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
111 level = 0
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
112 else:
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
113 level = lc.raw[0][ATTR_LIGHT_DIMMER] / 255
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
114 yield (lightUri, ROOM['brightness'], Literal(level))
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
115 #if light.hex_color:
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
116 # yield (lightUri, ROOM['kelvinColor'], Literal(light.kelvin_color))
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
117 # yield (lightUri, ROOM['color'], Literal('#%s' % light.hex_color))
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
118
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
119
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
120 def outputStatements(self, stmts):
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
121 for stmt in stmts:
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
122 for dev in self.devices:
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
123 uri = devUri(dev)
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
124 if stmt[0] == uri:
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
125 if stmt[1] == ROOM['brightness']:
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
126 try:
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
127 self.api.request(dev.light_control.set_dimmer(
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
128 int(255 * float(stmt[2])), transition_time=3))
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
129 except:
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
130 traceback.print_exc()
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
131 raise
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
132 self.updateCur()
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
133
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
134 class OutputPage(cyclone.web.RequestHandler):
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
135 def put(self):
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
136 arg = self.request.arguments
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
137 if arg.get('s') and arg.get('p'):
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
138 subj = URIRef(arg['s'][-1])
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
139 pred = URIRef(arg['p'][-1])
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
140 turtleLiteral = self.request.body
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
141 try:
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
142 obj = Literal(float(turtleLiteral))
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
143 except ValueError:
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
144 obj = Literal(turtleLiteral)
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
145 stmt = (subj, pred, obj)
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
146 else:
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
147 g = rdfGraphBody(self.request.body, self.request.headers)
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
148 assert len(g) == 1, len(g)
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
149 stmt = g.triples((None, None, None)).next()
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
150
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
151 self.settings.hub.outputStatements([stmt])
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
152
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
153 hostname = socket.gethostname()
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
154
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
155 class Boards(cyclone.web.RequestHandler):
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
156 def get(self):
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
157 self.set_header('Content-type', 'application/json')
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
158 self.write(json.dumps({
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
159 'host': hostname,
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
160 'boards': [self.settings.hub.description()]
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
161 }, indent=2))
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
162
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
163 def main():
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
164 arg = docopt("""
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
165 Usage: tradfri.py [options]
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
166
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
167 -v Verbose
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
168 """)
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
169 log.setLevel(logging.WARN)
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
170 if arg['-v']:
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
171 from twisted.python import log as twlog
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
172 twlog.startLogging(sys.stdout)
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
173 log.setLevel(logging.DEBUG)
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
174
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
175 masterGraph = PatchableGraph()
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
176 hub = Hub(masterGraph, private.hubAddr, key=private.hubKey)
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
177
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
178 reactor.listenTCP(10009, cyclone.web.Application([
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
179 (r"/()", cyclone.web.StaticFileHandler, {
1169
d9c2b59e760d include UI files in docker image
drewp <drewp@bigasterisk.com>
parents: 1163
diff changeset
180 "path": "/opt/static", "default_filename": "index.html"}),
d9c2b59e760d include UI files in docker image
drewp <drewp@bigasterisk.com>
parents: 1163
diff changeset
181 (r'/static/(.*)', cyclone.web.StaticFileHandler, {"path": "/opt/static"}),
1163
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
182 (r'/boards', Boards),
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
183 (r"/graph", CycloneGraphHandler, {'masterGraph': masterGraph}),
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
184 (r"/graph/events", CycloneGraphEventsHandler, {'masterGraph': masterGraph}),
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
185 (r'/output', OutputPage),
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
186 ], hub=hub, debug=arg['-v']), interface='::')
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
187 log.warn('serving on 10009')
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
188 reactor.run()
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
189
fa55bc09b396 tradfri docker update
drewp <drewp@bigasterisk.com>
parents:
diff changeset
190 main()