{"id":30138385,"url":"https://github.com/ari24-cb24/opendmxadapter","last_synced_at":"2025-08-11T01:07:14.890Z","repository":{"id":308420965,"uuid":"920659798","full_name":"Ari24-cb24/opendmxadapter","owner":"Ari24-cb24","description":"Python OpenDMX Adapter for stage light control","archived":false,"fork":false,"pushed_at":"2025-08-05T21:20:13.000Z","size":20,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-08-05T21:42:40.584Z","etag":null,"topics":["dmx-interface","dmx512","enttec-opendmx","ftdi","opendmx","stage-lighting"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Ari24-cb24.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-01-22T14:53:13.000Z","updated_at":"2025-08-05T21:05:08.000Z","dependencies_parsed_at":"2025-08-05T21:42:41.803Z","dependency_job_id":"76356364-46dc-467d-8803-9356ee240474","html_url":"https://github.com/Ari24-cb24/opendmxadapter","commit_stats":null,"previous_names":["ari24-cb24/opendmxadapter"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/Ari24-cb24/opendmxadapter","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ari24-cb24%2Fopendmxadapter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ari24-cb24%2Fopendmxadapter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ari24-cb24%2Fopendmxadapter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ari24-cb24%2Fopendmxadapter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Ari24-cb24","download_url":"https://codeload.github.com/Ari24-cb24/opendmxadapter/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ari24-cb24%2Fopendmxadapter/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":269815018,"owners_count":24479480,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-10T02:00:08.965Z","response_time":71,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dmx-interface","dmx512","enttec-opendmx","ftdi","opendmx","stage-lighting"],"created_at":"2025-08-11T01:07:00.030Z","updated_at":"2025-08-11T01:07:14.852Z","avatar_url":"https://github.com/Ari24-cb24.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# OpenDMXAdapter\n\nOpenDMXAdapter is an easy-to-use library to work with an OpenDMX controller. \nInitially this library has been designed around the OpenDMX Adapter from Enttec.\n\n\n## Installing\n\nThis project has not been published on pypi yet and thus can only be used by cloning the git repository into your project.  \nYou may need to install a different driver for your adapter (since the Enttec OpenDMX driver only works with their dll file and not with serial).\nTake a look at [this](https://learn.adafruit.com/circuitpython-on-any-computer-with-ft232h/windows) tutorial from adafruit on how to install the correct driver (libusk).\n\n## Example Usage\n\n```python\nfrom opendmxadapter.adapter import OpenDMXAdapter\nfrom opendmxadapter.fixtures.cameo.rootpar6 import RootPar6\n\ncontroller = OpenDMXAdapter(\"ftdi://ftdi:232:BG00DND8/1\")\ncontroller.start()\ncontroller.blackout()\n\n# Either manually set channel values\ncontroller.set_channel(10, 255)\n\n# Or add a custom fixture\nlight = RootPar6(0)\ncontroller.add_fixture(light)\n\nlight.set_amber(255)\nlight.set_intensity(100)\n\ncontroller.close()\n```\n\nFor more examples, take look into the `examples` directory.\n\n## How does it work?\n\nThe main logic lies in `adapter.py` which is fairly simple and easy to understand.\nIt talks via pyftdi serialtext to the controller itself and sends the data in a separate thread in a 40 Hz interval.\n\n## Writing a custom fixture\n\nGenerally, taking a look at the different fixtures available such as the cameo root par 6 is a good idea to get a basic understanding of how they work.  \nMost of the methods are defined in the BaseFixture class. Your fixture class should extend from this.  \nIf you need any further abstraction of functionality, such as color, moving head or strobo, you can additionally extend from either ``ColorFixture``, ``StroboFixture`` or the different classes available in `basefixture.py`. You may need to call special initialisation methods prefixed with an underscore to set the relative channels for different operations. See the example below.\n\n```python\nfrom fixtures.basefixture import BaseFixture, ColorFixture\n\n\nclass CustomFixture(BaseFixture, ColorFixture):\n    def __init__(self, channelCount: int, rawChannel: int | None = None):\n        super().__init__(channelCount, rawChannel)\n        # R, G, B, Intensity\n        self._initializeColorChannels(0, 1, 2, 3)\n\n    def mySuperCustomMethod(self):\n        # Method provided by BaseFixture\n        self.setValue(10, 255)\n        self.adapter.blackout()  # You can also access the adapter\n        \n        # Method provided by ColorFixture\n        self.setRgb(255, 0, 0)\n        self.setIntensity(100)\n```\n\n## Showcase\n\nThis is a video I took controlling the Eurolite TMH-X4 Shower Moving Head with my Dualshock Controller\n\n[![Showcase](https://b.catgirlsare.sexy/mteA91wfZvGk.webm)](https://b.catgirlsare.sexy/mteA91wfZvGk.webm)\n\n\n## Help\n\nIf you're stuck in any way, have any questions or problem with the driver, feel free to ask me. I went through a lot of work to get a driver running after abandoning the driver from the Enttec Adapter. Open an issue or drop me a [Twitter](https://twitter.com/@AriOnIce24) DM.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fari24-cb24%2Fopendmxadapter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fari24-cb24%2Fopendmxadapter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fari24-cb24%2Fopendmxadapter/lists"}