HASH160 to address - What am I doing wrong?
You don't hash the OP_HASH160 {scriptHash} OP_EQUAL, that's just a template associated with P2SH addresses. You need to hash the redeem script, add version byte and checksum and then encode into base58.

Sample Python code:

def p2sh(script):
    scripthash = hash160(script)
    data = b'\x05' + scripthash
    checksum = sha256(sha256(data))[:4]
    address = data + checksum
    return base58.encode(address)