MattIPv4 / MattIPv4/PyDMXControl

Multiple USB to DMX interface support?

Open
#56 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
143
Forks
23
PR merge metrics
No merged PRs in 30d

Description

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:

```from PyDMXControl.controllers import OpenDMXController as Controller

# 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.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start at the OpenDMXController entry point shown in the example and trace how USB interfaces are selected and managed. Reproduce the setup with two FT232R/libusb-win32 dongles; done means fixtures assigned to each dongle can be controlled simultaneously.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
embedded-iot
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.