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[:] = 10, 10, 10
m_verse[100:200] = 150, 32, 12
m_verse[:105:2] = 0, 20, 10
# ΡΠΎΡΠΌΠΈΡΡΠ΅ΠΌ ΠΈΠ· ΠΌΠ°ΡΡΠΈΡΡ ΠΏΠ°ΠΊΠ΅ΡΡ ΠΈ ΡΠ°ΡΡΡΠ»Π°Π΅ΠΌ ΠΈΡ
m_verse.pub()