From 2e47c6744f0b478df5cf9a0a7df3fa7da5a708f5 Mon Sep 17 00:00:00 2001 From: polyfloyd Date: Wed, 19 Oct 2022 21:59:07 +0200 Subject: [PATCH] music: Add soundboard --- roles/music/handlers/main.yaml | 6 ++ roles/music/tasks/main.yaml | 3 + roles/music/tasks/soundboard.yaml | 72 ++++++++++++++++++++ roles/music/templates/shutdown-sound.service | 16 +++++ roles/music/templates/shutdown-sound.sh | 8 +++ roles/music/templates/soundboard.service | 15 ++++ roles/music/templates/soundboard.yaml | 21 ++++++ 7 files changed, 141 insertions(+) create mode 100644 roles/music/tasks/soundboard.yaml create mode 100644 roles/music/templates/shutdown-sound.service create mode 100644 roles/music/templates/shutdown-sound.sh create mode 100644 roles/music/templates/soundboard.service create mode 100644 roles/music/templates/soundboard.yaml diff --git a/roles/music/handlers/main.yaml b/roles/music/handlers/main.yaml index 11225a0..f3d692b 100644 --- a/roles/music/handlers/main.yaml +++ b/roles/music/handlers/main.yaml @@ -17,3 +17,9 @@ name: librespot state: restarted daemon_reload: true + +- name: restart soundboard + systemd: + name: soundboard + state: restarted + daemon_reload: true diff --git a/roles/music/tasks/main.yaml b/roles/music/tasks/main.yaml index 3a4eb8c..e7021de 100644 --- a/roles/music/tasks/main.yaml +++ b/roles/music/tasks/main.yaml @@ -8,6 +8,9 @@ - tags: music_librespot import_tasks: librespot.yaml +- tags: music_soundboard + import_tasks: soundboard.yaml + - tags: music block: - name: Install nginx diff --git a/roles/music/tasks/soundboard.yaml b/roles/music/tasks/soundboard.yaml new file mode 100644 index 0000000..ae29422 --- /dev/null +++ b/roles/music/tasks/soundboard.yaml @@ -0,0 +1,72 @@ +--- +- name: Install dependencies + apt: + name: virtualenv + state: present + +- name: Clone soundboard source + git: + repo: https://github.com/polyfloyd/mqtt-soundboard.git + version: main + dest: /opt/soundboard + accept_hostkey: yes + notify: restart soundboard + +- name: Create virtualenv + command: virtualenv /opt/soundboard/.venv + args: + creates: /opt/soundboard/.venv + +- name: Install Python dependencies + shell: . .venv/bin/activate && pip install -r requirements.txt + args: + chdir: /opt/soundboard + +- name: Install soundboard config file + template: + src: soundboard.yaml + dest: /etc/soundboard.yaml + owner: root + group: root + mode: 0644 + notify: restart soundboard + +- name: Install soundboard service file + template: + src: soundboard.service + dest: /etc/systemd/system/soundboard.service + owner: root + group: root + mode: 0644 + notify: restart soundboard + +- name: Enable soundboard + systemd: + name: soundboard + state: started + enabled: true + daemon_reload: true + +- name: Install shutdown sound script + template: + src: shutdown-sound.sh + dest: /opt/shutdown-sound.sh + owner: root + group: root + mode: 0644 + +- name: Install shutdown sound service + template: + src: shutdown-sound.service + dest: /etc/systemd/system/shutdown-sound.service + owner: root + group: root + mode: 0644 + notify: daemon reload + +- name: Enable shutdown-sound + systemd: + name: shutdown-sound + state: started + enabled: true + daemon_reload: true diff --git a/roles/music/templates/shutdown-sound.service b/roles/music/templates/shutdown-sound.service new file mode 100644 index 0000000..6c6de88 --- /dev/null +++ b/roles/music/templates/shutdown-sound.service @@ -0,0 +1,16 @@ +# Managed by Ansible + +[Unit] +Description=Goodbye +Requires=mpd.service + +[Service] +Type=oneshot +ExecStart=/bin/true +ExecStop=/opt/shutdown.sh +RemainAfterExit=true +User=audio +Group=audio + +[Install] +WantedBy=multi-user.target diff --git a/roles/music/templates/shutdown-sound.sh b/roles/music/templates/shutdown-sound.sh new file mode 100644 index 0000000..9346f74 --- /dev/null +++ b/roles/music/templates/shutdown-sound.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +# Managed by Ansible + +systemctl stop trollibox.service +mpc clear + +su audio -c 'mplayer -volume 10 -ao jack:name=MPlayer /opt/sounds/shutdown.mp3' diff --git a/roles/music/templates/soundboard.service b/roles/music/templates/soundboard.service new file mode 100644 index 0000000..6c74903 --- /dev/null +++ b/roles/music/templates/soundboard.service @@ -0,0 +1,15 @@ +# Managed by Ansible + +[Unit] +Description=MQTT Soundboard +After=network.target + +[Service] +Type=simple +ExecStart=/opt/soundboard/.venv/bin/python /opt/soundboard/soundboard.py /etc/soundboard.yaml +Restart=always +RestartSec=10 +User=root + +[Install] +WantedBy=multi-user.target diff --git a/roles/music/templates/soundboard.yaml b/roles/music/templates/soundboard.yaml new file mode 100644 index 0000000..5ef917f --- /dev/null +++ b/roles/music/templates/soundboard.yaml @@ -0,0 +1,21 @@ +loglevel: INFO + +mqtt: + host: mqtt.bitlair.nl + +sounds: + directory: /opt/sounds + play_cmd: "mplayer -volume 10 -ao jack:name=MPlayer %s" + topic: bitlair/soundboard + +aliases: + - sound: space_open + topic: bitlair/state + value: open + - sound: space_close + topic: bitlair/state + value: close + - sound: doorbell + topic: bitlair/doorduino/doorbell + - sound: nomunnie + topic: bitlair/bank/shame