cdosea-play/cdoseaplay/lights.py
2017-10-16 21:35:04 +02:00

74 lines
1.9 KiB
Python
Executable file

#!/usr/bin/python3
import subprocess
import sys
import os
import time
import ox
import lanbox
from .pi import random
# Screen 1-5, Control, 6,7
'''
> _*10 patterns / cues that correspond to 10 digit:*_
> 0 = Screen LED @ 100% fade time = 9s (cue list 1)
> 1 = LED Control @ 10% fade time = 8s (cue list 2)
> 2 = LED Control @ 20% fade time = 7s (cue list 3)
> 3 = LED Control @ 30% fade time = 6s (cue list 4)
> 4 = LED Control @ 40% fade time = 5s (cue list 5)
> 5 = LED Control @ 50% fade time = 4s (cue List 6)
> 6 = LED Control @ 60% fade time = 3s (cue list 7)
> 7 = LED Control @ 70% fade time = 2s (cue list 8)
> 8 = LED Control @ 80% fade time = 1s (cue list 9)
> 9 = LED Control @ 90% fade time = 0s (cue list 10)
'''
def channels(screen, control):
screen = int(screen * 255)
control = int(control * 255)
return {'1': screen, '2': screen, '3': screen, '4': screen, '5': screen, '6': control, '7': control}
LIGHTS = {
0: (channels(1, 0.0), 9),
1: (channels(0, 0.1), 8),
2: (channels(0, 0.2), 7),
3: (channels(0, 0.3), 6),
4: (channels(0, 0.4), 5),
5: (channels(0, 0.5), 4),
6: (channels(0, 0.6), 3),
7: (channels(0, 0.7), 2),
8: (channels(0, 0.8), 1),
9: (channels(0, 0.9), 0.1),
}
def switch(state):
lights, fade = LIGHTS[state]
lb = lanbox.Lanbox()
#lb.getChannels(lights)
#lb.fadeTo(lights, fade)
lb.layerGo(state)
if __name__ == '__main__':
path = sys.argv[1]
no_sleep = len(sys.argv) > 2
n = int(os.path.getctime(path) - 1495280000)
info = ox.avinfo(path)
duration = info.get('duration', 0)
seq = random(n * 1000)
pos = 0
lights = []
while pos < duration - 15:
sleep = seq() + 15
light = seq()
if pos + sleep > duration:
break
if not no_sleep:
time.sleep(sleep)
switch(light)
pos += sleep