Binding for Samsung Multiroom?

Just found a solution to integrate the Samsung MultiRoom Speakers using the Exec-Binding and the following Bash-Script.
Would someone be able to make a binding out of it?

Best

Florian

#! /bin/bash

# Author: F. Hatz
#    based on 'https://github.com/bacl/WAM_API_DOC'
#    start with MultiRoom.sh Speaker-IP UUID OBJECTID [OBJECTID OBJECTID ...] volume
#       or with MultiRoom.sh Speaker-IP fav1/fav2/fav3/radio1/radio2/radio3 volume
#       or with MultiRoom.sh Speaker-IP play/pause/stop  (song: play/pause  radio: stop)
#       or with MultiRoom.sh Speaker-IP next/previous
#       or with MultiRoom.sh Speaker-IP mute on/off
#       or with MultiRoom.sh Speaker-IP volume
#       or with MultiRoom.sh Speaker-IP show title/id (show information of played song)
#       or with MultiRoom.sh Speaker-IP list (show uuid and objectid's of actual playlist)
#       or with MultiRoom.sh Speaker-IP presets all/fav1/fav2/fav3/radio1/radio2/radio3
#       or with MultiRoom.sh Speaker-IP name (speaker name)
#       or with MultiRoom.sh Speaker-IP soundshare (set input to soundshare = TV-connect)

PATH=/sbin:/usr/sbin:/bin:/usr/bin

CURL="/usr/bin/curl"
PORT="55001"

COMMAND=".."
VOLUME=".."
SPEAKER=".."

declare -a OBJECTID
OBJ_NUM=0
VAR_NUM=0

for i in "$@"; do
  VAR_NUM=$(($VAR_NUM+1))
  if [ $VAR_NUM -eq 1 ]  2>/dev/null ; then
      SPEAKER=$i
  elif [ $VAR_NUM -eq 2 ] ; then
    if [ "$i" -eq "$i" ]  2>/dev/null ; then
      COMMAND="volume"
      VOLUME=$i
    elif [ $(echo ${#i}) -gt 10 ]  2>/dev/null ; then
      COMMAND="song"
      UUID=$i
    else
      COMMAND="$i"
    fi
  elif [ $VAR_NUM -eq $# ]  2>/dev/null ; then
    if [ $(echo ${#i}) -lt 10 ]  2>/dev/null ; then
      VOLUME="$i"
    else
      OBJECTID["$OBJ_NUM"]="$i"
      OBJ_NUM=$(($OBJ_NUM+1))
    fi
  else
      OBJECTID["$OBJ_NUM"]="$i"
      OBJ_NUM=$(($OBJ_NUM+1))
  fi
done

if [ $SPEAKER == ".." ] ; then
    echo "Error, ip-adress of speaker must be first argument"
    exit 1
fi

if [ "$VOLUME" -eq "$VOLUME" ] 2>/dev/null
then
   MSG="http://$SPEAKER:$PORT/UIC?cmd=%3Cname%3ESetVolume%3C/name%3E%3Cp%20type=%22dec%22%20name=%22volume%22%20val=%22$VOLUME%22/%3E"
   $CURL $MSG -s >/dev/null
fi

case $COMMAND in
  stop)
      MSG="http://$SPEAKER:$PORT/CPM?cmd=%3Cname%3ESetPlaybackControl%3C/name%3E%3Cp%20type=%22str%22%20name=%22playbackcontrol%22%20val=%22stop%22/%3E"
	    $CURL $MSG -s >/dev/null
	    ;;
  pause)
      MSG="http://$SPEAKER:$PORT/UIC?cmd=%3Cpwron%3Eon%3C/pwron%3E%3Cname%3ESetPlaybackControl%3C/name%3E%3Cp%20type=%22str%22%20name=%22playbackcontrol%22%20val=%22pause%22/%3E"
	    $CURL $MSG -s >/dev/null
	    ;;
  play)
      MSG="http://$SPEAKER:$PORT/UIC?cmd=%3Cpwron%3Eon%3C/pwron%3E%3Cname%3ESetPlaybackControl%3C/name%3E%3Cp%20type=%22str%22%20name=%22playbackcontrol%22%20val=%22resume%22/%3E"
	    $CURL $MSG -s >/dev/null
	    ;;
  next)
      MSG="http://$SPEAKER:$PORT/UIC?cmd=%3Cpwron%3Eon%3C/pwron%3E%3Cname%3ESetTrickMode%3C/name%3E%3Cp%20type=%22str%22%20name=%22trickmode%22%20val=%22next%22/%3E"
	    $CURL $MSG -s >/dev/null
	    ;;
  previous)
      MSG="http://$SPEAKER:$PORT/UIC?cmd=%3Cpwron%3Eon%3C/pwron%3E%3Cname%3ESetTrickMode%3C/name%3E%3Cp%20type=%22str%22%20name=%22trickmode%22%20val=%22previous%22/%3E"
	    $CURL $MSG -s >/dev/null
	    ;;
  mute)
      if [ "$VOLUME" == ".." ] 2>/dev/null ; then
        MSG="http://$SPEAKER:$PORT/UIC?cmd=%3Cname%3EGetMute%3C/name%3E"
        MUTE=$($CURL $MSG -s)
        MUTE=($(echo "$MUTE" | grep -oP "(?<=<mute>)[^<]+"))
        if [ $MUTE == "off" ]; then
          VOLUME="on"
        else
          VOLUME="off"
        fi
      fi
      MSG="http://$SPEAKER:$PORT/UIC?cmd=%3Cpwron%3Eon%3C/pwron%3E%3Cname%3ESetMute%3C/name%3E%3Cp%20type=%22str%22%20name=%22mute%22%20val=%22$VOLUME%22/%3E"
      $CURL $MSG -s >/dev/null
      echo "Mute $VOLUME"
	    ;;
  fav1)
      MSG="http://$SPEAKER:$PORT/CPM?cmd=%3Cname%3ESetPlayPreset%3C/name%3E%3Cp%20type=%22dec%22%20name=%22presetindex%22%20val=%220%22/%3E%3Cp%20type=%22dec%22%20name=%22presettype%22%20val=%221%22/%3E"
	    $CURL $MSG -s >/dev/null
      echo "Play Favorite 1"
	    ;;       
  fav2)
      MSG="http://$SPEAKER:$PORT/CPM?cmd=%3Cname%3ESetPlayPreset%3C/name%3E%3Cp%20type=%22dec%22%20name=%22presetindex%22%20val=%221%22/%3E%3Cp%20type=%22dec%22%20name=%22presettype%22%20val=%221%22/%3E"
	    $CURL $MSG -s >/dev/null
      echo "Play Favorite 2"
	    ;;       
  fav3)
      MSG="http://$SPEAKER:$PORT/CPM?cmd=%3Cname%3ESetPlayPreset%3C/name%3E%3Cp%20type=%22dec%22%20name=%22presetindex%22%20val=%222%22/%3E%3Cp%20type=%22dec%22%20name=%22presettype%22%20val=%221%22/%3E"
	    $CURL $MSG -s >/dev/null
      echo "Play Favorite 3"
	    ;;       
  radio1)
      MSG="http://$SPEAKER:$PORT/CPM?cmd=%3Cname%3ESetPlayPreset%3C/name%3E%3Cp%20type=%22dec%22%20name=%22presetindex%22%20val=%223%22/%3E%3Cp%20type=%22dec%22%20name=%22presettype%22%20val=%220%22/%3E"
	    $CURL $MSG -s >/dev/null
      echo "Play Radio 1"
	    ;;       
  radio2)
      MSG="http://$SPEAKER:$PORT/CPM?cmd=%3Cname%3ESetPlayPreset%3C/name%3E%3Cp%20type=%22dec%22%20name=%22presetindex%22%20val=%224%22/%3E%3Cp%20type=%22dec%22%20name=%22presettype%22%20val=%220%22/%3E"
	    $CURL $MSG -s >/dev/null
      echo "Play Radio 1"
	    ;;       
  radio3)
      MSG="http://$SPEAKER:$PORT/CPM?cmd=%3Cname%3ESetPlayPreset%3C/name%3E%3Cp%20type=%22dec%22%20name=%22presetindex%22%20val=%225%22/%3E%3Cp%20type=%22dec%22%20name=%22presettype%22%20val=%220%22/%3E"
	    $CURL $MSG -s >/dev/null
      echo "Play Radio 1"
	    ;;       
  song)
      for i in ${!OBJECTID[*]} ; do
          ID="${OBJECTID[$i]}"
          if [ "$i" -eq 0 ]  2>/dev/null ; then
              MSG="http://$SPEAKER:$PORT/UIC?cmd=%3Cname%3ESetNewPlaylistPlaybackControl%3C%2Fname%3E%3Cp%20type%3D%22dec%22%20name%3D%22selcount%22%20val%3D%221%22%2F%3E%3Cp%20type%3D%22dec%22%20name%3D%22playtime%22%20val%3D%220%22%2F%3E%3Cp%20type%3D%22str%22%20name%3D%22type%22%20val%3D%22new%22%2F%3E%3Cp%20type%3D%22str%22%20name%3D%22device_udn%22%20val%3D%22uuid%3A$UUID%22%2F%3E%3Cp%20type%3D%22str%22%20name%3D%22objectid%22%20val%3D%22$ID%22%2F%3E%3Cp%20type%3D%22cdata%22%20name%3D%22songtitle%22%20val%3D%22empty%22%3E%3C!%5BCDATA%5BSong%201%5D%5D%3E%3C%2Fp%3E%3Cp%20type%3D%22cdata%22%20name%3D%22thumbnail%22%20val%3D%22empty%22%3E%3C!%5BCDATA%5B%5D%5D%3E%3C%2Fp%3E%3Cp%20type%3D%22cdata%22%20name%3D%22artist%22%20val%3D%22empty%22%3E%3C!%5BCDATA%5B%5D%5D%3E%3C%2Fp%3E"
              $CURL $MSG -s >/dev/null
              echo "Play Song"
          else
              SONG_N=$(($i+1))
              MSG="http://$SPEAKER:$PORT/UIC?cmd=%3Cname%3EAddSongsToMultiQueue%3C%2Fname%3E%3Cp%20type%3D%22dec%22%20name%3D%22count%22%20val%3D%221%22%2F%3E%3Cp%20type%3D%22dec%22%20name%3D%22totalcount%22%20val%3D%221%22%2F%3E%3Cp%20type%3D%22str%22%20name%3D%22position%22%20val%3D%22last%22%2F%3E%3Cp%20type%3D%22str%22%20name%3D%22device_udn%22%20val%3D%22uuid%3A$UUID%22%2F%3E%3Cp%20type%3D%22str%22%20name%3D%22objectid%22%20val%3D%22$ID%22%2F%3E%3Cp%20type%3D%22cdata%22%20name%3D%22songtitle%22%20val%3D%22empty%22%3E%3C!%5BCDATA%5BSong%20$SONG_N%5D%5D%3E%3C%2Fp%3E%3Cp%20type%3D%22cdata%22%20name%3D%22thumbnail%22%20val%3D%22empty%22%3E%3C!%5BCDATA%5B%5D%5D%3E%3C%2Fp%3E%3Cp%20type%3D%22cdata%22%20name%3D%22artist%22%20val%3D%22empty%22%3E%3C!%5BCDATA%5B%5D%5D%3E%3C%2Fp%3E"
              $CURL $MSG -s >/dev/null
              echo "Add Song $SONG_N"
          fi
      done          
	    ;;
  volume)
      MSG="http://$SPEAKER:$PORT/UIC?cmd=%3Cname%3ESetVolume%3C/name%3E%3Cp%20type=%22dec%22%20name=%22volume%22%20val=%22$VOLUME%22/%3E"
	    $CURL $MSG -s >/dev/null
      echo "Volume $VOLUME"
	    ;; 
  show)
      IFS_BACK=$IFS
      IFS=$'\n'
      MSG="http://$SPEAKER:$PORT/UIC?cmd=%3Cname%3EGetMusicInfo%3C/name%3E"
      SONG=$($CURL $MSG -s)
      SONG_T=($(echo "$SONG" | grep -oP "(?<=<title>)[^/]+"))
      if [ -n "${SONG_T}" ]; then
        SONG_T=${SONG_T##*[}
        SONG_T=${SONG_T%%]*} 
        SONG_A=($(echo "$SONG" | grep -oP "(?<=<artist>)[^/]+"))
        SONG_A=${SONG_A##*[}
        SONG_A=${SONG_A%%]*} 
        SONG_UUID=($(echo "$SONG" | grep -oP "(?<=<device_udn>)[^<]+"))
        SONG_UUID=${SONG_UUID##*:} 
        SONG_OID=($(echo "$SONG" | grep -oP "(?<=<objectid>)[^/]+"))
        SONG_OID=${SONG_OID##*[}
        SONG_OID=${SONG_OID%%]*} 
        if [ $VOLUME == "id" ] ; then
          echo "$SONG_UUID $SONG_OID"
          exit 1
        elif [ $VOLUME == "title" ] ; then
          echo "$SONG_T - $SONG_A"
          exit 1
        else
          echo "$SONG_T - $SONG_A (uuid: $SONG_UUID / objectid: $SONG_OID)"
        fi
      fi
      MSG="http://$SPEAKER:$PORT/CPM?cmd=%3Cname%3EGetRadioInfo%3C/name%3E"
      RADIO=$($CURL $MSG -s)
      RADIO_T=($(echo "$RADIO" | grep -oP "(?<=<title>)[^<]+"))
      if [ -n "${RADIO_T}" ]; then
        echo "$RADIO_T"
      fi
      IFS=$IFS_BACK
	    ;; 
  presets)
      MSG="http://$SPEAKER:$PORT/CPM?cmd=%3Cname%3EGetPresetList%3C/name%3E%3Cp%20type=%22dec%22%20name=%22startindex%22%20val=%220%22/%3E%3Cp%20type=%22dec%22%20name=%22listcount%22%20val=%22100%22/%3E"
	    PRESETS=$($CURL $MSG -s)
      IFS_BACK=$IFS
      IFS=$'\n'
      TITLES=($(echo "$PRESETS" | grep -oP "(?<=<title>)[^<]+"))
      if [ $VOLUME == "fav1" ]; then
          echo "${TITLES[0]}"
      elif [ $VOLUME == "fav2" ]; then
          echo "${TITLES[1]}"
      elif [ $VOLUME == "fav3" ]; then
          echo "${TITLES[2]}"
      elif [ $VOLUME == "radio1" ]; then
          echo "${TITLES[3]}"
      elif [ $VOLUME == "radio2" ]; then
          echo "${TITLES[4]}"
      elif [ $VOLUME == "radio3" ]; then
          echo "${TITLES[5]}"
      elif [ $VOLUME == "radio4" ]; then
          echo "${TITLES[6]}"
      else
          echo "---------Favorites---------"
          for i in ${!TITLES[*]}
            do
            if [ $i \= 3 ]
            then
              echo "---------Radio-------------"
            fi
            if [ $i \< 3 ] 2>/dev/null
            then
              let j=$i+1
              echo "Favorite $j: ${TITLES[$i]}" 
            else
              let j=$i-2
              echo "Preset $j: ${TITLES[$i]}" 
            fi
          done
      fi 
      IFS=$IFS_BACK 
	    ;;
  list)
      IFS_BACK=$IFS
      IFS=$'\n'
      MSG="http://$SPEAKER:$PORT/UIC?cmd=%3Cname%3EGetCurrentMultiQueuelist%3C/name%3E%3Cp%20type=%22dec%22%20name=%22liststartindex%22%20val=%220%22/%3E%3Cp%20type=%22dec%22%20name=%22listcount%22%20val=%22100%22/%3E"
	    LIST=$($CURL $MSG -s)
      UUID=($(echo "$LIST" | grep -oP "(?<=uuid:)[^<]+"))
      TITLES=($(echo "$LIST" | grep -oP "(?<=object_id)[^>]+"))
      LIST="$UUID"
      for i in ${!TITLES[*]} ; do
         T=${TITLES[$i]} 
         T_L=${#T}-3
         T=${T:2:T_L}
         LIST="$LIST $T"  
      done
      echo "$LIST"
      IFS=$IFS_BACK 
      ;;
  name)
      IFS_BACK=$IFS
      IFS=$'\n'
      MSG="http://$SPEAKER:$PORT/UIC?cmd=%3Cname%3EGetSpkName%3C/name%3E"
      SPK_NAME=$($CURL $MSG -s)
      SPK_NAME=($(echo "$SPK_NAME" | grep -oP "(?<=<spkname>)[^/]+"))
      SPK_NAME=${SPK_NAME##*[}
      SPK_NAME=${SPK_NAME%%]*} 
      echo "$SPK_NAME"
      IFS=$IFS_BACK
      ;;
  soundshare)
      MSG="http://$SPEAKER:$PORT/UIC?cmd=%3Cname%3ESetFunc%3C/name%3E%3Cp%20type=%22str%22%20name=%22function%22%20val=%22soundshare%22/%3E"
      $CURL $MSG -s >/dev/null
      echo "Input: TV-Connect"
      ;;
  *)
      echo "Usage: Error - $COMMAND" >&2
      ;;
esac

exit 1
1 Like

Very intresting information , as i remember these are WIFI speakers from samsung ? correct ?

Did this every turned out to a binding… could use a binding for my Samsung speakers.

Unfortunately there is no binding yet.
But with this scrip or a simple rule with the http binding you can control you Samsung multiroom speakers.

I have no idea how to use a script, unfortunatly. And I believe using the http binding require some knowledge about how to, what commands to send/use etc, like an API i guess?

Yes, the speakers have a build in API like system.
You can control them by various url commands.

As you can see in the script above, for example mute:

http://$SPEAKER:$PORT/UIC?cmd=%3Cpwron%3Eon%3C/pwron%3E%3Cname%3ESetMute%3C/name%3E%3Cp%20type=%22str%22%20name=%22mute%22%20val=%22$VOLUME%22/%3E"

This will change the mute state of your speaker.
You can try it in your browser. Just find out what IP your speaker has (Port is mostly 55001).

If this works, you can use the same url in a rule in openhab to control your speaker.

(If you want i can send you a simple rule for controlling the speakers. I don’t know how to make a binding)

  • Jordo

Thanks, I would very much like to see this…
Do you know if it´s possible to stream a audio file directly to the speaker from openhab?

I will send you the code later today then!

About streaming, as far as I know that is only possible via the Samsung multiroom app (pc or phone)
But you can control Spotify with the right binding from out openhab. (Premium needed)

Damn!
I was hoping to do some scary audio streaming for the upcoming Halloween event, when children come knocking on our door, (motion sensor trigging)… My Samsung R1 speaker would have been ideal for this purpose, and then event/rules by openhab :grin:

You can play sounds with OpenHAB, you only need to add a speaker to your server.

To control your speaker, here is the code.
The first is for volume (number item)
The second is for command (these are not all available, you can find them on the internet)

In both cases Return will hold the xml answer of the speaker.
You can parse it if needed.

rule Samsung_Volume
when	
	Item Speaker_Volume changed
then
	var Volume = Speaker_Volume.state.toString
	var URL = 'http://SPEAKER_IP:PORT/UIC?cmd=%3Cname%3ESetVolume%3C/name%3E%3Cp%20type=%22dec%22%20name=%22volume%22%20val=%22' + Volume + '%22/%3E'
	var Return = sendHttpGetRequest(URL)
end

rule Samsung_Multiroom_Command
when
	Item Speaker_Command received command
then
	var Command = Speaker_Command .state.toString
	var URL = ""
	switch Command {
		//Input mode
		case "setOptical" : URL = '/UIC?cmd=%3Cname%3ESetFunc%3C/name%3E%3Cp%20type=%22str%22%20name=%22function%22%20val=%22optical%22/%3E'
		case "setBluetooth" : URL = '/UIC?cmd=%3Cname%3ESetFunc%3C/name%3E%3Cp%20type=%22str%22%20name=%22function%22%20val=%22bt%22/%3E'
		case "setWifi" : URL = '/UIC?cmd=%3Cname%3ESetFunc%3C/name%3E%3Cp%20type=%22str%22%20name=%22function%22%20val=%22wifi%22/%3E'
		case "setHDMI" : URL = '/UIC?cmd=%3Cname%3ESetFunc%3C/name%3E%3Cp%20type=%22str%22%20name=%22function%22%20val=%22hdmi%22/%3E'
		case "setAux" : URL = '/UIC?cmd=%3Cname%3ESetFunc%3C/name%3E%3Cp%20type=%22str%22%20name=%22function%22%20val=%22aux%22/%3E'
		
		case "setRadio1On" : URL = '/CPM?cmd=%3Cname%3ESetPlayPreset%3C/name%3E%3Cp%20type=%22dec%22%20name=%22presetindex%22%20val=0/%3E%3Cp%20type=%22dec%22%20name=%22presettype%22%20val=%221%22/%3E'
		case "setRadio1Off" : URL = '/CPM?cmd=%3Cname%3ESetPlayPreset%3C/name%3E%3Cp%20type=%22dec%22%20name=%22presetindex%22%20val=0/%3E%3Cp%20type=%22dec%22%20name=%22presettype%22%20val=%220%22/%3E'
		case "setRadio2On" : URL = '/CPM?cmd=%3Cname%3ESetPlayPreset%3C/name%3E%3Cp%20type=%22dec%22%20name=%22presetindex%22%20val=1/%3E%3Cp%20type=%22dec%22%20name=%22presettype%22%20val=%221%22/%3E'
		case "setRadio2Off" : URL = '/CPM?cmd=%3Cname%3ESetPlayPreset%3C/name%3E%3Cp%20type=%22dec%22%20name=%22presetindex%22%20val=1/%3E%3Cp%20type=%22dec%22%20name=%22presettype%22%20val=%220%22/%3E'
		case "setRadio3On" : URL = '/CPM?cmd=%3Cname%3ESetPlayPreset%3C/name%3E%3Cp%20type=%22dec%22%20name=%22presetindex%22%20val=2/%3E%3Cp%20type=%22dec%22%20name=%22presettype%22%20val=%221%22/%3E'
		case "setRadio3Off" : URL = '/CPM?cmd=%3Cname%3ESetPlayPreset%3C/name%3E%3Cp%20type=%22dec%22%20name=%22presetindex%22%20val=2/%3E%3Cp%20type=%22dec%22%20name=%22presettype%22%20val=%220%22/%3E'
		case "setAutoRadio" : URL = '/UIC?cmd=%3Cname%3ESetRadioAutoPlay%3C/name%3E%3Cp%20type=%22str%22%20name=%22cpname%22%20val=%22%s%22/%3E%3Cp%20type=%22dec%22%20name=%220%22%20val=%22%s%22/%3E'
		
		case "getMusic" : URL = '/CPM?cmd=%3Cname%3EGetRadioInfo%3C/name%3E'
		
		case "setNext" : URL = '/CPM?cmd=%3Cname%3ESetSkipCurrentTrack%3C/name%3E'
		case "setPrev" : URL = '/CPM?cmd=%3Cname%3ESetPreviousTrack%3C/name%3E'
		case "setPlay" : URL = '/CPM?cmd=%3Cname%3ESetPlaybackControl%3C/name%3E%3Cp%20type=%22str%22%20name=%22playbackcontrol%22%20val=%22play%22/%3E'
		case "setPause" : URL = '/CPM?cmd=%3Cname%3ESetPlaybackControl%3C/name%3E%3Cp%20type=%22str%22%20name=%22playbackcontrol%22%20val=%22pause%22/%3E'
		case "setReapeatOn" : URL = '/"UIC?cmd=%3Cname%3ESetRepeatMode%3C/name%3E%3Cp%20type=%22str%22%20name=%22repeatmode%22%20val=%22on%22/%3E%22'
		case "setReapeatOff" : URL = '/"UIC?cmd=%3Cname%3ESetRepeatMode%3C/name%3E%3Cp%20type=%22str%22%20name=%22repeatmode%22%20val=%22off%22/%3E%22'
		case "setShuffle" : URL = '/CPM?cmd=<name>SetToggleShuffle</name><p type=\"dec\" name=\"mode\" val=\"%s\"/>'
	}
	
	URL = "http://SPEAKER_IP:PORT" + URL
	var Return = sendHttpGetRequest(URL)
end

Volume can also be handled directly without a rule:

Dimmer Speaker_Volume  "SB_Bedroom_Volume [%d %%]"	{ http=">[CHANGED:GET:http://SPEAKER_IP:PORT/UIC?cmd=%3Cname%3ESetVolume%3C/name%3E%3Cp%20type=%22dec%22%20name=%22volume%22%20val=%22%2%d%22/%3E] <[http://SPEAKER_IP:PORT/UIC?cmd=%3Cname%3EGetVolume%3C/name%3E:5000:REGEX(.*?<volume>(.*?)</volume>.*)]" }

Other items like mute can handled this way too:

Switch SB_Bedroom_Mute		"SB_Bedroom_Mute"			{ http=">[ON:GET:http://SPEAKER_IP:PORT/UIC?cmd=%3Cname%3ESetMute%3C/name%3E%3Cp%20type=%22str%22%20name=%22mute%22%20val=%22on%22/%3E] >[OFF:GET:http://SPEAKER_IP:PORT/UIC?cmd=%3Cname%3ESetMute%3C/name%3E%3Cp%20type=%22str%22%20name=%22mute%22%20val=%22off%22/%3E] <[http://SPEAKER_IP:PORT/UIC?cmd=%3Cname%3EGetMute%3C/name%3E:5000:REGEX(.*?<mute>(.*?)</mute>.*)]" }

Addons needed:

  1. HTTP binding
  2. REGEX Transformation

I hope it will help you!

  • Jordo
1 Like

Thanks alot Jordo… I´ll take a look at it.

No problem!
If need more help with it, just let me know!