Skip to main content

ArtDMX Multiverse lib

Project description

Multi-controller supervisor library

Модуль для контроля сети H802RA узлов.

Tests

Протокол управления - 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ledmx-0.2a0.tar.gz (14.0 kB view hashes)

Uploaded source

Built Distribution

ledmx-0.2a0-py3-none-any.whl (17.0 kB view hashes)

Uploaded py3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page