comparison bin/captureDevice @ 1585:17da56a3c8df

group device captures into sessions, limit solver to specific ones Ignore-this: b91d858ebb435973b9742bed00567ffd
author Drew Perttula <drewp@bigasterisk.com>
date Tue, 30 May 2017 08:37:25 +0000
parents 2239d5648932
children 9fe3052f8ced
comparison
equal deleted inserted replaced
1584:2239d5648932 1585:17da56a3c8df
13 from greplin import scales 13 from greplin import scales
14 14
15 from run_local import log 15 from run_local import log
16 from lib.cycloneerr import PrettyErrorHandler 16 from lib.cycloneerr import PrettyErrorHandler
17 17
18 from light9.namespaces import L9 18 from light9.namespaces import L9, RDF
19 from light9 import networking, showconfig 19 from light9 import networking, showconfig
20 from light9.rdfdb.syncedgraph import SyncedGraph 20 from light9.rdfdb.syncedgraph import SyncedGraph
21 from light9.paint.capture import writeCaptureDescription 21 from light9.paint.capture import writeCaptureDescription
22 from light9.greplin_cyclone import StatsForCyclone 22 from light9.greplin_cyclone import StatsForCyclone
23 from light9.effect.settings import DeviceSettings 23 from light9.effect.settings import DeviceSettings
24 from light9.effect.sequencer import sendToCollector 24 from light9.effect.sequencer import sendToCollector
25 from light9.rdfdb.patch import Patch
25 26
26 stats = scales.collection('/webServer', scales.PmfStat('setAttr')) 27 stats = scales.collection('/webServer', scales.PmfStat('setAttr'))
27
28 28
29 class Camera(object): 29 class Camera(object):
30 def __init__(self, imageUrl): 30 def __init__(self, imageUrl):
31 self.imageUrl = imageUrl 31 self.imageUrl = imageUrl
32 32
33 def takePic(self, uri, writePath): 33 def takePic(self, uri, writePath):
34 log.info('takePic %s', uri) 34 log.info('takePic %s', uri)
35 return treq.get(self.imageUrl).addCallbacks(lambda r: self._done(writePath, r), 35 return treq.get(self.imageUrl).addCallbacks(
36 log.error) 36 lambda r: self._done(writePath, r), log.error)
37 37
38 @inlineCallbacks 38 @inlineCallbacks
39 def _done(self, writePath, response): 39 def _done(self, writePath, response):
40 jpg = yield response.content() 40 jpg = yield response.content()
41 try: 41 try:
54 class Capture(object): 54 class Capture(object):
55 firstMoveTime = 3 55 firstMoveTime = 3
56 settleTime = .5 56 settleTime = .5
57 def __init__(self, graph, dev): 57 def __init__(self, graph, dev):
58 self.graph = graph 58 self.graph = graph
59 self.dev = dev
59 60
60 def steps(a, b, n): 61 def steps(a, b, n):
61 return [round(a + (b - a) * i / n, 5) for i in range(n)] 62 return [round(a + (b - a) * i / n, 5) for i in range(n)]
62 63
63 startTime = time.time() 64 startTime = time.time()
75 (dev, L9['rx'], rx), 76 (dev, L9['rx'], rx),
76 (dev, L9['ry'], ry), 77 (dev, L9['ry'], ry),
77 (dev, L9['color'], '#ffffff'), 78 (dev, L9['color'], '#ffffff'),
78 ])) 79 ]))
79 80
81 self.devTail = dev.rsplit('/')[-1]
82 self.session = URIRef('/'.join([showconfig.showUri(),
83 'capture', self.devTail, self.captureId]))
84 self.ctx = URIRef(self.session + '/index')
85
86 self.graph.patch(Patch(addQuads=[
87 (self.session, RDF.type, L9['CaptureSession'], self.ctx),
88 ]))
89
80 self.numPics = 0 90 self.numPics = 0
81 self.settingsCache = set() 91 self.settingsCache = set()
82 self.step().addErrback(log.error) 92 self.step().addErrback(log.error)
83 93
84 def off(self): 94 def off(self):
99 settings=settings) 109 settings=settings)
100 110
101 yield deferSleep(self.firstMoveTime if self.numPics == 0 else 111 yield deferSleep(self.firstMoveTime if self.numPics == 0 else
102 self.settleTime) 112 self.settleTime)
103 113
104 dev = settings.devices()[0]
105 devTail = dev.rsplit('/')[-1]
106 picId = 'pic%s' % self.numPics 114 picId = 'pic%s' % self.numPics
107 path = '/'.join(['capture', devTail, self.captureId, picId]) + '.jpg' 115 path = '/'.join([
108 ctx = URIRef('/'.join([showconfig.showUri(), 116 'capture', self.devTail, self.captureId, picId]) + '.jpg'
109 'capture', devTail, self.captureId, 'index'])) 117 uri = URIRef(self.session + '/' + picId)
110 uri = URIRef('/'.join([showconfig.showUri(),
111 'capture', devTail, self.captureId, picId]))
112 118
113 yield camera.takePic(uri, os.path.join(showconfig.root(), path)) 119 yield camera.takePic(uri, os.path.join(showconfig.root(), path))
114 self.numPics += 1 120 self.numPics += 1
115 121
116 writeCaptureDescription(self.graph, ctx, uri, dev, path, 122 writeCaptureDescription(self.graph, self.ctx, self.session, uri,
117 self.settingsCache, settings) 123 self.dev,
124 path, self.settingsCache, settings)
118 125
119 reactor.callLater(0, self.step) 126 reactor.callLater(0, self.step)
120 127
121 128
122 129