Basic DMX data structure
This commit is contained in:
parent
71499e4e96
commit
b3da4aaaf3
55
aquadmx.py
55
aquadmx.py
@ -1,4 +1,5 @@
|
|||||||
import configparser
|
import configparser
|
||||||
|
from enum import Enum
|
||||||
import time
|
import time
|
||||||
import os
|
import os
|
||||||
|
|
||||||
@ -7,6 +8,7 @@ from stupidArtnet import StupidArtnetServer
|
|||||||
from homeassistant_api import Processing, Client
|
from homeassistant_api import Processing, Client
|
||||||
from homeassistant_api.processing import process_json
|
from homeassistant_api.processing import process_json
|
||||||
|
|
||||||
|
# DMX callback for changes to the universe.
|
||||||
def dmx_callback(data):
|
def dmx_callback(data):
|
||||||
light.turn_on(entity_id='light.christian_s_bedroom_left_desk_lamp',
|
light.turn_on(entity_id='light.christian_s_bedroom_left_desk_lamp',
|
||||||
brightness=data[0],
|
brightness=data[0],
|
||||||
@ -17,15 +19,50 @@ def dmx_callback(data):
|
|||||||
transition=0,
|
transition=0,
|
||||||
rgb_color=[data[5], data[6], data[7]])
|
rgb_color=[data[5], data[6], data[7]])
|
||||||
|
|
||||||
def configList(key):
|
#
|
||||||
return [i.strip(' ') for i in config['Lights'][key].split(',')]
|
def configList(config, key):
|
||||||
|
return [i.strip(' ') for i in config[key].split('\n')]
|
||||||
|
|
||||||
|
# Returns a list of config items.
|
||||||
def configOptionalList(config, key):
|
def configOptionalList(config, key):
|
||||||
if 'dimmer' in config:
|
if key in config:
|
||||||
return configList('dimmer')
|
return configList(config, key)
|
||||||
else:
|
else:
|
||||||
return []
|
return []
|
||||||
|
|
||||||
|
class LightType(Enum):
|
||||||
|
DIMMER = 1
|
||||||
|
RGB = 2
|
||||||
|
|
||||||
|
class DMXDevice(object):
|
||||||
|
startChannel = 0
|
||||||
|
def __init__(self, deviceID, lightType):
|
||||||
|
self.deviceID = deviceID
|
||||||
|
self.lightType = lightType
|
||||||
|
if lightType is LightType.DIMMER:
|
||||||
|
self.numChannels = 1
|
||||||
|
elif lightType is LightType.RGB:
|
||||||
|
self.numChannels = 4
|
||||||
|
def getNumChannels(self):
|
||||||
|
return self.numChannels
|
||||||
|
def setStartChannel(self, start):
|
||||||
|
self.startChannel = start
|
||||||
|
def getNumChannels(self):
|
||||||
|
return self.numChannels
|
||||||
|
|
||||||
|
|
||||||
|
class DMXUniverse(object):
|
||||||
|
maxChannels = 512
|
||||||
|
def __init__(self):
|
||||||
|
self.channels = 1
|
||||||
|
self.devices = []
|
||||||
|
def addDevice(self, device):
|
||||||
|
device.setStartChannel(self.channels)
|
||||||
|
self.devices.append(device)
|
||||||
|
self.channels += device.getNumChannels()
|
||||||
|
def getChannels(self):
|
||||||
|
return self.channels
|
||||||
|
|
||||||
# Configs
|
# Configs
|
||||||
config = configparser.ConfigParser()
|
config = configparser.ConfigParser()
|
||||||
config.sections()
|
config.sections()
|
||||||
@ -39,8 +76,14 @@ client = Client(URL, TOKEN)
|
|||||||
light = client.get_domain('light')
|
light = client.get_domain('light')
|
||||||
|
|
||||||
# Lights
|
# Lights
|
||||||
configOptionalList(config['Lights'], 'dimmer')
|
u1 = DMXUniverse()
|
||||||
configOptionalList(config['Lights'], 'rgb')
|
dimmers =configOptionalList(config['Lights'], 'dimmer')
|
||||||
|
for l in dimmers:
|
||||||
|
u1.addDevice(DMXDevice(l, LightType.DIMMER))
|
||||||
|
rgbs = configOptionalList(config['Lights'], 'rgb')
|
||||||
|
for l in rgbs:
|
||||||
|
u1.addDevice(DMXDevice(l, LightType.RGB))
|
||||||
|
print(u1.getChannels())
|
||||||
|
|
||||||
# DMX
|
# DMX
|
||||||
universe = 1
|
universe = 1
|
||||||
|
Loading…
x
Reference in New Issue
Block a user