Compare commits

...

6 commits

27 changed files with 101 additions and 179 deletions

View file

@ -18,6 +18,12 @@
- tags: node-exporter
import_tasks: node-exporter.yaml
- name: Remove Vim
apt:
name: vim
state: absent
autoremove: true
- name: Install utilities
apt:
name:

View file

@ -1 +1,2 @@
music_audio_user: audio
music_mqtt_mpd_volume: bitlair/music/space/volume

View file

@ -23,3 +23,9 @@
name: soundboard
state: restarted
daemon_reload: true
- name: restart mpd-volume-to-mqtt
systemd:
name: mpd-volume-to-mqtt
state: restarted
daemon_reload: true

View file

@ -5,3 +5,21 @@
- jackd
- mpd
state: present
- name: Install mpd-volume-to-mqtt script
template:
src: mpd-volume-to-mqtt.sh
dest: /opt/mpd-volume-to-mqtt.sh
owner: root
group: root
mode: 0644
notify: restart mpd-volume-to-mqtt
- name: Install mpd-volume-to-mqtt service
template:
src: mpd-volume-to-mqtt.service
dest: /etc/systemd/system/mpd-volume-to-mqtt.service
owner: root
group: root
mode: 0644
notify: restart mpd-volume-to-mqtt

View file

@ -46,27 +46,3 @@
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

View file

@ -1,6 +1,4 @@
#
# Managed by Ansible
#
# {{ ansible_managed }}
[Unit]
Description=Spotify through Librespot

View file

@ -0,0 +1,16 @@
# {{ ansible_managed }}
[Unit]
Description=MPD Volume to MQTT
After=network.target
Requires=mpd.service
[Service]
Type=simple
Restart=always
RestartSec=2s
ExecStart=/bin/bash /opt/mpd-volume-to-mqtt.sh
DynamicUser=true
[Install]
WantedBy=multi-user.target

View file

@ -0,0 +1,21 @@
# {{ ansible_managed }}
#!/bin/bash
set -eu
set -o pipefail
trap 'mqtt-simple -h {{ mqtt_internal_host }} -p '{{ music_mqtt_mpd_volume }}' -m "" -r' EXIT
prev_volume=x
(echo mixer; mpc idleloop) | while read event; do
if [ $event = "mixer" ]; then
volume=`mpc volume | sed -nr 's/^volume: ([0-9]+)%$/\1/p'`
if [ "$prev_volume" != "$volume" ]; then
mqtt-simple -h {{ mqtt_internal_host }} -p '{{ music_mqtt_mpd_volume }} -r' -m "$volume"
fi
prev_volume=$volume
fi
done

View file

@ -1,3 +1,5 @@
# {{ ansible_managed }}
server {
listen 80 default_server;
listen [::]:80 default_server;

View file

@ -1,16 +0,0 @@
# 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

View file

@ -1,8 +0,0 @@
#!/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'

View file

@ -1,4 +1,4 @@
# Managed by Ansible
# {{ ansible_managed }}
[Unit]
Description=MQTT Soundboard

View file

@ -1,3 +1,5 @@
# {{ ansible_managed }}
loglevel: INFO
mqtt:

View file

@ -1,6 +1,4 @@
#
# Managed by Ansible
#
# {{ ansible_managed }}
[Unit]
Description=Trollibox

View file

@ -1,4 +1,4 @@
# Managed by Ansible
# {{ ansible_managed }}
# The network address to listen on. Must be in the Go listen format.
#

View file

@ -43,12 +43,6 @@
state: restarted
daemon_reload: true
- name: restart mqtt-graphite
systemd:
name: mqtt-graphite
state: restarted
daemon_reload: true
- name: restart wifi-mqtt
systemd:
name: wifi-mqtt

View file

@ -15,11 +15,14 @@
- name: Install service file
template:
src: irc-bot.service
src: generic.service
dest: /etc/systemd/system/irc-bot.service
owner: root
group: root
mode: 0644
vars:
description: Bitlair IRC bot
exec: /bin/bash /var/lib/irc-bot/irc-bot
notify: restart irc-bot
- name: Start irc-bot
@ -45,11 +48,15 @@
- name: Install photos notification service
template:
src: irc-photos.service
src: generic.service
dest: /etc/systemd/system/irc-photos.service
owner: root
group: root
mode: 0644
vars:
description: Bitlair IRC photos notification
requires: irc-bot.service
exec: /bin/bash /var/lib/irc-helpers/photos.sh
notify: restart irc-photos
- name: Start irc-photos
@ -70,11 +77,15 @@
- name: Install doorduino notification service
template:
src: irc-doorduino.service
src: generic.service
dest: /etc/systemd/system/irc-doorduino.service
owner: root
group: root
mode: 0644
vars:
description: Bitlair IRC doorduino notification
requires: irc-bot.service
exec: /bin/bash /var/lib/irc-helpers/doorduino.sh
notify: restart irc-doorduino
- name: Start irc-doorduino

View file

@ -14,9 +14,6 @@
- tags: services_mastodon_spacestate
import_tasks: mastodon_spacestate.yaml
- tags: services_mqtt_graphite
import_tasks: mqtt_graphite.yaml
- tags: services_wifi_mqtt
import_tasks: wifi_mqtt.yaml

View file

@ -1,25 +0,0 @@
- name: Install mqtt-graphite
template:
src: mqtt-graphite.sh
dest: /var/lib/mqtt-graphite.sh
owner: root
group: root
mode: 0755
notify: restart mqtt-graphite
- name: Install mqtt-graphite service
template:
src: mqtt-graphite.service
dest: /etc/systemd/system/mqtt-graphite.service
owner: root
group: root
mode: 0644
notify: restart mqtt-graphite
- name: Start mqtt-graphite
systemd:
name: mqtt-graphite
state: started
enabled: yes
daemon_reload: true

View file

@ -14,11 +14,14 @@
- name: Install power-mqtt service
template:
src: power-mqtt.service
src: generic.service
dest: /etc/systemd/system/power-mqtt.service
owner: root
group: root
mode: 0644
vars:
description: SMD630 to MQTT Probe
exec: /var/lib/power-mqtt.py
notify: restart power-mqtt
- name: Start power-mqtt

View file

@ -1,12 +1,15 @@
# Managed by Ansible
[Unit]
Description=Bitlair IRC bot
Description={{ description }}
After=network.target
{% if requires|default('') %}
Requires={{ requires }}
{% endif %}
[Service]
Type=simple
ExecStart=/bin/bash /var/lib/irc-bot/irc-bot
ExecStart={{ exec }}
Restart=always
RestartSec=10s
DynamicUser=true

View file

@ -1,16 +0,0 @@
# Managed by Ansible
[Unit]
Description=Bitlair IRC doorduino notification
After=network.target
Requires=irc-bot.service
[Service]
Type=simple
ExecStart=/bin/bash /var/lib/irc-helpers/doorduino.sh
Restart=always
RestartSec=10s
DynamicUser=true
[Install]
WantedBy=multi-user.target

View file

@ -1,16 +0,0 @@
# Managed by Ansible
[Unit]
Description=Bitlair IRC photos notification
After=network.target
Requires=irc-bot.service
[Service]
Type=simple
ExecStart=/bin/bash /var/lib/irc-helpers/photos.sh
Restart=always
RestartSec=10s
DynamicUser=true
[Install]
WantedBy=multi-user.target

View file

@ -1,15 +0,0 @@
# Managed by Ansible
[Unit]
Description=MQTT to Graphite bridge
After=network.target
[Service]
Type=simple
ExecStart=/bin/bash /var/lib/mqtt-graphite.sh
Restart=on-failure
RestartSec=10s
DynamicUser=true
[Install]
WantedBy=multi-user.target

View file

@ -1,20 +0,0 @@
#!/bin/bash
GRAPHITE_HOST="100.64.0.11"
GRAPHITE_PORT="2003"
set -eu
set -o pipefail
mqtt-simple -h {{ mqtt_internal_host }} -t "#" |
while read line; do
topic=$(echo "$line" | cut -d' ' -f1 | sed 's/\//./g' | tr '[:upper:]' '[:lower:]')
value=$(echo "$line" | cut -s -d' ' -f2- | sed 's/closed/0/g;s/open/1/g')
# Only relay numeric values.
if [[ $value =~ ^-?[0-9]+\.?[0-9]*$ ]]; then
echo "$topic $value $(date +%s)" | nc -q0 "$GRAPHITE_HOST" "$GRAPHITE_PORT"
echo "$topic $value $(date +%s)"
fi
done

View file

@ -12,9 +12,10 @@ mqtt_host = '{{ mqtt_internal_host }}'
client = mqtt.Client()
client.connect(mqtt_host, 1883, 60)
client.loop_start()
while True:
sleep(1)
sleep(10)
try:
data = requests.get(f'http://{sdm630_host}/api/v1/data').json()
client.publish('bitlair/power/total_kwh', data['total_power_import_kwh'])

View file

@ -1,15 +0,0 @@
# Managed by Ansible
[Unit]
Description=SMD630 to MQTT Probe
After=network.target
[Service]
Type=simple
ExecStart=/var/lib/power-mqtt.py
Restart=on-failure
RestartSec=10s
DynamicUser=true
[Install]
WantedBy=multi-user.target