Compare commits
6 commits
1511f6df22
...
6420eeea53
Author | SHA1 | Date | |
---|---|---|---|
6420eeea53 | |||
40093a5936 | |||
21884f3b3c | |||
c105131d60 | |||
4c8fae0657 | |||
051eef5bbf |
27 changed files with 101 additions and 179 deletions
|
@ -18,6 +18,12 @@
|
||||||
- tags: node-exporter
|
- tags: node-exporter
|
||||||
import_tasks: node-exporter.yaml
|
import_tasks: node-exporter.yaml
|
||||||
|
|
||||||
|
- name: Remove Vim
|
||||||
|
apt:
|
||||||
|
name: vim
|
||||||
|
state: absent
|
||||||
|
autoremove: true
|
||||||
|
|
||||||
- name: Install utilities
|
- name: Install utilities
|
||||||
apt:
|
apt:
|
||||||
name:
|
name:
|
||||||
|
|
|
@ -1 +1,2 @@
|
||||||
music_audio_user: audio
|
music_audio_user: audio
|
||||||
|
music_mqtt_mpd_volume: bitlair/music/space/volume
|
||||||
|
|
|
@ -23,3 +23,9 @@
|
||||||
name: soundboard
|
name: soundboard
|
||||||
state: restarted
|
state: restarted
|
||||||
daemon_reload: true
|
daemon_reload: true
|
||||||
|
|
||||||
|
- name: restart mpd-volume-to-mqtt
|
||||||
|
systemd:
|
||||||
|
name: mpd-volume-to-mqtt
|
||||||
|
state: restarted
|
||||||
|
daemon_reload: true
|
||||||
|
|
|
@ -5,3 +5,21 @@
|
||||||
- jackd
|
- jackd
|
||||||
- mpd
|
- mpd
|
||||||
state: present
|
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
|
||||||
|
|
|
@ -46,27 +46,3 @@
|
||||||
state: started
|
state: started
|
||||||
enabled: true
|
enabled: true
|
||||||
daemon_reload: 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
|
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
#
|
# {{ ansible_managed }}
|
||||||
# Managed by Ansible
|
|
||||||
#
|
|
||||||
|
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=Spotify through Librespot
|
Description=Spotify through Librespot
|
||||||
|
|
16
roles/music/templates/mpd-volume-to-mqtt.service
Normal file
16
roles/music/templates/mpd-volume-to-mqtt.service
Normal 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
|
21
roles/music/templates/mpd-volume-to-mqtt.sh
Normal file
21
roles/music/templates/mpd-volume-to-mqtt.sh
Normal 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
|
|
@ -1,3 +1,5 @@
|
||||||
|
# {{ ansible_managed }}
|
||||||
|
|
||||||
server {
|
server {
|
||||||
listen 80 default_server;
|
listen 80 default_server;
|
||||||
listen [::]:80 default_server;
|
listen [::]:80 default_server;
|
||||||
|
|
|
@ -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
|
|
|
@ -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'
|
|
|
@ -1,4 +1,4 @@
|
||||||
# Managed by Ansible
|
# {{ ansible_managed }}
|
||||||
|
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=MQTT Soundboard
|
Description=MQTT Soundboard
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
# {{ ansible_managed }}
|
||||||
|
|
||||||
loglevel: INFO
|
loglevel: INFO
|
||||||
|
|
||||||
mqtt:
|
mqtt:
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
#
|
# {{ ansible_managed }}
|
||||||
# Managed by Ansible
|
|
||||||
#
|
|
||||||
|
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=Trollibox
|
Description=Trollibox
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# Managed by Ansible
|
# {{ ansible_managed }}
|
||||||
|
|
||||||
# The network address to listen on. Must be in the Go listen format.
|
# The network address to listen on. Must be in the Go listen format.
|
||||||
#
|
#
|
||||||
|
|
|
@ -43,12 +43,6 @@
|
||||||
state: restarted
|
state: restarted
|
||||||
daemon_reload: true
|
daemon_reload: true
|
||||||
|
|
||||||
- name: restart mqtt-graphite
|
|
||||||
systemd:
|
|
||||||
name: mqtt-graphite
|
|
||||||
state: restarted
|
|
||||||
daemon_reload: true
|
|
||||||
|
|
||||||
- name: restart wifi-mqtt
|
- name: restart wifi-mqtt
|
||||||
systemd:
|
systemd:
|
||||||
name: wifi-mqtt
|
name: wifi-mqtt
|
||||||
|
|
|
@ -15,11 +15,14 @@
|
||||||
|
|
||||||
- name: Install service file
|
- name: Install service file
|
||||||
template:
|
template:
|
||||||
src: irc-bot.service
|
src: generic.service
|
||||||
dest: /etc/systemd/system/irc-bot.service
|
dest: /etc/systemd/system/irc-bot.service
|
||||||
owner: root
|
owner: root
|
||||||
group: root
|
group: root
|
||||||
mode: 0644
|
mode: 0644
|
||||||
|
vars:
|
||||||
|
description: Bitlair IRC bot
|
||||||
|
exec: /bin/bash /var/lib/irc-bot/irc-bot
|
||||||
notify: restart irc-bot
|
notify: restart irc-bot
|
||||||
|
|
||||||
- name: Start irc-bot
|
- name: Start irc-bot
|
||||||
|
@ -45,11 +48,15 @@
|
||||||
|
|
||||||
- name: Install photos notification service
|
- name: Install photos notification service
|
||||||
template:
|
template:
|
||||||
src: irc-photos.service
|
src: generic.service
|
||||||
dest: /etc/systemd/system/irc-photos.service
|
dest: /etc/systemd/system/irc-photos.service
|
||||||
owner: root
|
owner: root
|
||||||
group: root
|
group: root
|
||||||
mode: 0644
|
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
|
notify: restart irc-photos
|
||||||
|
|
||||||
- name: Start irc-photos
|
- name: Start irc-photos
|
||||||
|
@ -70,11 +77,15 @@
|
||||||
|
|
||||||
- name: Install doorduino notification service
|
- name: Install doorduino notification service
|
||||||
template:
|
template:
|
||||||
src: irc-doorduino.service
|
src: generic.service
|
||||||
dest: /etc/systemd/system/irc-doorduino.service
|
dest: /etc/systemd/system/irc-doorduino.service
|
||||||
owner: root
|
owner: root
|
||||||
group: root
|
group: root
|
||||||
mode: 0644
|
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
|
notify: restart irc-doorduino
|
||||||
|
|
||||||
- name: Start irc-doorduino
|
- name: Start irc-doorduino
|
||||||
|
|
|
@ -14,9 +14,6 @@
|
||||||
- tags: services_mastodon_spacestate
|
- tags: services_mastodon_spacestate
|
||||||
import_tasks: mastodon_spacestate.yaml
|
import_tasks: mastodon_spacestate.yaml
|
||||||
|
|
||||||
- tags: services_mqtt_graphite
|
|
||||||
import_tasks: mqtt_graphite.yaml
|
|
||||||
|
|
||||||
- tags: services_wifi_mqtt
|
- tags: services_wifi_mqtt
|
||||||
import_tasks: wifi_mqtt.yaml
|
import_tasks: wifi_mqtt.yaml
|
||||||
|
|
||||||
|
|
|
@ -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
|
|
||||||
|
|
|
@ -14,11 +14,14 @@
|
||||||
|
|
||||||
- name: Install power-mqtt service
|
- name: Install power-mqtt service
|
||||||
template:
|
template:
|
||||||
src: power-mqtt.service
|
src: generic.service
|
||||||
dest: /etc/systemd/system/power-mqtt.service
|
dest: /etc/systemd/system/power-mqtt.service
|
||||||
owner: root
|
owner: root
|
||||||
group: root
|
group: root
|
||||||
mode: 0644
|
mode: 0644
|
||||||
|
vars:
|
||||||
|
description: SMD630 to MQTT Probe
|
||||||
|
exec: /var/lib/power-mqtt.py
|
||||||
notify: restart power-mqtt
|
notify: restart power-mqtt
|
||||||
|
|
||||||
- name: Start power-mqtt
|
- name: Start power-mqtt
|
||||||
|
|
|
@ -1,12 +1,15 @@
|
||||||
# Managed by Ansible
|
# Managed by Ansible
|
||||||
|
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=Bitlair IRC bot
|
Description={{ description }}
|
||||||
After=network.target
|
After=network.target
|
||||||
|
{% if requires|default('') %}
|
||||||
|
Requires={{ requires }}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
Type=simple
|
Type=simple
|
||||||
ExecStart=/bin/bash /var/lib/irc-bot/irc-bot
|
ExecStart={{ exec }}
|
||||||
Restart=always
|
Restart=always
|
||||||
RestartSec=10s
|
RestartSec=10s
|
||||||
DynamicUser=true
|
DynamicUser=true
|
|
@ -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
|
|
|
@ -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
|
|
|
@ -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
|
|
|
@ -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
|
|
||||||
|
|
|
@ -12,9 +12,10 @@ mqtt_host = '{{ mqtt_internal_host }}'
|
||||||
|
|
||||||
client = mqtt.Client()
|
client = mqtt.Client()
|
||||||
client.connect(mqtt_host, 1883, 60)
|
client.connect(mqtt_host, 1883, 60)
|
||||||
|
client.loop_start()
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
sleep(1)
|
sleep(10)
|
||||||
try:
|
try:
|
||||||
data = requests.get(f'http://{sdm630_host}/api/v1/data').json()
|
data = requests.get(f'http://{sdm630_host}/api/v1/data').json()
|
||||||
client.publish('bitlair/power/total_kwh', data['total_power_import_kwh'])
|
client.publish('bitlair/power/total_kwh', data['total_power_import_kwh'])
|
||||||
|
|
|
@ -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
|
|
Loading…
Add table
Reference in a new issue