Recently I bought a Sonos One. When I searched the internet to find out how I could play an audio file on it via Home Assistant I came across this thread on the community forum: https://community.home-assistant.io/t/playing-a-mp3-file-on-sonos-with-automation-throwing-an-error/37513/2.

TheFuzz4 was writing an automation which will play a different audio file every hour based on the current time. I kinda like it! So I dicided to write an automation like this aswell.

After finding a nice “chime” sound it was time to repeat the chime every hour. So for example, if it’s 2 o’clock it will repeat the chime 2 times. I found a online tool to merge audio files. So for the example above I had to upload the file twice. After 20 minutes I generated 12 audio files for each hour.

When I got home I let my girlfriend hear the sounds. She didn’t quite like the chime. So I had to find another audio file. At this time I didn’t want to merge all the files again. So this project came alive!

Getting Started

These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.

Prerequisites

The code depends on the Python library Pydub. This library needs ffmpeg installed on the machine. You can install it via brew with the following command.

# ffmpeg
brew install ffmpeg --with-libvorbis --with-sdl2 --with-theora;

Installing

To install this script simply clone the entire repository (https://github.com/maartenpaauw/tiny-scripts) en change the current working directory to ‘pendulum-clock’.

git clone git@github.com:maartenpaauw/tiny-scripts.git;
cd tiny-scripts/pendulum-clock;

Now it’s time to install the Python packages through Pip.

pip install -r requirements.txt

Now you are all set!

Usage

python run.py --help

usage: generate audio files for a pendulum clock [-h] [--file FILE]
                                                 [--directory DIRECTORY]
                                                 [--leading-zeros]
                                                 [--twentyfour-hours]
                                                 [--template TEMPLATE]

optional arguments:
  -h, --help            show this help message and exit
  --file FILE           the audio file to use
  --directory DIRECTORY
                        the directory where to store the audio files
  --leading-zeros       prefix hour 1 to 9 with a zero (01, 02, 03 ...)
  --twentyfour-hours    generate files for the hours 13 to 24
  --template TEMPLATE   make your own file name template, {hour} will be
                        converted to a number.

asciicast

Built With

  • Pydub - Generate the audio files.

Authors

License

This project is licensed under the MIT License - see the LICENSE.md file for details

Acknowledgments

  • TheFuzz4 - His idea to build a “Grandfathers Clock”.