From 4cc347074a78971f95a7af0b60043a1894f6a14e Mon Sep 17 00:00:00 2001 From: marcsello Date: Wed, 30 Sep 2020 03:45:41 +0200 Subject: [PATCH] Implemented actuators --- src/actuator/__init__.py | 0 src/actuator/abcactuator.py | 24 ++++++++++++++++++++++++ src/actuator/loudspeaker.py | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 56 insertions(+) create mode 100644 src/actuator/__init__.py create mode 100644 src/actuator/abcactuator.py create mode 100644 src/actuator/loudspeaker.py diff --git a/src/actuator/__init__.py b/src/actuator/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/actuator/abcactuator.py b/src/actuator/abcactuator.py new file mode 100644 index 0000000..b3ea8b1 --- /dev/null +++ b/src/actuator/abcactuator.py @@ -0,0 +1,24 @@ +#!/usr/bin/env python3 +from abc import ABC, abstractmethod + +""" +Abstract base class for Actuator +""" + +__author__ = "@marcsello" +__copyright__ = "Copyright 2020, Birbnetes Team" +__module_name__ = "abcactuator" +__version__text__ = "1" + + +class AbcActuator(ABC): + """ + Abstract base class Actuator. Responsible for acting. + """ + @abstractmethod + def act(self): + """ + Preprocess a signal. + :return: + """ + pass diff --git a/src/actuator/loudspeaker.py b/src/actuator/loudspeaker.py new file mode 100644 index 0000000..85f5c3f --- /dev/null +++ b/src/actuator/loudspeaker.py @@ -0,0 +1,32 @@ +#!/usr/bin/env python3 +import random +import os +import os.path +from .abcactuator import AbcActuator +from birbnetes_iot_platform_raspberry import BirbnetesIoTPlatformPlaybackDriver + +""" +Abstract base class for Sender +""" + +__author__ = "@marcsello" +__copyright__ = "Copyright 2020, Birbnetes Team" +__module_name__ = "loudspeaker" +__version__text__ = "1" + + +class Loudspeaker(AbcActuator): + """ + A class that plays back various sounds. + """ + + def __init__(self, sound_dir: str): + BirbnetesIoTPlatformPlaybackDriver.init() + self._sound_dir = sound_dir + + def act(self): + choice = random.choice(os.listdir(self._sound_dir)) + BirbnetesIoTPlatformPlaybackDriver.play_audio(os.path.join(self._sound_dir, choice)) + + def __del__(self): + BirbnetesIoTPlatformPlaybackDriver.cleanup()