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
|
||||
import_tasks: node-exporter.yaml
|
||||
|
||||
- name: Remove Vim
|
||||
apt:
|
||||
name: vim
|
||||
state: absent
|
||||
autoremove: true
|
||||
|
||||
- name: Install utilities
|
||||
apt:
|
||||
name:
|
||||
|
|
|
@ -1 +1,2 @@
|
|||
music_audio_user: audio
|
||||
music_mqtt_mpd_volume: bitlair/music/space/volume
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -1,6 +1,4 @@
|
|||
#
|
||||
# Managed by Ansible
|
||||
#
|
||||
# {{ ansible_managed }}
|
||||
|
||||
[Unit]
|
||||
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 {
|
||||
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]
|
||||
Description=MQTT Soundboard
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
# {{ ansible_managed }}
|
||||
|
||||
loglevel: INFO
|
||||
|
||||
mqtt:
|
||||
|
|
|
@ -1,6 +1,4 @@
|
|||
#
|
||||
# Managed by Ansible
|
||||
#
|
||||
# {{ ansible_managed }}
|
||||
|
||||
[Unit]
|
||||
Description=Trollibox
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# Managed by Ansible
|
||||
# {{ ansible_managed }}
|
||||
|
||||
# The network address to listen on. Must be in the Go listen format.
|
||||
#
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
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
|
||||
|
|
|
@ -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
|
|
@ -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.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'])
|
||||
|
|
|
@ -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