Changeset - 635568de3c9a
[Not reviewed]
default
0 1 0
drewp@bigasterisk.com - 20 months ago 2023-06-01 21:15:54
drewp@bigasterisk.com
no default udmx rate- prevent surprises
1 file changed with 1 insertions and 1 deletions:
0 comments (0 inline, 0 general)
light9/collector/output.py
Show inline comments
 
@@ -156,49 +156,49 @@ class ArtnetDmx(BackgroundLoopOutput):
 
                if self.sequence_counter > 255:
 
                    self.sequence_counter = 1
 
            packet = self.base_packet[:]
 
            packet.append(self.sequence_counter)  # Sequence,
 
            packet.append(0x00)  # Physical
 
            universe_nr = 0
 
            packet.append(universe_nr & 0xFF)  # Universe LowByte
 
            packet.append(universe_nr >> 8 & 0xFF)  # Universe HighByte
 

	
 
            packet.extend(struct.pack('>h', len(buf)))  # Pack the number of channels Big endian
 
            packet.extend(buf)
 

	
 
            self._socket.sendto(packet, ('127.0.0.1', 6454))
 

	
 

	
 
class Udmx(BackgroundLoopOutput):
 
    """alternate lib:
 

	
 
    from PyDMXControl.controllers import uDMXController
 
    u = uDMXController(autostart=False)
 
    u._connect()
 
    u._transmit([255, 0, 0, ...
 
    """
 

	
 
    def __init__(self, uri: URIRef, bus: int, address: int, lastDmxChannel: int, rate=22):
 
    def __init__(self, uri: URIRef, bus: int, address: int, lastDmxChannel: int, rate: float):
 
        self.bus = bus
 
        self.address = address
 
        self.lastDmxChannel = lastDmxChannel
 
        self.dev = None
 
        super().__init__(uri, rate=rate)
 

	
 
        self.reconnect()
 

	
 
    def shortId(self) -> str:
 
        return super().shortId() + f'_bus={self.bus}'
 

	
 
    def reconnect(self):
 
        metrics('connected', output=self.shortId()).set(0)
 
        from pyudmx import pyudmx
 
        self.dev = pyudmx.uDMXDevice()
 
        if not self.dev.open(bus=self.bus, address=self.address):
 
            raise ValueError("dmx open failed")
 
        log.info(f'opened {self.dev}')
 
        metrics('connected', output=self.shortId()).set(1)
 
        metrics('reconnections', output=self.shortId()).inc()
 

	
 
    #def update(self, buf:bytes):
 
    #    self._write(buf)
 

	
0 comments (0 inline, 0 general)