diff --git a/animations/random_color.py b/animations/random_color.py index e7dfb81980b7614a18cf926d704848cb953b386b..cc87985534d98192d4beeb9bfcec3064562b98bd 100644 --- a/animations/random_color.py +++ b/animations/random_color.py @@ -1,6 +1,7 @@ from blinkenbase.animation import Animation import blinkenbase.blinkenfoo as blinkenfoo -from blinkenbase.blinkenroom import Blinkenroom +#from blinkenbase.blinkenroom import Blinkenroom +import blinkenbase.blinkenroom as blinkenroom from blinkenbase.Color import Color import random @@ -29,7 +30,7 @@ class Blink(object): class random_color(Animation): def init_animation(self): - self.blinkenroom = Blinkenroom(blinkenfoo.DEVICE_LIST_LOUNGE) + self.blinkenroom = blinkenroom.BLINKENROOM_LOUNGE self.set_fps(20) self.blink_dict = {} self.name = "random_color" diff --git a/blinkenbase/animation_handler.py b/blinkenbase/animation_handler.py index c82efaf4bcb108dddd5d8b6c12976f93f5468380..0896f831d559eb69d93f1d8f7e092a752719b366 100644 --- a/blinkenbase/animation_handler.py +++ b/blinkenbase/animation_handler.py @@ -3,6 +3,8 @@ from blinkenbase.blinkenroom import Blinkenroom import blinkenbase.blinkenroom import blinkenbase.animation import time +from blinkenbase.blinkenroom import BLINKENROOM_LOUNGE +import _thread #from darken import darken class AnimationHandler(object): @@ -31,7 +33,7 @@ class AnimationHandler(object): for running in self.running_animations.values(): running.stop() self.running_animations = {} - self.last_frame = blinkenroom.BLINKENROOM_LOUNGE.get_last_frame() + self.last_frame = BLINKENROOM_LOUNGE.get_last_frame() def pause_animation(self, p_animation_name): if p_animation_name in self.running_animations: @@ -52,13 +54,8 @@ class AnimationHandler(object): animation.resume() def start_animation(self, p_name, p_animation_args): - #def start_animation(self, p_name): p_name = p_name.lower() - #if p_name in self.running_animations: - # print("Animation already running") - # return self.ERROR_ANIMATION_RUNNING - animation_class = None try: exec("from animations.%s import %s" % (p_name, p_name)) @@ -95,14 +92,36 @@ class AnimationHandler(object): ###Light-Level### ################# + def _thread_handler_darken(self, a, b): + f = 100 + while f > 0: + BLINKENROOM_LOUNGE.set_brightness(f) + time.sleep(0.05) + f -= 1 + self.pause_all_animations() + + def _thread_handler_lighten(self, a, b): + f = 1 + self.resume_all_animations() + while f <= 100: + BLINKENROOM_LOUNGE.set_brightness(f) + time.sleep(0.05) + f += 1 + def darken(self, p_args): - self.stop_all_animations() - darken_dicts = { - "frame": self.last_frame, - "rate": 30, - "steps": 100 - } - animation = darken() - animation.set_args(darken_dicts) - animation.init_animation() - animation.start() + _thread.start_new_thread(self._thread_handler_darken, (None, None)) + + def lighten(self, p_args): + _thread.start_new_thread(self._thread_handler_lighten, (None, None)) + +# def darken(self, p_args): +# self.stop_all_animations() +# darken_dicts = { +# "frame": self.last_frame, +# "rate": 30, +# "steps": 100 +# } +# animation = darken() +# animation.set_args(darken_dicts) +# animation.init_animation() +# animation.start() diff --git a/blinkenbase/blinkenfoo.py b/blinkenbase/blinkenfoo.py index 6e5e5bac742718df60d84e6ca99f7b85ecafe1a7..2a1ee02b1486381f7b0e2fc7e060a18000dfc892 100644 --- a/blinkenbase/blinkenfoo.py +++ b/blinkenbase/blinkenfoo.py @@ -27,10 +27,18 @@ class Blinkenfoo(object): self._reset_buffer() self.current_fps = None - if p_brightness < 100: - self.brightness_factor = (100.0 / p_brightness) - else: - self.brightness_factor = 1 + #self.brightness_factor = p_brightness / 100.0 + super(Blinkenfoo, self).__setattr__("brightness_factor", 100.0 / p_brightness) + + def __setattr__(self, p_key, p_value): + if p_key == "brightness_factor": + f = 0 + if p_value <= 100: + f = (100.0 / p_value) + else: + f = 100.0 + p_value = f + super(Blinkenfoo, self).__setattr__(p_key, p_value) def _split_to_byte(self, p_number): """ @@ -128,6 +136,9 @@ class Blinkenfoo(object): if p_reset: self._reset_buffer() + def clear(self): + self._reset_buffer() + self.flush() ################## ###End of class### ################## @@ -136,7 +147,7 @@ class Blinkenfoo(object): SPHERES = Blinkenfoo("Spheres", "ESP_35D447.warpzone", 9, 20) PANEL = Blinkenfoo("Panel", "ESP_35d9E4.warpzone", 8, 12) WARP_SIGN = Blinkenfoo("Warp-Sign", "ESP_133C4C.warpzone", 1, 25) -DMX = Blinkenfoo("DMX", "10.0.3.27", 5, 10, p_brightness = 50) +DMX = Blinkenfoo("DMX", "10.0.3.27", 5, 10, p_brightness = 70) CUBES = Blinkenfoo("Cubes", "cubes.warpzone", 8, 5) TISCH = Blinkenfoo("Tisch", "tisch.warpzone", 700) diff --git a/blinkenbase/blinkenroom.py b/blinkenbase/blinkenroom.py index b06d4a1eb86ee47403f4015303d482949437147f..3415fb8bac3ab005dd011e89c24f98d41cfa6687 100644 --- a/blinkenbase/blinkenroom.py +++ b/blinkenbase/blinkenroom.py @@ -43,6 +43,14 @@ class Blinkenroom: ###public methods### #################### + def set_brightness(self, p_level=100): + """ + Sets the brightness of every blinkendevice in this blinkenroom. + Max is 100, min 0 + """ + for device in self.device_list: + device.brightness_factor = p_level + def send_frame(self, p_frame, p_offset = 0): """ Sends an whole frame to all blinkenfoo devices. The frames length has to @@ -118,4 +126,8 @@ class Blinkenroom: frame += device.buffer return frame + def clear(self): + for device in self.device_list: + device.clear() + BLINKENROOM_LOUNGE = Blinkenroom(blinkenfoo.DEVICE_LIST_LOUNGE) diff --git a/mqtt.py b/mqtt.py index d09f56b169e524fd05b3dc20b1283ebf5a056467..7b0fd932db1e496549c5b4bd069cebcb60e32c56 100644 --- a/mqtt.py +++ b/mqtt.py @@ -59,6 +59,7 @@ command_handler_dict["exit"] = handler.stop_all_animations command_handler_dict["resume"] = handler_resume command_handler_dict["pause"] = handler_pause command_handler_dict["darken"] = handler.darken +command_handler_dict["lighten"] = handler.lighten client.connect("warpsrvint.warpzone", 1883, 60) client.loop_forever()