ArtDMX Multiverse lib
Project description
Multi-controller supervisor library
Модуль для контроля сети H802RA узлов.
Протокол управления - Art-Net (pdf)
Контроллер - H802RA (pdf)
Лента - WS2813 (pdf)
Как это работает
На основе конфига строится экземпляр класса мультивселенная, объединяющего данные всех вселенных в сети, карту пикселей (словарь по глобальному номеру пикселя и его данным) и методы для модификации данных по номеру пикселя и формирования и отправки ArtDMX пакетов.
При изменении значения байт конкретного пикселя, данные по ссылке меняются в глобальной матрице
вселенных.
При публикации данных (метод multiverse.pub()
), данные вселенных преобразуются в ArtDMX пакеты и
отправляются по указанному адресу.
Конфигурация
Конфиг - в формате yaml.
Корневой объект nodes
содержит список узлов, каждый узел описан:
- адресом хоста (куда слать ArtDMX пакет)
- именем
- словарём выходов
- ключ: номер выхода на узле (с нуля)
- значение: строка с указанием диапазонов номеров пикселей
Пиксели нумеруются глобально с нуля.
Пример:
nodes:
# узел "box"
- host: 10.0.0.10 # адрес хоста (IP или DNS имя)
name: box # имя узла
outs: # разметка пикселей по выходам
0: 0-300 # в 0-м выходе - пиксели с 0-го по 300-й (искл.)
1: 300-600 # в 1-м выходе - пиксели с 300-го по 600-й
- host: 10.0.0.11
name: node-1
outs:
0: 901, 1001-1010
1: 600 - 725
# пустые выходы можно пропустить
3: 725- 800,1015 # диапазоны можно разделять запятой, можно указывать одиночные пиксели
- host: 10.0.0.12
name: j-50
outs:
2: 800-850
- host: 10.0.0.13
name: tail
outs:
1: 1016-1028
3: 1062
7: 850-900, 910, 911 # число выходов может быть разным на разныз узлах (тут - 8-портовый узел)
Подробнее - в комментариях к коду.
Тесты
flake8 . --show-source --statistics --max-line-length=127
python -m pytest .
Использование
Библиотека доступна через PyPi
pip install ledmx
конфигурация:
---
nodes:
- host: 10.0.0.10
name: box
outs:
0: 0-300
1: 300-600
скрипт:
# импорт класса мультивселенной
from ledmx.multiverse import Multiverse
# импорт функции парсинга конфига
from ledmx.layout import parse_file
if __name__ == '__main__':
# загружаем конфиг
layout = parse_file('layout.yaml')
# формируем мультивселенную
m_verse = Multiverse(layout)
# задаём значения цвета (GBR) для пикселей по их глобальным id
m_verse[245] = 100, 10, 10
m_verse[308] = 5, 100, 40
# формируем из матрицы пакеты и рассылаем их
m_verse.pub()
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file ledmx-0.2a0.tar.gz
.
File metadata
- Download URL: ledmx-0.2a0.tar.gz
- Upload date:
- Size: 14.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.16
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d8c826526d7ed6b2254e46513f23056d89e6d1f1f80b2496678891869c0c1502 |
|
MD5 | 0e92f830f91799a92ad8d7252d26a6f1 |
|
BLAKE2b-256 | fe51fed577b55abb42553d49f3a40fc6bd50f7ab9e8a1571c2c3df70da8d9d7e |
File details
Details for the file ledmx-0.2a0-py3-none-any.whl
.
File metadata
- Download URL: ledmx-0.2a0-py3-none-any.whl
- Upload date:
- Size: 17.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.16
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b73c82f3431989e1033b4036fa87806803e2d6bffd241cf1e12b7bb357c9d1dd |
|
MD5 | bdb55ba283c8fdd04af1a53000e8a715 |
|
BLAKE2b-256 | aeebad180f69f4083ff4cffa584dc0d575cc6fdf0b442f898bb01ba04d2d9c5c |