#!/bin/bash . /opt/mqtt-mpd/mqmpd.cfg id=`hostname`-$$ host=$1 passwd=$2 if [ "$passwd" = "-" ] then command="mpc -h $host" else command="mpc -h $host -P $passwd" fi while : do # current=`mpc -h $host -P $passwd current | sed 's/"/\"/g'` # volume=`mpc -h $host -P $passwd volume | cut -d: -f2 | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//'` mapfile -t array < <( $command ) if [ ${#array[@]} = 3 ] then current=${array[0]} str2=( ${array[1]}) str3=( ${array[2]}) status=`echo ${str2[0]} | sed 's/^\[//' | sed 's/\]$//'` current_track_num=`echo ${str2[1]} | cut -d '/' -f 1 | sed 's/^#//'` tracks_in_list=`echo ${str2[1]} | cut -d '/' -f 2` current_pos=`echo ${str2[2]} | cut -d '/' -f 1` track_length=`echo ${str2[2]} | cut -d '/' -f 2` volume=`echo ${str3[1]} | sed 's/%//'` repeat=${str3[3]} random=${str3[5]} single=${str3[7]} consume=${str3[9]} else if [ ${#array[@]} = 1 ] then current='-' status='stopped' current_track_num='0' tracks_in_list='0' current_pos='-' track_length='-' str3=( ${array[0]}) volume=`echo ${str3[1]} | sed 's/%//'` if [ "$volume" = "n/a" ] then volume="0" fi repeat=${str3[3]} random=${str3[5]} single=${str3[7]} consume=${str3[9]} else # not responding or error current='-' status='failed' current_track_num='0' tracks_in_list='0' current_pos='-' track_length='-' volume="0" repeat="off" random="off" single="off" consume="off" fi fi sleep 0.2 mosquitto_pub -i mqtt-mpd-$id -h $mqhost -p $mqport -t $mqtopic/$host/nowplaying -m "$current" -u $mquser -P $mqpassword mosquitto_pub -i mqtt-mpd-$id -h $mqhost -p $mqport -t $mqtopic/$host/volume -m "$volume" -u $mquser -P $mqpassword mosquitto_pub -i mqtt-mpd-$id -h $mqhost -p $mqport -t $mqtopic/$host/status -m "$status" -u $mquser -P $mqpassword mosquitto_pub -i mqtt-mpd-$id -h $mqhost -p $mqport -t $mqtopic/$host/currentnum -m "$current_track_num" -u $mquser -P $mqpassword mosquitto_pub -i mqtt-mpd-$id -h $mqhost -p $mqport -t $mqtopic/$host/tracks -m "$tracks_in_list" -u $mquser -P $mqpassword mosquitto_pub -i mqtt-mpd-$id -h $mqhost -p $mqport -t $mqtopic/$host/currentpos -m "$current_pos" -u $mquser -P $mqpassword mosquitto_pub -i mqtt-mpd-$id -h $mqhost -p $mqport -t $mqtopic/$host/tracklen -m "$track_length" -u $mquser -P $mqpassword mosquitto_pub -i mqtt-mpd-$id -h $mqhost -p $mqport -t $mqtopic/$host/repeat -m "$repeat" -u $mquser -P $mqpassword mosquitto_pub -i mqtt-mpd-$id -h $mqhost -p $mqport -t $mqtopic/$host/random -m "$random" -u $mquser -P $mqpassword mosquitto_pub -i mqtt-mpd-$id -h $mqhost -p $mqport -t $mqtopic/$host/single -m "$single" -u $mquser -P $mqpassword mosquitto_pub -i mqtt-mpd-$id -h $mqhost -p $mqport -t $mqtopic/$host/consume -m "$consume" -u $mquser -P $mqpassword $command idle if [ $? != 0 ] then sleep 60 fi done