Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Multiple USB to DMX interface support? #56

Open
Yahyylbg opened this issue Jan 5, 2024 · 2 comments
Open

Multiple USB to DMX interface support? #56

Yahyylbg opened this issue Jan 5, 2024 · 2 comments

Comments

@Yahyylbg
Copy link

Yahyylbg commented Jan 5, 2024

Hi Matt! I‘m currently trying to use this library for a lighting project. I use USB to DMX interface cables with FT232R chip. I used "zadig" to flash the driver of interface to libusb-win32 and successfully dim the light on PC using Python! Thankyou :)

But I found when I plug two dongles in my PC, it seems that it can only control one of them. Luminaires of the other cable won't work.
Does this library support multiple interface to work simultaneously?

I am not a programmer. If I question something wrong please forgive me. And here's my code:


# Create controller
dmx = Controller()

# Load fixture from JSON
dmx.json.load_config('LabLight.json')

# Define a global fade time
fade_time = 5000

# DMA Value Mapping Percentage
def percent_to_dmx_value(percent):
    return int((255 * percent) / 100)

# clear
dmx.clear_all_effects()

for brightness_percent in range(5, 101, 5):
    dmx_value = percent_to_dmx_value(brightness_percent)
    # Dimming
    for f in dmx.get_fixtures_by_name_include('DownLight_1Y'):       # Y for Yellow light, W for White light
        f.dim(dmx_value, fade_time)
    for f in dmx.get_fixtures_by_name_include('DownLight_1W'):
        f.dim(dmx_value, fade_time)
    for f in dmx.get_fixtures_by_name_include('DownLight_2Y'):
        f.dim(dmx_value, fade_time)
    for f in dmx.get_fixtures_by_name_include('DownLight_2W'):
        f.dim(dmx_value, fade_time)
    # rest of downlights

    time.sleep(3)

# Manual Close
dmx.sleep_till_enter()
dmx.close()

And the json:

    {
        "type": "Generic.Dimmer",
        "args": [],
        "name": "DownLight_1Y",
        "start_channel": 1
    },
    {
        "type": "Generic.Dimmer",
        "args": [],
        "name": "DownLight_1W",
        "start_channel": 2
    },
    {
        "type": "Generic.Dimmer",
        "args": [],
        "name": "DownLight_2Y",
        "start_channel": 3
    },
    {
        "type": "Generic.Dimmer",
        "args": [],
        "name": "DownLight_2W",
        "start_channel": 4
    },
    {
        "type": "Generic.Dimmer",
        "args": [],
        "name": "DownLight_3Y",
        "start_channel": 5
    },
    {
        "type": "Generic.Dimmer",
        "args": [],
        "name": "DownLight_3W",
        "start_channel": 6
    }
]```

There're more but it's just for example.

For instance Downlight1-3 connect dongle_1, and 3_6 connect dongle_2. 
@MattIPv4
Copy link
Owner

MattIPv4 commented Jan 12, 2024

This library isn't really built to support multiple interfaces like that. Your best bet would probably be creating multiple controllers, or writing yourself a custom controller that can handle outputting to multiple interfaces simultaneously. Or, stick to using a single interface and just daisy-chain your fixtures together.

@Yahyylbg
Copy link
Author

This library isn't really built to support multiple interfaces like that. Your best bet would probably be creating multiple controllers, or writing yourself a custom controller that can handle outputting to multiple interfaces simultaneously. Or, stick to using a single interface and just daisy-chain your fixtures together.

Thanks for responding. I've tried creating two controllers, importing two JSON files and using them accordingly, still not working. And it seems that if I plug in which interface first, the controller's output will only be fully output from this interface to the lighting fixture.
It should be feasible to write a controller to divert signal output or rewire the lighting fixtures to a single interface. But I'm afraid I don't have the ability to write a custom controller. Let me try the latter.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants