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()