Mercurial > code > home > repos > light9
view light9/dmxclient.py @ 943:3aae87f6777a
vidref grab images for snapshots even if a song is not playing
Ignore-this: 81b9b8c86a6326be3dd5a7d900f16a1b
author | drewp@bigasterisk.com |
---|---|
date | Thu, 13 Jun 2013 01:44:05 +0000 |
parents | ae359590eb8a |
children | b5ee7aa9341a |
line wrap: on
line source
""" module for clients to use for easy talking to the dmx server. sending levels is now a simple call to dmxclient.outputlevels(..) client id is formed from sys.argv[0] and the PID. """ import xmlrpclib, os, sys, socket, time, logging from light9 import networking _dmx=None log = logging.getLogger('dmxclient') procname = os.path.basename(sys.argv[0]) procname = procname.replace('.py', '') _id = "%s-%s-%s" % (procname, socket.gethostname(), os.getpid()) def outputlevels(levellist,twisted=0,clientid=_id): """present a list of dmx channel levels, each scaled from 0..1. list can be any length- it will apply to the first len() dmx channels. if the server is not found, outputlevels will block for a second.""" global _dmx, _id if _dmx is None: url = networking.dmxServer.url if not twisted: _dmx = xmlrpclib.Server(url) else: from twisted.web.xmlrpc import Proxy _dmx = Proxy(url) if not twisted: try: _dmx.outputlevels(clientid, levellist) except socket.error, e: log.error("dmx server error %s, waiting" % e) time.sleep(1) except xmlrpclib.Fault,e: log.error("outputlevels had xml fault: %s" % e) time.sleep(1) else: def err(error): log.error("dmx server error talking to %s: %s", networking.dmxServer.url, error.getErrorMessage()) time.sleep(1) d = _dmx.callRemote('outputlevels', clientid, levellist) d.addErrback(err) dummy = os.getenv('DMXDUMMY') if dummy: print "dmxclient: DMX is in dummy mode." def outputlevels(*args, **kw): pass