ledmx

ArtDMX Multiverse lib


License
MIT
Install
pip install ledmx==0.2a0

Documentation

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[:] = 10, 10, 10
    m_verse[100:200] = 150, 32, 12
    m_verse[:105:2] = 0, 20, 10
    
# Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅ΠΌ ΠΈΠ· ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΈ рассылаСм ΠΈΡ…
    m_verse.pub()