X-Git-Url: https://git.rvb.name/openhab-process.git/blobdiff_plain/f73d4c08f9b3d93ad6e4a6b35b164e4ae0f1e4be..0d4dd2a297fe44d645e64a1e5d48c1f37294c571:/mqtt-mpd/mqmpd diff --git a/mqtt-mpd/mqmpd b/mqtt-mpd/mqmpd new file mode 100755 index 0000000..9867146 --- /dev/null +++ b/mqtt-mpd/mqmpd @@ -0,0 +1,112 @@ +#!/bin/bash + +if [ "$1" = "stop" ] +then + + for i in `pgrep -f "/bin/bash /opt/mqtt-mpd/mqmpdj"` + do + killtree $i 9 + done + + exit 0 + +fi + +. /opt/mqtt-mpd/mqmpd.cfg + +# запускаем процессы, мониторящие состояние + +i=0 +while [ "x${hosts[i]}" != "x" ] +do + + /opt/mqtt-mpd/mqmpdj ${hosts[i]} ${passwd[i]} & + + i=$(( $i + 1 )) + +done + +# сами остаемся слушать команды + +mosquitto_sub -v -h $mqhost -p $mqport -t "$mqcmd/#" -u $mquser -P $mqpassword | while read line +do + + template="s!$mqcmd/!!" + addr=`echo $line | cut -f 1 -d " " | sed $template` + arg=`echo $line | cut -f 2 -d " "` + echo $addr $arg + + host=`echo $addr | cut -f 1 -d "/"` + cmd=`echo $addr | cut -f 2 -d "/"` + + i=0 + while [ "x${hosts[i]}" != "x" ] + do + if [ "${hosts[i]}" = "$host" ] + then + mpdpass=${passwd[i]} + if [ "$mpdpass" = "-" ] + then + mpccmd="mpc -h $host" + else + mpccmd="mpc -h $host -P $mpdpass" + fi + break + fi + i=$(( $i + 1 )) + done + + arg=`printf "%q" $arg` + if [[ "$arg" =~ [A-Za-z0-9]+ ]] + then + + case $cmd in + + volume) + reply=( `$mpccmd volume`) + currvolume=`echo ${reply[1]} | sed 's/%//'` + if [ "$currvolume" ] + then + if [ "$arg" -gt "$currvolume" ] + then + delta=$(( $arg - $currvolume )) + $mpccmd volume +$delta + fi + if [ "$arg" -lt "$currvolume" ] + then + delta=$(( $currvolume - $arg )) + $mpccmd volume -$delta + fi + fi + ;; + status) + case $arg in + playing) + $mpccmd play + ;; + stopped) + $mpccmd stop + ;; + paused) + $mpccmd pause + ;; + *) + ;; + esac + ;; + repeat|random|single|consume) + $mpccmd $cmd $arg + ;; + *) + echo "Неизвестная команда $cmd" + ;; + + esac + + else + + echo "Недопустимый аргумент $arg" + + fi + +done