annotate bin/patchserver @ 2120:0745923e912f

2022 music fixes
author drewp@bigasterisk.com
date Thu, 02 Jun 2022 23:21:25 -0700
parents 9aa046cc9b33
children
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
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
16 from cycloneerr import PrettyErrorHandler
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
17
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
18 from light9.namespaces import L9, RDF
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
19 from light9 import networking, showconfig
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
20 from rdfdb.syncedgraph import SyncedGraph
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
21
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
22 from light9.effect.settings import DeviceSettings
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
23 from rdfdb.patch import Patch
2046
9aa046cc9b33 replace greplin with prometheus throughout (untested)
drewp@bigasterisk.com
parents: 1998
diff changeset
24 from light9.metrics import metrics, metricsRoute
1979
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
25
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
26
1998
3d28b1a54a29 reformat
drewp@bigasterisk.com
parents: 1979
diff changeset
27
1979
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
28 def launch(graph):
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
29 if 0:
1998
3d28b1a54a29 reformat
drewp@bigasterisk.com
parents: 1979
diff changeset
30 reactor.listenTCP(
3d28b1a54a29 reformat
drewp@bigasterisk.com
parents: 1979
diff changeset
31 networking.captureDevice.port,
3d28b1a54a29 reformat
drewp@bigasterisk.com
parents: 1979
diff changeset
32 cyclone.web.Application(handlers=[
3d28b1a54a29 reformat
drewp@bigasterisk.com
parents: 1979
diff changeset
33 (r'/()', cyclone.web.StaticFileHandler, {
3d28b1a54a29 reformat
drewp@bigasterisk.com
parents: 1979
diff changeset
34 "path": "light9/web",
3d28b1a54a29 reformat
drewp@bigasterisk.com
parents: 1979
diff changeset
35 "default_filename": "patchServer.html"
3d28b1a54a29 reformat
drewp@bigasterisk.com
parents: 1979
diff changeset
36 }),
2046
9aa046cc9b33 replace greplin with prometheus throughout (untested)
drewp@bigasterisk.com
parents: 1998
diff changeset
37 metricsRoute(),
1998
3d28b1a54a29 reformat
drewp@bigasterisk.com
parents: 1979
diff changeset
38 ]),
3d28b1a54a29 reformat
drewp@bigasterisk.com
parents: 1979
diff changeset
39 interface='::',
3d28b1a54a29 reformat
drewp@bigasterisk.com
parents: 1979
diff changeset
40 )
1979
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
41 log.info('serving http on %s', networking.captureDevice.port)
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
42
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
43 def prn():
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
44 width = {}
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
45 for dc in graph.subjects(RDF.type, L9['DeviceClass']):
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
46 for attr in graph.objects(dc, L9['attr']):
1998
3d28b1a54a29 reformat
drewp@bigasterisk.com
parents: 1979
diff changeset
47 width[dc] = max(
3d28b1a54a29 reformat
drewp@bigasterisk.com
parents: 1979
diff changeset
48 width.get(dc, 0),
3d28b1a54a29 reformat
drewp@bigasterisk.com
parents: 1979
diff changeset
49 graph.value(attr, L9['dmxOffset']).toPython() + 1)
3d28b1a54a29 reformat
drewp@bigasterisk.com
parents: 1979
diff changeset
50
3d28b1a54a29 reformat
drewp@bigasterisk.com
parents: 1979
diff changeset
51 user = {} # chan: [dev]
1979
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
52 for dev in set(graph.subjects(L9['dmxBase'], None)):
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
53 dc = graph.value(dev, RDF.type)
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
54 base = graph.value(dev, L9['dmxBase']).toPython()
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
55 for offset in range(0, width[dc]):
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
56 chan = base + offset
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
57 user.setdefault(chan, []).append(dev)
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
58
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
59 for chan in range(1, max(user) + 1):
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
60 dev = user.get(chan, None)
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
61 print(f'chan {chan} used by {dev}')
1998
3d28b1a54a29 reformat
drewp@bigasterisk.com
parents: 1979
diff changeset
62
1979
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
63 graph.addHandler(prn)
1998
3d28b1a54a29 reformat
drewp@bigasterisk.com
parents: 1979
diff changeset
64
3d28b1a54a29 reformat
drewp@bigasterisk.com
parents: 1979
diff changeset
65
1979
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
66 def main():
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
67 parser = optparse.OptionParser()
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
68 parser.add_option("-v",
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
69 "--verbose",
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
70 action="store_true",
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
71 help="logging.DEBUG")
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
72 (options, args) = parser.parse_args()
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
73 log.setLevel(logging.DEBUG if options.verbose else logging.INFO)
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
74
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
75 graph = SyncedGraph(networking.rdfdb.url, "captureDevice")
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
76
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
77 graph.initiallySynced.addCallback(lambda _: launch(graph)).addErrback(
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
78 log.error)
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
79 reactor.run()
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
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
82 if __name__ == '__main__':
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
83 main()