summaryrefslogtreecommitdiff
path: root/interface/ola.py
diff options
context:
space:
mode:
Diffstat (limited to 'interface/ola.py')
-rw-r--r--interface/ola.py22
1 files changed, 22 insertions, 0 deletions
diff --git a/interface/ola.py b/interface/ola.py
new file mode 100644
index 0000000..445b991
--- /dev/null
+++ b/interface/ola.py
@@ -0,0 +1,22 @@
+import array
+
+from ola.OlaClient import OlaClient
+
+class OLAOutput:
+ def set_values(self, values):
+ send = set()
+ for c, v in values.items():
+ univ, addr = c.address
+ if univ not in self.universes:
+ self.universes[univ] = array.array('B', (0 for i in range(512)))
+ uni = self.universes[univ]
+ if uni[addr] != v:
+ uni[addr] = v
+ send.add(univ)
+ for univ in send:
+ self.client.SendDmx(univ, self.universes[univ])
+
+ def __init__(self):
+ self.client = OlaClient()
+
+ self.universes = {1: array.array('B', (0 for i in range(512)))}