From e1a7ac068dee934243bf4bf8dcb153694d2cb6c5 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Sun, 22 Jul 2018 19:25:03 +0200 Subject: [PATCH] :sparkles: Adds support for tweaking AirSonos using its configuration file --- airsonos/config.json | 3 +++ airsonos/rootfs/etc/airsonos.xml | 14 ++++++++++++++ airsonos/rootfs/etc/cont-init.d/50-airsonos.sh | 7 ++++++- airsonos/rootfs/etc/services.d/airsonos/run | 6 ++++++ 4 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 airsonos/rootfs/etc/airsonos.xml diff --git a/airsonos/config.json b/airsonos/config.json index 3e19fa0..79ddb80 100755 --- a/airsonos/config.json +++ b/airsonos/config.json @@ -15,6 +15,9 @@ "hassio_api": true, "homeassistant_api": false, "host_network": true, + "map": [ + "config:rw" + ], "options": { "log_level": "info", "address": "", diff --git a/airsonos/rootfs/etc/airsonos.xml b/airsonos/rootfs/etc/airsonos.xml new file mode 100644 index 0000000..8d51f70 --- /dev/null +++ b/airsonos/rootfs/etc/airsonos.xml @@ -0,0 +1,14 @@ + + + +1 +0 + +pcm + + +info +info +warn +-1 + diff --git a/airsonos/rootfs/etc/cont-init.d/50-airsonos.sh b/airsonos/rootfs/etc/cont-init.d/50-airsonos.sh index b38c1c6..0ca1404 100644 --- a/airsonos/rootfs/etc/cont-init.d/50-airsonos.sh +++ b/airsonos/rootfs/etc/cont-init.d/50-airsonos.sh @@ -8,8 +8,13 @@ source /usr/lib/hassio-addons/base.sh declare latency -latency=$(hass.config.get 'latency_rtp') +# Create a configuration file, if it does not exist yet +if ! hass.file_exists '/config/airsonos.xml'; then + cp /etc/airsonos.xml /config/airsonos.xml +fi +# Warn if latency is below 500ms +latency=$(hass.config.get 'latency_rtp') if [[ "${latency}" -lt 500 && "${latency}" -ne 0 ]]; then hass.log.warning \ 'Setting the RTP latency of AirPlay audio below 500ms is not recommended!' diff --git a/airsonos/rootfs/etc/services.d/airsonos/run b/airsonos/rootfs/etc/services.d/airsonos/run index 99c8eb1..a2ed26a 100644 --- a/airsonos/rootfs/etc/services.d/airsonos/run +++ b/airsonos/rootfs/etc/services.d/airsonos/run @@ -13,6 +13,12 @@ hass.log.info 'Starting the AirSonos server' # Non-interactive options+=(-Z) +# Configuration file +options+=(-x '/config/airsonos.xml') + +# Update configuration file when new devices where detected +options+=(-I) + # Bind to a specific interface if hass.config.has_value 'address'; then options+=(-b "$(hass.config.get 'address'):$(hass.config.get 'port')")