annotate bin/patchserver @ 1993:a322fba0035c

tintable cyc effect Ignore-this: 61408125389e6146f5835d56a26df07a
author Drew Perttula <drewp@bigasterisk.com>
date Sun, 09 Jun 2019 18:31:47 +0000
parents 19eef99e059e
children 3d28b1a54a29
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1979
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
1 #!bin/python
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
2
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
3 from run_local import log
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
4
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
5 from rdflib import URIRef
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
6 from twisted.internet import reactor
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
7 from twisted.internet.defer import inlineCallbacks, Deferred
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
8
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
9 import logging
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
10 import optparse
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
11 import os
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
12 import time
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
13 import treq
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
14 import cyclone.web, cyclone.websocket, cyclone.httpclient
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
15 from greplin import scales
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
16
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
17 from cycloneerr import PrettyErrorHandler
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
18
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
19 from light9.namespaces import L9, RDF
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
20 from light9 import networking, showconfig
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
21 from rdfdb.syncedgraph import SyncedGraph
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
22
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
23 from greplin.scales.cyclonehandler import StatsHandler
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
24 from light9.effect.settings import DeviceSettings
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
25 from rdfdb.patch import Patch
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
26
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
27 stats = scales.collection('/webServer', scales.PmfStat('setAttr',
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
28 recalcPeriod=1))
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
29
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
30 def launch(graph):
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
31 if 0:
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
32 reactor.listenTCP(networking.captureDevice.port,
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
33 cyclone.web.Application(handlers=[
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
34 (r'/()', cyclone.web.StaticFileHandler, {
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
35 "path": "light9/web",
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
36 "default_filename": "patchServer.html"
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
37 }),
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
38 (r'/stats/(.*)', StatsHandler, {
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
39 'serverName': 'patchServer'
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
40 }),
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
41 ]),
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
42 interface='::',
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
43 )
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
44 log.info('serving http on %s', networking.captureDevice.port)
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
45
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
46 def prn():
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
47 width = {}
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
48 for dc in graph.subjects(RDF.type, L9['DeviceClass']):
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
49 for attr in graph.objects(dc, L9['attr']):
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
50 width[dc] = max(width.get(dc, 0), graph.value(attr, L9['dmxOffset']).toPython() + 1)
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
51
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
52 user = {} # chan: [dev]
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
53 for dev in set(graph.subjects(L9['dmxBase'], None)):
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
54 dc = graph.value(dev, RDF.type)
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
55 base = graph.value(dev, L9['dmxBase']).toPython()
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
56 for offset in range(0, width[dc]):
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
57 chan = base + offset
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
58 user.setdefault(chan, []).append(dev)
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
59
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
60 for chan in range(1, max(user) + 1):
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
61 dev = user.get(chan, None)
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
62 print(f'chan {chan} used by {dev}')
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
63 graph.addHandler(prn)
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
64
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
65 def main():
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
66 parser = optparse.OptionParser()
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
67 parser.add_option("-v",
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
68 "--verbose",
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
69 action="store_true",
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
70 help="logging.DEBUG")
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
71 (options, args) = parser.parse_args()
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
72 log.setLevel(logging.DEBUG if options.verbose else logging.INFO)
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
73
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
74 graph = SyncedGraph(networking.rdfdb.url, "captureDevice")
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
75
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
76 graph.initiallySynced.addCallback(lambda _: launch(graph)).addErrback(
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
77 log.error)
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
78 reactor.run()
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
79
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
80
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
81 if __name__ == '__main__':
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
82 main()