comparison service/arduinoNode/arduinoNode.py @ 218:f8ffb9d8d982

multi-boards on one service, new devices, devices return their current Ignore-this: e214852bca67519e79f9ddb3644576e1 values in the graph, jsonld support, multiple temp sensors on OW bus
author drewp@bigasterisk.com
date Sun, 03 Jan 2016 02:29:14 -0800
parents 254d656af72e
children e606f1d89d89
comparison
equal deleted inserted replaced
217:163cfa384372 218:f8ffb9d8d982
131 for group in self._statementsFromInputs.values(): 131 for group in self._statementsFromInputs.values():
132 for stmt in group: 132 for stmt in group:
133 if stmt[0] == s and stmt[1] in graphitePredicates: 133 if stmt[0] == s and stmt[1] in graphitePredicates:
134 self._carbon.send(graphiteName, stmt[2].toPython(), now) 134 self._carbon.send(graphiteName, stmt[2].toPython(), now)
135 135
136
137 def currentGraph(self): 136 def currentGraph(self):
138 g = Graph() 137 g = Graph()
139 138
140 g.add((HOST[socket.gethostname()], ROOM['connectedTo'], self.uri)) 139 g.add((HOST[socket.gethostname()], ROOM['connectedTo'], self.uri))
141 140
142 for si in self._statementsFromInputs.values(): 141 for si in self._statementsFromInputs.values():
143 for s in si: 142 for s in si:
144 g.add(s) 143 g.add(s)
144 for dev in self._devs:
145 for stmt in dev.hostStatements():
146 g.add(stmt)
145 return g 147 return g
146 148
147 def outputStatements(self, stmts): 149 def outputStatements(self, stmts):
148 unused = set(stmts) 150 unused = set(stmts)
149 for dev in self._devs: 151 for dev in self._devs:
163 raise ValueError( 165 raise ValueError(
164 "%s sendOutput/generateActionCode didn't use " 166 "%s sendOutput/generateActionCode didn't use "
165 "matching output bytes" % dev.__class__) 167 "matching output bytes" % dev.__class__)
166 log.info("success") 168 log.info("success")
167 if unused: 169 if unused:
168 log.warn("No devices cared about these statements:") 170 log.info("Board %s doesn't care about these statements:", self.uri)
169 for s in unused: 171 for s in unused:
170 log.warn(repr(s)) 172 log.info("%r", s)
171 173
172 def generateArduinoCode(self): 174 def generateArduinoCode(self):
173 generated = { 175 generated = {
174 'baudrate': self.baudrate, 176 'baudrate': self.baudrate,
175 'includes': '', 177 'includes': '',
341 g.add(stmt) 343 g.add(stmt)
342 344
343 if self.get_argument('config', 'no') == 'yes': 345 if self.get_argument('config', 'no') == 'yes':
344 for stmt in self.settings.config.graph: 346 for stmt in self.settings.config.graph:
345 g.add(stmt) 347 g.add(stmt)
346 348
349 if self.request.headers.get('accept') == 'application/ld+json':
350 self.set_header('Content-type', 'application/ld+json')
351 self.write(g.asJsonLd())
352 return
353
347 self.set_header('Content-type', 'application/x-trig') 354 self.set_header('Content-type', 'application/x-trig')
348 self.write(g.asTrig()) 355 self.write(g.asTrig())
349 356
350 class Dot(cyclone.web.RequestHandler): 357 class Dot(cyclone.web.RequestHandler):
351 def get(self): 358 def get(self):
355 362
356 class ArduinoCode(cyclone.web.RequestHandler): 363 class ArduinoCode(cyclone.web.RequestHandler):
357 def get(self): 364 def get(self):
358 board = [b for b in self.settings.boards if 365 board = [b for b in self.settings.boards if
359 b.uri == URIRef(self.get_argument('board'))][0] 366 b.uri == URIRef(self.get_argument('board'))][0]
360 self.set_header('Content-type', 'text/plain') 367 self.set_header('Content-Type', 'text/plain')
361 code, cksum = board.generateArduinoCode() 368 code, cksum = board.generateArduinoCode()
362 self.write(code) 369 self.write(code)
363 370
364 def rdfGraphBody(body, headers): 371 def rdfGraphBody(body, headers):
365 g = Graph() 372 g = Graph()
400 log.info('find connected boards') 407 log.info('find connected boards')
401 return glob.glob('/dev/serial/by-id/*') 408 return glob.glob('/dev/serial/by-id/*')
402 409
403 def main(): 410 def main():
404 arg = docopt(""" 411 arg = docopt("""
405 Usage: reasoning.py [options] 412 Usage: arduinoNode.py [options]
406 413
407 -v Verbose 414 -v Verbose
408 """) 415 """)
409 log.setLevel(logging.WARN) 416 log.setLevel(logging.WARN)
410 if arg['-v']: 417 if arg['-v']:
426 continue 433 continue
427 log.info("we have board %s connected at %s" % (board, dev)) 434 log.info("we have board %s connected at %s" % (board, dev))
428 b = Board(dev, config.graph, board, onChange) 435 b = Board(dev, config.graph, board, onChange)
429 boards.append(b) 436 boards.append(b)
430 437
431 boards[0].deployToArduino() 438 for b in boards:
439 b.deployToArduino()
432 440
433 log.info('open boards') 441 log.info('open boards')
434 for b in boards: 442 for b in boards:
435 b.startPolling() 443 b.startPolling()
436 444