Loading specialized/plugin_buffered_recorder.py +1 −1 Original line number Diff line number Diff line Loading @@ -50,7 +50,7 @@ class BufferedRecorderPlugin(PiCameraProcessBase): def _set_recording_status(self, value): with self._record_status_lock: if value and self._record_status is None: self._record_status = Status.pulse((0, 1, 0)) self._record_status = Status.pulse((1, 0, 0)) elif not value and self._record_status is not None: self._record_status.cancel() self._record_status = None Loading specialized/plugin_status_led.py +15 −6 Original line number Diff line number Diff line Loading @@ -2,7 +2,7 @@ from plugins.base import Process, PluginProcessBase from plugins.processes_host import find_plugin from plugins.decorators import make_plugin from collections import namedtuple from math import isinf, isnan from math import isinf, isnan, isclose from specialized.support.thread_host import CallbackThreadHost from threading import Lock from misc.logging import camel_to_snake, ensure_logging_setup Loading Loading @@ -173,6 +173,16 @@ class StatusLEDPlugin(PluginProcessBase): for i in sorted(to_delete, reverse=True): del self._active_statuses[i] del self._active_statuses_iterators[i] if color is None: r, g, b = self._rgbled.color if isclose(r, 0.) and isclose(g, 0.) and isclose(b, 0.): return None # Stop thread # Reduce them gradually step_down = 1. / STATUS_LED_FPS r = max(0., r - step_down) g = max(0., g - step_down) b = max(0., b - step_down) return r, g, b return color def _push(self, status): Loading @@ -197,10 +207,9 @@ class StatusLEDPlugin(PluginProcessBase): del self._active_statuses_iterators[i] @pyro_expose def set(self, color, fade_in_time=0.5, persist_until_canceled=False): def set(self, color, fade_in_time=0.5, persist_time=1.): return self.push_status(on_color=color, off_color=color, fade_in_time=fade_in_time, fade_out_time=0., persist_on_time=0., persist_off_time=float('inf') if persist_until_canceled else 0., n=1) persist_on_time=0., persist_off_time=persist_time, n=1) @pyro_expose def pulse(self, color, n=float('inf'), persist_time=0., frequency=1.): Loading Loading @@ -248,10 +257,10 @@ class StatusLEDPlugin(PluginProcessBase): class Status: @staticmethod def set(color, fade_in_time=0.5, persist_until_canceled=False): def set(color, fade_in_time=0.5, persist_time=1.): plugin = find_plugin(STATUS_LED_PLUGIN_NAME, Process.MAIN) if plugin: return plugin.set(color, fade_in_time=fade_in_time, persist_until_canceled=persist_until_canceled) return plugin.set(color, fade_in_time=fade_in_time, persist_time=persist_time) else: return ContextualStatus(None) Loading specialized/plugin_still.py +1 −1 Original line number Diff line number Diff line Loading @@ -55,7 +55,7 @@ class StillPlugin(PluginProcessBase): temp_file: media_path = temp_file.name _log.info('Taking still picture with info %s to %s.', str(info), media_path) with Status.set((0, 1, 0), persist_until_canceled=True): with Status.set((1, 0, 0), persist_time=float('inf')): camera.camera.capture(media_path, format='jpeg', use_video_port=True, quality=self._integral_jpg_quality) temp_file.flush() Loading specialized/plugin_telegram.py +2 −2 Original line number Diff line number Diff line Loading @@ -115,7 +115,7 @@ class TelegramRootPlugin(TelegramProcessBase): file_id = attachment.file_id _log.info('Media %s uploaded as file id %s...', str(media_obj), str(file_id)) else: Status.blink((1, 0, 0), n=1) Status.blink((1, 0.8, 0), n=1) _log.error('Unable to send media %s.', str(media_obj)) return retval.append(msg) Loading Loading @@ -159,7 +159,7 @@ class TelegramRootPlugin(TelegramProcessBase): sleep(1) except: _log.exception('Error when performing %s.', str(method)) Status.blink((1, 0, 0), n=1) Status.blink((1, 0.8, 0), n=1) return None @property Loading Loading
specialized/plugin_buffered_recorder.py +1 −1 Original line number Diff line number Diff line Loading @@ -50,7 +50,7 @@ class BufferedRecorderPlugin(PiCameraProcessBase): def _set_recording_status(self, value): with self._record_status_lock: if value and self._record_status is None: self._record_status = Status.pulse((0, 1, 0)) self._record_status = Status.pulse((1, 0, 0)) elif not value and self._record_status is not None: self._record_status.cancel() self._record_status = None Loading
specialized/plugin_status_led.py +15 −6 Original line number Diff line number Diff line Loading @@ -2,7 +2,7 @@ from plugins.base import Process, PluginProcessBase from plugins.processes_host import find_plugin from plugins.decorators import make_plugin from collections import namedtuple from math import isinf, isnan from math import isinf, isnan, isclose from specialized.support.thread_host import CallbackThreadHost from threading import Lock from misc.logging import camel_to_snake, ensure_logging_setup Loading Loading @@ -173,6 +173,16 @@ class StatusLEDPlugin(PluginProcessBase): for i in sorted(to_delete, reverse=True): del self._active_statuses[i] del self._active_statuses_iterators[i] if color is None: r, g, b = self._rgbled.color if isclose(r, 0.) and isclose(g, 0.) and isclose(b, 0.): return None # Stop thread # Reduce them gradually step_down = 1. / STATUS_LED_FPS r = max(0., r - step_down) g = max(0., g - step_down) b = max(0., b - step_down) return r, g, b return color def _push(self, status): Loading @@ -197,10 +207,9 @@ class StatusLEDPlugin(PluginProcessBase): del self._active_statuses_iterators[i] @pyro_expose def set(self, color, fade_in_time=0.5, persist_until_canceled=False): def set(self, color, fade_in_time=0.5, persist_time=1.): return self.push_status(on_color=color, off_color=color, fade_in_time=fade_in_time, fade_out_time=0., persist_on_time=0., persist_off_time=float('inf') if persist_until_canceled else 0., n=1) persist_on_time=0., persist_off_time=persist_time, n=1) @pyro_expose def pulse(self, color, n=float('inf'), persist_time=0., frequency=1.): Loading Loading @@ -248,10 +257,10 @@ class StatusLEDPlugin(PluginProcessBase): class Status: @staticmethod def set(color, fade_in_time=0.5, persist_until_canceled=False): def set(color, fade_in_time=0.5, persist_time=1.): plugin = find_plugin(STATUS_LED_PLUGIN_NAME, Process.MAIN) if plugin: return plugin.set(color, fade_in_time=fade_in_time, persist_until_canceled=persist_until_canceled) return plugin.set(color, fade_in_time=fade_in_time, persist_time=persist_time) else: return ContextualStatus(None) Loading
specialized/plugin_still.py +1 −1 Original line number Diff line number Diff line Loading @@ -55,7 +55,7 @@ class StillPlugin(PluginProcessBase): temp_file: media_path = temp_file.name _log.info('Taking still picture with info %s to %s.', str(info), media_path) with Status.set((0, 1, 0), persist_until_canceled=True): with Status.set((1, 0, 0), persist_time=float('inf')): camera.camera.capture(media_path, format='jpeg', use_video_port=True, quality=self._integral_jpg_quality) temp_file.flush() Loading
specialized/plugin_telegram.py +2 −2 Original line number Diff line number Diff line Loading @@ -115,7 +115,7 @@ class TelegramRootPlugin(TelegramProcessBase): file_id = attachment.file_id _log.info('Media %s uploaded as file id %s...', str(media_obj), str(file_id)) else: Status.blink((1, 0, 0), n=1) Status.blink((1, 0.8, 0), n=1) _log.error('Unable to send media %s.', str(media_obj)) return retval.append(msg) Loading Loading @@ -159,7 +159,7 @@ class TelegramRootPlugin(TelegramProcessBase): sleep(1) except: _log.exception('Error when performing %s.', str(method)) Status.blink((1, 0, 0), n=1) Status.blink((1, 0.8, 0), n=1) return None @property Loading