"Умная" генерация ID клиента для обеспечения одновременной работы нескольких экземпля...
authorRoman Bazalevskiy <rvb@rvb.name>
Tue, 31 Oct 2017 06:12:59 +0000 (09:12 +0300)
committerRoman Bazalevskiy <rvb@rvb.name>
Tue, 31 Oct 2017 06:12:59 +0000 (09:12 +0300)
mqtt-mpd/mqmpd
mqtt-mpd/mqmpdj

index 5d378ea140a912862b797c4d3620e3a0ca2db6d8..595c08d9ca9b5f7dfd2b78a4377394a227651f81 100755 (executable)
@@ -1,5 +1,7 @@
 #!/bin/bash
 
+id=`hostname`-$$
+
 if [ "$1" = "stop" ] 
 then
 
@@ -28,7 +30,7 @@ done
 
 # сами остаемся слушать команды
 
-mosquitto_sub -v -h $mqhost -p $mqport -t "$mqcmd/#" -u $mquser -P $mqpassword | while read line
+mosquitto_sub -i mqtt-mpd-$id -v -h $mqhost -p $mqport -t "$mqcmd/#" -u $mquser -P $mqpassword | while read line
 do
 
   template="s!$mqcmd/!!"
@@ -113,7 +115,6 @@ do
        esac
        ;;
     currentnum)
-       $mpccmd pause
        $mpccmd play $arg
        ;;
     repeat|random|single|consume)
index 70603f2f9a98d7e67bd1f7c32c82700cc2595e57..b8c935ad9544d2ced63dda2b37e74aadf6862f49 100755 (executable)
@@ -2,6 +2,8 @@
 
 . /opt/mqtt-mpd/mqmpd.cfg
 
+id=`hostname`-$$
+
 host=$1
 passwd=$2
 
@@ -18,9 +20,6 @@ fi
 
 while : 
 do         
-  $command idle
-  if [ $? = 0 ]
-  then
 #    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:]]*$//'`
     
@@ -41,37 +40,57 @@ do
       single=${str3[7]}
       consume=${str3[9]}
     else
-      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" ]
+      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"
-      fi
-      repeat=${str3[3]}
-      random=${str3[5]}
-      single=${str3[7]}
-      consume=${str3[9]}
+        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
 
-    mosquitto_pub -h $mqhost -p $mqport -t $mqtopic/$host/nowplaying -m "$current" -u $mquser -P $mqpassword
-    mosquitto_pub -h $mqhost -p $mqport -t $mqtopic/$host/volume -m "$volume" -u $mquser -P $mqpassword
-    mosquitto_pub -h $mqhost -p $mqport -t $mqtopic/$host/status -m "$status" -u $mquser -P $mqpassword
-    mosquitto_pub -h $mqhost -p $mqport -t $mqtopic/$host/currentnum -m "$current_track_num" -u $mquser -P $mqpassword
-    mosquitto_pub -h $mqhost -p $mqport -t $mqtopic/$host/tracks -m "$tracks_in_list" -u $mquser -P $mqpassword
-    mosquitto_pub -h $mqhost -p $mqport -t $mqtopic/$host/currentpos -m "$current_pos" -u $mquser -P $mqpassword
-    mosquitto_pub -h $mqhost -p $mqport -t $mqtopic/$host/tracklen -m "$track_length" -u $mquser -P $mqpassword
-    mosquitto_pub -h $mqhost -p $mqport -t $mqtopic/$host/repeat -m "$repeat" -u $mquser -P $mqpassword
-    mosquitto_pub -h $mqhost -p $mqport -t $mqtopic/$host/random -m "$random" -u $mquser -P $mqpassword
-    mosquitto_pub -h $mqhost -p $mqport -t $mqtopic/$host/single -m "$single" -u $mquser -P $mqpassword
-    mosquitto_pub -h $mqhost -p $mqport -t $mqtopic/$host/consume -m "$consume" -u $mquser -P $mqpassword
-
-  else
-    sleep 30
-  fi  
+    $command idle
+    if [ $? != 0 ]
+    then
+      sleep 60
+    fi
+  
 done